fx-form-builder-wrapper 2.0.32 → 2.0.34
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.
|
@@ -499,13 +499,13 @@ export class UploaderComponent extends FxBaseComponent {
|
|
|
499
499
|
console.log(event);
|
|
500
500
|
}
|
|
501
501
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FxBuilderWrapperService }, { token: i2.MessageService }, { token: i2.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
502
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UploaderComponent, isStandalone: true, selector: "fx-uploader", providers: [MessageService, ConfirmationService], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\">\r\n <div class=\"custom-upload flex flex-col items-start justify-center p-0 rounded-sm\">\r\n <div class=\"flex gap-8 items-center mb-2\">\r\n <p class=\"text-base font-semibold\">Patient Images</p>\r\n <div class=\"flex justify-center items-center gap-1 upload\" *ngIf=\"uploadedFiles.length < setting('maxFileNo')\">\r\n <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"25\" viewBox=\"0 0 29 28\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.001 3.00195C11.5322 3.00195 9.16722 3.86956 7.23641 5.38414L7.23598 4.59695C7.23598 4.52473 7.22175 4.45321 7.19411 4.38648C7.16647 4.31975 7.12596 4.25912 7.07489 4.20804C7.02381 4.15697 6.96318 4.11646 6.89645 4.08882C6.82972 4.06118 6.7582 4.04695 6.68598 4.04695C6.61375 4.04695 6.54223 4.06118 6.4755 4.08882C6.40877 4.11646 6.34814 4.15697 6.29707 4.20804C6.24599 4.25912 6.20548 4.31975 6.17784 4.38648C6.1502 4.45321 6.13598 4.52473 6.13598 4.59695L6.13642 6.68652C6.13643 6.83239 6.19438 6.97228 6.29752 7.07542C6.40067 7.17856 6.54055 7.23651 6.68642 7.23652H8.77598C8.8482 7.23652 8.91972 7.2223 8.98645 7.19466C9.05318 7.16702 9.11381 7.12651 9.16489 7.07543C9.21596 7.02436 9.25647 6.96373 9.28411 6.897C9.31175 6.83027 9.32598 6.75875 9.32598 6.68652C9.32598 6.6143 9.31175 6.54278 9.28411 6.47605C9.25647 6.40932 9.21596 6.34869 9.16489 6.29761C9.11381 6.24654 9.05318 6.20603 8.98645 6.17839C8.91972 6.15075 8.8482 6.13652 8.77598 6.13652H8.0584C9.7702 4.84387 11.8399 4.10195 14.001 4.10195C19.4751 4.10195 23.901 8.52782 23.901 14.002C23.901 19.4761 19.4751 23.902 14.001 23.902C8.52684 23.902 4.10098 19.4761 4.10098 14.002C4.10098 12.6381 4.38263 11.2888 4.92855 10.0389C4.98691 9.90532 4.98982 9.75399 4.93665 9.61822C4.88347 9.48246 4.77855 9.37336 4.64496 9.31492C4.57877 9.28596 4.50753 9.27032 4.4353 9.2689C4.36306 9.26747 4.29126 9.2803 4.22398 9.30663C4.15671 9.33297 4.09528 9.3723 4.04321 9.42238C3.99114 9.47247 3.94944 9.53232 3.92051 9.59852C3.31393 10.9872 3.00098 12.4866 3.00098 14.002C3.00098 20.0706 7.93236 25.002 14.001 25.002C20.0696 25.002 25.001 20.0706 25.001 14.002C25.001 7.93334 20.0696 3.00195 14.001 3.00195Z\"\r\n fill=\"#F3A041\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M13.9988 6.13965C9.6616 6.13965 6.13379 9.66746 6.13379 14.0046C6.13379 18.3418 9.6616 21.8696 13.9988 21.8696C18.336 21.8696 21.8638 18.3418 21.8638 14.0046C21.8638 9.66746 18.336 6.13965 13.9988 6.13965ZM13.9988 8.22965C14.1447 8.22965 14.2846 8.28759 14.3877 8.39074C14.4908 8.49388 14.5488 8.63378 14.5488 8.77965V13.7769L17.5227 16.7508C17.6258 16.8539 17.6837 16.9938 17.6837 17.1396C17.6837 17.2855 17.6258 17.4254 17.5227 17.5285C17.4195 17.6316 17.2796 17.6896 17.1338 17.6896C16.9879 17.6896 16.8481 17.6316 16.7449 17.5285L13.6099 14.3935C13.5068 14.2904 13.4488 14.1505 13.4488 14.0046V8.77965C13.4488 8.63378 13.5067 8.49388 13.6099 8.39074C13.713 8.28759 13.8529 8.22965 13.9988 8.22965Z\"\r\n fill=\"#F3A041\" />\r\n <rect width=\"28.56\" height=\"28\" rx=\"1.51479\" fill=\"none\" />\r\n <path\r\n d=\"M15.068 22.7391V17.6708H18.4968L14.2108 12.6025L9.9248 17.6708H13.3536V22.7391H9.06759V22.6969C8.92358 22.7053 8.78643 22.7391 8.63899 22.7391C6.93391 22.7391 5.29866 22.0717 4.09298 20.8835C2.8873 19.6954 2.20996 18.084 2.20996 16.4037C2.20996 13.1532 4.70443 10.5042 7.90523 10.141C8.18585 8.6953 8.96892 7.39118 10.1197 6.45292C11.2706 5.51465 12.7172 5.00089 14.2108 5C15.7047 5.00082 17.1515 5.51452 18.3026 6.45277C19.4537 7.39101 20.2371 8.69516 20.5181 10.141C23.7189 10.5042 26.21 13.1532 26.21 16.4037C26.21 18.084 25.5326 19.6954 24.3269 20.8835C23.1213 22.0717 21.486 22.7391 19.7809 22.7391C19.6369 22.7391 19.4981 22.7053 19.3523 22.6969V22.7391H15.068Z\"\r\n fill=\"white\" />\r\n </svg>\r\n </div>\r\n <a type=\"button\" (click)=\"openFileDialog()\" class=\"upload_title cursor-pointer \">\r\n {{ setting('upload-text') }}\r\n </a>\r\n </div>\r\n </div>\r\n\r\n\r\n <input #fileInput type=\"file\" [multiple]=\"setting('multiple-upload')\" (change)=\"onFileSelected($event)\"\r\n accept=\".csv,.pdf,.xls,.xlsx,.doc,.docx,.txt,image/*\" style=\"display: none;\" />\r\n\r\n <div class=\"file-list flex items-center gap-4 flex-wrap w-full\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div *ngFor=\"let file of uploadedFiles; let i = index\"\r\n class=\"input-container p-3 border rounded-lg shadow-sm bg-white w-[450px] upload_file\">\r\n\r\n <!-- Close icon -->\r\n <div class=\"close_icon cursor-pointer absolute top-2 right-2\" (click)=\"deleteFile(i)\">\r\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"22\" height=\"22\" rx=\"11\" fill=\"#F3A041\" />\r\n <path\r\n d=\"M7.08911 15.8889L6.11133 14.9111L10.0224 11L6.11133 7.08886L7.08911 6.11108L11.0002 10.0222L14.9113 6.11108L15.8891 7.08886L11.978 11L15.8891 14.9111L14.9113 15.8889L11.0002 11.9778L7.08911 15.8889Z\"\r\n fill=\"white\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"thumbnail_title flex\">\r\n <!-- Thumbnail on left -->\r\n <div class=\"thumbnail\">\r\n <ng-container *ngIf=\"file.type === 'image'; else nonImageThumb\">\r\n <img class=\"file-thumbnail\" [src]=\"file?.result\" alt=\"preview\"\r\n *ngIf=\"file?.result\" />\r\n <svg *ngIf=\"!file?.result\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12.7013 13H3.3127C2.58501 13 2 12.4048 2 11.6645V4.33548C2 3.59516 2.58501 3 3.3127 3H12.6871C13.4147 3 13.9998 3.59516 13.9998 4.33548V11.6645C14.014 12.4048 13.4147 13 12.7013 13ZM9.24836 7.90484L7.39347 10.0677C7.27932 10.2129 7.05102 10.2129 6.93688 10.0823L5.93809 8.99355C5.80967 8.8629 5.60991 8.8629 5.4815 8.99355L3.76929 10.8661C3.5838 11.0694 3.72648 11.4032 3.99758 11.4032H6.26626H8.13543H12.0164C12.2875 11.4032 12.4302 11.0839 12.2447 10.8806L9.71922 7.90484C9.59081 7.75968 9.37678 7.75968 9.24836 7.90484ZM6.73712 5.98871C6.25199 5.98871 5.85248 6.39516 5.85248 6.88871C5.85248 7.38226 6.25199 7.78871 6.73712 7.78871C7.22225 7.78871 7.62176 7.38226 7.62176 6.88871C7.62176 6.39516 7.22225 5.98871 6.73712 5.98871Z\"\r\n fill=\"#999999\" />\r\n </svg>\r\n\r\n </ng-container>\r\n\r\n <ng-template #nonImageThumb>\r\n <div class=\"file-thumbnail\">\r\n <ng-container [ngSwitch]=\"file.type\">\r\n\r\n\r\n\r\n <svg *ngSwitchCase=\"'csv'\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#23A761\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M6.94076 10.3433C6.85939 10.3433 6.78716 10.3588 6.72408 10.3899C6.66191 10.42 6.60934 10.464 6.56637 10.5216C6.52432 10.5793 6.49232 10.6489 6.47038 10.7305C6.44844 10.8122 6.43747 10.904 6.43747 11.006C6.43747 11.1435 6.45484 11.261 6.48958 11.3586C6.52523 11.4553 6.58009 11.5294 6.65414 11.5808C6.7282 11.6314 6.82373 11.6567 6.94076 11.6567C7.02212 11.6567 7.10349 11.6478 7.18486 11.6301C7.26714 11.6123 7.35628 11.587 7.45228 11.5542V11.9002C7.36359 11.9357 7.27628 11.961 7.19035 11.976C7.10441 11.992 7.00795 12 6.90099 12C6.69437 12 6.52432 11.9587 6.39084 11.8762C6.25827 11.7929 6.15999 11.6766 6.096 11.5276C6.032 11.3777 6 11.2029 6 11.0033C6 10.8561 6.02057 10.7212 6.06171 10.5988C6.10285 10.4764 6.16319 10.3704 6.24273 10.2808C6.32227 10.1912 6.42055 10.122 6.53758 10.0732C6.6546 10.0244 6.78899 10 6.94076 10C7.04041 10 7.14006 10.0124 7.23971 10.0373C7.34028 10.0612 7.43628 10.0945 7.5277 10.1371L7.39057 10.4724C7.3156 10.4378 7.24017 10.4076 7.16429 10.3819C7.08841 10.3562 7.0139 10.3433 6.94076 10.3433Z\"\r\n fill=\"white\" />\r\n <path\r\n d=\"M9.06363 11.4331C9.06363 11.5485 9.03483 11.6487 8.97724 11.7339C8.91964 11.819 8.83553 11.8847 8.7249 11.9308C8.61519 11.9769 8.48172 12 8.32447 12C8.25498 12 8.18687 11.9956 8.12013 11.9867C8.05431 11.9778 7.99077 11.965 7.92951 11.9481C7.86917 11.9304 7.81157 11.9086 7.75672 11.8829V11.4997C7.8518 11.5405 7.95054 11.5773 8.05293 11.6101C8.15533 11.6429 8.25681 11.6593 8.35738 11.6593C8.42686 11.6593 8.48263 11.6505 8.52468 11.6327C8.56765 11.615 8.59874 11.5906 8.61794 11.5595C8.63714 11.5285 8.64674 11.493 8.64674 11.4531C8.64674 11.4043 8.62982 11.3626 8.596 11.328C8.56217 11.2934 8.51554 11.261 8.45612 11.2309C8.3976 11.2007 8.33132 11.1683 8.25727 11.1337C8.21064 11.1124 8.1599 11.0867 8.10505 11.0566C8.05019 11.0255 7.99808 10.9878 7.94871 10.9434C7.89934 10.8991 7.85866 10.8454 7.82666 10.7824C7.79558 10.7186 7.78003 10.6423 7.78003 10.5536C7.78003 10.4373 7.80746 10.338 7.86231 10.2555C7.91717 10.173 7.99534 10.11 8.09682 10.0665C8.19921 10.0222 8.31989 10 8.45886 10C8.56308 10 8.66228 10.012 8.75645 10.0359C8.85153 10.059 8.95072 10.0927 9.05403 10.1371L8.9169 10.4578C8.82456 10.4214 8.74182 10.3934 8.66868 10.3739C8.59554 10.3535 8.52103 10.3433 8.44515 10.3433C8.39212 10.3433 8.34686 10.3517 8.30938 10.3686C8.2719 10.3846 8.24355 10.4076 8.22436 10.4378C8.20516 10.4671 8.19556 10.5012 8.19556 10.5403C8.19556 10.5864 8.20927 10.6254 8.2367 10.6574C8.26504 10.6884 8.30709 10.7186 8.36286 10.7478C8.41955 10.7771 8.48994 10.8113 8.57405 10.8503C8.67645 10.8973 8.76376 10.9466 8.83598 10.998C8.90912 11.0486 8.96535 11.1084 9.00466 11.1776C9.04398 11.246 9.06363 11.3311 9.06363 11.4331Z\"\r\n fill=\"white\" />\r\n <path\r\n d=\"M11 10.0279L10.3184 11.9734H9.85491L9.17471 10.0279H9.60395L9.98108 11.1856C9.98748 11.2051 9.99799 11.242 10.0126 11.2961C10.0272 11.3493 10.0419 11.4061 10.0565 11.4664C10.072 11.5258 10.0826 11.5751 10.088 11.6141C10.0935 11.5751 10.1031 11.5258 10.1168 11.4664C10.1315 11.407 10.1456 11.3506 10.1594 11.2974C10.174 11.2433 10.1845 11.206 10.1909 11.1856L10.5708 10.0279H11Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"7\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"5\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"9\" y=\"7\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"9\" y=\"5\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n </svg>\r\n\r\n <svg *ngSwitchCase=\"'text'\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#1F5EBB\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M7.04353 12H6.61105V10.3203H6.0572V9.96038H7.59738V10.3203H7.04353V12ZM9.56027 12H9.06641L8.59208 11.2285L8.11775 12H7.65458L8.33119 10.9481L7.69782 9.96038H8.17494L8.6144 10.6942L9.04548 9.96038H9.51144L8.87109 10.9718L9.56027 12ZM10.6038 12H10.1713V10.3203H9.61747V9.96038H11.1576V10.3203H10.6038V12Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"5\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"6\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"7\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n </svg>\r\n\r\n <svg *ngSwitchDefault width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#DD2025\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M6.6084 9.96038C6.87161 9.96038 7.06366 10.0171 7.18457 10.1306C7.30548 10.2431 7.36593 10.3984 7.36593 10.5965C7.36593 10.6858 7.35245 10.7714 7.32547 10.8532C7.2985 10.9342 7.25432 11.0062 7.19294 11.0695C7.13249 11.1327 7.05157 11.1829 6.9502 11.2201C6.84882 11.2564 6.72373 11.2746 6.57492 11.2746H6.38937V12H5.95689V9.96038H6.6084ZM6.58608 10.3147H6.38937V10.9202H6.53167C6.61258 10.9202 6.6828 10.9095 6.74233 10.8881C6.80185 10.8667 6.84789 10.8332 6.88044 10.7877C6.91299 10.7421 6.92927 10.6835 6.92927 10.6119C6.92927 10.5114 6.90137 10.437 6.84556 10.3887C6.78976 10.3394 6.70326 10.3147 6.58608 10.3147ZM9.44322 10.9607C9.44322 11.1904 9.39904 11.3824 9.31069 11.5368C9.22326 11.6903 9.09631 11.8061 8.92983 11.8842C8.76335 11.9614 8.56292 12 8.32854 12H7.75098V9.96038H8.39132C8.60524 9.96038 8.79078 9.99851 8.94796 10.0748C9.10514 10.1501 9.22698 10.2622 9.31348 10.411C9.39997 10.5589 9.44322 10.7421 9.44322 10.9607ZM8.994 10.9718C8.994 10.8211 8.97168 10.6975 8.92704 10.6007C8.88332 10.5031 8.81822 10.431 8.73172 10.3845C8.64616 10.338 8.54013 10.3147 8.41364 10.3147H8.18345V11.6429H8.369C8.58012 11.6429 8.73684 11.5866 8.83915 11.4741C8.94238 11.3615 8.994 11.1941 8.994 10.9718ZM10.2914 12H9.86593V9.96038H11.035V10.3147H10.2914V10.8407H10.9834V11.1936H10.2914V12Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"5\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"6\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"7\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n </svg>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- Metadata on right -->\r\n <div class=\"title_notes ml-2\">\r\n <!-- Title -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm input-title m-0 mt-1\">Title</label>\r\n <input [(ngModel)]=\"file.title\" name=\"title{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Enter title\" class=\" rounded px-3 py-2 mb-3 w-full outline-none focus:ring\" />\r\n\r\n </div>\r\n <!-- Notes -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm input-title m-0 mt-1\">Notes</label>\r\n <textarea [(ngModel)]=\"file.notes\" name=\"notes{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Enter notes\" class=\" rounded px-3 py-2 mb-0 w-full outline-none focus:ring\"\r\n rows=\"2\"></textarea>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"category mt-2\">\r\n <!-- Category -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm input-title m-0 mt-0\">Category</label>\r\n <select [(ngModel)]=\"file.categoryId \" name=\"category{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n class=\" rounded px-3 py-2 w-full outline-none focus:ring\">\r\n <option value=\"\">Select Category</option>\r\n <option *ngFor=\"let c of categories\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n</fx-component>", styles: [".custom-upload{border:0;border-top:1px solid #ccc;padding:1em 0 0}.custom-upload a{color:#fff}.custom-upload .separator{height:56px;width:2px;background-color:#ccc;margin:10px}.custom-upload .upload{background-color:#f29f41;padding:3px 12px 4px 6px;border-radius:4px;margin-left:0}.custom-upload .upload .upload_title{font-size:14px;font-weight:500}.custom-upload .file-list{margin:.75em 0 0!important}.custom-upload .file-list .upload_file{width:25%!important;min-width:250px;max-width:400px}.custom-upload .file-list .upload_file .close_icon{position:absolute;top:-12px;right:-12px}.custom-upload .file-list .upload_file .close_icon svg{width:24px;height:24px}.custom-upload .file-list .upload_file .thumbnail_title .thumbnail{width:30%}.custom-upload .file-list .upload_file .thumbnail_title .thumbnail :is(.file-thumbnail svg,.file-thumbnail img){width:100%;height:100%;max-height:106px!important;background-color:#fff;padding:0}.custom-upload .file-list .upload_file .thumbnail_title .title_notes{width:60%}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container{padding:.5em 0 0 .5em}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container .input-label{margin:.75em 0 0 .5em}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container input{border-color:#ccc!important}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container textarea{border-color:#ccc!important;height:50px!important}[type=checkbox]{padding:12px}[type=checkbox]:checked{background-color:#f3a041!important;padding:12px;background-size:1em 1em!important}.input-title{position:absolute;bottom:auto;right:auto;left:1rem;top:.05rem;z-index:auto;padding:0rem .25rem;font-weight:400;font-size:11px;border-radius:.25rem;z-index:1}.input-container{position:relative;inset:auto;z-index:auto}select:not([size]){padding:.25rem .55rem!important;border:1px solid #999!important}input,textarea,select{border:1px solid #999!important}input:focus,textarea:focus,select:focus{outline:0 none!important;outline-offset:0!important;box-shadow:0 0 0 .2rem #bfdbfe!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.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: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FileUploadModule }, { kind: "ngmodule", type: ToastModule }, { kind: "ngmodule", type: ConfirmDialogModule }] });
|
|
502
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UploaderComponent, isStandalone: true, selector: "fx-uploader", providers: [MessageService, ConfirmationService], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\">\r\n <div class=\"custom-upload flex flex-col items-start justify-center p-0 rounded-sm\">\r\n <div class=\"flex gap-8 items-center mb-2\">\r\n <!-- <p class=\"text-base font-semibold\">Patient Images</p> -->\r\n <div class=\"flex justify-center items-center gap-1 upload\" *ngIf=\"uploadedFiles.length < setting('maxFileNo')\">\r\n <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"25\" viewBox=\"0 0 29 28\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.001 3.00195C11.5322 3.00195 9.16722 3.86956 7.23641 5.38414L7.23598 4.59695C7.23598 4.52473 7.22175 4.45321 7.19411 4.38648C7.16647 4.31975 7.12596 4.25912 7.07489 4.20804C7.02381 4.15697 6.96318 4.11646 6.89645 4.08882C6.82972 4.06118 6.7582 4.04695 6.68598 4.04695C6.61375 4.04695 6.54223 4.06118 6.4755 4.08882C6.40877 4.11646 6.34814 4.15697 6.29707 4.20804C6.24599 4.25912 6.20548 4.31975 6.17784 4.38648C6.1502 4.45321 6.13598 4.52473 6.13598 4.59695L6.13642 6.68652C6.13643 6.83239 6.19438 6.97228 6.29752 7.07542C6.40067 7.17856 6.54055 7.23651 6.68642 7.23652H8.77598C8.8482 7.23652 8.91972 7.2223 8.98645 7.19466C9.05318 7.16702 9.11381 7.12651 9.16489 7.07543C9.21596 7.02436 9.25647 6.96373 9.28411 6.897C9.31175 6.83027 9.32598 6.75875 9.32598 6.68652C9.32598 6.6143 9.31175 6.54278 9.28411 6.47605C9.25647 6.40932 9.21596 6.34869 9.16489 6.29761C9.11381 6.24654 9.05318 6.20603 8.98645 6.17839C8.91972 6.15075 8.8482 6.13652 8.77598 6.13652H8.0584C9.7702 4.84387 11.8399 4.10195 14.001 4.10195C19.4751 4.10195 23.901 8.52782 23.901 14.002C23.901 19.4761 19.4751 23.902 14.001 23.902C8.52684 23.902 4.10098 19.4761 4.10098 14.002C4.10098 12.6381 4.38263 11.2888 4.92855 10.0389C4.98691 9.90532 4.98982 9.75399 4.93665 9.61822C4.88347 9.48246 4.77855 9.37336 4.64496 9.31492C4.57877 9.28596 4.50753 9.27032 4.4353 9.2689C4.36306 9.26747 4.29126 9.2803 4.22398 9.30663C4.15671 9.33297 4.09528 9.3723 4.04321 9.42238C3.99114 9.47247 3.94944 9.53232 3.92051 9.59852C3.31393 10.9872 3.00098 12.4866 3.00098 14.002C3.00098 20.0706 7.93236 25.002 14.001 25.002C20.0696 25.002 25.001 20.0706 25.001 14.002C25.001 7.93334 20.0696 3.00195 14.001 3.00195Z\"\r\n fill=\"#F3A041\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M13.9988 6.13965C9.6616 6.13965 6.13379 9.66746 6.13379 14.0046C6.13379 18.3418 9.6616 21.8696 13.9988 21.8696C18.336 21.8696 21.8638 18.3418 21.8638 14.0046C21.8638 9.66746 18.336 6.13965 13.9988 6.13965ZM13.9988 8.22965C14.1447 8.22965 14.2846 8.28759 14.3877 8.39074C14.4908 8.49388 14.5488 8.63378 14.5488 8.77965V13.7769L17.5227 16.7508C17.6258 16.8539 17.6837 16.9938 17.6837 17.1396C17.6837 17.2855 17.6258 17.4254 17.5227 17.5285C17.4195 17.6316 17.2796 17.6896 17.1338 17.6896C16.9879 17.6896 16.8481 17.6316 16.7449 17.5285L13.6099 14.3935C13.5068 14.2904 13.4488 14.1505 13.4488 14.0046V8.77965C13.4488 8.63378 13.5067 8.49388 13.6099 8.39074C13.713 8.28759 13.8529 8.22965 13.9988 8.22965Z\"\r\n fill=\"#F3A041\" />\r\n <rect width=\"28.56\" height=\"28\" rx=\"1.51479\" fill=\"none\" />\r\n <path\r\n d=\"M15.068 22.7391V17.6708H18.4968L14.2108 12.6025L9.9248 17.6708H13.3536V22.7391H9.06759V22.6969C8.92358 22.7053 8.78643 22.7391 8.63899 22.7391C6.93391 22.7391 5.29866 22.0717 4.09298 20.8835C2.8873 19.6954 2.20996 18.084 2.20996 16.4037C2.20996 13.1532 4.70443 10.5042 7.90523 10.141C8.18585 8.6953 8.96892 7.39118 10.1197 6.45292C11.2706 5.51465 12.7172 5.00089 14.2108 5C15.7047 5.00082 17.1515 5.51452 18.3026 6.45277C19.4537 7.39101 20.2371 8.69516 20.5181 10.141C23.7189 10.5042 26.21 13.1532 26.21 16.4037C26.21 18.084 25.5326 19.6954 24.3269 20.8835C23.1213 22.0717 21.486 22.7391 19.7809 22.7391C19.6369 22.7391 19.4981 22.7053 19.3523 22.6969V22.7391H15.068Z\"\r\n fill=\"white\" />\r\n </svg>\r\n </div>\r\n <a type=\"button\" (click)=\"openFileDialog()\" class=\"upload_title cursor-pointer \">\r\n {{ setting('upload-text') }}\r\n </a>\r\n </div>\r\n </div>\r\n\r\n\r\n <input #fileInput type=\"file\" [multiple]=\"setting('multiple-upload')\" (change)=\"onFileSelected($event)\"\r\n accept=\".csv,.pdf,.xls,.xlsx,.doc,.docx,.txt,image/*\" style=\"display: none;\" />\r\n\r\n <div class=\"file-list flex items-center gap-4 flex-wrap w-full\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div *ngFor=\"let file of uploadedFiles; let i = index\"\r\n class=\"relative p-3 border rounded-lg shadow-sm bg-white w-[450px] upload_file\">\r\n\r\n <!-- Close icon -->\r\n <div class=\"close_icon cursor-pointer absolute top-2 right-2\" (click)=\"deleteFile(i)\">\r\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"22\" height=\"22\" rx=\"11\" fill=\"#F3A041\" />\r\n <path\r\n d=\"M7.08911 15.8889L6.11133 14.9111L10.0224 11L6.11133 7.08886L7.08911 6.11108L11.0002 10.0222L14.9113 6.11108L15.8891 7.08886L11.978 11L15.8891 14.9111L14.9113 15.8889L11.0002 11.9778L7.08911 15.8889Z\"\r\n fill=\"white\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"thumbnail_title flex\">\r\n <!-- Thumbnail on left -->\r\n <div class=\"thumbnail\">\r\n <ng-container *ngIf=\"file.type === 'image'; else nonImageThumb\">\r\n <img class=\"file-thumbnail\" [src]=\"file?.result\" alt=\"preview\"\r\n *ngIf=\"file?.result\" />\r\n <svg *ngIf=\"!file?.result\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12.7013 13H3.3127C2.58501 13 2 12.4048 2 11.6645V4.33548C2 3.59516 2.58501 3 3.3127 3H12.6871C13.4147 3 13.9998 3.59516 13.9998 4.33548V11.6645C14.014 12.4048 13.4147 13 12.7013 13ZM9.24836 7.90484L7.39347 10.0677C7.27932 10.2129 7.05102 10.2129 6.93688 10.0823L5.93809 8.99355C5.80967 8.8629 5.60991 8.8629 5.4815 8.99355L3.76929 10.8661C3.5838 11.0694 3.72648 11.4032 3.99758 11.4032H6.26626H8.13543H12.0164C12.2875 11.4032 12.4302 11.0839 12.2447 10.8806L9.71922 7.90484C9.59081 7.75968 9.37678 7.75968 9.24836 7.90484ZM6.73712 5.98871C6.25199 5.98871 5.85248 6.39516 5.85248 6.88871C5.85248 7.38226 6.25199 7.78871 6.73712 7.78871C7.22225 7.78871 7.62176 7.38226 7.62176 6.88871C7.62176 6.39516 7.22225 5.98871 6.73712 5.98871Z\"\r\n fill=\"#999999\" />\r\n </svg>\r\n\r\n </ng-container>\r\n\r\n <ng-template #nonImageThumb>\r\n <div class=\"file-thumbnail\">\r\n <ng-container [ngSwitch]=\"file.type\">\r\n\r\n\r\n\r\n <svg *ngSwitchCase=\"'csv'\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#23A761\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M6.94076 10.3433C6.85939 10.3433 6.78716 10.3588 6.72408 10.3899C6.66191 10.42 6.60934 10.464 6.56637 10.5216C6.52432 10.5793 6.49232 10.6489 6.47038 10.7305C6.44844 10.8122 6.43747 10.904 6.43747 11.006C6.43747 11.1435 6.45484 11.261 6.48958 11.3586C6.52523 11.4553 6.58009 11.5294 6.65414 11.5808C6.7282 11.6314 6.82373 11.6567 6.94076 11.6567C7.02212 11.6567 7.10349 11.6478 7.18486 11.6301C7.26714 11.6123 7.35628 11.587 7.45228 11.5542V11.9002C7.36359 11.9357 7.27628 11.961 7.19035 11.976C7.10441 11.992 7.00795 12 6.90099 12C6.69437 12 6.52432 11.9587 6.39084 11.8762C6.25827 11.7929 6.15999 11.6766 6.096 11.5276C6.032 11.3777 6 11.2029 6 11.0033C6 10.8561 6.02057 10.7212 6.06171 10.5988C6.10285 10.4764 6.16319 10.3704 6.24273 10.2808C6.32227 10.1912 6.42055 10.122 6.53758 10.0732C6.6546 10.0244 6.78899 10 6.94076 10C7.04041 10 7.14006 10.0124 7.23971 10.0373C7.34028 10.0612 7.43628 10.0945 7.5277 10.1371L7.39057 10.4724C7.3156 10.4378 7.24017 10.4076 7.16429 10.3819C7.08841 10.3562 7.0139 10.3433 6.94076 10.3433Z\"\r\n fill=\"white\" />\r\n <path\r\n d=\"M9.06363 11.4331C9.06363 11.5485 9.03483 11.6487 8.97724 11.7339C8.91964 11.819 8.83553 11.8847 8.7249 11.9308C8.61519 11.9769 8.48172 12 8.32447 12C8.25498 12 8.18687 11.9956 8.12013 11.9867C8.05431 11.9778 7.99077 11.965 7.92951 11.9481C7.86917 11.9304 7.81157 11.9086 7.75672 11.8829V11.4997C7.8518 11.5405 7.95054 11.5773 8.05293 11.6101C8.15533 11.6429 8.25681 11.6593 8.35738 11.6593C8.42686 11.6593 8.48263 11.6505 8.52468 11.6327C8.56765 11.615 8.59874 11.5906 8.61794 11.5595C8.63714 11.5285 8.64674 11.493 8.64674 11.4531C8.64674 11.4043 8.62982 11.3626 8.596 11.328C8.56217 11.2934 8.51554 11.261 8.45612 11.2309C8.3976 11.2007 8.33132 11.1683 8.25727 11.1337C8.21064 11.1124 8.1599 11.0867 8.10505 11.0566C8.05019 11.0255 7.99808 10.9878 7.94871 10.9434C7.89934 10.8991 7.85866 10.8454 7.82666 10.7824C7.79558 10.7186 7.78003 10.6423 7.78003 10.5536C7.78003 10.4373 7.80746 10.338 7.86231 10.2555C7.91717 10.173 7.99534 10.11 8.09682 10.0665C8.19921 10.0222 8.31989 10 8.45886 10C8.56308 10 8.66228 10.012 8.75645 10.0359C8.85153 10.059 8.95072 10.0927 9.05403 10.1371L8.9169 10.4578C8.82456 10.4214 8.74182 10.3934 8.66868 10.3739C8.59554 10.3535 8.52103 10.3433 8.44515 10.3433C8.39212 10.3433 8.34686 10.3517 8.30938 10.3686C8.2719 10.3846 8.24355 10.4076 8.22436 10.4378C8.20516 10.4671 8.19556 10.5012 8.19556 10.5403C8.19556 10.5864 8.20927 10.6254 8.2367 10.6574C8.26504 10.6884 8.30709 10.7186 8.36286 10.7478C8.41955 10.7771 8.48994 10.8113 8.57405 10.8503C8.67645 10.8973 8.76376 10.9466 8.83598 10.998C8.90912 11.0486 8.96535 11.1084 9.00466 11.1776C9.04398 11.246 9.06363 11.3311 9.06363 11.4331Z\"\r\n fill=\"white\" />\r\n <path\r\n d=\"M11 10.0279L10.3184 11.9734H9.85491L9.17471 10.0279H9.60395L9.98108 11.1856C9.98748 11.2051 9.99799 11.242 10.0126 11.2961C10.0272 11.3493 10.0419 11.4061 10.0565 11.4664C10.072 11.5258 10.0826 11.5751 10.088 11.6141C10.0935 11.5751 10.1031 11.5258 10.1168 11.4664C10.1315 11.407 10.1456 11.3506 10.1594 11.2974C10.174 11.2433 10.1845 11.206 10.1909 11.1856L10.5708 10.0279H11Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"7\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"5\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"9\" y=\"7\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"9\" y=\"5\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n </svg>\r\n\r\n <svg *ngSwitchCase=\"'text'\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#1F5EBB\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M7.04353 12H6.61105V10.3203H6.0572V9.96038H7.59738V10.3203H7.04353V12ZM9.56027 12H9.06641L8.59208 11.2285L8.11775 12H7.65458L8.33119 10.9481L7.69782 9.96038H8.17494L8.6144 10.6942L9.04548 9.96038H9.51144L8.87109 10.9718L9.56027 12ZM10.6038 12H10.1713V10.3203H9.61747V9.96038H11.1576V10.3203H10.6038V12Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"5\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"6\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"7\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n </svg>\r\n\r\n <svg *ngSwitchDefault width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#DD2025\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M6.6084 9.96038C6.87161 9.96038 7.06366 10.0171 7.18457 10.1306C7.30548 10.2431 7.36593 10.3984 7.36593 10.5965C7.36593 10.6858 7.35245 10.7714 7.32547 10.8532C7.2985 10.9342 7.25432 11.0062 7.19294 11.0695C7.13249 11.1327 7.05157 11.1829 6.9502 11.2201C6.84882 11.2564 6.72373 11.2746 6.57492 11.2746H6.38937V12H5.95689V9.96038H6.6084ZM6.58608 10.3147H6.38937V10.9202H6.53167C6.61258 10.9202 6.6828 10.9095 6.74233 10.8881C6.80185 10.8667 6.84789 10.8332 6.88044 10.7877C6.91299 10.7421 6.92927 10.6835 6.92927 10.6119C6.92927 10.5114 6.90137 10.437 6.84556 10.3887C6.78976 10.3394 6.70326 10.3147 6.58608 10.3147ZM9.44322 10.9607C9.44322 11.1904 9.39904 11.3824 9.31069 11.5368C9.22326 11.6903 9.09631 11.8061 8.92983 11.8842C8.76335 11.9614 8.56292 12 8.32854 12H7.75098V9.96038H8.39132C8.60524 9.96038 8.79078 9.99851 8.94796 10.0748C9.10514 10.1501 9.22698 10.2622 9.31348 10.411C9.39997 10.5589 9.44322 10.7421 9.44322 10.9607ZM8.994 10.9718C8.994 10.8211 8.97168 10.6975 8.92704 10.6007C8.88332 10.5031 8.81822 10.431 8.73172 10.3845C8.64616 10.338 8.54013 10.3147 8.41364 10.3147H8.18345V11.6429H8.369C8.58012 11.6429 8.73684 11.5866 8.83915 11.4741C8.94238 11.3615 8.994 11.1941 8.994 10.9718ZM10.2914 12H9.86593V9.96038H11.035V10.3147H10.2914V10.8407H10.9834V11.1936H10.2914V12Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"5\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"6\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"7\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n </svg>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- Metadata on right -->\r\n <div class=\"title_notes ml-2\">\r\n <!-- Title -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm input-title m-0 -mt-1\">Title</label>\r\n <input [(ngModel)]=\"file.title\" name=\"title{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Enter title\" class=\" rounded px-3 py-2 mb-3 w-full outline-none focus:ring\" />\r\n\r\n </div>\r\n <!-- Notes -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm input-title m-0 -mt-1\">Notes</label>\r\n <textarea [(ngModel)]=\"file.notes\" name=\"notes{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Enter notes\" class=\" rounded px-3 py-2 mb-0 w-full outline-none focus:ring\"\r\n rows=\"2\"></textarea>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"category mt-2\">\r\n <!-- Category -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm input-title m-0\">Category</label>\r\n <select [(ngModel)]=\"file.categoryId \" name=\"category{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n class=\" rounded px-3 py-2 w-full outline-none focus:ring\">\r\n <option value=\"\">Select Category</option>\r\n <option *ngFor=\"let c of categories\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n</fx-component>", styles: [".custom-upload{border:0;border-top:1px solid #ccc;padding:1em 0 0}.custom-upload a{color:#fff}.custom-upload .separator{height:56px;width:2px;background-color:#ccc;margin:10px}.custom-upload .upload{background-color:#f29f41;padding:3px 12px 4px 6px;border-radius:4px;margin-left:0}.custom-upload .upload .upload_title{font-size:14px;font-weight:500}.custom-upload .file-list{margin:.75em 0 0!important}.custom-upload .file-list .upload_file{width:23.5%!important;min-width:250px;max-width:400px}.custom-upload .file-list .upload_file .close_icon{position:absolute;top:-12px;right:-12px}.custom-upload .file-list .upload_file .close_icon svg{width:24px;height:24px}.custom-upload .file-list .upload_file .thumbnail_title .thumbnail{width:25%;height:100px;border:1px solid #ccc;display:flex;align-items:center;background:#fbfbfb}.custom-upload .file-list .upload_file .thumbnail_title .thumbnail :is(.file-thumbnail svg,.file-thumbnail img){width:100%;height:auto;max-height:98px!important;padding:0}.custom-upload .file-list .upload_file .thumbnail_title .title_notes{width:75%;margin-top:-6px}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container{padding:.5em 0 0 .5em}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container input{border-color:#ccc!important}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container textarea{border-color:#ccc!important;height:50px!important}.custom-upload .file-list .upload_file .category .input-title{margin-top:-10px;margin-left:-8px}[type=checkbox]{padding:12px}[type=checkbox]:checked{background-color:#f3a041!important;padding:12px;background-size:1em 1em!important}.input-title{position:absolute;bottom:auto;right:auto;left:1rem;top:.05rem;z-index:auto;padding:0rem .25rem;font-weight:400;font-size:11px;border-radius:.25rem;z-index:1}.input-container{position:relative;inset:auto;z-index:auto}input,textarea,select{border:1px solid #999!important}input:focus,textarea:focus,select:focus{outline:0 none!important;outline-offset:0!important;box-shadow:0 0 0 .2rem #bfdbfe!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.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: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FileUploadModule }, { kind: "ngmodule", type: ToastModule }, { kind: "ngmodule", type: ConfirmDialogModule }] });
|
|
503
503
|
}
|
|
504
504
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploaderComponent, decorators: [{
|
|
505
505
|
type: Component,
|
|
506
|
-
args: [{ selector: 'fx-uploader', standalone: true, imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule, FileUploadModule, ToastModule, ConfirmDialogModule], providers: [MessageService, ConfirmationService], template: "<fx-component [fxData]=\"fxData\">\r\n <div class=\"custom-upload flex flex-col items-start justify-center p-0 rounded-sm\">\r\n <div class=\"flex gap-8 items-center mb-2\">\r\n <p class=\"text-base font-semibold\">Patient Images</p>\r\n <div class=\"flex justify-center items-center gap-1 upload\" *ngIf=\"uploadedFiles.length < setting('maxFileNo')\">\r\n <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"25\" viewBox=\"0 0 29 28\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.001 3.00195C11.5322 3.00195 9.16722 3.86956 7.23641 5.38414L7.23598 4.59695C7.23598 4.52473 7.22175 4.45321 7.19411 4.38648C7.16647 4.31975 7.12596 4.25912 7.07489 4.20804C7.02381 4.15697 6.96318 4.11646 6.89645 4.08882C6.82972 4.06118 6.7582 4.04695 6.68598 4.04695C6.61375 4.04695 6.54223 4.06118 6.4755 4.08882C6.40877 4.11646 6.34814 4.15697 6.29707 4.20804C6.24599 4.25912 6.20548 4.31975 6.17784 4.38648C6.1502 4.45321 6.13598 4.52473 6.13598 4.59695L6.13642 6.68652C6.13643 6.83239 6.19438 6.97228 6.29752 7.07542C6.40067 7.17856 6.54055 7.23651 6.68642 7.23652H8.77598C8.8482 7.23652 8.91972 7.2223 8.98645 7.19466C9.05318 7.16702 9.11381 7.12651 9.16489 7.07543C9.21596 7.02436 9.25647 6.96373 9.28411 6.897C9.31175 6.83027 9.32598 6.75875 9.32598 6.68652C9.32598 6.6143 9.31175 6.54278 9.28411 6.47605C9.25647 6.40932 9.21596 6.34869 9.16489 6.29761C9.11381 6.24654 9.05318 6.20603 8.98645 6.17839C8.91972 6.15075 8.8482 6.13652 8.77598 6.13652H8.0584C9.7702 4.84387 11.8399 4.10195 14.001 4.10195C19.4751 4.10195 23.901 8.52782 23.901 14.002C23.901 19.4761 19.4751 23.902 14.001 23.902C8.52684 23.902 4.10098 19.4761 4.10098 14.002C4.10098 12.6381 4.38263 11.2888 4.92855 10.0389C4.98691 9.90532 4.98982 9.75399 4.93665 9.61822C4.88347 9.48246 4.77855 9.37336 4.64496 9.31492C4.57877 9.28596 4.50753 9.27032 4.4353 9.2689C4.36306 9.26747 4.29126 9.2803 4.22398 9.30663C4.15671 9.33297 4.09528 9.3723 4.04321 9.42238C3.99114 9.47247 3.94944 9.53232 3.92051 9.59852C3.31393 10.9872 3.00098 12.4866 3.00098 14.002C3.00098 20.0706 7.93236 25.002 14.001 25.002C20.0696 25.002 25.001 20.0706 25.001 14.002C25.001 7.93334 20.0696 3.00195 14.001 3.00195Z\"\r\n fill=\"#F3A041\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M13.9988 6.13965C9.6616 6.13965 6.13379 9.66746 6.13379 14.0046C6.13379 18.3418 9.6616 21.8696 13.9988 21.8696C18.336 21.8696 21.8638 18.3418 21.8638 14.0046C21.8638 9.66746 18.336 6.13965 13.9988 6.13965ZM13.9988 8.22965C14.1447 8.22965 14.2846 8.28759 14.3877 8.39074C14.4908 8.49388 14.5488 8.63378 14.5488 8.77965V13.7769L17.5227 16.7508C17.6258 16.8539 17.6837 16.9938 17.6837 17.1396C17.6837 17.2855 17.6258 17.4254 17.5227 17.5285C17.4195 17.6316 17.2796 17.6896 17.1338 17.6896C16.9879 17.6896 16.8481 17.6316 16.7449 17.5285L13.6099 14.3935C13.5068 14.2904 13.4488 14.1505 13.4488 14.0046V8.77965C13.4488 8.63378 13.5067 8.49388 13.6099 8.39074C13.713 8.28759 13.8529 8.22965 13.9988 8.22965Z\"\r\n fill=\"#F3A041\" />\r\n <rect width=\"28.56\" height=\"28\" rx=\"1.51479\" fill=\"none\" />\r\n <path\r\n d=\"M15.068 22.7391V17.6708H18.4968L14.2108 12.6025L9.9248 17.6708H13.3536V22.7391H9.06759V22.6969C8.92358 22.7053 8.78643 22.7391 8.63899 22.7391C6.93391 22.7391 5.29866 22.0717 4.09298 20.8835C2.8873 19.6954 2.20996 18.084 2.20996 16.4037C2.20996 13.1532 4.70443 10.5042 7.90523 10.141C8.18585 8.6953 8.96892 7.39118 10.1197 6.45292C11.2706 5.51465 12.7172 5.00089 14.2108 5C15.7047 5.00082 17.1515 5.51452 18.3026 6.45277C19.4537 7.39101 20.2371 8.69516 20.5181 10.141C23.7189 10.5042 26.21 13.1532 26.21 16.4037C26.21 18.084 25.5326 19.6954 24.3269 20.8835C23.1213 22.0717 21.486 22.7391 19.7809 22.7391C19.6369 22.7391 19.4981 22.7053 19.3523 22.6969V22.7391H15.068Z\"\r\n fill=\"white\" />\r\n </svg>\r\n </div>\r\n <a type=\"button\" (click)=\"openFileDialog()\" class=\"upload_title cursor-pointer \">\r\n {{ setting('upload-text') }}\r\n </a>\r\n </div>\r\n </div>\r\n\r\n\r\n <input #fileInput type=\"file\" [multiple]=\"setting('multiple-upload')\" (change)=\"onFileSelected($event)\"\r\n accept=\".csv,.pdf,.xls,.xlsx,.doc,.docx,.txt,image/*\" style=\"display: none;\" />\r\n\r\n <div class=\"file-list flex items-center gap-4 flex-wrap w-full\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div *ngFor=\"let file of uploadedFiles; let i = index\"\r\n class=\"input-container p-3 border rounded-lg shadow-sm bg-white w-[450px] upload_file\">\r\n\r\n <!-- Close icon -->\r\n <div class=\"close_icon cursor-pointer absolute top-2 right-2\" (click)=\"deleteFile(i)\">\r\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"22\" height=\"22\" rx=\"11\" fill=\"#F3A041\" />\r\n <path\r\n d=\"M7.08911 15.8889L6.11133 14.9111L10.0224 11L6.11133 7.08886L7.08911 6.11108L11.0002 10.0222L14.9113 6.11108L15.8891 7.08886L11.978 11L15.8891 14.9111L14.9113 15.8889L11.0002 11.9778L7.08911 15.8889Z\"\r\n fill=\"white\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"thumbnail_title flex\">\r\n <!-- Thumbnail on left -->\r\n <div class=\"thumbnail\">\r\n <ng-container *ngIf=\"file.type === 'image'; else nonImageThumb\">\r\n <img class=\"file-thumbnail\" [src]=\"file?.result\" alt=\"preview\"\r\n *ngIf=\"file?.result\" />\r\n <svg *ngIf=\"!file?.result\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12.7013 13H3.3127C2.58501 13 2 12.4048 2 11.6645V4.33548C2 3.59516 2.58501 3 3.3127 3H12.6871C13.4147 3 13.9998 3.59516 13.9998 4.33548V11.6645C14.014 12.4048 13.4147 13 12.7013 13ZM9.24836 7.90484L7.39347 10.0677C7.27932 10.2129 7.05102 10.2129 6.93688 10.0823L5.93809 8.99355C5.80967 8.8629 5.60991 8.8629 5.4815 8.99355L3.76929 10.8661C3.5838 11.0694 3.72648 11.4032 3.99758 11.4032H6.26626H8.13543H12.0164C12.2875 11.4032 12.4302 11.0839 12.2447 10.8806L9.71922 7.90484C9.59081 7.75968 9.37678 7.75968 9.24836 7.90484ZM6.73712 5.98871C6.25199 5.98871 5.85248 6.39516 5.85248 6.88871C5.85248 7.38226 6.25199 7.78871 6.73712 7.78871C7.22225 7.78871 7.62176 7.38226 7.62176 6.88871C7.62176 6.39516 7.22225 5.98871 6.73712 5.98871Z\"\r\n fill=\"#999999\" />\r\n </svg>\r\n\r\n </ng-container>\r\n\r\n <ng-template #nonImageThumb>\r\n <div class=\"file-thumbnail\">\r\n <ng-container [ngSwitch]=\"file.type\">\r\n\r\n\r\n\r\n <svg *ngSwitchCase=\"'csv'\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#23A761\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M6.94076 10.3433C6.85939 10.3433 6.78716 10.3588 6.72408 10.3899C6.66191 10.42 6.60934 10.464 6.56637 10.5216C6.52432 10.5793 6.49232 10.6489 6.47038 10.7305C6.44844 10.8122 6.43747 10.904 6.43747 11.006C6.43747 11.1435 6.45484 11.261 6.48958 11.3586C6.52523 11.4553 6.58009 11.5294 6.65414 11.5808C6.7282 11.6314 6.82373 11.6567 6.94076 11.6567C7.02212 11.6567 7.10349 11.6478 7.18486 11.6301C7.26714 11.6123 7.35628 11.587 7.45228 11.5542V11.9002C7.36359 11.9357 7.27628 11.961 7.19035 11.976C7.10441 11.992 7.00795 12 6.90099 12C6.69437 12 6.52432 11.9587 6.39084 11.8762C6.25827 11.7929 6.15999 11.6766 6.096 11.5276C6.032 11.3777 6 11.2029 6 11.0033C6 10.8561 6.02057 10.7212 6.06171 10.5988C6.10285 10.4764 6.16319 10.3704 6.24273 10.2808C6.32227 10.1912 6.42055 10.122 6.53758 10.0732C6.6546 10.0244 6.78899 10 6.94076 10C7.04041 10 7.14006 10.0124 7.23971 10.0373C7.34028 10.0612 7.43628 10.0945 7.5277 10.1371L7.39057 10.4724C7.3156 10.4378 7.24017 10.4076 7.16429 10.3819C7.08841 10.3562 7.0139 10.3433 6.94076 10.3433Z\"\r\n fill=\"white\" />\r\n <path\r\n d=\"M9.06363 11.4331C9.06363 11.5485 9.03483 11.6487 8.97724 11.7339C8.91964 11.819 8.83553 11.8847 8.7249 11.9308C8.61519 11.9769 8.48172 12 8.32447 12C8.25498 12 8.18687 11.9956 8.12013 11.9867C8.05431 11.9778 7.99077 11.965 7.92951 11.9481C7.86917 11.9304 7.81157 11.9086 7.75672 11.8829V11.4997C7.8518 11.5405 7.95054 11.5773 8.05293 11.6101C8.15533 11.6429 8.25681 11.6593 8.35738 11.6593C8.42686 11.6593 8.48263 11.6505 8.52468 11.6327C8.56765 11.615 8.59874 11.5906 8.61794 11.5595C8.63714 11.5285 8.64674 11.493 8.64674 11.4531C8.64674 11.4043 8.62982 11.3626 8.596 11.328C8.56217 11.2934 8.51554 11.261 8.45612 11.2309C8.3976 11.2007 8.33132 11.1683 8.25727 11.1337C8.21064 11.1124 8.1599 11.0867 8.10505 11.0566C8.05019 11.0255 7.99808 10.9878 7.94871 10.9434C7.89934 10.8991 7.85866 10.8454 7.82666 10.7824C7.79558 10.7186 7.78003 10.6423 7.78003 10.5536C7.78003 10.4373 7.80746 10.338 7.86231 10.2555C7.91717 10.173 7.99534 10.11 8.09682 10.0665C8.19921 10.0222 8.31989 10 8.45886 10C8.56308 10 8.66228 10.012 8.75645 10.0359C8.85153 10.059 8.95072 10.0927 9.05403 10.1371L8.9169 10.4578C8.82456 10.4214 8.74182 10.3934 8.66868 10.3739C8.59554 10.3535 8.52103 10.3433 8.44515 10.3433C8.39212 10.3433 8.34686 10.3517 8.30938 10.3686C8.2719 10.3846 8.24355 10.4076 8.22436 10.4378C8.20516 10.4671 8.19556 10.5012 8.19556 10.5403C8.19556 10.5864 8.20927 10.6254 8.2367 10.6574C8.26504 10.6884 8.30709 10.7186 8.36286 10.7478C8.41955 10.7771 8.48994 10.8113 8.57405 10.8503C8.67645 10.8973 8.76376 10.9466 8.83598 10.998C8.90912 11.0486 8.96535 11.1084 9.00466 11.1776C9.04398 11.246 9.06363 11.3311 9.06363 11.4331Z\"\r\n fill=\"white\" />\r\n <path\r\n d=\"M11 10.0279L10.3184 11.9734H9.85491L9.17471 10.0279H9.60395L9.98108 11.1856C9.98748 11.2051 9.99799 11.242 10.0126 11.2961C10.0272 11.3493 10.0419 11.4061 10.0565 11.4664C10.072 11.5258 10.0826 11.5751 10.088 11.6141C10.0935 11.5751 10.1031 11.5258 10.1168 11.4664C10.1315 11.407 10.1456 11.3506 10.1594 11.2974C10.174 11.2433 10.1845 11.206 10.1909 11.1856L10.5708 10.0279H11Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"7\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"5\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"9\" y=\"7\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"9\" y=\"5\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n </svg>\r\n\r\n <svg *ngSwitchCase=\"'text'\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#1F5EBB\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M7.04353 12H6.61105V10.3203H6.0572V9.96038H7.59738V10.3203H7.04353V12ZM9.56027 12H9.06641L8.59208 11.2285L8.11775 12H7.65458L8.33119 10.9481L7.69782 9.96038H8.17494L8.6144 10.6942L9.04548 9.96038H9.51144L8.87109 10.9718L9.56027 12ZM10.6038 12H10.1713V10.3203H9.61747V9.96038H11.1576V10.3203H10.6038V12Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"5\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"6\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"7\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n </svg>\r\n\r\n <svg *ngSwitchDefault width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#DD2025\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M6.6084 9.96038C6.87161 9.96038 7.06366 10.0171 7.18457 10.1306C7.30548 10.2431 7.36593 10.3984 7.36593 10.5965C7.36593 10.6858 7.35245 10.7714 7.32547 10.8532C7.2985 10.9342 7.25432 11.0062 7.19294 11.0695C7.13249 11.1327 7.05157 11.1829 6.9502 11.2201C6.84882 11.2564 6.72373 11.2746 6.57492 11.2746H6.38937V12H5.95689V9.96038H6.6084ZM6.58608 10.3147H6.38937V10.9202H6.53167C6.61258 10.9202 6.6828 10.9095 6.74233 10.8881C6.80185 10.8667 6.84789 10.8332 6.88044 10.7877C6.91299 10.7421 6.92927 10.6835 6.92927 10.6119C6.92927 10.5114 6.90137 10.437 6.84556 10.3887C6.78976 10.3394 6.70326 10.3147 6.58608 10.3147ZM9.44322 10.9607C9.44322 11.1904 9.39904 11.3824 9.31069 11.5368C9.22326 11.6903 9.09631 11.8061 8.92983 11.8842C8.76335 11.9614 8.56292 12 8.32854 12H7.75098V9.96038H8.39132C8.60524 9.96038 8.79078 9.99851 8.94796 10.0748C9.10514 10.1501 9.22698 10.2622 9.31348 10.411C9.39997 10.5589 9.44322 10.7421 9.44322 10.9607ZM8.994 10.9718C8.994 10.8211 8.97168 10.6975 8.92704 10.6007C8.88332 10.5031 8.81822 10.431 8.73172 10.3845C8.64616 10.338 8.54013 10.3147 8.41364 10.3147H8.18345V11.6429H8.369C8.58012 11.6429 8.73684 11.5866 8.83915 11.4741C8.94238 11.3615 8.994 11.1941 8.994 10.9718ZM10.2914 12H9.86593V9.96038H11.035V10.3147H10.2914V10.8407H10.9834V11.1936H10.2914V12Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"5\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"6\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"7\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n </svg>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- Metadata on right -->\r\n <div class=\"title_notes ml-2\">\r\n <!-- Title -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm input-title m-0 mt-1\">Title</label>\r\n <input [(ngModel)]=\"file.title\" name=\"title{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Enter title\" class=\" rounded px-3 py-2 mb-3 w-full outline-none focus:ring\" />\r\n\r\n </div>\r\n <!-- Notes -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm input-title m-0 mt-1\">Notes</label>\r\n <textarea [(ngModel)]=\"file.notes\" name=\"notes{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Enter notes\" class=\" rounded px-3 py-2 mb-0 w-full outline-none focus:ring\"\r\n rows=\"2\"></textarea>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"category mt-2\">\r\n <!-- Category -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm input-title m-0 mt-0\">Category</label>\r\n <select [(ngModel)]=\"file.categoryId \" name=\"category{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n class=\" rounded px-3 py-2 w-full outline-none focus:ring\">\r\n <option value=\"\">Select Category</option>\r\n <option *ngFor=\"let c of categories\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n</fx-component>", styles: [".custom-upload{border:0;border-top:1px solid #ccc;padding:1em 0 0}.custom-upload a{color:#fff}.custom-upload .separator{height:56px;width:2px;background-color:#ccc;margin:10px}.custom-upload .upload{background-color:#f29f41;padding:3px 12px 4px 6px;border-radius:4px;margin-left:0}.custom-upload .upload .upload_title{font-size:14px;font-weight:500}.custom-upload .file-list{margin:.75em 0 0!important}.custom-upload .file-list .upload_file{width:25%!important;min-width:250px;max-width:400px}.custom-upload .file-list .upload_file .close_icon{position:absolute;top:-12px;right:-12px}.custom-upload .file-list .upload_file .close_icon svg{width:24px;height:24px}.custom-upload .file-list .upload_file .thumbnail_title .thumbnail{width:30%}.custom-upload .file-list .upload_file .thumbnail_title .thumbnail :is(.file-thumbnail svg,.file-thumbnail img){width:100%;height:100%;max-height:106px!important;background-color:#fff;padding:0}.custom-upload .file-list .upload_file .thumbnail_title .title_notes{width:60%}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container{padding:.5em 0 0 .5em}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container .input-label{margin:.75em 0 0 .5em}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container input{border-color:#ccc!important}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container textarea{border-color:#ccc!important;height:50px!important}[type=checkbox]{padding:12px}[type=checkbox]:checked{background-color:#f3a041!important;padding:12px;background-size:1em 1em!important}.input-title{position:absolute;bottom:auto;right:auto;left:1rem;top:.05rem;z-index:auto;padding:0rem .25rem;font-weight:400;font-size:11px;border-radius:.25rem;z-index:1}.input-container{position:relative;inset:auto;z-index:auto}select:not([size]){padding:.25rem .55rem!important;border:1px solid #999!important}input,textarea,select{border:1px solid #999!important}input:focus,textarea:focus,select:focus{outline:0 none!important;outline-offset:0!important;box-shadow:0 0 0 .2rem #bfdbfe!important}\n"] }]
|
|
506
|
+
args: [{ selector: 'fx-uploader', standalone: true, imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule, FileUploadModule, ToastModule, ConfirmDialogModule], providers: [MessageService, ConfirmationService], template: "<fx-component [fxData]=\"fxData\">\r\n <div class=\"custom-upload flex flex-col items-start justify-center p-0 rounded-sm\">\r\n <div class=\"flex gap-8 items-center mb-2\">\r\n <!-- <p class=\"text-base font-semibold\">Patient Images</p> -->\r\n <div class=\"flex justify-center items-center gap-1 upload\" *ngIf=\"uploadedFiles.length < setting('maxFileNo')\">\r\n <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"25\" viewBox=\"0 0 29 28\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.001 3.00195C11.5322 3.00195 9.16722 3.86956 7.23641 5.38414L7.23598 4.59695C7.23598 4.52473 7.22175 4.45321 7.19411 4.38648C7.16647 4.31975 7.12596 4.25912 7.07489 4.20804C7.02381 4.15697 6.96318 4.11646 6.89645 4.08882C6.82972 4.06118 6.7582 4.04695 6.68598 4.04695C6.61375 4.04695 6.54223 4.06118 6.4755 4.08882C6.40877 4.11646 6.34814 4.15697 6.29707 4.20804C6.24599 4.25912 6.20548 4.31975 6.17784 4.38648C6.1502 4.45321 6.13598 4.52473 6.13598 4.59695L6.13642 6.68652C6.13643 6.83239 6.19438 6.97228 6.29752 7.07542C6.40067 7.17856 6.54055 7.23651 6.68642 7.23652H8.77598C8.8482 7.23652 8.91972 7.2223 8.98645 7.19466C9.05318 7.16702 9.11381 7.12651 9.16489 7.07543C9.21596 7.02436 9.25647 6.96373 9.28411 6.897C9.31175 6.83027 9.32598 6.75875 9.32598 6.68652C9.32598 6.6143 9.31175 6.54278 9.28411 6.47605C9.25647 6.40932 9.21596 6.34869 9.16489 6.29761C9.11381 6.24654 9.05318 6.20603 8.98645 6.17839C8.91972 6.15075 8.8482 6.13652 8.77598 6.13652H8.0584C9.7702 4.84387 11.8399 4.10195 14.001 4.10195C19.4751 4.10195 23.901 8.52782 23.901 14.002C23.901 19.4761 19.4751 23.902 14.001 23.902C8.52684 23.902 4.10098 19.4761 4.10098 14.002C4.10098 12.6381 4.38263 11.2888 4.92855 10.0389C4.98691 9.90532 4.98982 9.75399 4.93665 9.61822C4.88347 9.48246 4.77855 9.37336 4.64496 9.31492C4.57877 9.28596 4.50753 9.27032 4.4353 9.2689C4.36306 9.26747 4.29126 9.2803 4.22398 9.30663C4.15671 9.33297 4.09528 9.3723 4.04321 9.42238C3.99114 9.47247 3.94944 9.53232 3.92051 9.59852C3.31393 10.9872 3.00098 12.4866 3.00098 14.002C3.00098 20.0706 7.93236 25.002 14.001 25.002C20.0696 25.002 25.001 20.0706 25.001 14.002C25.001 7.93334 20.0696 3.00195 14.001 3.00195Z\"\r\n fill=\"#F3A041\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M13.9988 6.13965C9.6616 6.13965 6.13379 9.66746 6.13379 14.0046C6.13379 18.3418 9.6616 21.8696 13.9988 21.8696C18.336 21.8696 21.8638 18.3418 21.8638 14.0046C21.8638 9.66746 18.336 6.13965 13.9988 6.13965ZM13.9988 8.22965C14.1447 8.22965 14.2846 8.28759 14.3877 8.39074C14.4908 8.49388 14.5488 8.63378 14.5488 8.77965V13.7769L17.5227 16.7508C17.6258 16.8539 17.6837 16.9938 17.6837 17.1396C17.6837 17.2855 17.6258 17.4254 17.5227 17.5285C17.4195 17.6316 17.2796 17.6896 17.1338 17.6896C16.9879 17.6896 16.8481 17.6316 16.7449 17.5285L13.6099 14.3935C13.5068 14.2904 13.4488 14.1505 13.4488 14.0046V8.77965C13.4488 8.63378 13.5067 8.49388 13.6099 8.39074C13.713 8.28759 13.8529 8.22965 13.9988 8.22965Z\"\r\n fill=\"#F3A041\" />\r\n <rect width=\"28.56\" height=\"28\" rx=\"1.51479\" fill=\"none\" />\r\n <path\r\n d=\"M15.068 22.7391V17.6708H18.4968L14.2108 12.6025L9.9248 17.6708H13.3536V22.7391H9.06759V22.6969C8.92358 22.7053 8.78643 22.7391 8.63899 22.7391C6.93391 22.7391 5.29866 22.0717 4.09298 20.8835C2.8873 19.6954 2.20996 18.084 2.20996 16.4037C2.20996 13.1532 4.70443 10.5042 7.90523 10.141C8.18585 8.6953 8.96892 7.39118 10.1197 6.45292C11.2706 5.51465 12.7172 5.00089 14.2108 5C15.7047 5.00082 17.1515 5.51452 18.3026 6.45277C19.4537 7.39101 20.2371 8.69516 20.5181 10.141C23.7189 10.5042 26.21 13.1532 26.21 16.4037C26.21 18.084 25.5326 19.6954 24.3269 20.8835C23.1213 22.0717 21.486 22.7391 19.7809 22.7391C19.6369 22.7391 19.4981 22.7053 19.3523 22.6969V22.7391H15.068Z\"\r\n fill=\"white\" />\r\n </svg>\r\n </div>\r\n <a type=\"button\" (click)=\"openFileDialog()\" class=\"upload_title cursor-pointer \">\r\n {{ setting('upload-text') }}\r\n </a>\r\n </div>\r\n </div>\r\n\r\n\r\n <input #fileInput type=\"file\" [multiple]=\"setting('multiple-upload')\" (change)=\"onFileSelected($event)\"\r\n accept=\".csv,.pdf,.xls,.xlsx,.doc,.docx,.txt,image/*\" style=\"display: none;\" />\r\n\r\n <div class=\"file-list flex items-center gap-4 flex-wrap w-full\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div *ngFor=\"let file of uploadedFiles; let i = index\"\r\n class=\"relative p-3 border rounded-lg shadow-sm bg-white w-[450px] upload_file\">\r\n\r\n <!-- Close icon -->\r\n <div class=\"close_icon cursor-pointer absolute top-2 right-2\" (click)=\"deleteFile(i)\">\r\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"22\" height=\"22\" rx=\"11\" fill=\"#F3A041\" />\r\n <path\r\n d=\"M7.08911 15.8889L6.11133 14.9111L10.0224 11L6.11133 7.08886L7.08911 6.11108L11.0002 10.0222L14.9113 6.11108L15.8891 7.08886L11.978 11L15.8891 14.9111L14.9113 15.8889L11.0002 11.9778L7.08911 15.8889Z\"\r\n fill=\"white\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"thumbnail_title flex\">\r\n <!-- Thumbnail on left -->\r\n <div class=\"thumbnail\">\r\n <ng-container *ngIf=\"file.type === 'image'; else nonImageThumb\">\r\n <img class=\"file-thumbnail\" [src]=\"file?.result\" alt=\"preview\"\r\n *ngIf=\"file?.result\" />\r\n <svg *ngIf=\"!file?.result\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12.7013 13H3.3127C2.58501 13 2 12.4048 2 11.6645V4.33548C2 3.59516 2.58501 3 3.3127 3H12.6871C13.4147 3 13.9998 3.59516 13.9998 4.33548V11.6645C14.014 12.4048 13.4147 13 12.7013 13ZM9.24836 7.90484L7.39347 10.0677C7.27932 10.2129 7.05102 10.2129 6.93688 10.0823L5.93809 8.99355C5.80967 8.8629 5.60991 8.8629 5.4815 8.99355L3.76929 10.8661C3.5838 11.0694 3.72648 11.4032 3.99758 11.4032H6.26626H8.13543H12.0164C12.2875 11.4032 12.4302 11.0839 12.2447 10.8806L9.71922 7.90484C9.59081 7.75968 9.37678 7.75968 9.24836 7.90484ZM6.73712 5.98871C6.25199 5.98871 5.85248 6.39516 5.85248 6.88871C5.85248 7.38226 6.25199 7.78871 6.73712 7.78871C7.22225 7.78871 7.62176 7.38226 7.62176 6.88871C7.62176 6.39516 7.22225 5.98871 6.73712 5.98871Z\"\r\n fill=\"#999999\" />\r\n </svg>\r\n\r\n </ng-container>\r\n\r\n <ng-template #nonImageThumb>\r\n <div class=\"file-thumbnail\">\r\n <ng-container [ngSwitch]=\"file.type\">\r\n\r\n\r\n\r\n <svg *ngSwitchCase=\"'csv'\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#23A761\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M6.94076 10.3433C6.85939 10.3433 6.78716 10.3588 6.72408 10.3899C6.66191 10.42 6.60934 10.464 6.56637 10.5216C6.52432 10.5793 6.49232 10.6489 6.47038 10.7305C6.44844 10.8122 6.43747 10.904 6.43747 11.006C6.43747 11.1435 6.45484 11.261 6.48958 11.3586C6.52523 11.4553 6.58009 11.5294 6.65414 11.5808C6.7282 11.6314 6.82373 11.6567 6.94076 11.6567C7.02212 11.6567 7.10349 11.6478 7.18486 11.6301C7.26714 11.6123 7.35628 11.587 7.45228 11.5542V11.9002C7.36359 11.9357 7.27628 11.961 7.19035 11.976C7.10441 11.992 7.00795 12 6.90099 12C6.69437 12 6.52432 11.9587 6.39084 11.8762C6.25827 11.7929 6.15999 11.6766 6.096 11.5276C6.032 11.3777 6 11.2029 6 11.0033C6 10.8561 6.02057 10.7212 6.06171 10.5988C6.10285 10.4764 6.16319 10.3704 6.24273 10.2808C6.32227 10.1912 6.42055 10.122 6.53758 10.0732C6.6546 10.0244 6.78899 10 6.94076 10C7.04041 10 7.14006 10.0124 7.23971 10.0373C7.34028 10.0612 7.43628 10.0945 7.5277 10.1371L7.39057 10.4724C7.3156 10.4378 7.24017 10.4076 7.16429 10.3819C7.08841 10.3562 7.0139 10.3433 6.94076 10.3433Z\"\r\n fill=\"white\" />\r\n <path\r\n d=\"M9.06363 11.4331C9.06363 11.5485 9.03483 11.6487 8.97724 11.7339C8.91964 11.819 8.83553 11.8847 8.7249 11.9308C8.61519 11.9769 8.48172 12 8.32447 12C8.25498 12 8.18687 11.9956 8.12013 11.9867C8.05431 11.9778 7.99077 11.965 7.92951 11.9481C7.86917 11.9304 7.81157 11.9086 7.75672 11.8829V11.4997C7.8518 11.5405 7.95054 11.5773 8.05293 11.6101C8.15533 11.6429 8.25681 11.6593 8.35738 11.6593C8.42686 11.6593 8.48263 11.6505 8.52468 11.6327C8.56765 11.615 8.59874 11.5906 8.61794 11.5595C8.63714 11.5285 8.64674 11.493 8.64674 11.4531C8.64674 11.4043 8.62982 11.3626 8.596 11.328C8.56217 11.2934 8.51554 11.261 8.45612 11.2309C8.3976 11.2007 8.33132 11.1683 8.25727 11.1337C8.21064 11.1124 8.1599 11.0867 8.10505 11.0566C8.05019 11.0255 7.99808 10.9878 7.94871 10.9434C7.89934 10.8991 7.85866 10.8454 7.82666 10.7824C7.79558 10.7186 7.78003 10.6423 7.78003 10.5536C7.78003 10.4373 7.80746 10.338 7.86231 10.2555C7.91717 10.173 7.99534 10.11 8.09682 10.0665C8.19921 10.0222 8.31989 10 8.45886 10C8.56308 10 8.66228 10.012 8.75645 10.0359C8.85153 10.059 8.95072 10.0927 9.05403 10.1371L8.9169 10.4578C8.82456 10.4214 8.74182 10.3934 8.66868 10.3739C8.59554 10.3535 8.52103 10.3433 8.44515 10.3433C8.39212 10.3433 8.34686 10.3517 8.30938 10.3686C8.2719 10.3846 8.24355 10.4076 8.22436 10.4378C8.20516 10.4671 8.19556 10.5012 8.19556 10.5403C8.19556 10.5864 8.20927 10.6254 8.2367 10.6574C8.26504 10.6884 8.30709 10.7186 8.36286 10.7478C8.41955 10.7771 8.48994 10.8113 8.57405 10.8503C8.67645 10.8973 8.76376 10.9466 8.83598 10.998C8.90912 11.0486 8.96535 11.1084 9.00466 11.1776C9.04398 11.246 9.06363 11.3311 9.06363 11.4331Z\"\r\n fill=\"white\" />\r\n <path\r\n d=\"M11 10.0279L10.3184 11.9734H9.85491L9.17471 10.0279H9.60395L9.98108 11.1856C9.98748 11.2051 9.99799 11.242 10.0126 11.2961C10.0272 11.3493 10.0419 11.4061 10.0565 11.4664C10.072 11.5258 10.0826 11.5751 10.088 11.6141C10.0935 11.5751 10.1031 11.5258 10.1168 11.4664C10.1315 11.407 10.1456 11.3506 10.1594 11.2974C10.174 11.2433 10.1845 11.206 10.1909 11.1856L10.5708 10.0279H11Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"7\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"5\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"9\" y=\"7\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"9\" y=\"5\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n </svg>\r\n\r\n <svg *ngSwitchCase=\"'text'\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#1F5EBB\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M7.04353 12H6.61105V10.3203H6.0572V9.96038H7.59738V10.3203H7.04353V12ZM9.56027 12H9.06641L8.59208 11.2285L8.11775 12H7.65458L8.33119 10.9481L7.69782 9.96038H8.17494L8.6144 10.6942L9.04548 9.96038H9.51144L8.87109 10.9718L9.56027 12ZM10.6038 12H10.1713V10.3203H9.61747V9.96038H11.1576V10.3203H10.6038V12Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"5\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"6\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"7\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n </svg>\r\n\r\n <svg *ngSwitchDefault width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#DD2025\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M6.6084 9.96038C6.87161 9.96038 7.06366 10.0171 7.18457 10.1306C7.30548 10.2431 7.36593 10.3984 7.36593 10.5965C7.36593 10.6858 7.35245 10.7714 7.32547 10.8532C7.2985 10.9342 7.25432 11.0062 7.19294 11.0695C7.13249 11.1327 7.05157 11.1829 6.9502 11.2201C6.84882 11.2564 6.72373 11.2746 6.57492 11.2746H6.38937V12H5.95689V9.96038H6.6084ZM6.58608 10.3147H6.38937V10.9202H6.53167C6.61258 10.9202 6.6828 10.9095 6.74233 10.8881C6.80185 10.8667 6.84789 10.8332 6.88044 10.7877C6.91299 10.7421 6.92927 10.6835 6.92927 10.6119C6.92927 10.5114 6.90137 10.437 6.84556 10.3887C6.78976 10.3394 6.70326 10.3147 6.58608 10.3147ZM9.44322 10.9607C9.44322 11.1904 9.39904 11.3824 9.31069 11.5368C9.22326 11.6903 9.09631 11.8061 8.92983 11.8842C8.76335 11.9614 8.56292 12 8.32854 12H7.75098V9.96038H8.39132C8.60524 9.96038 8.79078 9.99851 8.94796 10.0748C9.10514 10.1501 9.22698 10.2622 9.31348 10.411C9.39997 10.5589 9.44322 10.7421 9.44322 10.9607ZM8.994 10.9718C8.994 10.8211 8.97168 10.6975 8.92704 10.6007C8.88332 10.5031 8.81822 10.431 8.73172 10.3845C8.64616 10.338 8.54013 10.3147 8.41364 10.3147H8.18345V11.6429H8.369C8.58012 11.6429 8.73684 11.5866 8.83915 11.4741C8.94238 11.3615 8.994 11.1941 8.994 10.9718ZM10.2914 12H9.86593V9.96038H11.035V10.3147H10.2914V10.8407H10.9834V11.1936H10.2914V12Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"5\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"6\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"7\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\" />\r\n </svg>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- Metadata on right -->\r\n <div class=\"title_notes ml-2\">\r\n <!-- Title -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm input-title m-0 -mt-1\">Title</label>\r\n <input [(ngModel)]=\"file.title\" name=\"title{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Enter title\" class=\" rounded px-3 py-2 mb-3 w-full outline-none focus:ring\" />\r\n\r\n </div>\r\n <!-- Notes -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm input-title m-0 -mt-1\">Notes</label>\r\n <textarea [(ngModel)]=\"file.notes\" name=\"notes{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Enter notes\" class=\" rounded px-3 py-2 mb-0 w-full outline-none focus:ring\"\r\n rows=\"2\"></textarea>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"category mt-2\">\r\n <!-- Category -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm input-title m-0\">Category</label>\r\n <select [(ngModel)]=\"file.categoryId \" name=\"category{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n class=\" rounded px-3 py-2 w-full outline-none focus:ring\">\r\n <option value=\"\">Select Category</option>\r\n <option *ngFor=\"let c of categories\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n</fx-component>", styles: [".custom-upload{border:0;border-top:1px solid #ccc;padding:1em 0 0}.custom-upload a{color:#fff}.custom-upload .separator{height:56px;width:2px;background-color:#ccc;margin:10px}.custom-upload .upload{background-color:#f29f41;padding:3px 12px 4px 6px;border-radius:4px;margin-left:0}.custom-upload .upload .upload_title{font-size:14px;font-weight:500}.custom-upload .file-list{margin:.75em 0 0!important}.custom-upload .file-list .upload_file{width:23.5%!important;min-width:250px;max-width:400px}.custom-upload .file-list .upload_file .close_icon{position:absolute;top:-12px;right:-12px}.custom-upload .file-list .upload_file .close_icon svg{width:24px;height:24px}.custom-upload .file-list .upload_file .thumbnail_title .thumbnail{width:25%;height:100px;border:1px solid #ccc;display:flex;align-items:center;background:#fbfbfb}.custom-upload .file-list .upload_file .thumbnail_title .thumbnail :is(.file-thumbnail svg,.file-thumbnail img){width:100%;height:auto;max-height:98px!important;padding:0}.custom-upload .file-list .upload_file .thumbnail_title .title_notes{width:75%;margin-top:-6px}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container{padding:.5em 0 0 .5em}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container input{border-color:#ccc!important}.custom-upload .file-list .upload_file .thumbnail_title .title_notes>.input-container textarea{border-color:#ccc!important;height:50px!important}.custom-upload .file-list .upload_file .category .input-title{margin-top:-10px;margin-left:-8px}[type=checkbox]{padding:12px}[type=checkbox]:checked{background-color:#f3a041!important;padding:12px;background-size:1em 1em!important}.input-title{position:absolute;bottom:auto;right:auto;left:1rem;top:.05rem;z-index:auto;padding:0rem .25rem;font-weight:400;font-size:11px;border-radius:.25rem;z-index:1}.input-container{position:relative;inset:auto;z-index:auto}input,textarea,select{border:1px solid #999!important}input:focus,textarea:focus,select:focus{outline:0 none!important;outline-offset:0!important;box-shadow:0 0 0 .2rem #bfdbfe!important}\n"] }]
|
|
507
507
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FxBuilderWrapperService }, { type: i2.MessageService }, { type: i2.ConfirmationService }], propDecorators: { fileInput: [{
|
|
508
508
|
type: ViewChild,
|
|
509
509
|
args: ['fileInput']
|
|
510
510
|
}] } });
|
|
511
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy91cGxvYWRlci91cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZGVyL3VwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFvQyxTQUFTLEVBQWMsTUFBTSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFhLGVBQWUsRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsSixPQUFPLEVBQTZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVNUMsTUFBTSxPQUFP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NWlCQXlLZSx1cEVEekpILFlBQVksNGdCQUFFLFdBQVcsNEVBQUUsV0FBVyx5Z0NBQUUsbUJBQW1CLDhCQUFDLGdCQUFnQiw4QkFBQyxXQUFXLDhCQUFDLG1CQUFtQjs7NEZBSzNHLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsZ0JBQWdCLEVBQUMsV0FBVyxFQUFDLG1CQUFtQixDQUFDLGFBQzVHLENBQUMsY0FBYyxFQUFDLG1CQUFtQixDQUFDOzJMQW9CdkIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGeEJhc2VDb21wb25lbnQsIEZ4Q29tcG9uZW50LCBGeFNlbGVjdFNldHRpbmcsIEZ4U2V0dGluZywgRnhTdHJpbmdTZXR0aW5nLCBGeFZhbGlkYXRpb24sIEZ4VmFsaWRhdG9yU2VydmljZSB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Z4LWJ1aWxkZXItd3JhcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRNb2R1bGUsIFVwbG9hZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1kaWFsb2cnO1xyXG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmeC11cGxvYWRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGeENvbXBvbmVudCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsRmlsZVVwbG9hZE1vZHVsZSxUb2FzdE1vZHVsZSxDb25maXJtRGlhbG9nTW9kdWxlXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSxDb25maXJtYXRpb25TZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91cGxvYWRlci5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkZXJDb21wb25lbnQgZXh0ZW5kcyBGeEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcbiAgLy8gcHVibGljIHVwbG9hZEZpbGVDb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG4gIHB1YmxpYyB1cGxvYWRGaWxlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIHB1YmxpYyB1cGxvYWRlZEZpbGVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgcHVibGljIGZvcm1hdHRlZERhdGE6IGFueSA9IHtcclxuICAgIHVwbG9hZGVkRmlsZXM6IFtdLFxyXG4gICAgZGVsZXRlZEZpbGVzOiBbXVxyXG4gIH07XHJcbiAgY2F0ZWdvcmllcyA9IFtcclxuICB7IGxhYmVsOiAnT3JhbCBJbWFnZXMnLCB2YWx1ZTogMTYgfSxcclxuICB7IGxhYmVsOiAnUGFzdCBEb2NzJywgdmFsdWU6IDE3IH0sXHJcbiAgeyBsYWJlbDogJ1gtUmF5cycsIHZhbHVlOiAxNCB9LFxyXG4gIHsgbGFiZWw6ICdQcm9maWxlJywgdmFsdWU6IDE4IH0sXHJcbl07XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PEJvb2xlYW4+KCk7XHJcbiAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgZnhCdWlsZGVyV3JhcHBlclNlcnZpY2U6IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGNkcilcclxuICAgIHRoaXMub25Jbml0LnN1YnNjcmliZSgoZnhEYXRhKT0+e1xyXG4gICAgICB0aGlzLl9yZWdpc3Rlcih0aGlzLnVwbG9hZEZpbGVDb250cm9sKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgdXBsb2FkZWRJbWFnZXM6IHsgW2tleTogc3RyaW5nXTogeyByZXN1bHQ6IHN0cmluZywgZmlsZTogRmlsZSB8IG51bGwgfVtdIH0gPSB7fTtcclxuICBkZWxldGVkRmlsZXM6IGFueVtdID0gW107XHJcbiAgLy8gcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAvLyAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG4gIFxyXG4gIC8vICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG4gIFxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuICAvLyAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ3VwbG9hZGVyJykgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAvLyAgICAgICAgICAgdXBsb2FkZWRGaWxlc1trZXldID0gdmFsdWU7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIFxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzKSkge1xyXG4gIC8vICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHN0cmluZz5bXSA9IFtdO1xyXG4gIFxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKCh1cmw6IHN0cmluZykgPT4ge1xyXG4gIC8vICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSlcclxuICAvLyAgICAgICAgICAgICApO1xyXG4gIC8vICAgICAgICAgICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG4gIFxyXG4gIC8vICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGgpIHtcclxuICAvLyAgICAgICAgICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICAgICAgICAgIG5leHQ6IChpbWFnZVVybHM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3VwbG9hZGVyS2V5XSA9IGltYWdlVXJscy5tYXAocmVzdWx0ID0+ICh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIHJlc3VsdCxcclxuICAvLyAgICAgICAgICAgICAgICAgZmlsZTogbnVsbFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpO1xyXG4gIC8vICAgICAgICAgICAgICAgLy8gdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRJbWFnZXNdXHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBPYmplY3QudmFsdWVzKHRoaXMudXBsb2FkZWRJbWFnZXMpLmZsYXQoKTtcclxuICAvLyAgICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2VzIGZvciAke3VwbG9hZGVyS2V5fTpgLCBlcnIpO1xyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcbiAgXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAvLyAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gIC8vICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgLy8gICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgLy8gICAgICAgICAgIHVwbG9hZGVkRmlsZXNba2V5XSA9IHZhbHVlO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXMpKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZywgb3JpZ2luYWxVcmw6IHN0cmluZyB9PltdID0gW107XHJcblxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKCh1cmw6IHN0cmluZykgPT4ge1xyXG4gIC8vICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCAvLyBqdXN0IGZvciBwcmV2aWV3XHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiB1cmxcclxuICAvLyAgICAgICAgICAgICAgIH0pKVxyXG4gIC8vICAgICAgICAgICAgICk7XHJcbiAgLy8gICAgICAgICAgICAgaW1hZ2VGZXRjaGVzLnB1c2goaW1hZ2UkKTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfSk7XHJcblxyXG4gIC8vICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGgpIHtcclxuICAvLyAgICAgICAgICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICAgICAgICAgIG5leHQ6IChpbWFnZURhdGEpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGltYWdlRGF0YS5tYXAoaXRlbSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgLy8gICAgICAgICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiBpdGVtLm9yaWdpbmFsVXJsLFxyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQ6IGl0ZW0ucmVzdWx0XHJcbiAgLy8gICAgICAgICAgICAgICB9KSk7XHJcblxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy51cGxvYWRlZEZpbGVzKTtcclxuICAvLyAgICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2VzIGZvciAke3VwbG9hZGVyS2V5fTpgLCBlcnIpO1xyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcblxyXG4vLyAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4vLyAgICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbi8vICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuLy8gICAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuLy8gICAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG4gIFxyXG4vLyAgICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXNNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG4gIFxyXG4vLyAgICAgICAgIC8vIEV4dHJhY3QgdXBsb2FkZXIga2V5cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBVUkwgYXJyYXlzXHJcbi8vICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4vLyAgICAgICAgICAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4vLyAgICAgICAgICAgICB1cGxvYWRlZEZpbGVzTWFwW2tleV0gPSB2YWx1ZTtcclxuLy8gICAgICAgICAgIH1cclxuLy8gICAgICAgICB9XHJcbiAgXHJcbi8vICAgICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXNNYXApKSB7XHJcbi8vICAgICAgICAgICAvLyBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZzsgb3JpZ2luYWxVcmw6IGFueTsgdGl0bGU6c3RyaW5nIDsgbm90ZXM6c3RyaW5nIH0+W10gPSBbXTtcclxuICBcclxuLy8gICAgICAgICAgIC8vIHVybHMuZm9yRWFjaCgob3JpZ2luYWxVcmw6YW55KSA9PiB7XHJcbi8vICAgICAgICAgICAvLyAgIGlmIChvcmlnaW5hbFVybCkge1xyXG4vLyAgICAgICAgICAgLy8gICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQob3JpZ2luYWxVcmw/Lm9yaWdpbmFsVXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbi8vICAgICAgICAgICAvLyAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+ICh7XHJcbi8vICAgICAgICAgICAvLyAgICAgICAgIHJlc3VsdDogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgLy8gZm9yIHByZXZpZXdcclxuLy8gICAgICAgICAgIC8vICAgICAgICAgb3JpZ2luYWxVcmw6IG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCAgICAgICAgICAvLyBwcmVzZXJ2ZSBvcmlnaW5hbFxyXG4vLyAgICAgICAgICAgLy8gICAgICAgfSkpXHJcbi8vICAgICAgICAgICAvLyAgICAgKTtcclxuLy8gICAgICAgICAgIC8vICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4vLyAgICAgICAgICAgLy8gICB9XHJcbi8vICAgICAgICAgICAvLyB9KTtcclxuXHJcbi8vICAgICAgICAgICBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZzsgb3JpZ2luYWxVcmw6IGFueTsgdGl0bGU6IHN0cmluZzsgbm90ZXM6IHN0cmluZyB9PltdID0gW107XHJcblxyXG4vLyB1cmxzLmZvckVhY2goKG9yaWdpbmFsVXJsOiBhbnkpID0+IHtcclxuLy8gICBpZiAob3JpZ2luYWxVcmwpIHtcclxuLy8gICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQob3JpZ2luYWxVcmw/Lm9yaWdpbmFsVXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbi8vICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuLy8gICAgICAgICByZXN1bHQ6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIC8vIGZvciBwcmV2aWV3XHJcbi8vICAgICAgICAgb3JpZ2luYWxVcmw6IG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCwgLy8gcHJlc2VydmUgb3JpZ2luYWxcclxuLy8gICAgICAgICB0aXRsZTogb3JpZ2luYWxVcmw/LnRpdGxlIHx8ICcnLCAvLyBkZWZhdWx0IGVtcHR5IGlmIG5vdCBwcmVzZW50XHJcbi8vICAgICAgICAgbm90ZXM6IG9yaWdpbmFsVXJsPy5ub3RlcyB8fCAnJ1xyXG4vLyAgICAgICB9KSlcclxuLy8gICAgICk7XHJcbi8vICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4vLyAgIH1cclxuLy8gfSk7XHJcblxyXG4gIFxyXG4vLyAgICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGggPiAwKSB7XHJcbi8vICAgICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuLy8gICAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VEYXRhKSA9PiB7XHJcbi8vICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBpbWFnZURhdGEubWFwKGl0ZW0gPT4gKHtcclxuLy8gICAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4vLyAgICAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4vLyAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogaXRlbS5vcmlnaW5hbFVybCxcclxuLy8gICAgICAgICAgICAgICAgICAgcmVzdWx0OiBpdGVtLnJlc3VsdCxcclxuLy8gICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXHJcbi8vICAgICAgICAgICAgICAgICAgIG5vdGVzOiAnJ1xyXG4vLyAgICAgICAgICAgICAgICAgfSkpO1xyXG4gIFxyXG4vLyAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuLy8gICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4vLyAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4vLyAgICAgICAgICAgICAgIH0sXHJcbi8vICAgICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuLy8gICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbi8vICAgICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICB9KTtcclxuLy8gICAgICAgICAgIH1cclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgIH0pO1xyXG4vLyAgIH1cclxuICBcclxuICAvLyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gIC8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuICBcclxuICAvLyAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IHsgb3JpZ2luYWxVcmw6IHN0cmluZyB9W10gfSA9IHZhcmlhYmxlcy51cGxvYWRlZEZpbGVzO1xyXG4gIFxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4gIC8vICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHsgcmVzdWx0OiBzdHJpbmc7IG9yaWdpbmFsVXJsOiBzdHJpbmcgfT5bXSA9IFtdO1xyXG4gIFxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKChmaWxlT2JqOiBhbnkpID0+IHtcclxuICAvLyAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmwgPSBmaWxlT2JqPy5vcmlnaW5hbFVybDtcclxuICAvLyAgICAgICAgICAgaWYgKG9yaWdpbmFsVXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldChvcmlnaW5hbFVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4gIC8vICAgICAgICAgICAgICAgbWFwKChibG9iOiBCbG9iKSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQ6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIC8vIGZvciBwcmV2aWV3XHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsXHJcbiAgLy8gICAgICAgICAgICAgICB9KSlcclxuICAvLyAgICAgICAgICAgICApO1xyXG4gIC8vICAgICAgICAgICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG4gIFxyXG4gIC8vICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuICAvLyAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VEYXRhKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBpbWFnZURhdGEubWFwKGl0ZW0gPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gIC8vICAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gIC8vICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogaXRlbS5vcmlnaW5hbFVybCxcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBpdGVtLnJlc3VsdFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpO1xyXG4gIFxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIC8vICAgICAgICAgICAgIH0sXHJcbiAgLy8gICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbiAgLy8gICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH1cclxuICBcclxuXHJcbiAgLy8gcHVibGljIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAvLyAgIGlmIChpbnB1dC5maWxlcykge1xyXG4gIC8vICAgICBmb3IobGV0IGkgPSAwOyBpIDwgaW5wdXQ/LmZpbGVzPy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1tpXTtcclxuICAvLyAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gIC8vICAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHtcclxuICAvLyAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKHtcclxuICAvLyAgICAgICAgICAgZmlsZTogZmlsZSxcclxuICAvLyAgICAgICAgICAgcmVzdWx0OiBlLnRhcmdldD8ucmVzdWx0LFxyXG4gIC8vICAgICAgICAgICBuYW1lOiBmaWxlPy5uYW1lLFxyXG4gIC8vICAgICAgICAgICBpZDogdXVpZHY0KClcclxuICAvLyAgICAgICAgIH0pXHJcbiAgLy8gICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMudXBsb2FkZWRGaWxlcyk7XHJcbiAgLy8gICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVwbG9hZEZpbGVDb250cm9sKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAvLyAgIGlmIChpbnB1dC5maWxlcykge1xyXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0LmZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzW2ldO1xyXG4gIC8vICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gIC8vICAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHtcclxuICAvLyAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7XHJcbiAgLy8gICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAvLyAgICAgICAgICAgZmlsZTogZmlsZSxcclxuICAvLyAgICAgICAgICAgb3JpZ2luYWxVcmw6IG51bGwsXHJcbiAgLy8gICAgICAgICAgIHJlc3VsdDogZS50YXJnZXQ/LnJlc3VsdCxcclxuICAvLyAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxyXG4gIC8vICAgICAgICAgICB0aXRsZTogJycsXHJcbiAgLy8gICAgICAgICAgIG5vdGVzOiAnJyxcclxuICAvLyAgICAgICAgICAgY2F0ZWdvcnk6ICcnLFxyXG4gIC8vICAgICAgICAgICB0eXBlOiB0aGlzLmRldGVjdEZpbGVUeXBlKGZpbGUpLFxyXG4gIC8vICAgICAgICAgfTtcclxuXHJcbiAgLy8gICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChuZXdGaWxlKTtcclxuICAvLyAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIC8vICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIC8vICAgICAgIH07XHJcblxyXG4gIC8vICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuLy8gICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbi8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4vLyAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH0gPSB7fTtcclxuXHJcbiAgICAgXHJcbi8vICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuLy8gICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbi8vICAgICAgICAgICB1cGxvYWRlZEZpbGVzTWFwW2tleV0gPSB2YWx1ZTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgIH1cclxuXHJcbi8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4vLyAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHVybHNcclxuLy8gICAgICAgICAgIC5maWx0ZXIoKGZpbGVPYmo6IGFueSkgPT4gISFmaWxlT2JqKSBcclxuLy8gICAgICAgICAgIC5tYXAoKGZpbGVPYmo6IGFueSkgPT4ge1xyXG4vLyAgICAgICAgICAgICAvLyBjb25zdCBmaWxlVHlwZSA9IHRoaXMuZGV0ZWN0RmlsZVR5cGVGcm9tVXJsKGZpbGVPYmo/Lm9yaWdpbmFsVXJsIHx8IGZpbGVPYmo/Lm5hbWUpO1xyXG5cclxuLy8gICAgICAgICAgICAgcmV0dXJuIHtcclxuLy8gICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbi8vICAgICAgICAgICAgICAgZmlsZTogbnVsbCwgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbi8vICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IGZpbGVPYmoub3JpZ2luYWxVcmwsICAgIFxyXG4vLyAgICAgICAgICAgICAgIHJlc3VsdDogZmlsZU9iaj8udHlwZSA9PT0gJ2ltYWdlJyA/IGZpbGVPYmoub3JpZ2luYWxVcmwucHJldmlld1VybCA6IG51bGwsXHJcbi8vICAgICAgICAgICAgICAgbmFtZTogZmlsZU9iaj8ubmFtZSB8fCAnJyxcclxuLy8gICAgICAgICAgICAgICB0aXRsZTogZmlsZU9iaj8udGl0bGUgfHwgJycsXHJcbi8vICAgICAgICAgICAgICAgbm90ZXM6IGZpbGVPYmo/Lm5vdGVzIHx8ICcnLFxyXG4vLyAgICAgICAgICAgICAgIGNhdGVnb3J5OiBmaWxlT2JqPy5jYXRlZ29yeSB8fCAnJyxcclxuLy8gICAgICAgICAgICAgICB0eXBlOiBmaWxlT2JqPy50eXBlLCAgICAgICAgICAgICAgICBcclxuLy8gICAgICAgICAgICAgfTtcclxuLy8gICAgICAgICAgIH0pO1xyXG5cclxuLy8gICAgICAgICBpZiAoZm9ybWF0dGVkLmxlbmd0aCA+IDApIHtcclxuLy8gICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLmZvcm1hdHRlZF07XHJcbi8vICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuLy8gICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgIH1cclxuLy8gICAgIH0pO1xyXG4vLyB9XHJcblxyXG5uZ09uSW5pdCgpOiB2b2lkIHtcclxuICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH0gPSB7fTtcclxuXHJcbiAgICAgIFxyXG4gICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiAodmFsdWUgYXMgYW55KT8udXBsb2FkZWRGaWxlcykge1xyXG4gICAgdXBsb2FkZWRGaWxlc01hcFtrZXldID0gKHZhbHVlIGFzIGFueSkudXBsb2FkZWRGaWxlcztcclxuICB9XHJcbn1cclxuXHJcbiAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCBmaWxlc10gb2YgT2JqZWN0LmVudHJpZXModXBsb2FkZWRGaWxlc01hcCkpIHtcclxuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmaWxlc1xyXG4gICAgICAgICAgLmZpbHRlcigoZmlsZU9iajogYW55KSA9PiAhIWZpbGVPYmopXHJcbiAgICAgICAgICAubWFwKChmaWxlT2JqOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmxPYmogPSBmaWxlT2JqLm9yaWdpbmFsVXJsO1xyXG4gICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IG9yaWdpbmFsVXJsT2JqPy5maWxlTmFtZSB8fCAnJztcclxuICAgICAgICAgICAgY29uc3QgZmlsZVVybCA9IG9yaWdpbmFsVXJsT2JqPy5maWxlVXJsIHx8ICcnO1xyXG4gICAgICAgICAgICBjb25zdCBwcmV2aWV3VXJsID0gb3JpZ2luYWxVcmxPYmo/LnByZXZpZXdVcmw7XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBmaWxlT2JqPy50eXBlO1xyXG5cclxuICAgICAgICAgICAgLy8gZGV0ZWN0IHR5cGUgYmFzZWQgb24gZmlsZSBleHRlbnNpb25cclxuICAgICAgICAgICAgLy8gY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlRnJvbVVybChmaWxlTmFtZSB8fCBmaWxlVXJsKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgICAgICAgIGZpbGU6IG51bGwsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90aGluZyBsb2NhbFxyXG4gICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiBvcmlnaW5hbFVybE9iaiwgICAgICAgLy8ga2VlcCB3aG9sZSBvYmplY3RcclxuICAgICAgICAgICAgICByZXN1bHQ6IHR5cGUgPT09ICdpbWFnZSdcclxuICAgICAgICAgICAgICAgID8gKHByZXZpZXdVcmwpICAgICAgICAvLyBwcmVmZXIgcHJldmlld1VybCwgZmFsbGJhY2sgdG8gZmlsZVVybFxyXG4gICAgICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiBmaWxlT2JqPy50aXRsZSB8fCAnJyxcclxuICAgICAgICAgICAgICBub3RlczogZmlsZU9iaj8ubm90ZXMgfHwgJycsXHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnlJZCA6IGZpbGVPYmo/LmNhdGVnb3J5SWQgIHx8ICcnLFxyXG4gICAgICAgICAgICAgIHR5cGU6IHR5cGUsICAgICAgICAgICAgICAgICAgICAvLyBjb21wdXRlZCB0eXBlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKGZvcm1hdHRlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gICAgICAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuXHJcblxyXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgaWYgKCFpbnB1dC5maWxlcykgcmV0dXJuO1xyXG5cclxuICBBcnJheS5mcm9tKGlucHV0LmZpbGVzKS5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlKGZpbGUpO1xyXG5cclxuICAgIGNvbnN0IG5ld0ZpbGU6IGFueSA9IHtcclxuICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICBvcmlnaW5hbFVybDogbnVsbCxcclxuICAgICAgcmVzdWx0OiBudWxsLCAgICAgXHJcbiAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICBub3RlczogJycsXHJcbiAgICAgIGNhdGVnb3J5SWQgOiAnJyxcclxuICAgICAgdHlwZTogZmlsZVR5cGUsICAgXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChmaWxlVHlwZSA9PT0gJ2ltYWdlJykge1xyXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XHJcbiAgICAgICAgbmV3RmlsZS5yZXN1bHQgPSBlLnRhcmdldD8ucmVzdWx0O1xyXG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAgICAgfTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7IC8vIG9ubHkgaW1hZ2VzIG5lZWQgcHJldmlld1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gbm9uLWltYWdlIOKGkiBwdXNoIGRpcmVjdGx5XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGlucHV0LnZhbHVlID0gJyc7XHJcbn1cclxuXHJcblxyXG4gIG9uTWV0YUNoYW5nZSgpIHtcclxuICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIHB1YmxpYyBkZWxldGVGaWxlKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcy5maWx0ZXIoZmlsZSA9PiBmaWxlPy5pZCAhPT0gaWQpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gZGVsZXRlRmlsZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgLy8gICBjb25zdCBbZGVsZXRlZEZpbGVdID0gdGhpcy51cGxvYWRlZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgXHJcbiAgLy8gICBpZiAoZGVsZXRlZEZpbGUpIHtcclxuICAvLyAgICAgdGhpcy5kZWxldGVkRmlsZXMucHVzaChkZWxldGVkRmlsZSk7XHJcbiAgLy8gICAgIHRoaXMuZm9ybWF0dGVkRGF0YSA9IHtcclxuICAvLyAgICAgICAuLi50aGlzLmZvcm1hdHRlZERhdGEsXHJcbiAgLy8gICAgICAgdXBsb2FkZWRGaWxlczogWy4uLnRoaXMudXBsb2FkZWRGaWxlc10sXHJcbiAgLy8gICAgICAgZGVsZXRlZEZpbGVzOiBbLi4udGhpcy5kZWxldGVkRmlsZXNdXHJcbiAgLy8gICAgIH07XHJcbiAgLy8gICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgZGVsZXRlZEZpbGUgPSB0aGlzLnVwbG9hZGVkRmlsZXM/LltpbmRleF07XHJcbiAgICBpZiAoIWRlbGV0ZWRGaWxlKSByZXR1cm47XHJcbiAgXHJcbiAgICAvLyBFbnN1cmUgZm9ybWF0dGVkRGF0YSBleGlzdHMgYW5kIGluaXRpYWxpemUgaWYgdW5kZWZpbmVkXHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGEgPSB0aGlzLmZvcm1hdHRlZERhdGEgfHwgeyB1cGxvYWRlZEZpbGVzOiBbXSwgZGVsZXRlZEZpbGVzOiBbXSB9O1xyXG4gIFxyXG4gICAgLy8gQWRkIHRoZSBkZWxldGVkIGZpbGUgdG8gdGhlIGRlbGV0ZWRGaWxlcyBhcnJheVxyXG4gICAgdGhpcy5kZWxldGVkRmlsZXMgPSBbLi4udGhpcy5kZWxldGVkRmlsZXMsIGRlbGV0ZWRGaWxlXTtcclxuICBcclxuICAgIC8vIFJlbW92ZSB0aGUgZmlsZSBmcm9tIHVwbG9hZGVkRmlsZXMgdXNpbmcgZmlsdGVyIGZvciBpbW11dGFiaWxpdHlcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcclxuICBcclxuICAgIC8vIFVwZGF0ZSBmb3JtYXR0ZWREYXRhXHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGEgPSB7XHJcbiAgICAgIC4uLnRoaXMuZm9ybWF0dGVkRGF0YSxcclxuICAgICAgdXBsb2FkZWRGaWxlczogdGhpcy51cGxvYWRlZEZpbGVzLFxyXG4gICAgICBkZWxldGVkRmlsZXM6IHRoaXMuZGVsZXRlZEZpbGVzXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgdXBsb2FkRmlsZUNvbnRyb2xcclxuICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICB9XHJcbiAgXHJcbiAgXHJcblxyXG4gIHByb3RlY3RlZCBzZXR0aW5ncygpOiBGeFNldHRpbmdbXSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAndXBsb2FkLXRleHQnLCAkdGl0bGU6ICdVcGxvYWQgVGV4dCcsIHZhbHVlOiAnVXBsb2FkIEZpbGUnfSksXHJcbiAgICAgIG5ldyBGeFNlbGVjdFNldHRpbmcoe2tleTogJ211bHRpcGxlLXVwbG9hZCcsICR0aXRsZTogJ011bHRpcGxlIFVwbG9hZCcsIHZhbHVlOiBmYWxzZX0sIFt7b3B0aW9uOiAnRW5hYmxlJywgdmFsdWU6IHRydWV9LCB7b3B0aW9uOiAnRGlzYWJsZScsIHZhbHVlOiBmYWxzZX1dKSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ21heEZpbGVObycsICR0aXRsZTogJ01heGltdW0gRmlsZSBVcGxvYWQgQWxsb3dlZCcsIHZhbHVlOjh9KSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgcmV0dXJuIFtGeFZhbGlkYXRvclNlcnZpY2UucmVxdWlyZWRdO1xyXG4gIH1cclxuXHJcbmRldGVjdEZpbGVUeXBlKGZpbGU6IEZpbGUpOiAnaW1hZ2UnIHwgJ2NzdicgfCAndGV4dCcgfCAncGRmJyB8ICdleGNlbCcgfCAnd29yZCcgfCAnb3RoZXInIHtcclxuICBjb25zdCBtaW1lID0gKGZpbGUudHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICBjb25zdCBuYW1lID0gKGZpbGUubmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgLy8gSW1hZ2VzXHJcbiAgaWYgKG1pbWUuc3RhcnRzV2l0aCgnaW1hZ2UvJykgfHwgL1xcLihwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wfHN2ZykkL2kudGVzdChuYW1lKSkge1xyXG4gICAgcmV0dXJuICdpbWFnZSc7XHJcbiAgfVxyXG5cclxuICAvLyBDU1ZcclxuICBpZiAobWltZSA9PT0gJ3RleHQvY3N2JyB8fCBuYW1lLmVuZHNXaXRoKCcuY3N2JykpIHtcclxuICAgIHJldHVybiAnY3N2JztcclxuICB9XHJcblxyXG4gIC8vIFRleHQgZmlsZXNcclxuICBpZiAobWltZSA9PT0gJ3RleHQvcGxhaW4nIHx8IG5hbWUuZW5kc1dpdGgoJy50eHQnKSkge1xyXG4gICAgcmV0dXJuICd0ZXh0JztcclxuICB9XHJcblxyXG4gIC8vIFBERlxyXG4gIGlmIChtaW1lID09PSAnYXBwbGljYXRpb24vcGRmJyB8fCBuYW1lLmVuZHNXaXRoKCcucGRmJykpIHtcclxuICAgIHJldHVybiAncGRmJztcclxuICB9XHJcblxyXG4gIC8vIEV4Y2VsXHJcbiAgaWYgKFxyXG4gICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcgfHxcclxuICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfHxcclxuICAgIC9cXC4oeGxzfHhsc3gpJC9pLnRlc3QobmFtZSlcclxuICApIHtcclxuICAgIHJldHVybiAnZXhjZWwnO1xyXG4gIH1cclxuXHJcbiAgLy8gV29yZFxyXG4gIGlmIChcclxuICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi9tc3dvcmQnIHx8XHJcbiAgICBtaW1lID09PSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnIHx8XHJcbiAgICAvXFwuKGRvY3xkb2N4KSQvaS50ZXN0KG5hbWUpXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gJ3dvcmQnO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuICdvdGhlcic7XHJcbn1cclxuXHJcbi8vIG9wZW5GaWxlRGlhbG9nKGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xyXG4vLyAgIC8vIHJlc2V0IHRoZSB2YWx1ZSBzbyBjaGFuZ2UgYWx3YXlzIHRyaWdnZXJzXHJcbi8vICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbi8vICAgZmlsZUlucHV0LmNsaWNrKCk7XHJcbi8vIH1cclxuXHJcbm9wZW5GaWxlRGlhbG9nKCkge1xyXG4gIC8vIGlmICh0aGlzLnVwbG9hZGVkRmlsZXMubGVuZ3RoID4gdGhpcy5zZXR0aW5nKCdtYXhGaWxlTm8nKSkge1xyXG4gIC8vICAgICAvLyB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgLy8gICAgIC8vICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAvLyAgICAgLy8gICBzdW1tYXJ5OiAnU3VjY2VzcycsXHJcbiAgLy8gICAgIC8vICAgZGV0YWlsOiBgTWF4aW11bVwiJHt0aGlzLnNldHRpbmcoJ21heEZpbGVObycpfVwiIGNhbiBiZSB1cGxvYWRlZGAsXHJcbiAgLy8gICAgIC8vICAgbGlmZTogMzAwMFxyXG4gIC8vICAgICAvLyB9KTtcclxuICAvLyAgIHJldHVybjtcclxuICAvLyB9XHJcbiAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxufVxyXG5cclxub25CYXNpY1VwbG9hZEF1dG8oZXZlbnQ6IFVwbG9hZEV2ZW50KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGZ4LWNvbXBvbmVudCBbZnhEYXRhXT1cImZ4RGF0YVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjdXN0b20tdXBsb2FkIGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQganVzdGlmeS1jZW50ZXIgcC0wIHJvdW5kZWQtc21cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC04IGl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxwIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGRcIj5QYXRpZW50IEltYWdlczwvcD5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGdhcC0xIHVwbG9hZFwiICpuZ0lmPVwidXBsb2FkZWRGaWxlcy5sZW5ndGggPCBzZXR0aW5nKCdtYXhGaWxlTm8nKVwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI5IDI4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgIGQ9XCJNMTQuMDAxIDMuMDAxOTVDMTEuNTMyMiAzLjAwMTk1IDkuMTY3MjIgMy44Njk1NiA3LjIzNjQxIDUuMzg0MTRMNy4yMzU5OCA0LjU5Njk1QzcuMjM1OTggNC41MjQ3MyA3LjIyMTc1IDQuNDUzMjEgNy4xOTQxMSA0LjM4NjQ4QzcuMTY2NDcgNC4zMTk3NSA3LjEyNTk2IDQuMjU5MTIgNy4wNzQ4OSA0LjIwODA0QzcuMDIzODEgNC4xNTY5NyA2Ljk2MzE4IDQuMTE2NDYgNi44OTY0NSA0LjA4ODgyQzYuODI5NzIgNC4wNjExOCA2Ljc1ODIgNC4wNDY5NSA2LjY4NTk4IDQuMDQ2OTVDNi42MTM3NSA0LjA0Njk1IDYuNTQyMjMgNC4wNjExOCA2LjQ3NTUgNC4wODg4MkM2LjQwODc3IDQuMTE2NDYgNi4zNDgxNCA0LjE1Njk3IDYuMjk3MDcgNC4yMDgwNEM2LjI0NTk5IDQuMjU5MTIgNi4yMDU0OCA0LjMxOTc1IDYuMTc3ODQgNC4zODY0OEM2LjE1MDIgNC40NTMyMSA2LjEzNTk4IDQuNTI0NzMgNi4xMzU5OCA0LjU5Njk1TDYuMTM2NDIgNi42ODY1MkM2LjEzNjQzIDYuODMyMzkgNi4xOTQzOCA2Ljk3MjI4IDYuMjk3NTIgNy4wNzU0MkM2LjQwMDY3IDcuMTc4NTYgNi41NDA1NSA3LjIzNjUxIDYuNjg2NDIgNy4yMzY1Mkg4Ljc3NTk4QzguODQ4MiA3LjIzNjUyIDguOTE5NzIgNy4yMjIzIDguOTg2NDUgNy4xOTQ2NkM5LjA1MzE4IDcuMTY3MDIgOS4xMTM4MSA3LjEyNjUxIDkuMTY0ODkgNy4wNzU0M0M5LjIxNTk2IDcuMDI0MzYgOS4yNTY0NyA2Ljk2MzczIDkuMjg0MTEgNi44OTdDOS4zMTE3NSA2LjgzMDI3IDkuMzI1OTggNi43NTg3NSA5LjMyNTk4IDYuNjg2NTJDOS4zMjU5OCA2LjYxNDMgOS4zMTE3NSA2LjU0Mjc4IDkuMjg0MTEgNi40NzYwNUM5LjI1NjQ3IDYuNDA5MzIgOS4yMTU5NiA2LjM0ODY5IDkuMTY0ODkgNi4yOTc2MUM5LjExMzgxIDYuMjQ2NTQgOS4wNTMxOCA2LjIwNjAzIDguOTg2NDUgNi4xNzgzOUM4LjkxOTcyIDYuMTUwNzUgOC44NDgyIDYuMTM2NTIgOC43NzU5OCA2LjEzNjUySDguMDU4NEM5Ljc3MDIgNC44NDM4NyAxMS44Mzk5IDQuMTAxOTUgMTQuMDAxIDQuMTAxOTVDMTkuNDc1MSA0LjEwMTk1IDIzLjkwMSA4LjUyNzgyIDIzLjkwMSAxNC4wMDJDMjMuOTAxIDE5LjQ3NjEgMTkuNDc1MSAyMy45MDIgMTQuMDAxIDIzLjkwMkM4LjUyNjg0IDIzLjkwMiA0LjEwMDk4IDE5LjQ3NjEgNC4xMDA5OCAxNC4wMDJDNC4xMDA5OCAxMi42MzgxIDQuMzgyNjMgMTEuMjg4OCA0LjkyODU1IDEwLjAzODlDNC45ODY5MSA5LjkwNTMyIDQuOTg5ODIgOS43NTM5OSA0LjkzNjY1IDkuNjE4MjJDNC44ODM0NyA5LjQ4MjQ2IDQuNzc4NTUgOS4zNzMzNiA0LjY0NDk2IDkuMzE0OTJDNC41Nzg3NyA5LjI4NTk2IDQuNTA3NTMgOS4yNzAzMiA0LjQzNTMgOS4yNjg5QzQuMzYzMDYgOS4yNjc0NyA0LjI5MTI2IDkuMjgwMyA0LjIyMzk4IDkuMzA2NjNDNC4xNTY3MSA5LjMzMjk3IDQuMDk1MjggOS4zNzIzIDQuMDQzMjEgOS40MjIzOEMzLjk5MTE0IDkuNDcyNDcgMy45NDk0NCA5LjUzMjMyIDMuOTIwNTEgOS41OTg1MkMzLjMxMzkzIDEwLjk4NzIgMy4wMDA5OCAxMi40ODY2IDMuMDAwOTggMTQuMDAyQzMuMDAwOTggMjAuMDcwNiA3LjkzMjM2IDI1LjAwMiAxNC4wMDEgMjUuMDAyQzIwLjA2OTYgMjUuMDAyIDI1LjAwMSAyMC4wNzA2IDI1LjAwMSAxNC4wMDJDMjUuMDAxIDcuOTMzMzQgMjAuMDY5NiAzLjAwMTk1IDE0LjAwMSAzLjAwMTk1WlwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgZD1cIk0xMy45OTg4IDYuMTM5NjVDOS42NjE2IDYuMTM5NjUgNi4xMzM3OSA5LjY2NzQ2IDYuMTMzNzkgMTQuMDA0NkM2LjEzMzc5IDE4LjM0MTggOS42NjE2IDIxLjg2OTYgMTMuOTk4OCAyMS44Njk2QzE4LjMzNiAyMS44Njk2IDIxLjg2MzggMTguMzQxOCAyMS44NjM4IDE0LjAwNDZDMjEuODYzOCA5LjY2NzQ2IDE4LjMzNiA2LjEzOTY1IDEzLjk5ODggNi4xMzk2NVpNMTMuOTk4OCA4LjIyOTY1QzE0LjE0NDcgOC4yMjk2NSAxNC4yODQ2IDguMjg3NTkgMTQuMzg3NyA4LjM5MDc0QzE0LjQ5MDggOC40OTM4OCAxNC41NDg4IDguNjMzNzggMTQuNTQ4OCA4Ljc3OTY1VjEzLjc3NjlMMTcuNTIyNyAxNi43NTA4QzE3LjYyNTggMTYuODUzOSAxNy42ODM3IDE2Ljk5MzggMTcuNjgzNyAxNy4xMzk2QzE3LjY4MzcgMTcuMjg1NSAxNy42MjU4IDE3LjQyNTQgMTcuNTIyNyAxNy41Mjg1QzE3LjQxOTUgMTcuNjMxNiAxNy4yNzk2IDE3LjY4OTYgMTcuMTMzOCAxNy42ODk2QzE2Ljk4NzkgMTcuNjg5NiAxNi44NDgxIDE3LjYzMTYgMTYuNzQ0OSAxNy41Mjg1TDEzLjYwOTkgMTQuMzkzNUMxMy41MDY4IDE0LjI5MDQgMTMuNDQ4OCAxNC4xNTA1IDEzLjQ0ODggMTQuMDA0NlY4Ljc3OTY1QzEzLjQ0ODggOC42MzM3OCAxMy41MDY3IDguNDkzODggMTMuNjA5OSA4LjM5MDc0QzEzLjcxMyA4LjI4NzU5IDEzLjg1MjkgOC4yMjk2NSAxMy45OTg4IDguMjI5NjVaXCJcclxuICAgICAgICAgICAgICBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjguNTZcIiBoZWlnaHQ9XCIyOFwiIHJ4PVwiMS41MTQ3OVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTE1LjA2OCAyMi43MzkxVjE3LjY3MDhIMTguNDk2OEwxNC4yMTA4IDEyLjYwMjVMOS45MjQ4IDE3LjY3MDhIMTMuMzUzNlYyMi43MzkxSDkuMDY3NTlWMjIuNjk2OUM4LjkyMzU4IDIyLjcwNTMgOC43ODY0MyAyMi43MzkxIDguNjM4OTkgMjIuNzM5MUM2LjkzMzkxIDIyLjczOTEgNS4yOTg2NiAyMi4wNzE3IDQuMDkyOTggMjAuODgzNUMyLjg4NzMgMTkuNjk1NCAyLjIwOTk2IDE4LjA4NCAyLjIwOTk2IDE2LjQwMzdDMi4yMDk5NiAxMy4xNTMyIDQuNzA0NDMgMTAuNTA0MiA3LjkwNTIzIDEwLjE0MUM4LjE4NTg1IDguNjk1MyA4Ljk2ODkyIDcuMzkxMTggMTAuMTE5NyA2LjQ1MjkyQzExLjI3MDYgNS41MTQ2NSAxMi43MTcyIDUuMDAwODkgMTQuMjEwOCA1QzE1LjcwNDcgNS4wMDA4MiAxNy4xNTE1IDUuNTE0NTIgMTguMzAyNiA2LjQ1Mjc3QzE5LjQ1MzcgNy4zOTEwMSAyMC4yMzcxIDguNjk1MTYgMjAuNTE4MSAxMC4xNDFDMjMuNzE4OSAxMC41MDQyIDI2LjIxIDEzLjE1MzIgMjYuMjEgMTYuNDAzN0MyNi4yMSAxOC4wODQgMjUuNTMyNiAxOS42OTU0IDI0LjMyNjkgMjAuODgzNUMyMy4xMjEzIDIyLjA3MTcgMjEuNDg2IDIyLjczOTEgMTkuNzgwOSAyMi43MzkxQzE5LjYzNjkgMjIuNzM5MSAxOS40OTgxIDIyLjcwNTMgMTkuMzUyMyAyMi42OTY5VjIyLjczOTFIMTUuMDY4WlwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkZpbGVEaWFsb2coKVwiIGNsYXNzPVwidXBsb2FkX3RpdGxlIGN1cnNvci1wb2ludGVyIFwiPlxyXG4gICAgICAgICAge3sgc2V0dGluZygndXBsb2FkLXRleHQnKSB9fVxyXG4gICAgICAgIDwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGlucHV0ICNmaWxlSW5wdXQgdHlwZT1cImZpbGVcIiBbbXVsdGlwbGVdPVwic2V0dGluZygnbXVsdGlwbGUtdXBsb2FkJylcIiAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICBhY2NlcHQ9XCIuY3N2LC5wZGYsLnhscywueGxzeCwuZG9jLC5kb2N4LC50eHQsaW1hZ2UvKlwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAvPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWxlLWxpc3QgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTQgZmxleC13cmFwIHctZnVsbFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXBsb2FkZWRGaWxlcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmlsZSBvZiB1cGxvYWRlZEZpbGVzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIHAtMyBib3JkZXIgcm91bmRlZC1sZyBzaGFkb3ctc20gYmctd2hpdGUgdy1bNDUwcHhdIHVwbG9hZF9maWxlXCI+XHJcblxyXG4gICAgICAgICAgPCEtLSBDbG9zZSBpY29uIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNsb3NlX2ljb24gY3Vyc29yLXBvaW50ZXIgYWJzb2x1dGUgdG9wLTIgcmlnaHQtMlwiIChjbGljayk9XCJkZWxldGVGaWxlKGkpXCI+XHJcbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyMiAyMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIyMlwiIHJ4PVwiMTFcIiBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNNy4wODkxMSAxNS44ODg5TDYuMTExMzMgMTQuOTExMUwxMC4wMjI0IDExTDYuMTExMzMgNy4wODg4Nkw3LjA4OTExIDYuMTExMDhMMTEuMDAwMiAxMC4wMjIyTDE0LjkxMTMgNi4xMTEwOEwxNS44ODkxIDcuMDg4ODZMMTEuOTc4IDExTDE1Ljg4OTEgMTQuOTExMUwxNC45MTEzIDE1Ljg4ODlMMTEuMDAwMiAxMS45Nzc4TDcuMDg5MTEgMTUuODg4OVpcIlxyXG4gICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsX3RpdGxlIGZsZXhcIj5cclxuICAgICAgICAgICAgPCEtLSBUaHVtYm5haWwgb24gbGVmdCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlLnR5cGUgPT09ICdpbWFnZSc7IGVsc2Ugbm9uSW1hZ2VUaHVtYlwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImZpbGUtdGh1bWJuYWlsXCIgW3NyY109XCJmaWxlPy5yZXN1bHRcIiBhbHQ9XCJwcmV2aWV3XCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWxlPy5yZXN1bHRcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFmaWxlPy5yZXN1bHRcIiB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi43MDEzIDEzSDMuMzEyN0MyLjU4NTAxIDEzIDIgMTIuNDA0OCAyIDExLjY2NDVWNC4zMzU0OEMyIDMuNTk1MTYgMi41ODUwMSAzIDMuMzEyNyAzSDEyLjY4NzFDMTMuNDE0NyAzIDEzLjk5OTggMy41OTUxNiAxMy45OTk4IDQuMzM1NDhWMTEuNjY0NUMxNC4wMTQgMTIuNDA0OCAxMy40MTQ3IDEzIDEyLjcwMTMgMTNaTTkuMjQ4MzYgNy45MDQ4NEw3LjM5MzQ3IDEwLjA2NzdDNy4yNzkzMiAxMC4yMTI5IDcuMDUxMDIgMTAuMjEyOSA2LjkzNjg4IDEwLjA4MjNMNS45MzgwOSA4Ljk5MzU1QzUuODA5NjcgOC44NjI5IDUuNjA5OTEgOC44NjI5IDUuNDgxNSA4Ljk5MzU1TDMuNzY5MjkgMTAuODY2MUMzLjU4MzggMTEuMDY5NCAzLjcyNjQ4IDExLjQwMzIgMy45OTc1OCAxMS40MDMySDYuMjY2MjZIOC4xMzU0M0gxMi4wMTY0QzEyLjI4NzUgMTEuNDAzMiAxMi40MzAyIDExLjA4MzkgMTIuMjQ0NyAxMC44ODA2TDkuNzE5MjIgNy45MDQ4NEM5LjU5MDgxIDcuNzU5NjggOS4zNzY3OCA3Ljc1OTY4IDkuMjQ4MzYgNy45MDQ4NFpNNi43MzcxMiA1Ljk4ODcxQzYuMjUxOTkgNS45ODg3MSA1Ljg1MjQ4IDYuMzk1MTYgNS44NTI0OCA2Ljg4ODcxQzUuODUyNDggNy4zODIyNiA2LjI1MTk5IDcuNzg4NzEgNi43MzcxMiA3Ljc4ODcxQzcuMjIyMjUgNy43ODg3MSA3LjYyMTc2IDcuMzgyMjYgNy42MjE3NiA2Ljg4ODcxQzcuNjIxNzYgNi4zOTUxNiA3LjIyMjI1IDUuOTg4NzEgNi43MzcxMiA1Ljk4ODcxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM5OTk5OTlcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vbkltYWdlVGh1bWI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS10aHVtYm5haWxcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmlsZS50eXBlXCI+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ2NzdidcIiB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS4xNzU3IDEuMTc1NzRDMTEuMDYzMiAxLjA2MzIxIDEwLjkxMDYgMSAxMC43NTE1IDFIMy42QzMuMjY4NjMgMSAzIDEuMjY4NjMgMyAxLjZWMTQuNEMzIDE0LjczMTQgMy4yNjg2MyAxNSAzLjYgMTVIMTMuNEMxMy43MzE0IDE1IDE0IDE0LjczMTQgMTQgMTQuNFY0LjI0ODUzQzE0IDQuMDg5NCAxMy45MzY4IDMuOTM2NzkgMTMuODI0MyAzLjgyNDI2TDExLjE3NTcgMS4xNzU3NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0Y0RjRGNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1IDEyLjdDMTUgMTIuODY1NyAxNC44NjU3IDEzIDE0LjcgMTNIMi4zQzIuMTM0MzEgMTMgMiAxMi44NjU3IDIgMTIuN1Y5LjNDMiA5LjEzNDMxIDIuMTM0MzEgOSAyLjMgOUgxNC43QzE0Ljg2NTcgOSAxNSA5LjEzNDMxIDE1IDkuM1YxMi43WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMjNBNzYxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMUwxMi41IDIuNUwxNCA0SDExLjJDMTEuMDg5NSA0IDExIDMuOTEwNDYgMTEgMy44VjFaXCIgZmlsbD1cIiNEOUQ5RDlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02Ljk0MDc2IDEwLjM0MzNDNi44NTkzOSAxMC4zNDMzIDYuNzg3MTYgMTAuMzU4OCA2LjcyNDA4IDEwLjM4OTlDNi42NjE5MSAxMC40MiA2LjYwOTM0IDEwLjQ2NCA2LjU2NjM3IDEwLjUyMTZDNi41MjQzMiAxMC41NzkzIDYuNDkyMzIgMTAuNjQ4OSA2LjQ3MDM4IDEwLjczMDVDNi40NDg0NCAxMC44MTIyIDYuNDM3NDcgMTAuOTA0IDYuNDM3NDcgMTEuMDA2QzYuNDM3NDcgMTEuMTQzNSA2LjQ1NDg0IDExLjI2MSA2LjQ4OTU4IDExLjM1ODZDNi41MjUyMyAxMS40NTUzIDYuNTgwMDkgMTEuNTI5NCA2LjY1NDE0IDExLjU4MDhDNi43MjgyIDExLjYzMTQgNi44MjM3MyAxMS42NTY3IDYuOTQwNzYgMTEuNjU2N0M3LjAyMjEyIDExLjY1NjcgNy4xMDM0OSAxMS42NDc4IDcuMTg0ODYgMTEuNjMwMUM3LjI2NzE0IDExLjYxMjMgNy4zNTYyOCAxMS41ODcgNy40NTIyOCAxMS41NTQyVjExLjkwMDJDNy4zNjM1OSAxMS45MzU3IDcuMjc2MjggMTEuOTYxIDcuMTkwMzUgMTEuOTc2QzcuMTA0NDEgMTEuOTkyIDcuMDA3OTUgMTIgNi45MDA5OSAxMkM2LjY5NDM3IDEyIDYuNTI0MzIgMTEuOTU4NyA2LjM5MDg0IDExLjg3NjJDNi4yNTgyNyAxMS43OTI5IDYuMTU5OTkgMTEuNjc2NiA2LjA5NiAxMS41Mjc2QzYuMDMyIDExLjM3NzcgNiAxMS4yMDI5IDYgMTEuMDAzM0M2IDEwLjg1NjEgNi4wMjA1NyAxMC43MjEyIDYuMDYxNzEgMTAuNTk4OEM2LjEwMjg1IDEwLjQ3NjQgNi4xNjMxOSAxMC4zNzA0IDYuMjQyNzMgMTAuMjgwOEM2LjMyMjI3IDEwLjE5MTIgNi40MjA1NSAxMC4xMjIgNi41Mzc1OCAxMC4wNzMyQzYuNjU0NiAxMC4wMjQ0IDYuNzg4OTkgMTAgNi45NDA3NiAxMEM3LjA0MDQxIDEwIDcuMTQwMDYgMTAuMDEyNCA3LjIzOTcxIDEwLjAzNzNDNy4zNDAyOCAxMC4wNjEyIDcuNDM2MjggMTAuMDk0NSA3LjUyNzcgMTAuMTM3MUw3LjM5MDU3IDEwLjQ3MjRDNy4zMTU2IDEwLjQzNzggNy4yNDAxNyAxMC40MDc2IDcuMTY0MjkgMTAuMzgxOUM3LjA4ODQxIDEwLjM1NjIgNy4wMTM5IDEwLjM0MzMgNi45NDA3NiAxMC4zNDMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMDYzNjMgMTEuNDMzMUM5LjA2MzYzIDExLjU0ODUgOS4wMzQ4MyAxMS42NDg3IDguOTc3MjQgMTEuNzMzOUM4LjkxOTY0IDExLjgxOSA4LjgzNTUzIDExLjg4NDcgOC43MjQ5IDExLjkzMDhDOC42MTUxOSAxMS45NzY5IDguNDgxNzIgMTIgOC4zMjQ0NyAxMkM4LjI1NDk4IDEyIDguMTg2ODcgMTEuOTk1NiA4LjEyMDEzIDExLjk4NjdDOC4wNTQzMSAxMS45Nzc4IDcuOTkwNzcgMTEuOTY1IDcuOTI5NTEgMTEuOTQ4MUM3Ljg2OTE3IDExLjkzMDQgNy44MTE1NyAxMS45MDg2IDcuNzU2NzIgMTEuODgyOVYxMS40OTk3QzcuODUxOCAxMS41NDA1IDcuOTUwNTQgMTEuNTc3MyA4LjA1MjkzIDExLjYxMDFDOC4xNTUzMyAxMS42NDI5IDguMjU2ODEgMTEuNjU5MyA4LjM1NzM4IDExLjY1OTNDOC40MjY4NiAxMS42NTkzIDguNDgyNjMgMTEuNjUwNSA4LjUyNDY4IDExLjYzMjdDOC41Njc2NSAxMS42MTUgOC41OTg3NCAxMS41OTA2IDguNjE3OTQgMTEuNTU5NUM4LjYzNzE0IDExLjUyODUgOC42NDY3NCAxMS40OTMgOC42NDY3NCAxMS40NTMxQzguNjQ2NzQgMTEuNDA0MyA4LjYyOTgyIDExLjM2MjYgOC41OTYgMTEuMzI4QzguNTYyMTcgMTEuMjkzNCA4LjUxNTU0IDExLjI2MSA4LjQ1NjEyIDExLjIzMDlDOC4zOTc2IDExLjIwMDcgOC4zMzEzMiAxMS4xNjgzIDguMjU3MjcgMTEuMTMzN0M4LjIxMDY0IDExLjExMjQgOC4xNTk5IDExLjA4NjcgOC4xMDUwNSAxMS4wNTY2QzguMDUwMTkgMTEuMDI1NSA3Ljk5ODA4IDEwLjk4NzggNy45NDg3MSAxMC45NDM0QzcuODk5MzQgMTAuODk5MSA3Ljg1ODY2IDEwLjg0NTQgNy44MjY2NiAxMC43ODI0QzcuNzk1NTggMTAuNzE4NiA3Ljc4MDAzIDEwLjY0MjMgNy43ODAwMyAxMC41NTM2QzcuNzgwMDMgMTAuNDM3MyA3LjgwNzQ2IDEwLjMzOCA3Ljg2MjMxIDEwLjI1NTVDNy45MTcxNyAxMC4xNzMgNy45OTUzNCAxMC4xMSA4LjA5NjgyIDEwLjA2NjVDOC4xOTkyMSAxMC4wMjIyIDguMzE5ODkgMTAgOC40NTg4NiAxMEM4LjU2MzA4IDEwIDguNjYyMjggMTAuMDEyIDguNzU2NDUgMTAuMDM1OUM4Ljg1MTUzIDEwLjA1OSA4Ljk1MDcyIDEwLjA5MjcgOS4wNTQwMyAxMC4xMzcxTDguOTE2OSAxMC40NTc4QzguODI0NTYgMTAuNDIxNCA4Ljc0MTgyIDEwLjM5MzQgOC42Njg2OCAxMC4zNzM5QzguNTk1NTQgMTAuMzUzNSA4LjUyMTAzIDEwLjM0MzMgOC40NDUxNSAxMC4zNDMzQzguMzkyMTIgMTAuMzQzMyA4LjM0Njg2IDEwLjM1MTcgOC4zMDkzOCAxMC4zNjg2QzguMjcxOSAxMC4zODQ2IDguMjQzNTUgMTAuNDA3NiA4LjIyNDM2IDEwLjQzNzhDOC4yMDUxNiAxMC40NjcxIDguMTk1NTYgMTAuNTAxMiA4LjE5NTU2IDEwLjU0MDNDOC4xOTU1NiAxMC41ODY0IDguMjA5MjcgMTAuNjI1NCA4LjIzNjcgMTAuNjU3NEM4LjI2NTA0IDEwLjY4ODQgOC4zMDcwOSAxMC43MTg2IDguMzYyODYgMTAuNzQ3OEM4LjQxOTU1IDEwLjc3NzEgOC40ODk5NCAxMC44MTEzIDguNTc0MDUgMTAuODUwM0M4LjY3NjQ1IDEwLjg5NzMgOC43NjM3NiAxMC45NDY2IDguODM1OTggMTAuOTk4QzguOTA5MTIgMTEuMDQ4NiA4Ljk2NTM1IDExLjEwODQgOS4wMDQ2NiAxMS4xNzc2QzkuMDQzOTggMTEuMjQ2IDkuMDYzNjMgMTEuMzMxMSA5LjA2MzYzIDExLjQzMzFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTAuMDI3OUwxMC4zMTg0IDExLjk3MzRIOS44NTQ5MUw5LjE3NDcxIDEwLjAyNzlIOS42MDM5NUw5Ljk4MTA4IDExLjE4NTZDOS45ODc0OCAxMS4yMDUxIDkuOTk3OTkgMTEuMjQyIDEwLjAxMjYgMTEuMjk2MUMxMC4wMjcyIDExLjM0OTMgMTAuMDQxOSAxMS40MDYxIDEwLjA1NjUgMTEuNDY2NEMxMC4wNzIgMTEuNTI1OCAxMC4wODI2IDExLjU3NTEgMTAuMDg4IDExLjYxNDFDMTAuMDkzNSAxMS41NzUxIDEwLjEwMzEgMTEuNTI1OCAxMC4xMTY4IDExLjQ2NjRDMTAuMTMxNSAxMS40MDcgMTAuMTQ1NiAxMS4zNTA2IDEwLjE1OTQgMTEuMjk3NEMxMC4xNzQgMTEuMjQzMyAxMC4xODQ1IDExLjIwNiAxMC4xOTA5IDExLjE4NTZMMTAuNTcwOCAxMC4wMjc5SDExWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI3XCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMVwiIHJ4PVwiMC4yXCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiNVwiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjFcIiByeD1cIjAuMlwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI5XCIgeT1cIjdcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiOVwiIHk9XCI1XCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMVwiIHJ4PVwiMC4yXCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIiB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS4xNzU3IDEuMTc1NzRDMTEuMDYzMiAxLjA2MzIxIDEwLjkxMDYgMSAxMC43NTE1IDFIMy42QzMuMjY4NjMgMSAzIDEuMjY4NjMgMyAxLjZWMTQuNEMzIDE0LjczMTQgMy4yNjg2MyAxNSAzLjYgMTVIMTMuNEMxMy43MzE0IDE1IDE0IDE0LjczMTQgMTQgMTQuNFY0LjI0ODUzQzE0IDQuMDg5NCAxMy45MzY4IDMuOTM2NzkgMTMuODI0MyAzLjgyNDI2TDExLjE3NTcgMS4xNzU3NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0Y0RjRGNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1IDEyLjdDMTUgMTIuODY1NyAxNC44NjU3IDEzIDE0LjcgMTNIMi4zQzIuMTM0MzEgMTMgMiAxMi44NjU3IDIgMTIuN1Y5LjNDMiA5LjEzNDMxIDIuMTM0MzEgOSAyLjMgOUgxNC43QzE0Ljg2NTcgOSAxNSA5LjEzNDMxIDE1IDkuM1YxMi43WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMUY1RUJCXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMUwxMi41IDIuNUwxNCA0SDExLjJDMTEuMDg5NSA0IDExIDMuOTEwNDYgMTEgMy44VjFaXCIgZmlsbD1cIiNEOUQ5RDlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjA0MzUzIDEySDYuNjExMDVWMTAuMzIwM0g2LjA1NzJWOS45NjAzOEg3LjU5NzM4VjEwLjMyMDNINy4wNDM1M1YxMlpNOS41NjAyNyAxMkg5LjA2NjQxTDguNTkyMDggMTEuMjI4NUw4LjExNzc1IDEySDcuNjU0NThMOC4zMzExOSAxMC45NDgxTDcuNjk3ODIgOS45NjAzOEg4LjE3NDk0TDguNjE0NCAxMC42OTQyTDkuMDQ1NDggOS45NjAzOEg5LjUxMTQ0TDguODcxMDkgMTAuOTcxOEw5LjU2MDI3IDEyWk0xMC42MDM4IDEySDEwLjE3MTNWMTAuMzIwM0g5LjYxNzQ3VjkuOTYwMzhIMTEuMTU3NlYxMC4zMjAzSDEwLjYwMzhWMTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjVcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI2XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiN1wiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hEZWZhdWx0IHdpZHRoPVwiMTgwcHhcIiBoZWlnaHQ9XCIxODBweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNERDIwMjVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuNjA4NCA5Ljk2MDM4QzYuODcxNjEgOS45NjAzOCA3LjA2MzY2IDEwLjAxNzEgNy4xODQ1NyAxMC4xMzA2QzcuMzA1NDggMTAuMjQzMSA3LjM2NTkzIDEwLjM5ODQgNy4zNjU5MyAxMC41OTY1QzcuMzY1OTMgMTAuNjg1OCA3LjM1MjQ1IDEwLjc3MTQgNy4zMjU0NyAxMC44NTMyQzcuMjk4NSAxMC45MzQyIDcuMjU0MzIgMTEuMDA2MiA3LjE5Mjk0IDExLjA2OTVDNy4xMzI0OSAxMS4xMzI3IDcuMDUxNTcgMTEuMTgyOSA2Ljk1MDIgMTEuMjIwMUM2Ljg0ODgyIDExLjI1NjQgNi43MjM3MyAxMS4yNzQ2IDYuNTc0OTIgMTEuMjc0Nkg2LjM4OTM3VjEySDUuOTU2ODlWOS45NjAzOEg2LjYwODRaTTYuNTg2MDggMTAuMzE0N0g2LjM4OTM3VjEwLjkyMDJINi41MzE2N0M2LjYxMjU4IDEwLjkyMDIgNi42ODI4IDEwLjkwOTUgNi43NDIzMyAxMC44ODgxQzYuODAxODUgMTAuODY2NyA2Ljg0Nzg5IDEwLjgzMzIgNi44ODA0NCAxMC43ODc3QzYuOTEyOTkgMTAuNzQyMSA2LjkyOTI3IDEwLjY4MzUgNi45MjkyNyAxMC42MTE5QzYuOTI5MjcgMTAuNTExNCA2LjkwMTM3IDEwLjQzNyA2Ljg0NTU2IDEwLjM4ODdDNi43ODk3NiAxMC4zMzk0IDYuNzAzMjYgMTAuMzE0NyA2LjU4NjA4IDEwLjMxNDdaTTkuNDQzMjIgMTAuOTYwN0M5LjQ0MzIyIDExLjE5MDQgOS4zOTkwNCAxMS4zODI0IDkuMzEwNjkgMTEuNTM2OEM5LjIyMzI2IDExLjY5MDMgOS4wOTYzMSAxMS44MDYxIDguOTI5ODMgMTEuODg0MkM4Ljc2MzM1IDExLjk2MTQgOC41NjI5MiAxMiA4LjMyODU0IDEySDcuNzUwOThWOS45NjAzOEg4LjM5MTMyQzguNjA1MjQgOS45NjAzOCA4Ljc5MDc4IDkuOTk4NTEgOC45NDc5NiAxMC4wNzQ4QzkuMTA1MTQgMTAuMTUwMSA5LjIyNjk4IDEwLjI2MjIgOS4zMTM0OCAxMC40MTFDOS4zOTk5NyAxMC41NTg5IDkuNDQzMjIgMTAuNzQyMSA5LjQ0MzIyIDEwLjk2MDdaTTguOTk0IDEwLjk3MThDOC45OTQgMTAuODIxMSA4Ljk3MTY4IDEwLjY5NzUgOC45MjcwNCAxMC42MDA3QzguODgzMzIgMTAuNTAzMSA4LjgxODIyIDEwLjQzMSA4LjczMTcyIDEwLjM4NDVDOC42NDYxNiAxMC4zMzggOC41NDAxMyAxMC4zMTQ3IDguNDEzNjQgMTAuMzE0N0g4LjE4MzQ1VjExLjY0MjlIOC4zNjlDOC41ODAxMiAxMS42NDI5IDguNzM2ODQgMTEuNTg2NiA4LjgzOTE1IDExLjQ3NDFDOC45NDIzOCAxMS4zNjE1IDguOTk0IDExLjE5NDEgOC45OTQgMTAuOTcxOFpNMTAuMjkxNCAxMkg5Ljg2NTkzVjkuOTYwMzhIMTEuMDM1VjEwLjMxNDdIMTAuMjkxNFYxMC44NDA3SDEwLjk4MzRWMTEuMTkzNkgxMC4yOTE0VjEyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiNlwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIE1ldGFkYXRhIG9uIHJpZ2h0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVfbm90ZXMgbWwtMlwiPlxyXG4gICAgICAgICAgICAgIDwhLS0gVGl0bGUgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIGlucHV0LXRpdGxlIG0tMCBtdC0xXCI+VGl0bGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZmlsZS50aXRsZVwiIG5hbWU9XCJ0aXRsZXt7aX19XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXRhQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHRpdGxlXCIgY2xhc3M9XCIgcm91bmRlZCBweC0zIHB5LTIgbWItMyB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIiAvPlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tIE5vdGVzIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSBpbnB1dC10aXRsZSBtLTAgbXQtMVwiPk5vdGVzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBbKG5nTW9kZWwpXT1cImZpbGUubm90ZXNcIiBuYW1lPVwibm90ZXN7e2l9fVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWV0YUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBub3Rlc1wiIGNsYXNzPVwiIHJvdW5kZWQgcHgtMyBweS0yIG1iLTAgdy1mdWxsIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nXCJcclxuICAgICAgICAgICAgICAgICAgcm93cz1cIjJcIj48L3RleHRhcmVhPlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5IG10LTJcIj5cclxuICAgICAgICAgICAgPCEtLSBDYXRlZ29yeSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSBpbnB1dC10aXRsZSBtLTAgbXQtMFwiPkNhdGVnb3J5PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwiZmlsZS5jYXRlZ29yeUlkIFwiIG5hbWU9XCJjYXRlZ29yeXt7aX19XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXRhQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCIgcm91bmRlZCBweC0zIHB5LTIgdy1mdWxsIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IENhdGVnb3J5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGNhdGVnb3JpZXNcIiBbbmdWYWx1ZV09XCJjLnZhbHVlXCI+e3sgYy5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gIDwvZGl2PlxyXG48L2Z4LWNvbXBvbmVudD4iXX0=
|
|
511
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy91cGxvYWRlci91cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZGVyL3VwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFvQyxTQUFTLEVBQWMsTUFBTSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFhLGVBQWUsRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsSixPQUFPLEVBQTZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVNUMsTUFBTSxPQUFP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NWlCQXlLZSw0bkVEekpILFlBQVksNGdCQUFFLFdBQVcsNEVBQUUsV0FBVyx5Z0NBQUUsbUJBQW1CLDhCQUFDLGdCQUFnQiw4QkFBQyxXQUFXLDhCQUFDLG1CQUFtQjs7NEZBSzNHLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsZ0JBQWdCLEVBQUMsV0FBVyxFQUFDLG1CQUFtQixDQUFDLGFBQzVHLENBQUMsY0FBYyxFQUFDLG1CQUFtQixDQUFDOzJMQW9CdkIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGeEJhc2VDb21wb25lbnQsIEZ4Q29tcG9uZW50LCBGeFNlbGVjdFNldHRpbmcsIEZ4U2V0dGluZywgRnhTdHJpbmdTZXR0aW5nLCBGeFZhbGlkYXRpb24sIEZ4VmFsaWRhdG9yU2VydmljZSB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Z4LWJ1aWxkZXItd3JhcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRNb2R1bGUsIFVwbG9hZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1kaWFsb2cnO1xyXG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmeC11cGxvYWRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGeENvbXBvbmVudCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsRmlsZVVwbG9hZE1vZHVsZSxUb2FzdE1vZHVsZSxDb25maXJtRGlhbG9nTW9kdWxlXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSxDb25maXJtYXRpb25TZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91cGxvYWRlci5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkZXJDb21wb25lbnQgZXh0ZW5kcyBGeEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcbiAgLy8gcHVibGljIHVwbG9hZEZpbGVDb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG4gIHB1YmxpYyB1cGxvYWRGaWxlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIHB1YmxpYyB1cGxvYWRlZEZpbGVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgcHVibGljIGZvcm1hdHRlZERhdGE6IGFueSA9IHtcclxuICAgIHVwbG9hZGVkRmlsZXM6IFtdLFxyXG4gICAgZGVsZXRlZEZpbGVzOiBbXVxyXG4gIH07XHJcbiAgY2F0ZWdvcmllcyA9IFtcclxuICB7IGxhYmVsOiAnT3JhbCBJbWFnZXMnLCB2YWx1ZTogMTYgfSxcclxuICB7IGxhYmVsOiAnUGFzdCBEb2NzJywgdmFsdWU6IDE3IH0sXHJcbiAgeyBsYWJlbDogJ1gtUmF5cycsIHZhbHVlOiAxNCB9LFxyXG4gIHsgbGFiZWw6ICdQcm9maWxlJywgdmFsdWU6IDE4IH0sXHJcbl07XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PEJvb2xlYW4+KCk7XHJcbiAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgZnhCdWlsZGVyV3JhcHBlclNlcnZpY2U6IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGNkcilcclxuICAgIHRoaXMub25Jbml0LnN1YnNjcmliZSgoZnhEYXRhKT0+e1xyXG4gICAgICB0aGlzLl9yZWdpc3Rlcih0aGlzLnVwbG9hZEZpbGVDb250cm9sKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgdXBsb2FkZWRJbWFnZXM6IHsgW2tleTogc3RyaW5nXTogeyByZXN1bHQ6IHN0cmluZywgZmlsZTogRmlsZSB8IG51bGwgfVtdIH0gPSB7fTtcclxuICBkZWxldGVkRmlsZXM6IGFueVtdID0gW107XHJcbiAgLy8gcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAvLyAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG4gIFxyXG4gIC8vICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG4gIFxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuICAvLyAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ3VwbG9hZGVyJykgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAvLyAgICAgICAgICAgdXBsb2FkZWRGaWxlc1trZXldID0gdmFsdWU7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIFxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzKSkge1xyXG4gIC8vICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHN0cmluZz5bXSA9IFtdO1xyXG4gIFxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKCh1cmw6IHN0cmluZykgPT4ge1xyXG4gIC8vICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSlcclxuICAvLyAgICAgICAgICAgICApO1xyXG4gIC8vICAgICAgICAgICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG4gIFxyXG4gIC8vICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGgpIHtcclxuICAvLyAgICAgICAgICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICAgICAgICAgIG5leHQ6IChpbWFnZVVybHM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3VwbG9hZGVyS2V5XSA9IGltYWdlVXJscy5tYXAocmVzdWx0ID0+ICh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIHJlc3VsdCxcclxuICAvLyAgICAgICAgICAgICAgICAgZmlsZTogbnVsbFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpO1xyXG4gIC8vICAgICAgICAgICAgICAgLy8gdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRJbWFnZXNdXHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBPYmplY3QudmFsdWVzKHRoaXMudXBsb2FkZWRJbWFnZXMpLmZsYXQoKTtcclxuICAvLyAgICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2VzIGZvciAke3VwbG9hZGVyS2V5fTpgLCBlcnIpO1xyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcbiAgXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAvLyAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gIC8vICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgLy8gICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgLy8gICAgICAgICAgIHVwbG9hZGVkRmlsZXNba2V5XSA9IHZhbHVlO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXMpKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZywgb3JpZ2luYWxVcmw6IHN0cmluZyB9PltdID0gW107XHJcblxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKCh1cmw6IHN0cmluZykgPT4ge1xyXG4gIC8vICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCAvLyBqdXN0IGZvciBwcmV2aWV3XHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiB1cmxcclxuICAvLyAgICAgICAgICAgICAgIH0pKVxyXG4gIC8vICAgICAgICAgICAgICk7XHJcbiAgLy8gICAgICAgICAgICAgaW1hZ2VGZXRjaGVzLnB1c2goaW1hZ2UkKTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfSk7XHJcblxyXG4gIC8vICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGgpIHtcclxuICAvLyAgICAgICAgICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICAgICAgICAgIG5leHQ6IChpbWFnZURhdGEpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGltYWdlRGF0YS5tYXAoaXRlbSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgLy8gICAgICAgICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiBpdGVtLm9yaWdpbmFsVXJsLFxyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQ6IGl0ZW0ucmVzdWx0XHJcbiAgLy8gICAgICAgICAgICAgICB9KSk7XHJcblxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy51cGxvYWRlZEZpbGVzKTtcclxuICAvLyAgICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2VzIGZvciAke3VwbG9hZGVyS2V5fTpgLCBlcnIpO1xyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcblxyXG4vLyAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4vLyAgICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbi8vICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuLy8gICAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuLy8gICAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG4gIFxyXG4vLyAgICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXNNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG4gIFxyXG4vLyAgICAgICAgIC8vIEV4dHJhY3QgdXBsb2FkZXIga2V5cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBVUkwgYXJyYXlzXHJcbi8vICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4vLyAgICAgICAgICAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4vLyAgICAgICAgICAgICB1cGxvYWRlZEZpbGVzTWFwW2tleV0gPSB2YWx1ZTtcclxuLy8gICAgICAgICAgIH1cclxuLy8gICAgICAgICB9XHJcbiAgXHJcbi8vICAgICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXNNYXApKSB7XHJcbi8vICAgICAgICAgICAvLyBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZzsgb3JpZ2luYWxVcmw6IGFueTsgdGl0bGU6c3RyaW5nIDsgbm90ZXM6c3RyaW5nIH0+W10gPSBbXTtcclxuICBcclxuLy8gICAgICAgICAgIC8vIHVybHMuZm9yRWFjaCgob3JpZ2luYWxVcmw6YW55KSA9PiB7XHJcbi8vICAgICAgICAgICAvLyAgIGlmIChvcmlnaW5hbFVybCkge1xyXG4vLyAgICAgICAgICAgLy8gICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQob3JpZ2luYWxVcmw/Lm9yaWdpbmFsVXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbi8vICAgICAgICAgICAvLyAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+ICh7XHJcbi8vICAgICAgICAgICAvLyAgICAgICAgIHJlc3VsdDogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgLy8gZm9yIHByZXZpZXdcclxuLy8gICAgICAgICAgIC8vICAgICAgICAgb3JpZ2luYWxVcmw6IG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCAgICAgICAgICAvLyBwcmVzZXJ2ZSBvcmlnaW5hbFxyXG4vLyAgICAgICAgICAgLy8gICAgICAgfSkpXHJcbi8vICAgICAgICAgICAvLyAgICAgKTtcclxuLy8gICAgICAgICAgIC8vICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4vLyAgICAgICAgICAgLy8gICB9XHJcbi8vICAgICAgICAgICAvLyB9KTtcclxuXHJcbi8vICAgICAgICAgICBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZzsgb3JpZ2luYWxVcmw6IGFueTsgdGl0bGU6IHN0cmluZzsgbm90ZXM6IHN0cmluZyB9PltdID0gW107XHJcblxyXG4vLyB1cmxzLmZvckVhY2goKG9yaWdpbmFsVXJsOiBhbnkpID0+IHtcclxuLy8gICBpZiAob3JpZ2luYWxVcmwpIHtcclxuLy8gICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQob3JpZ2luYWxVcmw/Lm9yaWdpbmFsVXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbi8vICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuLy8gICAgICAgICByZXN1bHQ6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIC8vIGZvciBwcmV2aWV3XHJcbi8vICAgICAgICAgb3JpZ2luYWxVcmw6IG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCwgLy8gcHJlc2VydmUgb3JpZ2luYWxcclxuLy8gICAgICAgICB0aXRsZTogb3JpZ2luYWxVcmw/LnRpdGxlIHx8ICcnLCAvLyBkZWZhdWx0IGVtcHR5IGlmIG5vdCBwcmVzZW50XHJcbi8vICAgICAgICAgbm90ZXM6IG9yaWdpbmFsVXJsPy5ub3RlcyB8fCAnJ1xyXG4vLyAgICAgICB9KSlcclxuLy8gICAgICk7XHJcbi8vICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4vLyAgIH1cclxuLy8gfSk7XHJcblxyXG4gIFxyXG4vLyAgICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGggPiAwKSB7XHJcbi8vICAgICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuLy8gICAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VEYXRhKSA9PiB7XHJcbi8vICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBpbWFnZURhdGEubWFwKGl0ZW0gPT4gKHtcclxuLy8gICAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4vLyAgICAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4vLyAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogaXRlbS5vcmlnaW5hbFVybCxcclxuLy8gICAgICAgICAgICAgICAgICAgcmVzdWx0OiBpdGVtLnJlc3VsdCxcclxuLy8gICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXHJcbi8vICAgICAgICAgICAgICAgICAgIG5vdGVzOiAnJ1xyXG4vLyAgICAgICAgICAgICAgICAgfSkpO1xyXG4gIFxyXG4vLyAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuLy8gICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4vLyAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4vLyAgICAgICAgICAgICAgIH0sXHJcbi8vICAgICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuLy8gICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbi8vICAgICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICB9KTtcclxuLy8gICAgICAgICAgIH1cclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgIH0pO1xyXG4vLyAgIH1cclxuICBcclxuICAvLyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gIC8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuICBcclxuICAvLyAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IHsgb3JpZ2luYWxVcmw6IHN0cmluZyB9W10gfSA9IHZhcmlhYmxlcy51cGxvYWRlZEZpbGVzO1xyXG4gIFxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4gIC8vICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHsgcmVzdWx0OiBzdHJpbmc7IG9yaWdpbmFsVXJsOiBzdHJpbmcgfT5bXSA9IFtdO1xyXG4gIFxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKChmaWxlT2JqOiBhbnkpID0+IHtcclxuICAvLyAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmwgPSBmaWxlT2JqPy5vcmlnaW5hbFVybDtcclxuICAvLyAgICAgICAgICAgaWYgKG9yaWdpbmFsVXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldChvcmlnaW5hbFVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4gIC8vICAgICAgICAgICAgICAgbWFwKChibG9iOiBCbG9iKSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQ6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIC8vIGZvciBwcmV2aWV3XHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsXHJcbiAgLy8gICAgICAgICAgICAgICB9KSlcclxuICAvLyAgICAgICAgICAgICApO1xyXG4gIC8vICAgICAgICAgICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG4gIFxyXG4gIC8vICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuICAvLyAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VEYXRhKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBpbWFnZURhdGEubWFwKGl0ZW0gPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gIC8vICAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gIC8vICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogaXRlbS5vcmlnaW5hbFVybCxcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBpdGVtLnJlc3VsdFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpO1xyXG4gIFxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIC8vICAgICAgICAgICAgIH0sXHJcbiAgLy8gICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbiAgLy8gICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH1cclxuICBcclxuXHJcbiAgLy8gcHVibGljIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAvLyAgIGlmIChpbnB1dC5maWxlcykge1xyXG4gIC8vICAgICBmb3IobGV0IGkgPSAwOyBpIDwgaW5wdXQ/LmZpbGVzPy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1tpXTtcclxuICAvLyAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gIC8vICAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHtcclxuICAvLyAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKHtcclxuICAvLyAgICAgICAgICAgZmlsZTogZmlsZSxcclxuICAvLyAgICAgICAgICAgcmVzdWx0OiBlLnRhcmdldD8ucmVzdWx0LFxyXG4gIC8vICAgICAgICAgICBuYW1lOiBmaWxlPy5uYW1lLFxyXG4gIC8vICAgICAgICAgICBpZDogdXVpZHY0KClcclxuICAvLyAgICAgICAgIH0pXHJcbiAgLy8gICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMudXBsb2FkZWRGaWxlcyk7XHJcbiAgLy8gICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVwbG9hZEZpbGVDb250cm9sKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAvLyAgIGlmIChpbnB1dC5maWxlcykge1xyXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0LmZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzW2ldO1xyXG4gIC8vICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gIC8vICAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHtcclxuICAvLyAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7XHJcbiAgLy8gICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAvLyAgICAgICAgICAgZmlsZTogZmlsZSxcclxuICAvLyAgICAgICAgICAgb3JpZ2luYWxVcmw6IG51bGwsXHJcbiAgLy8gICAgICAgICAgIHJlc3VsdDogZS50YXJnZXQ/LnJlc3VsdCxcclxuICAvLyAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxyXG4gIC8vICAgICAgICAgICB0aXRsZTogJycsXHJcbiAgLy8gICAgICAgICAgIG5vdGVzOiAnJyxcclxuICAvLyAgICAgICAgICAgY2F0ZWdvcnk6ICcnLFxyXG4gIC8vICAgICAgICAgICB0eXBlOiB0aGlzLmRldGVjdEZpbGVUeXBlKGZpbGUpLFxyXG4gIC8vICAgICAgICAgfTtcclxuXHJcbiAgLy8gICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChuZXdGaWxlKTtcclxuICAvLyAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIC8vICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIC8vICAgICAgIH07XHJcblxyXG4gIC8vICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuLy8gICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbi8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4vLyAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH0gPSB7fTtcclxuXHJcbiAgICAgXHJcbi8vICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuLy8gICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbi8vICAgICAgICAgICB1cGxvYWRlZEZpbGVzTWFwW2tleV0gPSB2YWx1ZTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgIH1cclxuXHJcbi8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4vLyAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHVybHNcclxuLy8gICAgICAgICAgIC5maWx0ZXIoKGZpbGVPYmo6IGFueSkgPT4gISFmaWxlT2JqKSBcclxuLy8gICAgICAgICAgIC5tYXAoKGZpbGVPYmo6IGFueSkgPT4ge1xyXG4vLyAgICAgICAgICAgICAvLyBjb25zdCBmaWxlVHlwZSA9IHRoaXMuZGV0ZWN0RmlsZVR5cGVGcm9tVXJsKGZpbGVPYmo/Lm9yaWdpbmFsVXJsIHx8IGZpbGVPYmo/Lm5hbWUpO1xyXG5cclxuLy8gICAgICAgICAgICAgcmV0dXJuIHtcclxuLy8gICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbi8vICAgICAgICAgICAgICAgZmlsZTogbnVsbCwgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbi8vICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IGZpbGVPYmoub3JpZ2luYWxVcmwsICAgIFxyXG4vLyAgICAgICAgICAgICAgIHJlc3VsdDogZmlsZU9iaj8udHlwZSA9PT0gJ2ltYWdlJyA/IGZpbGVPYmoub3JpZ2luYWxVcmwucHJldmlld1VybCA6IG51bGwsXHJcbi8vICAgICAgICAgICAgICAgbmFtZTogZmlsZU9iaj8ubmFtZSB8fCAnJyxcclxuLy8gICAgICAgICAgICAgICB0aXRsZTogZmlsZU9iaj8udGl0bGUgfHwgJycsXHJcbi8vICAgICAgICAgICAgICAgbm90ZXM6IGZpbGVPYmo/Lm5vdGVzIHx8ICcnLFxyXG4vLyAgICAgICAgICAgICAgIGNhdGVnb3J5OiBmaWxlT2JqPy5jYXRlZ29yeSB8fCAnJyxcclxuLy8gICAgICAgICAgICAgICB0eXBlOiBmaWxlT2JqPy50eXBlLCAgICAgICAgICAgICAgICBcclxuLy8gICAgICAgICAgICAgfTtcclxuLy8gICAgICAgICAgIH0pO1xyXG5cclxuLy8gICAgICAgICBpZiAoZm9ybWF0dGVkLmxlbmd0aCA+IDApIHtcclxuLy8gICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLmZvcm1hdHRlZF07XHJcbi8vICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuLy8gICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgIH1cclxuLy8gICAgIH0pO1xyXG4vLyB9XHJcblxyXG5uZ09uSW5pdCgpOiB2b2lkIHtcclxuICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH0gPSB7fTtcclxuXHJcbiAgICAgIFxyXG4gICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiAodmFsdWUgYXMgYW55KT8udXBsb2FkZWRGaWxlcykge1xyXG4gICAgdXBsb2FkZWRGaWxlc01hcFtrZXldID0gKHZhbHVlIGFzIGFueSkudXBsb2FkZWRGaWxlcztcclxuICB9XHJcbn1cclxuXHJcbiAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCBmaWxlc10gb2YgT2JqZWN0LmVudHJpZXModXBsb2FkZWRGaWxlc01hcCkpIHtcclxuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmaWxlc1xyXG4gICAgICAgICAgLmZpbHRlcigoZmlsZU9iajogYW55KSA9PiAhIWZpbGVPYmopXHJcbiAgICAgICAgICAubWFwKChmaWxlT2JqOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmxPYmogPSBmaWxlT2JqLm9yaWdpbmFsVXJsO1xyXG4gICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IG9yaWdpbmFsVXJsT2JqPy5maWxlTmFtZSB8fCAnJztcclxuICAgICAgICAgICAgY29uc3QgZmlsZVVybCA9IG9yaWdpbmFsVXJsT2JqPy5maWxlVXJsIHx8ICcnO1xyXG4gICAgICAgICAgICBjb25zdCBwcmV2aWV3VXJsID0gb3JpZ2luYWxVcmxPYmo/LnByZXZpZXdVcmw7XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBmaWxlT2JqPy50eXBlO1xyXG5cclxuICAgICAgICAgICAgLy8gZGV0ZWN0IHR5cGUgYmFzZWQgb24gZmlsZSBleHRlbnNpb25cclxuICAgICAgICAgICAgLy8gY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlRnJvbVVybChmaWxlTmFtZSB8fCBmaWxlVXJsKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgICAgICAgIGZpbGU6IG51bGwsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90aGluZyBsb2NhbFxyXG4gICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiBvcmlnaW5hbFVybE9iaiwgICAgICAgLy8ga2VlcCB3aG9sZSBvYmplY3RcclxuICAgICAgICAgICAgICByZXN1bHQ6IHR5cGUgPT09ICdpbWFnZSdcclxuICAgICAgICAgICAgICAgID8gKHByZXZpZXdVcmwpICAgICAgICAvLyBwcmVmZXIgcHJldmlld1VybCwgZmFsbGJhY2sgdG8gZmlsZVVybFxyXG4gICAgICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiBmaWxlT2JqPy50aXRsZSB8fCAnJyxcclxuICAgICAgICAgICAgICBub3RlczogZmlsZU9iaj8ubm90ZXMgfHwgJycsXHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnlJZCA6IGZpbGVPYmo/LmNhdGVnb3J5SWQgIHx8ICcnLFxyXG4gICAgICAgICAgICAgIHR5cGU6IHR5cGUsICAgICAgICAgICAgICAgICAgICAvLyBjb21wdXRlZCB0eXBlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKGZvcm1hdHRlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gICAgICAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuXHJcblxyXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgaWYgKCFpbnB1dC5maWxlcykgcmV0dXJuO1xyXG5cclxuICBBcnJheS5mcm9tKGlucHV0LmZpbGVzKS5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlKGZpbGUpO1xyXG5cclxuICAgIGNvbnN0IG5ld0ZpbGU6IGFueSA9IHtcclxuICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICBvcmlnaW5hbFVybDogbnVsbCxcclxuICAgICAgcmVzdWx0OiBudWxsLCAgICAgXHJcbiAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICBub3RlczogJycsXHJcbiAgICAgIGNhdGVnb3J5SWQgOiAnJyxcclxuICAgICAgdHlwZTogZmlsZVR5cGUsICAgXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChmaWxlVHlwZSA9PT0gJ2ltYWdlJykge1xyXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XHJcbiAgICAgICAgbmV3RmlsZS5yZXN1bHQgPSBlLnRhcmdldD8ucmVzdWx0O1xyXG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAgICAgfTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7IC8vIG9ubHkgaW1hZ2VzIG5lZWQgcHJldmlld1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gbm9uLWltYWdlIOKGkiBwdXNoIGRpcmVjdGx5XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGlucHV0LnZhbHVlID0gJyc7XHJcbn1cclxuXHJcblxyXG4gIG9uTWV0YUNoYW5nZSgpIHtcclxuICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIHB1YmxpYyBkZWxldGVGaWxlKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcy5maWx0ZXIoZmlsZSA9PiBmaWxlPy5pZCAhPT0gaWQpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gZGVsZXRlRmlsZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgLy8gICBjb25zdCBbZGVsZXRlZEZpbGVdID0gdGhpcy51cGxvYWRlZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgXHJcbiAgLy8gICBpZiAoZGVsZXRlZEZpbGUpIHtcclxuICAvLyAgICAgdGhpcy5kZWxldGVkRmlsZXMucHVzaChkZWxldGVkRmlsZSk7XHJcbiAgLy8gICAgIHRoaXMuZm9ybWF0dGVkRGF0YSA9IHtcclxuICAvLyAgICAgICAuLi50aGlzLmZvcm1hdHRlZERhdGEsXHJcbiAgLy8gICAgICAgdXBsb2FkZWRGaWxlczogWy4uLnRoaXMudXBsb2FkZWRGaWxlc10sXHJcbiAgLy8gICAgICAgZGVsZXRlZEZpbGVzOiBbLi4udGhpcy5kZWxldGVkRmlsZXNdXHJcbiAgLy8gICAgIH07XHJcbiAgLy8gICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgZGVsZXRlZEZpbGUgPSB0aGlzLnVwbG9hZGVkRmlsZXM/LltpbmRleF07XHJcbiAgICBpZiAoIWRlbGV0ZWRGaWxlKSByZXR1cm47XHJcbiAgXHJcbiAgICAvLyBFbnN1cmUgZm9ybWF0dGVkRGF0YSBleGlzdHMgYW5kIGluaXRpYWxpemUgaWYgdW5kZWZpbmVkXHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGEgPSB0aGlzLmZvcm1hdHRlZERhdGEgfHwgeyB1cGxvYWRlZEZpbGVzOiBbXSwgZGVsZXRlZEZpbGVzOiBbXSB9O1xyXG4gIFxyXG4gICAgLy8gQWRkIHRoZSBkZWxldGVkIGZpbGUgdG8gdGhlIGRlbGV0ZWRGaWxlcyBhcnJheVxyXG4gICAgdGhpcy5kZWxldGVkRmlsZXMgPSBbLi4udGhpcy5kZWxldGVkRmlsZXMsIGRlbGV0ZWRGaWxlXTtcclxuICBcclxuICAgIC8vIFJlbW92ZSB0aGUgZmlsZSBmcm9tIHVwbG9hZGVkRmlsZXMgdXNpbmcgZmlsdGVyIGZvciBpbW11dGFiaWxpdHlcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcclxuICBcclxuICAgIC8vIFVwZGF0ZSBmb3JtYXR0ZWREYXRhXHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGEgPSB7XHJcbiAgICAgIC4uLnRoaXMuZm9ybWF0dGVkRGF0YSxcclxuICAgICAgdXBsb2FkZWRGaWxlczogdGhpcy51cGxvYWRlZEZpbGVzLFxyXG4gICAgICBkZWxldGVkRmlsZXM6IHRoaXMuZGVsZXRlZEZpbGVzXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgdXBsb2FkRmlsZUNvbnRyb2xcclxuICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICB9XHJcbiAgXHJcbiAgXHJcblxyXG4gIHByb3RlY3RlZCBzZXR0aW5ncygpOiBGeFNldHRpbmdbXSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAndXBsb2FkLXRleHQnLCAkdGl0bGU6ICdVcGxvYWQgVGV4dCcsIHZhbHVlOiAnVXBsb2FkIEZpbGUnfSksXHJcbiAgICAgIG5ldyBGeFNlbGVjdFNldHRpbmcoe2tleTogJ211bHRpcGxlLXVwbG9hZCcsICR0aXRsZTogJ011bHRpcGxlIFVwbG9hZCcsIHZhbHVlOiBmYWxzZX0sIFt7b3B0aW9uOiAnRW5hYmxlJywgdmFsdWU6IHRydWV9LCB7b3B0aW9uOiAnRGlzYWJsZScsIHZhbHVlOiBmYWxzZX1dKSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ21heEZpbGVObycsICR0aXRsZTogJ01heGltdW0gRmlsZSBVcGxvYWQgQWxsb3dlZCcsIHZhbHVlOjh9KSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgcmV0dXJuIFtGeFZhbGlkYXRvclNlcnZpY2UucmVxdWlyZWRdO1xyXG4gIH1cclxuXHJcbmRldGVjdEZpbGVUeXBlKGZpbGU6IEZpbGUpOiAnaW1hZ2UnIHwgJ2NzdicgfCAndGV4dCcgfCAncGRmJyB8ICdleGNlbCcgfCAnd29yZCcgfCAnb3RoZXInIHtcclxuICBjb25zdCBtaW1lID0gKGZpbGUudHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICBjb25zdCBuYW1lID0gKGZpbGUubmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgLy8gSW1hZ2VzXHJcbiAgaWYgKG1pbWUuc3RhcnRzV2l0aCgnaW1hZ2UvJykgfHwgL1xcLihwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wfHN2ZykkL2kudGVzdChuYW1lKSkge1xyXG4gICAgcmV0dXJuICdpbWFnZSc7XHJcbiAgfVxyXG5cclxuICAvLyBDU1ZcclxuICBpZiAobWltZSA9PT0gJ3RleHQvY3N2JyB8fCBuYW1lLmVuZHNXaXRoKCcuY3N2JykpIHtcclxuICAgIHJldHVybiAnY3N2JztcclxuICB9XHJcblxyXG4gIC8vIFRleHQgZmlsZXNcclxuICBpZiAobWltZSA9PT0gJ3RleHQvcGxhaW4nIHx8IG5hbWUuZW5kc1dpdGgoJy50eHQnKSkge1xyXG4gICAgcmV0dXJuICd0ZXh0JztcclxuICB9XHJcblxyXG4gIC8vIFBERlxyXG4gIGlmIChtaW1lID09PSAnYXBwbGljYXRpb24vcGRmJyB8fCBuYW1lLmVuZHNXaXRoKCcucGRmJykpIHtcclxuICAgIHJldHVybiAncGRmJztcclxuICB9XHJcblxyXG4gIC8vIEV4Y2VsXHJcbiAgaWYgKFxyXG4gICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcgfHxcclxuICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfHxcclxuICAgIC9cXC4oeGxzfHhsc3gpJC9pLnRlc3QobmFtZSlcclxuICApIHtcclxuICAgIHJldHVybiAnZXhjZWwnO1xyXG4gIH1cclxuXHJcbiAgLy8gV29yZFxyXG4gIGlmIChcclxuICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi9tc3dvcmQnIHx8XHJcbiAgICBtaW1lID09PSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnIHx8XHJcbiAgICAvXFwuKGRvY3xkb2N4KSQvaS50ZXN0KG5hbWUpXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gJ3dvcmQnO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuICdvdGhlcic7XHJcbn1cclxuXHJcbi8vIG9wZW5GaWxlRGlhbG9nKGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xyXG4vLyAgIC8vIHJlc2V0IHRoZSB2YWx1ZSBzbyBjaGFuZ2UgYWx3YXlzIHRyaWdnZXJzXHJcbi8vICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbi8vICAgZmlsZUlucHV0LmNsaWNrKCk7XHJcbi8vIH1cclxuXHJcbm9wZW5GaWxlRGlhbG9nKCkge1xyXG4gIC8vIGlmICh0aGlzLnVwbG9hZGVkRmlsZXMubGVuZ3RoID4gdGhpcy5zZXR0aW5nKCdtYXhGaWxlTm8nKSkge1xyXG4gIC8vICAgICAvLyB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgLy8gICAgIC8vICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAvLyAgICAgLy8gICBzdW1tYXJ5OiAnU3VjY2VzcycsXHJcbiAgLy8gICAgIC8vICAgZGV0YWlsOiBgTWF4aW11bVwiJHt0aGlzLnNldHRpbmcoJ21heEZpbGVObycpfVwiIGNhbiBiZSB1cGxvYWRlZGAsXHJcbiAgLy8gICAgIC8vICAgbGlmZTogMzAwMFxyXG4gIC8vICAgICAvLyB9KTtcclxuICAvLyAgIHJldHVybjtcclxuICAvLyB9XHJcbiAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxufVxyXG5cclxub25CYXNpY1VwbG9hZEF1dG8oZXZlbnQ6IFVwbG9hZEV2ZW50KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGZ4LWNvbXBvbmVudCBbZnhEYXRhXT1cImZ4RGF0YVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjdXN0b20tdXBsb2FkIGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQganVzdGlmeS1jZW50ZXIgcC0wIHJvdW5kZWQtc21cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC04IGl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDwhLS0gPHAgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZFwiPlBhdGllbnQgSW1hZ2VzPC9wPiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGdhcC0xIHVwbG9hZFwiICpuZ0lmPVwidXBsb2FkZWRGaWxlcy5sZW5ndGggPCBzZXR0aW5nKCdtYXhGaWxlTm8nKVwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI5IDI4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgIGQ9XCJNMTQuMDAxIDMuMDAxOTVDMTEuNTMyMiAzLjAwMTk1IDkuMTY3MjIgMy44Njk1NiA3LjIzNjQxIDUuMzg0MTRMNy4yMzU5OCA0LjU5Njk1QzcuMjM1OTggNC41MjQ3MyA3LjIyMTc1IDQuNDUzMjEgNy4xOTQxMSA0LjM4NjQ4QzcuMTY2NDcgNC4zMTk3NSA3LjEyNTk2IDQuMjU5MTIgNy4wNzQ4OSA0LjIwODA0QzcuMDIzODEgNC4xNTY5NyA2Ljk2MzE4IDQuMTE2NDYgNi44OTY0NSA0LjA4ODgyQzYuODI5NzIgNC4wNjExOCA2Ljc1ODIgNC4wNDY5NSA2LjY4NTk4IDQuMDQ2OTVDNi42MTM3NSA0LjA0Njk1IDYuNTQyMjMgNC4wNjExOCA2LjQ3NTUgNC4wODg4MkM2LjQwODc3IDQuMTE2NDYgNi4zNDgxNCA0LjE1Njk3IDYuMjk3MDcgNC4yMDgwNEM2LjI0NTk5IDQuMjU5MTIgNi4yMDU0OCA0LjMxOTc1IDYuMTc3ODQgNC4zODY0OEM2LjE1MDIgNC40NTMyMSA2LjEzNTk4IDQuNTI0NzMgNi4xMzU5OCA0LjU5Njk1TDYuMTM2NDIgNi42ODY1MkM2LjEzNjQzIDYuODMyMzkgNi4xOTQzOCA2Ljk3MjI4IDYuMjk3NTIgNy4wNzU0MkM2LjQwMDY3IDcuMTc4NTYgNi41NDA1NSA3LjIzNjUxIDYuNjg2NDIgNy4yMzY1Mkg4Ljc3NTk4QzguODQ4MiA3LjIzNjUyIDguOTE5NzIgNy4yMjIzIDguOTg2NDUgNy4xOTQ2NkM5LjA1MzE4IDcuMTY3MDIgOS4xMTM4MSA3LjEyNjUxIDkuMTY0ODkgNy4wNzU0M0M5LjIxNTk2IDcuMDI0MzYgOS4yNTY0NyA2Ljk2MzczIDkuMjg0MTEgNi44OTdDOS4zMTE3NSA2LjgzMDI3IDkuMzI1OTggNi43NTg3NSA5LjMyNTk4IDYuNjg2NTJDOS4zMjU5OCA2LjYxNDMgOS4zMTE3NSA2LjU0Mjc4IDkuMjg0MTEgNi40NzYwNUM5LjI1NjQ3IDYuNDA5MzIgOS4yMTU5NiA2LjM0ODY5IDkuMTY0ODkgNi4yOTc2MUM5LjExMzgxIDYuMjQ2NTQgOS4wNTMxOCA2LjIwNjAzIDguOTg2NDUgNi4xNzgzOUM4LjkxOTcyIDYuMTUwNzUgOC44NDgyIDYuMTM2NTIgOC43NzU5OCA2LjEzNjUySDguMDU4NEM5Ljc3MDIgNC44NDM4NyAxMS44Mzk5IDQuMTAxOTUgMTQuMDAxIDQuMTAxOTVDMTkuNDc1MSA0LjEwMTk1IDIzLjkwMSA4LjUyNzgyIDIzLjkwMSAxNC4wMDJDMjMuOTAxIDE5LjQ3NjEgMTkuNDc1MSAyMy45MDIgMTQuMDAxIDIzLjkwMkM4LjUyNjg0IDIzLjkwMiA0LjEwMDk4IDE5LjQ3NjEgNC4xMDA5OCAxNC4wMDJDNC4xMDA5OCAxMi42MzgxIDQuMzgyNjMgMTEuMjg4OCA0LjkyODU1IDEwLjAzODlDNC45ODY5MSA5LjkwNTMyIDQuOTg5ODIgOS43NTM5OSA0LjkzNjY1IDkuNjE4MjJDNC44ODM0NyA5LjQ4MjQ2IDQuNzc4NTUgOS4zNzMzNiA0LjY0NDk2IDkuMzE0OTJDNC41Nzg3NyA5LjI4NTk2IDQuNTA3NTMgOS4yNzAzMiA0LjQzNTMgOS4yNjg5QzQuMzYzMDYgOS4yNjc0NyA0LjI5MTI2IDkuMjgwMyA0LjIyMzk4IDkuMzA2NjNDNC4xNTY3MSA5LjMzMjk3IDQuMDk1MjggOS4zNzIzIDQuMDQzMjEgOS40MjIzOEMzLjk5MTE0IDkuNDcyNDcgMy45NDk0NCA5LjUzMjMyIDMuOTIwNTEgOS41OTg1MkMzLjMxMzkzIDEwLjk4NzIgMy4wMDA5OCAxMi40ODY2IDMuMDAwOTggMTQuMDAyQzMuMDAwOTggMjAuMDcwNiA3LjkzMjM2IDI1LjAwMiAxNC4wMDEgMjUuMDAyQzIwLjA2OTYgMjUuMDAyIDI1LjAwMSAyMC4wNzA2IDI1LjAwMSAxNC4wMDJDMjUuMDAxIDcuOTMzMzQgMjAuMDY5NiAzLjAwMTk1IDE0LjAwMSAzLjAwMTk1WlwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgZD1cIk0xMy45OTg4IDYuMTM5NjVDOS42NjE2IDYuMTM5NjUgNi4xMzM3OSA5LjY2NzQ2IDYuMTMzNzkgMTQuMDA0NkM2LjEzMzc5IDE4LjM0MTggOS42NjE2IDIxLjg2OTYgMTMuOTk4OCAyMS44Njk2QzE4LjMzNiAyMS44Njk2IDIxLjg2MzggMTguMzQxOCAyMS44NjM4IDE0LjAwNDZDMjEuODYzOCA5LjY2NzQ2IDE4LjMzNiA2LjEzOTY1IDEzLjk5ODggNi4xMzk2NVpNMTMuOTk4OCA4LjIyOTY1QzE0LjE0NDcgOC4yMjk2NSAxNC4yODQ2IDguMjg3NTkgMTQuMzg3NyA4LjM5MDc0QzE0LjQ5MDggOC40OTM4OCAxNC41NDg4IDguNjMzNzggMTQuNTQ4OCA4Ljc3OTY1VjEzLjc3NjlMMTcuNTIyNyAxNi43NTA4QzE3LjYyNTggMTYuODUzOSAxNy42ODM3IDE2Ljk5MzggMTcuNjgzNyAxNy4xMzk2QzE3LjY4MzcgMTcuMjg1NSAxNy42MjU4IDE3LjQyNTQgMTcuNTIyNyAxNy41Mjg1QzE3LjQxOTUgMTcuNjMxNiAxNy4yNzk2IDE3LjY4OTYgMTcuMTMzOCAxNy42ODk2QzE2Ljk4NzkgMTcuNjg5NiAxNi44NDgxIDE3LjYzMTYgMTYuNzQ0OSAxNy41Mjg1TDEzLjYwOTkgMTQuMzkzNUMxMy41MDY4IDE0LjI5MDQgMTMuNDQ4OCAxNC4xNTA1IDEzLjQ0ODggMTQuMDA0NlY4Ljc3OTY1QzEzLjQ0ODggOC42MzM3OCAxMy41MDY3IDguNDkzODggMTMuNjA5OSA4LjM5MDc0QzEzLjcxMyA4LjI4NzU5IDEzLjg1MjkgOC4yMjk2NSAxMy45OTg4IDguMjI5NjVaXCJcclxuICAgICAgICAgICAgICBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjguNTZcIiBoZWlnaHQ9XCIyOFwiIHJ4PVwiMS41MTQ3OVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTE1LjA2OCAyMi43MzkxVjE3LjY3MDhIMTguNDk2OEwxNC4yMTA4IDEyLjYwMjVMOS45MjQ4IDE3LjY3MDhIMTMuMzUzNlYyMi43MzkxSDkuMDY3NTlWMjIuNjk2OUM4LjkyMzU4IDIyLjcwNTMgOC43ODY0MyAyMi43MzkxIDguNjM4OTkgMjIuNzM5MUM2LjkzMzkxIDIyLjczOTEgNS4yOTg2NiAyMi4wNzE3IDQuMDkyOTggMjAuODgzNUMyLjg4NzMgMTkuNjk1NCAyLjIwOTk2IDE4LjA4NCAyLjIwOTk2IDE2LjQwMzdDMi4yMDk5NiAxMy4xNTMyIDQuNzA0NDMgMTAuNTA0MiA3LjkwNTIzIDEwLjE0MUM4LjE4NTg1IDguNjk1MyA4Ljk2ODkyIDcuMzkxMTggMTAuMTE5NyA2LjQ1MjkyQzExLjI3MDYgNS41MTQ2NSAxMi43MTcyIDUuMDAwODkgMTQuMjEwOCA1QzE1LjcwNDcgNS4wMDA4MiAxNy4xNTE1IDUuNTE0NTIgMTguMzAyNiA2LjQ1Mjc3QzE5LjQ1MzcgNy4zOTEwMSAyMC4yMzcxIDguNjk1MTYgMjAuNTE4MSAxMC4xNDFDMjMuNzE4OSAxMC41MDQyIDI2LjIxIDEzLjE1MzIgMjYuMjEgMTYuNDAzN0MyNi4yMSAxOC4wODQgMjUuNTMyNiAxOS42OTU0IDI0LjMyNjkgMjAuODgzNUMyMy4xMjEzIDIyLjA3MTcgMjEuNDg2IDIyLjczOTEgMTkuNzgwOSAyMi43MzkxQzE5LjYzNjkgMjIuNzM5MSAxOS40OTgxIDIyLjcwNTMgMTkuMzUyMyAyMi42OTY5VjIyLjczOTFIMTUuMDY4WlwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkZpbGVEaWFsb2coKVwiIGNsYXNzPVwidXBsb2FkX3RpdGxlIGN1cnNvci1wb2ludGVyIFwiPlxyXG4gICAgICAgICAge3sgc2V0dGluZygndXBsb2FkLXRleHQnKSB9fVxyXG4gICAgICAgIDwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGlucHV0ICNmaWxlSW5wdXQgdHlwZT1cImZpbGVcIiBbbXVsdGlwbGVdPVwic2V0dGluZygnbXVsdGlwbGUtdXBsb2FkJylcIiAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICBhY2NlcHQ9XCIuY3N2LC5wZGYsLnhscywueGxzeCwuZG9jLC5kb2N4LC50eHQsaW1hZ2UvKlwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAvPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWxlLWxpc3QgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTQgZmxleC13cmFwIHctZnVsbFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXBsb2FkZWRGaWxlcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmlsZSBvZiB1cGxvYWRlZEZpbGVzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgIGNsYXNzPVwicmVsYXRpdmUgcC0zIGJvcmRlciByb3VuZGVkLWxnIHNoYWRvdy1zbSBiZy13aGl0ZSB3LVs0NTBweF0gdXBsb2FkX2ZpbGVcIj5cclxuXHJcbiAgICAgICAgICA8IS0tIENsb3NlIGljb24gLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2VfaWNvbiBjdXJzb3ItcG9pbnRlciBhYnNvbHV0ZSB0b3AtMiByaWdodC0yXCIgKGNsaWNrKT1cImRlbGV0ZUZpbGUoaSlcIj5cclxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDIyIDIyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgcng9XCIxMVwiIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgZD1cIk03LjA4OTExIDE1Ljg4ODlMNi4xMTEzMyAxNC45MTExTDEwLjAyMjQgMTFMNi4xMTEzMyA3LjA4ODg2TDcuMDg5MTEgNi4xMTEwOEwxMS4wMDAyIDEwLjAyMjJMMTQuOTExMyA2LjExMTA4TDE1Ljg4OTEgNy4wODg4NkwxMS45NzggMTFMMTUuODg5MSAxNC45MTExTDE0LjkxMTMgMTUuODg4OUwxMS4wMDAyIDExLjk3NzhMNy4wODkxMSAxNS44ODg5WlwiXHJcbiAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWxfdGl0bGUgZmxleFwiPlxyXG4gICAgICAgICAgICA8IS0tIFRodW1ibmFpbCBvbiBsZWZ0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbGUudHlwZSA9PT0gJ2ltYWdlJzsgZWxzZSBub25JbWFnZVRodW1iXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZmlsZS10aHVtYm5haWxcIiBbc3JjXT1cImZpbGU/LnJlc3VsdFwiIGFsdD1cInByZXZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZpbGU/LnJlc3VsdFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWZpbGU/LnJlc3VsdFwiIHdpZHRoPVwiMTgwcHhcIiBoZWlnaHQ9XCIxODBweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjcwMTMgMTNIMy4zMTI3QzIuNTg1MDEgMTMgMiAxMi40MDQ4IDIgMTEuNjY0NVY0LjMzNTQ4QzIgMy41OTUxNiAyLjU4NTAxIDMgMy4zMTI3IDNIMTIuNjg3MUMxMy40MTQ3IDMgMTMuOTk5OCAzLjU5NTE2IDEzLjk5OTggNC4zMzU0OFYxMS42NjQ1QzE0LjAxNCAxMi40MDQ4IDEzLjQxNDcgMTMgMTIuNzAxMyAxM1pNOS4yNDgzNiA3LjkwNDg0TDcuMzkzNDcgMTAuMDY3N0M3LjI3OTMyIDEwLjIxMjkgNy4wNTEwMiAxMC4yMTI5IDYuOTM2ODggMTAuMDgyM0w1LjkzODA5IDguOTkzNTVDNS44MDk2NyA4Ljg2MjkgNS42MDk5MSA4Ljg2MjkgNS40ODE1IDguOTkzNTVMMy43NjkyOSAxMC44NjYxQzMuNTgzOCAxMS4wNjk0IDMuNzI2NDggMTEuNDAzMiAzLjk5NzU4IDExLjQwMzJINi4yNjYyNkg4LjEzNTQzSDEyLjAxNjRDMTIuMjg3NSAxMS40MDMyIDEyLjQzMDIgMTEuMDgzOSAxMi4yNDQ3IDEwLjg4MDZMOS43MTkyMiA3LjkwNDg0QzkuNTkwODEgNy43NTk2OCA5LjM3Njc4IDcuNzU5NjggOS4yNDgzNiA3LjkwNDg0Wk02LjczNzEyIDUuOTg4NzFDNi4yNTE5OSA1Ljk4ODcxIDUuODUyNDggNi4zOTUxNiA1Ljg1MjQ4IDYuODg4NzFDNS44NTI0OCA3LjM4MjI2IDYuMjUxOTkgNy43ODg3MSA2LjczNzEyIDcuNzg4NzFDNy4yMjIyNSA3Ljc4ODcxIDcuNjIxNzYgNy4zODIyNiA3LjYyMTc2IDYuODg4NzFDNy42MjE3NiA2LjM5NTE2IDcuMjIyMjUgNS45ODg3MSA2LjczNzEyIDUuOTg4NzFaXCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzk5OTk5OVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9uSW1hZ2VUaHVtYj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLXRodW1ibmFpbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWxlLnR5cGVcIj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInY3N2J1wiIHdpZHRoPVwiMTgwcHhcIiBoZWlnaHQ9XCIxODBweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMyM0E3NjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuOTQwNzYgMTAuMzQzM0M2Ljg1OTM5IDEwLjM0MzMgNi43ODcxNiAxMC4zNTg4IDYuNzI0MDggMTAuMzg5OUM2LjY2MTkxIDEwLjQyIDYuNjA5MzQgMTAuNDY0IDYuNTY2MzcgMTAuNTIxNkM2LjUyNDMyIDEwLjU3OTMgNi40OTIzMiAxMC42NDg5IDYuNDcwMzggMTAuNzMwNUM2LjQ0ODQ0IDEwLjgxMjIgNi40Mzc0NyAxMC45MDQgNi40Mzc0NyAxMS4wMDZDNi40Mzc0NyAxMS4xNDM1IDYuNDU0ODQgMTEuMjYxIDYuNDg5NTggMTEuMzU4NkM2LjUyNTIzIDExLjQ1NTMgNi41ODAwOSAxMS41Mjk0IDYuNjU0MTQgMTEuNTgwOEM2LjcyODIgMTEuNjMxNCA2LjgyMzczIDExLjY1NjcgNi45NDA3NiAxMS42NTY3QzcuMDIyMTIgMTEuNjU2NyA3LjEwMzQ5IDExLjY0NzggNy4xODQ4NiAxMS42MzAxQzcuMjY3MTQgMTEuNjEyMyA3LjM1NjI4IDExLjU4NyA3LjQ1MjI4IDExLjU1NDJWMTEuOTAwMkM3LjM2MzU5IDExLjkzNTcgNy4yNzYyOCAxMS45NjEgNy4xOTAzNSAxMS45NzZDNy4xMDQ0MSAxMS45OTIgNy4wMDc5NSAxMiA2LjkwMDk5IDEyQzYuNjk0MzcgMTIgNi41MjQzMiAxMS45NTg3IDYuMzkwODQgMTEuODc2MkM2LjI1ODI3IDExLjc5MjkgNi4xNTk5OSAxMS42NzY2IDYuMDk2IDExLjUyNzZDNi4wMzIgMTEuMzc3NyA2IDExLjIwMjkgNiAxMS4wMDMzQzYgMTAuODU2MSA2LjAyMDU3IDEwLjcyMTIgNi4wNjE3MSAxMC41OTg4QzYuMTAyODUgMTAuNDc2NCA2LjE2MzE5IDEwLjM3MDQgNi4yNDI3MyAxMC4yODA4QzYuMzIyMjcgMTAuMTkxMiA2LjQyMDU1IDEwLjEyMiA2LjUzNzU4IDEwLjA3MzJDNi42NTQ2IDEwLjAyNDQgNi43ODg5OSAxMCA2Ljk0MDc2IDEwQzcuMDQwNDEgMTAgNy4xNDAwNiAxMC4wMTI0IDcuMjM5NzEgMTAuMDM3M0M3LjM0MDI4IDEwLjA2MTIgNy40MzYyOCAxMC4wOTQ1IDcuNTI3NyAxMC4xMzcxTDcuMzkwNTcgMTAuNDcyNEM3LjMxNTYgMTAuNDM3OCA3LjI0MDE3IDEwLjQwNzYgNy4xNjQyOSAxMC4zODE5QzcuMDg4NDEgMTAuMzU2MiA3LjAxMzkgMTAuMzQzMyA2Ljk0MDc2IDEwLjM0MzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4wNjM2MyAxMS40MzMxQzkuMDYzNjMgMTEuNTQ4NSA5LjAzNDgzIDExLjY0ODcgOC45NzcyNCAxMS43MzM5QzguOTE5NjQgMTEuODE5IDguODM1NTMgMTEuODg0NyA4LjcyNDkgMTEuOTMwOEM4LjYxNTE5IDExLjk3NjkgOC40ODE3MiAxMiA4LjMyNDQ3IDEyQzguMjU0OTggMTIgOC4xODY4NyAxMS45OTU2IDguMTIwMTMgMTEuOTg2N0M4LjA1NDMxIDExLjk3NzggNy45OTA3NyAxMS45NjUgNy45Mjk1MSAxMS45NDgxQzcuODY5MTcgMTEuOTMwNCA3LjgxMTU3IDExLjkwODYgNy43NTY3MiAxMS44ODI5VjExLjQ5OTdDNy44NTE4IDExLjU0MDUgNy45NTA1NCAxMS41NzczIDguMDUyOTMgMTEuNjEwMUM4LjE1NTMzIDExLjY0MjkgOC4yNTY4MSAxMS42NTkzIDguMzU3MzggMTEuNjU5M0M4LjQyNjg2IDExLjY1OTMgOC40ODI2MyAxMS42NTA1IDguNTI0NjggMTEuNjMyN0M4LjU2NzY1IDExLjYxNSA4LjU5ODc0IDExLjU5MDYgOC42MTc5NCAxMS41NTk1QzguNjM3MTQgMTEuNTI4NSA4LjY0Njc0IDExLjQ5MyA4LjY0Njc0IDExLjQ1MzFDOC42NDY3NCAxMS40MDQzIDguNjI5ODIgMTEuMzYyNiA4LjU5NiAxMS4zMjhDOC41NjIxNyAxMS4yOTM0IDguNTE1NTQgMTEuMjYxIDguNDU2MTIgMTEuMjMwOUM4LjM5NzYgMTEuMjAwNyA4LjMzMTMyIDExLjE2ODMgOC4yNTcyNyAxMS4xMzM3QzguMjEwNjQgMTEuMTEyNCA4LjE1OTkgMTEuMDg2NyA4LjEwNTA1IDExLjA1NjZDOC4wNTAxOSAxMS4wMjU1IDcuOTk4MDggMTAuOTg3OCA3Ljk0ODcxIDEwLjk0MzRDNy44OTkzNCAxMC44OTkxIDcuODU4NjYgMTAuODQ1NCA3LjgyNjY2IDEwLjc4MjRDNy43OTU1OCAxMC43MTg2IDcuNzgwMDMgMTAuNjQyMyA3Ljc4MDAzIDEwLjU1MzZDNy43ODAwMyAxMC40MzczIDcuODA3NDYgMTAuMzM4IDcuODYyMzEgMTAuMjU1NUM3LjkxNzE3IDEwLjE3MyA3Ljk5NTM0IDEwLjExIDguMDk2ODIgMTAuMDY2NUM4LjE5OTIxIDEwLjAyMjIgOC4zMTk4OSAxMCA4LjQ1ODg2IDEwQzguNTYzMDggMTAgOC42NjIyOCAxMC4wMTIgOC43NTY0NSAxMC4wMzU5QzguODUxNTMgMTAuMDU5IDguOTUwNzIgMTAuMDkyNyA5LjA1NDAzIDEwLjEzNzFMOC45MTY5IDEwLjQ1NzhDOC44MjQ1NiAxMC40MjE0IDguNzQxODIgMTAuMzkzNCA4LjY2ODY4IDEwLjM3MzlDOC41OTU1NCAxMC4zNTM1IDguNTIxMDMgMTAuMzQzMyA4LjQ0NTE1IDEwLjM0MzNDOC4zOTIxMiAxMC4zNDMzIDguMzQ2ODYgMTAuMzUxNyA4LjMwOTM4IDEwLjM2ODZDOC4yNzE5IDEwLjM4NDYgOC4yNDM1NSAxMC40MDc2IDguMjI0MzYgMTAuNDM3OEM4LjIwNTE2IDEwLjQ2NzEgOC4xOTU1NiAxMC41MDEyIDguMTk1NTYgMTAuNTQwM0M4LjE5NTU2IDEwLjU4NjQgOC4yMDkyNyAxMC42MjU0IDguMjM2NyAxMC42NTc0QzguMjY1MDQgMTAuNjg4NCA4LjMwNzA5IDEwLjcxODYgOC4zNjI4NiAxMC43NDc4QzguNDE5NTUgMTAuNzc3MSA4LjQ4OTk0IDEwLjgxMTMgOC41NzQwNSAxMC44NTAzQzguNjc2NDUgMTAuODk3MyA4Ljc2Mzc2IDEwLjk0NjYgOC44MzU5OCAxMC45OThDOC45MDkxMiAxMS4wNDg2IDguOTY1MzUgMTEuMTA4NCA5LjAwNDY2IDExLjE3NzZDOS4wNDM5OCAxMS4yNDYgOS4wNjM2MyAxMS4zMzExIDkuMDYzNjMgMTEuNDMzMVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxMC4wMjc5TDEwLjMxODQgMTEuOTczNEg5Ljg1NDkxTDkuMTc0NzEgMTAuMDI3OUg5LjYwMzk1TDkuOTgxMDggMTEuMTg1NkM5Ljk4NzQ4IDExLjIwNTEgOS45OTc5OSAxMS4yNDIgMTAuMDEyNiAxMS4yOTYxQzEwLjAyNzIgMTEuMzQ5MyAxMC4wNDE5IDExLjQwNjEgMTAuMDU2NSAxMS40NjY0QzEwLjA3MiAxMS41MjU4IDEwLjA4MjYgMTEuNTc1MSAxMC4wODggMTEuNjE0MUMxMC4wOTM1IDExLjU3NTEgMTAuMTAzMSAxMS41MjU4IDEwLjExNjggMTEuNDY2NEMxMC4xMzE1IDExLjQwNyAxMC4xNDU2IDExLjM1MDYgMTAuMTU5NCAxMS4yOTc0QzEwLjE3NCAxMS4yNDMzIDEwLjE4NDUgMTEuMjA2IDEwLjE5MDkgMTEuMTg1NkwxMC41NzA4IDEwLjAyNzlIMTFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMVwiIHJ4PVwiMC4yXCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjlcIiB5PVwiN1wiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjFcIiByeD1cIjAuMlwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI5XCIgeT1cIjVcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiIHdpZHRoPVwiMTgwcHhcIiBoZWlnaHQ9XCIxODBweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxRjVFQkJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMDQzNTMgMTJINi42MTEwNVYxMC4zMjAzSDYuMDU3MlY5Ljk2MDM4SDcuNTk3MzhWMTAuMzIwM0g3LjA0MzUzVjEyWk05LjU2MDI3IDEySDkuMDY2NDFMOC41OTIwOCAxMS4yMjg1TDguMTE3NzUgMTJINy42NTQ1OEw4LjMzMTE5IDEwLjk0ODFMNy42OTc4MiA5Ljk2MDM4SDguMTc0OTRMOC42MTQ0IDEwLjY5NDJMOS4wNDU0OCA5Ljk2MDM4SDkuNTExNDRMOC44NzEwOSAxMC45NzE4TDkuNTYwMjcgMTJaTTEwLjYwMzggMTJIMTAuMTcxM1YxMC4zMjAzSDkuNjE3NDdWOS45NjAzOEgxMS4xNTc2VjEwLjMyMDNIMTAuNjAzOFYxMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiNVwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjZcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI3XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaERlZmF1bHQgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuMTc1NyAxLjE3NTc0QzExLjA2MzIgMS4wNjMyMSAxMC45MTA2IDEgMTAuNzUxNSAxSDMuNkMzLjI2ODYzIDEgMyAxLjI2ODYzIDMgMS42VjE0LjRDMyAxNC43MzE0IDMuMjY4NjMgMTUgMy42IDE1SDEzLjRDMTMuNzMxNCAxNSAxNCAxNC43MzE0IDE0IDE0LjRWNC4yNDg1M0MxNCA0LjA4OTQgMTMuOTM2OCAzLjkzNjc5IDEzLjgyNDMgMy44MjQyNkwxMS4xNzU3IDEuMTc1NzRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGNEY0RjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxMi43QzE1IDEyLjg2NTcgMTQuODY1NyAxMyAxNC43IDEzSDIuM0MyLjEzNDMxIDEzIDIgMTIuODY1NyAyIDEyLjdWOS4zQzIgOS4xMzQzMSAyLjEzNDMxIDkgMi4zIDlIMTQuN0MxNC44NjU3IDkgMTUgOS4xMzQzMSAxNSA5LjNWMTIuN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0REMjAyNVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDFMMTIuNSAyLjVMMTQgNEgxMS4yQzExLjA4OTUgNCAxMSAzLjkxMDQ2IDExIDMuOFYxWlwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi42MDg0IDkuOTYwMzhDNi44NzE2MSA5Ljk2MDM4IDcuMDYzNjYgMTAuMDE3MSA3LjE4NDU3IDEwLjEzMDZDNy4zMDU0OCAxMC4yNDMxIDcuMzY1OTMgMTAuMzk4NCA3LjM2NTkzIDEwLjU5NjVDNy4zNjU5MyAxMC42ODU4IDcuMzUyNDUgMTAuNzcxNCA3LjMyNTQ3IDEwLjg1MzJDNy4yOTg1IDEwLjkzNDIgNy4yNTQzMiAxMS4wMDYyIDcuMTkyOTQgMTEuMDY5NUM3LjEzMjQ5IDExLjEzMjcgNy4wNTE1NyAxMS4xODI5IDYuOTUwMiAxMS4yMjAxQzYuODQ4ODIgMTEuMjU2NCA2LjcyMzczIDExLjI3NDYgNi41NzQ5MiAxMS4yNzQ2SDYuMzg5MzdWMTJINS45NTY4OVY5Ljk2MDM4SDYuNjA4NFpNNi41ODYwOCAxMC4zMTQ3SDYuMzg5MzdWMTAuOTIwMkg2LjUzMTY3QzYuNjEyNTggMTAuOTIwMiA2LjY4MjggMTAuOTA5NSA2Ljc0MjMzIDEwLjg4ODFDNi44MDE4NSAxMC44NjY3IDYuODQ3ODkgMTAuODMzMiA2Ljg4MDQ0IDEwLjc4NzdDNi45MTI5OSAxMC43NDIxIDYuOTI5MjcgMTAuNjgzNSA2LjkyOTI3IDEwLjYxMTlDNi45MjkyNyAxMC41MTE0IDYuOTAxMzcgMTAuNDM3IDYuODQ1NTYgMTAuMzg4N0M2Ljc4OTc2IDEwLjMzOTQgNi43MDMyNiAxMC4zMTQ3IDYuNTg2MDggMTAuMzE0N1pNOS40NDMyMiAxMC45NjA3QzkuNDQzMjIgMTEuMTkwNCA5LjM5OTA0IDExLjM4MjQgOS4zMTA2OSAxMS41MzY4QzkuMjIzMjYgMTEuNjkwMyA5LjA5NjMxIDExLjgwNjEgOC45Mjk4MyAxMS44ODQyQzguNzYzMzUgMTEuOTYxNCA4LjU2MjkyIDEyIDguMzI4NTQgMTJINy43NTA5OFY5Ljk2MDM4SDguMzkxMzJDOC42MDUyNCA5Ljk2MDM4IDguNzkwNzggOS45OTg1MSA4Ljk0Nzk2IDEwLjA3NDhDOS4xMDUxNCAxMC4xNTAxIDkuMjI2OTggMTAuMjYyMiA5LjMxMzQ4IDEwLjQxMUM5LjM5OTk3IDEwLjU1ODkgOS40NDMyMiAxMC43NDIxIDkuNDQzMjIgMTAuOTYwN1pNOC45OTQgMTAuOTcxOEM4Ljk5NCAxMC44MjExIDguOTcxNjggMTAuNjk3NSA4LjkyNzA0IDEwLjYwMDdDOC44ODMzMiAxMC41MDMxIDguODE4MjIgMTAuNDMxIDguNzMxNzIgMTAuMzg0NUM4LjY0NjE2IDEwLjMzOCA4LjU0MDEzIDEwLjMxNDcgOC40MTM2NCAxMC4zMTQ3SDguMTgzNDVWMTEuNjQyOUg4LjM2OUM4LjU4MDEyIDExLjY0MjkgOC43MzY4NCAxMS41ODY2IDguODM5MTUgMTEuNDc0MUM4Ljk0MjM4IDExLjM2MTUgOC45OTQgMTEuMTk0MSA4Ljk5NCAxMC45NzE4Wk0xMC4yOTE0IDEySDkuODY1OTNWOS45NjAzOEgxMS4wMzVWMTAuMzE0N0gxMC4yOTE0VjEwLjg0MDdIMTAuOTgzNFYxMS4xOTM2SDEwLjI5MTRWMTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjVcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI2XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiN1wiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTWV0YWRhdGEgb24gcmlnaHQgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZV9ub3RlcyBtbC0yXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSBUaXRsZSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gaW5wdXQtdGl0bGUgbS0wIC1tdC0xXCI+VGl0bGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZmlsZS50aXRsZVwiIG5hbWU9XCJ0aXRsZXt7aX19XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXRhQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHRpdGxlXCIgY2xhc3M9XCIgcm91bmRlZCBweC0zIHB5LTIgbWItMyB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIiAvPlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tIE5vdGVzIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSBpbnB1dC10aXRsZSBtLTAgLW10LTFcIj5Ob3RlczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJmaWxlLm5vdGVzXCIgbmFtZT1cIm5vdGVze3tpfX1cIiAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgbm90ZXNcIiBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiBtYi0wIHctZnVsbCBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgIHJvd3M9XCIyXCI+PC90ZXh0YXJlYT5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeSBtdC0yXCI+XHJcbiAgICAgICAgICAgIDwhLS0gQ2F0ZWdvcnkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gaW5wdXQtdGl0bGUgbS0wXCI+Q2F0ZWdvcnk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJmaWxlLmNhdGVnb3J5SWQgXCIgbmFtZT1cImNhdGVnb3J5e3tpfX1cIiAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgQ2F0ZWdvcnk8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGMgb2YgY2F0ZWdvcmllc1wiIFtuZ1ZhbHVlXT1cImMudmFsdWVcIj57eyBjLmxhYmVsIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgPC9kaXY+XHJcbjwvZngtY29tcG9uZW50PiJdfQ==
|