simpo-component-library 2.1.83 → 2.1.84
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +24 -24
- package/esm2022/lib/components/delete-hover-element/delete-hover-element.component.mjs +3 -3
- package/esm2022/lib/components/document/document.component.mjs +3 -4
- package/esm2022/lib/components/image-loading/image-loading.component.mjs +3 -3
- package/esm2022/lib/components/payment-details/payment-details.component.mjs +3 -3
- package/esm2022/lib/constants/business.constant.mjs +1 -1
- package/esm2022/lib/directive/blur-content.directive.mjs +1 -1
- package/esm2022/lib/directive/borderlessImage.directive.mjs +1 -1
- package/esm2022/lib/directive/button-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/color.directive.mjs +1 -1
- package/esm2022/lib/directive/column-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/container-alignment.directive.mjs +1 -1
- package/esm2022/lib/directive/container-fir.directive.mjs +1 -1
- package/esm2022/lib/directive/content-title-spacing.directive.mjs +1 -1
- package/esm2022/lib/directive/corner-directive.mjs +1 -1
- package/esm2022/lib/directive/hoverborder.directive.mjs +1 -1
- package/esm2022/lib/directive/image-container.directive.mjs +1 -1
- package/esm2022/lib/directive/image-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/image-position.directive.mjs +1 -1
- package/esm2022/lib/directive/position-layout-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/removeCarousel-directive.mjs +1 -2
- package/esm2022/lib/directive/spacing-around.directive.mjs +1 -1
- package/esm2022/lib/directive/spacing-horizontal.directive.mjs +1 -1
- package/esm2022/lib/directive/sticky-directive.mjs +1 -1
- package/esm2022/lib/directive/text-background-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/text-size.directive.mjs +1 -1
- package/esm2022/lib/directive/wrap-containers.directive.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/address/address.component.mjs +3 -4
- package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +4 -5
- package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +3 -21
- package/esm2022/lib/ecommerce/sections/cart/cart.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/category-product/category-product.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/featured-category/featured-category.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/featured-products/featured-products.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +3 -4
- package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +3 -7
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +3 -6
- package/esm2022/lib/ecommerce/sections/product-list/product-list.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +3 -7
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +3 -5
- package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +3 -7
- package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/product.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/user.modal.mjs +1 -1
- package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +3 -3
- package/esm2022/lib/elements/button/button.component.mjs +3 -3
- package/esm2022/lib/elements/button/button.model.mjs +1 -1
- package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +3 -3
- package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +3 -3
- package/esm2022/lib/elements/heading-element/heading-element.component.mjs +3 -3
- package/esm2022/lib/elements/index.mjs +1 -1
- package/esm2022/lib/elements/navbar-button-element/navbar-button-element.component.mjs +1 -2
- package/esm2022/lib/elements/property/property.component.mjs +3 -3
- package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +3 -3
- package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +3 -3
- package/esm2022/lib/elements/text/text.component.mjs +3 -3
- package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +3 -3
- package/esm2022/lib/pipes/amount.pipe.mjs +1 -1
- package/esm2022/lib/pipes/gender.pipe.mjs +1 -1
- package/esm2022/lib/sections/BaseSection.mjs +1 -1
- package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +3 -3
- package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +3 -18
- package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
- package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +3 -3
- package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
- package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +3 -3
- package/esm2022/lib/sections/banner-section/banner-section.component.mjs +1 -3
- package/esm2022/lib/sections/blog-list/blog-list.component.mjs +3 -3
- package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
- package/esm2022/lib/sections/carousel-banner/carousel-banner.component.mjs +1 -4
- package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +3 -3
- package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
- package/esm2022/lib/sections/faq-section/faq-section.component.mjs +3 -3
- package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
- package/esm2022/lib/sections/features-section/features-section.component.mjs +3 -3
- package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
- package/esm2022/lib/sections/header-text/header-text.component.mjs +3 -3
- package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
- package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
- package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
- package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +3 -3
- package/esm2022/lib/sections/image-grid-section/image-grid-section.model.mjs +1 -1
- package/esm2022/lib/sections/image-section/image-section.component.mjs +3 -3
- package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
- package/esm2022/lib/sections/location-section/location-section.component.mjs +3 -3
- package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
- package/esm2022/lib/sections/logo-gallery/logo-gallery.component.mjs +1 -2
- package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +3 -3
- package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
- package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +3 -4
- package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
- package/esm2022/lib/sections/process-modern/process-modern.component.mjs +3 -3
- package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
- package/esm2022/lib/sections/process-section/process-section.component.mjs +3 -3
- package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
- package/esm2022/lib/sections/property-component/property-component.component.mjs +3 -4
- package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
- package/esm2022/lib/sections/property-list/property-list.component.mjs +3 -3
- package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
- package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +3 -3
- package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
- package/esm2022/lib/sections/registration-form/registration-form.component.mjs +3 -3
- package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
- package/esm2022/lib/sections/service-section/service-section.component.mjs +3 -3
- package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
- package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +3 -3
- package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +3 -3
- package/esm2022/lib/sections/team-member-section/team-member-section.model.mjs +1 -1
- package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +3 -3
- package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
- package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +3 -3
- package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
- package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +3 -3
- package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
- package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
- package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +3 -4
- package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
- package/esm2022/lib/sections/video-section/video-section.component.mjs +3 -3
- package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
- package/esm2022/lib/sections/view-blog/view-blog.component.mjs +3 -3
- package/esm2022/lib/services/cart.service.mjs +1 -1
- package/esm2022/lib/services/endUser.service.mjs +1 -1
- package/esm2022/lib/services/image-upload-service.service.mjs +1 -1
- package/esm2022/lib/services/rest.service.mjs +3 -3
- package/esm2022/lib/services/sanitizeHtml.mjs +1 -1
- package/esm2022/lib/services/storage.service.mjs +1 -7
- package/esm2022/lib/styles/index.mjs +1 -1
- package/esm2022/lib/styles/style.model.mjs +1 -1
- package/esm2022/lib/styles/types.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/simpo-component-library.mjs +131 -202
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/package.json +1 -1
- package/simpo-component-library-2.1.84.tgz +0 -0
- package/src/lib/styles/global-styles.css +86 -86
- package/simpo-component-library-2.1.83.tgz +0 -0
@@ -379,7 +379,7 @@ export class RegistrationFormComponent extends BaseSection {
|
|
379
379
|
return response;
|
380
380
|
}
|
381
381
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: RegistrationFormComponent, deps: [{ token: i1.RestService }, { token: i2.MatSnackBar }, { token: i3.EventsService }, { token: i4.ActivatedRoute }, { token: i5.DomSanitizer }, { token: i6.ImageUplaodService }], target: i0.ɵɵFactoryTarget.Component }); }
|
382
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: RegistrationFormComponent, isStandalone: true, selector: "simpo-registration-form", inputs: { data: "data", index: "index", edit: "edit", nextComponentColor: "nextComponentColor" }, usesInheritance: true, ngImport: i0, template: "<section simpoHover (hovering)=\"showEditTabs($event)\" class=\"total-container\">\n <div [id]=\"data?.id\" [simpoBackground]=\"styles?.background\">\n <div #mainContainer class=\"rowFlex\" [id]=\"data?.id\" [simpoOverlay]=\"styles?.background\"\n [simpoBorder]=\"styles?.border\">\n <div class=\"main-section\"\n [ngClass]=\"{'justify-content-md-start': styles?.layout?.align === 'left' , 'justify-content-md-end': styles?.layout?.align === 'right'}\"\n [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\">\n <div class=\"body-section\">\n <div [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\n <div>\n <simpo-text-element [textData]=\"content?.inputText?.[0]?.value\" [textLabel]=\"content?.inputText?.[0]?.label\"></simpo-text-element>\n </div>\n <div class=\"d-flex gap-2 d-md-flex mt-15\" *ngIf=\"data?.action?.display\" [ngClass]=\"[\n styles?.layout?.align === 'left' ? 'justify-content-md-start' : '',\n styles?.layout?.align === 'center' ? 'justify-content-md-center' : '',\n styles?.layout?.align === 'right' ? 'justify-content-md-end' : ''\n ]\">\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n\n <section class=\"main-section\">\n <div *ngIf=\"formStatus != 'REGISTERED' && formStatus != 'ADMITTED'\">\n <div class=\"subTabs_section\">\n <div class=\"list_tabs d-flex align-items-center\">\n <ng-container *ngFor=\"let key of Object.keys(fieldData)\">\n <div class=\"single_tab cursor-pointer\" (click)=\"selectedKey = key\"\n [ngClass]=\"selectedKey === key ? 'single_tab_active' : 'single_tab'\">\n {{key | titlecase}}\n </div>\n </ng-container>\n <div class=\"single_tab cursor-pointer\" (click)=\"selectedKey = 'Document'\" *ngIf=\"data?.sectionType === 'admissionForm'\"\n [ngClass]=\"selectedKey === 'Document' ? 'single_tab_active' : 'single_tab'\">\n Document\n </div>\n <div class=\"single_tab cursor-pointer\" (click)=\"redirectToPayment()\"\n *ngIf=\"data?.sectionType === 'admissionForm'\"\n [ngClass]=\"selectedKey === 'Payment' ? 'single_tab_active' : 'single_tab'\">\n Payment\n </div>\n </div>\n </div>\n\n <div class=\"main-content\">\n <ng-container *ngFor=\"let group of fieldData[selectedKey] ? Object.keys(fieldData[selectedKey]) : [];let groupIndex = index\">\n <div class=\"body\" *ngIf=\"group !== 'Backup Contact'\">\n <div class=\"list_tabs backToLeads d-flex align-items-center\">\n {{group}}\n </div>\n\n <ng-container *ngIf=\"groupIndex == 0 && Object.keys(fieldData)[0] === selectedKey\">\n <div class=\"image-box\" *ngIf=\"!payload.imgUrl\">\n <img class=\"dummy-image\" src=\"../../../../../../../../../assets/images/master/add-image.svg\"\n (click)=\"fileInput.click()\" alt=\"\">\n <div class=\"image_box\">\n <span class=\"fc_browse_btn\" id=\"display_browse_btn\" (click)=\"fileInput.click()\">Click to\n upload</span>\n </div>\n </div>\n <input style=\"display: none;\" id=\"vendorImage\" type=\"file\" name=\"myfile\"\n accept=\"image/x-png,image/jpeg,image/jpg\" (change)=\"updateAdmissionImage($event)\" class=\"pc-btn\"\n id=\"browse_contact_image\" #fileInput />\n\n <div *ngIf=\"payload.imgUrl\" class=\"addedImg\">\n <div class=\"uploadedImg\">\n <img alt=\"\" [src]=\"ds.bypassSecurityTrustUrl(payload.imgUrl)\">\n </div>\n <div class=\"image-buttons\">\n <div class=\"button\" (click)=\"fileInput.click()\">\n <img src=\"../../../../../../../../../assets/images/blogs/change_image.svg\" alt=\"\">\n Change Image\n </div>\n <div class=\"button delete-change\" (click)=\"deleteImg()\">\n\n <div class=\"delete\">\n <img src=\"./../../../../../../../../../assets/images/blogs/delete_image.svg\" alt=\"\">\n <div>Delete</div>\n </div>\n\n </div>\n </div>\n\n </div>\n </ng-container>\n\n <div class=\"row mt-1\">\n <div class=\"col-md-4 col-12 mt-1\" *ngFor=\"let info of fieldData[selectedKey][group]\">\n <label for=\"\" class=\"label-text\">{{info.fieldLabel}}</label> <span style=\"color: red;\" *ngIf=\"info.required\">*</span> <br>\n <ng-container *ngTemplateOutlet=\"inputData; context: {data: info}\"></ng-container>\n </div>\n </div>\n </div>\n\n <div class=\"body\" *ngIf=\"fieldData[selectedKey].hasOwnProperty('Backup Contact') && studentLiveWith === 'single parent' && groupIndex == 0 && Object.keys(fieldData)[0] === selectedKey\">\n <div class=\"list_tabs backToLeads d-flex align-items-center\">\n Backup Contact (Optional)\n </div>\n\n <div class=\"row mt-1\">\n <div class=\"col-md-12\">\n <label class=\"mtb-15 checkbox-label\">\n <input type=\"checkbox\" name=\"\" id=\"\" [(ngModel)]=\"payload.parentAuthorization\">\n I authorize the school to release the child only to the parent listed above\n </label>\n </div>\n <div class=\"col-md-4 col-12 mt-1\" *ngFor=\"let info of fieldData[selectedKey]['Backup Contact']\">\n <label for=\"\" class=\"label-text\">{{info.fieldLabel}}</label> <span style=\"color: red;\"\n *ngIf=\"info.required\">*</span> <br>\n <ng-container *ngTemplateOutlet=\"inputData; context: {data: info}\"></ng-container>\n </div>\n <div class=\"col-md-4 col-12 mt-1\">\n <label for=\"\" class=\"label-text\">Upload Supporting Document (Optional)</label>\n <div class=\"input-text upload-file\" (click)=\"backUpDocInput.click()\">\n <p>{{backupDocFile ? 'File Uploaded' : 'Upload File'}}</p>\n <mat-icon>cloud_upload</mat-icon>\n </div>\n <input id=\"vendorImage\" type=\"file\" name=\"myfile\" hidden\n accept=\".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,image/x-png,image/jpeg,image/jpg,.pdf, video/mp4,video/x-matroska,video/x-msvideo,video/quicktime\"\n (change)=\"uploadBackUpDocument($event)\" class=\"pc-btn\"\n id=\"browse_contact_image\" #backUpDocInput />\n </div>\n </div>\n </div>\n\n </ng-container>\n <div class=\"payment-details\" *ngIf=\"selectedKey === 'Document' && data?.sectionType === 'admissionForm'\">\n <simpo-document [documentList]=\"documentList\"></simpo-document>\n </div>\n <div class=\"payment-details\" *ngIf=\"selectedKey === 'Payment' && data?.sectionType === 'admissionForm'\">\n <simpo-payment-details [admissionData]=\"payload\"\n [subscriptionsData]=\"subscriptionsData\" [termPaymentList]=\"termPaymentList\"></simpo-payment-details>\n </div>\n </div>\n\n <div class=\"button-parent\">\n <ng-container *ngFor=\"let button of data?.action?.buttons\">\n <button class=\"button\" (click)=\"submitForm()\" simpoButtonDirective [id]=\"data?.id+button.id\"\n [buttonStyle]=\"button.styles\" *ngIf=\"(data?.sectionType === 'admissionForm' && selectedKey == 'Payment') ||\n (data?.sectionType === 'registrationForm' &&\n (Object.keys(fieldData)[Object.keys(fieldData).length - 1] == selectedKey))\"\n [color]=\"data?.styles?.background?.accentColor\">{{button?.content?.label}}</button>\n\n <button class=\"button\" (click)=\"continueAdmission()\" simpoButtonDirective [id]=\"data?.id+button.id\"\n [buttonStyle]=\"button.styles\" *ngIf=\"selectedKey != 'Payment' && data?.sectionType === 'admissionForm'\"\n [color]=\"data?.styles?.background?.accentColor\">Continue</button>\n\n <button class=\"button\" (click)=\"continueAdmission()\" simpoButtonDirective [id]=\"data?.id+button.id\"\n [buttonStyle]=\"button.styles\"\n *ngIf=\"data?.sectionType === 'registrationForm' && (Object.keys(fieldData)[Object.keys(fieldData).length - 1] != selectedKey)\"\n [color]=\"data?.styles?.background?.accentColor\">Continue</button>\n </ng-container>\n </div>\n </div>\n\n <div class=\"emptyText\" *ngIf=\"formStatus == 'REGISTERED' || formStatus == 'ADMITTED'\">\n <img [src]=\"content?.image?.url\" alt=\"\" *ngIf=\"content?.image?.showImage\">\n <div class=\"heading-large\" [innerHtml]=\"content?.inputText?.[1]?.value\"></div>\n </div>\n </section>\n\n <ng-template #inputData let-field=\"data\">\n <div *ngIf=\"field.dataType == 'IMAGE'\">\n <div class=\"image-box\">\n <img class=\"dummy-image\" src=\"../../../../../../../../../assets/images/master/add-image.svg\"\n (click)=\"fileInput.click()\" alt=\"\">\n <div class=\"d-flex align-items-center\">\n <span class=\"fc_browse_btn\" id=\"display_browse_btn\" (click)=\"fileInput.click()\">Click to\n upload</span>\n </div>\n </div>\n <input style=\"display: none;\" id=\"vendorImage\" type=\"file\" name=\"myfile\" accept=\"image/x-png,image/jpeg,image/jpg\"\n (change)=\"updateAdmissionImage($event)\" class=\"pc-btn\" id=\"browse_contact_image\" #fileInput />\n </div>\n <div *ngIf=\"field.dataType === 'TEXT'\">\n <input type=\"text\" class=\"input-text\" placeholder=\"enter value\" [(ngModel)]=\"field.fieldValue\">\n </div>\n <div *ngIf=\"field.dataType === 'NUMBER'\">\n <input type=\"number\" class=\"input-text\" placeholder=\"enter value\" [(ngModel)]=\"field.fieldValue\">\n </div>\n <div *ngIf=\"field.dataType === 'MONEY'\">\n <input type=\"text\" class=\"input-text\" placeholder=\"enter value\" [(ngModel)]=\"field.fieldValue\">\n </div>\n <div *ngIf=\"field.dataType === 'DATE'\">\n <input type=\"date\" class=\"input-text\" [(ngModel)]=\"field.fieldValue\">\n </div>\n <div *ngIf=\"field.dataType === 'DROPDOWN'\" class=\"admission\">\n <mat-form-field class=\"input-text\" appearance=\"outline\">\n <mat-select class=\"inputStyle\" placeholder=\"--Select--\" [(ngModel)]=\"field.fieldValue\" [multiple]=\"field.multipleSelection\">\n <ng-container *ngIf=\"(field?.value?.length || 0) > 0\">\n <mat-option *ngFor=\"let item of field.value\" [value]=\"item?.value\" (click)=\"masterDropdownValueChange(item, field)\">{{item.label}}</mat-option>\n </ng-container>\n <ng-container *ngIf=\"(field?.value?.length || 0) == 0\">\n <mat-option *ngFor=\"let item of field.sourceData[field.dataSourceType]\"\n (click)=\"inputFieldChange(item, field)\" [value]=\"item?.name\">{{item.name}}</mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n <div *ngIf=\"field.dataType === 'CHECKBOX'\">\n <ng-container *ngIf=\"(field?.value?.length || 0) > 0\">\n <div class=\"form-check mb-5\" *ngFor=\"let data of field.value\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"flexCheckChecked\" [(ngModel)]=\"data.checked\">\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\n {{data.label}}\n </label>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(field?.value?.length || 0) == 0\">\n <div class=\"form-check mb-5\" *ngFor=\"let data of field.sourceData[field.dataSourceType]\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"flexCheckChecked\" [(ngModel)]=\"data.checked\">\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\n {{data.name}}\n </label>\n </div>\n </ng-container>\n </div>\n </ng-template>\n\n\n <ng-container *ngIf=\"styles?.devider?.display\">\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\n </ng-container>\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n</section>\n", styles: [".total_container{height:auto;position:relative}.body-section{padding:4% 15px}.button-section{margin-top:15px}.clipPath{clip-path:polygon(0% 100%,50% 0%,100% 100%);height:100px;background-color:#00f}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.total-container{position:relative;height:auto}.mt-15{margin-top:15px}@media only screen and (max-width: 475px){.d-flex{justify-content:center;margin-bottom:25px}}.main-section{width:100%;overflow-y:hidden}.subTabs_section{padding:1rem 5rem;height:12vh}.active_route_section{height:89%;border:1px solid #0000000F;padding:15px 20px;background-color:#fff;border-radius:6px}.active_route_section_normal{background-color:#f6f6f6;border:none;padding:10px 4rem}.list_tabs{border:1px solid #0000001A;background-color:#ffffffe5;padding:10px;border-radius:6px;gap:10px;height:50px}.single_tab{color:#0e233c99;font-size:14px;font-weight:500;font-family:interReg;padding:10px 20px}.single_tab_active{width:max-content;height:32px;background-color:#0015800a;display:flex;align-items:center;font-weight:600;padding:10px 20px;border-radius:4px;color:#0e233c}.align-items-center{align-items:center}.header{height:8vh;padding:10px;border-bottom:2px solid rgba(0,0,0,.06);display:flex}.p-5{padding:5rem}.backToLeads{color:#000!important}.body{margin:1rem 5rem 0rem;box-shadow:#00000029 0 1px 4px;padding:2rem;border-radius:10px}.profile-img{display:flex;align-items:center;gap:2rem}.mt-2{margin-top:2rem!important}.mt-1{margin-top:1rem!important}.image-box{display:flex;gap:1rem;margin-top:3rem;cursor:pointer}.image-box span{color:#0189ea;font-size:14px;font-weight:500;padding:11px 7rem;border:2px solid rgba(0,0,0,.06);height:47px;border-radius:10px}.image_box{display:flex;align-items:center}.dummy-image{height:55px}.label-text{font-weight:400;font-family:Inter;font-size:14px;color:#434443}.input-text{border-radius:7px;border:2px solid rgba(208,213,221,1);height:42px;width:100%;margin-top:5px;padding-left:10px}.footer{display:flex;gap:1rem;align-items:center;justify-content:flex-end;height:8vh;padding:10px;border-top:2px solid rgba(0,0,0,.06);position:absolute;bottom:0;width:100%}.footer .continue{font-size:13px;font-family:interMedium;color:#242424;font-weight:500;border:none;background-color:#f6c318;padding:10px 20px;border-radius:8px;width:max-content}.footer .cancel{font-size:13px;font-family:interMedium;color:#f6c318;font-weight:500;border:1px solid #F6C318;background-color:#fff;padding:10px 20px;border-radius:8px;width:max-content}.main-content{overflow:scroll;padding-top:5px;padding-bottom:10px}.button-parent{padding:1rem 5rem 1rem 2rem;align-items:center;display:flex;justify-content:flex-end}.button{font-size:16px!important;padding:1rem 2rem;display:inline-flex;align-items:center;justify-content:center;width:fit-content!important}.payment-details{margin:1rem 5rem 0rem;box-shadow:#00000029 0 1px 4px;border-radius:10px}.mb-5{margin-bottom:5px!important}.addedImg{display:flex;gap:5%;width:95%;margin-top:2rem}.addedImg .uploadedImg img{height:65px;width:65px;border-radius:50%}.addedImg .image-buttons{display:flex;gap:3%;padding-top:20px}.addedImg .image-buttons .button{display:flex;gap:8px;width:142px;height:40px;padding:12px 8px;font-family:lexandMedium;color:#3f3b3b;font-style:normal;font-weight:500;font-size:12px!important;border:1px dashed #E4E7EC;border-radius:12px;cursor:pointer}.addedImg .image-buttons .button img{width:20px}.addedImg .image-buttons .button .delete{display:flex;gap:15%;width:60%;margin:auto}.addedImg .image-buttons .button .delete img{width:12px}.emptyText{height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:50px}.emptyText img{height:200px}@media screen and (max-width: 475px){.body{margin:0rem}.emptyText{padding:1rem}.emptyText img{width:100%}.subTabs_section{padding:1rem .5rem}.list_tabs{white-space:nowrap;overflow:scroll;justify-content:flex-start}.payment-details{margin:0rem}}.mtb-15{margin-top:15px;margin-bottom:15px}.checkbox-label{display:flex;align-items:center;gap:15px}.checkbox-label input{height:16px;width:16px}.upload-file{display:flex;align-items:center;justify-content:space-between;padding-right:10px}.upload-file mat-icon{color:#4caf50}.upload-file p{margin-bottom:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i7.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: MatGridListModule }, { kind: "ngmodule", type: SimpoElementsModule }, { kind: "component", type: i8.TextElementComponent, selector: "simpo-text-element", inputs: ["textData", "textLabel"] }, { kind: "component", type: i9.SvgDividerComponent, selector: "simpo-svg-divider", inputs: ["dividerType", "color"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i10.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i11.PaymentDetailsComponent, selector: "simpo-payment-details", inputs: ["admissionData", "subscriptionsData", "termPaymentList"] }, { kind: "component", type: i12.DocumentComponent, selector: "simpo-document", inputs: ["documentList"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type:
|
382
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: RegistrationFormComponent, isStandalone: true, selector: "simpo-registration-form", inputs: { data: "data", index: "index", edit: "edit", nextComponentColor: "nextComponentColor" }, usesInheritance: true, ngImport: i0, template: "<section simpoHover (hovering)=\"showEditTabs($event)\" class=\"total-container\">\r\n <div [id]=\"data?.id\" [simpoBackground]=\"styles?.background\">\r\n <div #mainContainer class=\"rowFlex\" [id]=\"data?.id\" [simpoOverlay]=\"styles?.background\"\r\n [simpoBorder]=\"styles?.border\">\r\n <div class=\"main-section\"\r\n [ngClass]=\"{'justify-content-md-start': styles?.layout?.align === 'left' , 'justify-content-md-end': styles?.layout?.align === 'right'}\"\r\n [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\">\r\n <div class=\"body-section\">\r\n <div [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <div>\r\n <simpo-text-element [textData]=\"content?.inputText?.[0]?.value\" [textLabel]=\"content?.inputText?.[0]?.label\"></simpo-text-element>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-flex mt-15\" *ngIf=\"data?.action?.display\" [ngClass]=\"[\r\n styles?.layout?.align === 'left' ? 'justify-content-md-start' : '',\r\n styles?.layout?.align === 'center' ? 'justify-content-md-center' : '',\r\n styles?.layout?.align === 'right' ? 'justify-content-md-end' : ''\r\n ]\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <section class=\"main-section\">\r\n <div *ngIf=\"formStatus != 'REGISTERED' && formStatus != 'ADMITTED'\">\r\n <div class=\"subTabs_section\">\r\n <div class=\"list_tabs d-flex align-items-center\">\r\n <ng-container *ngFor=\"let key of Object.keys(fieldData)\">\r\n <div class=\"single_tab cursor-pointer\" (click)=\"selectedKey = key\"\r\n [ngClass]=\"selectedKey === key ? 'single_tab_active' : 'single_tab'\">\r\n {{key | titlecase}}\r\n </div>\r\n </ng-container>\r\n <div class=\"single_tab cursor-pointer\" (click)=\"selectedKey = 'Document'\" *ngIf=\"data?.sectionType === 'admissionForm'\"\r\n [ngClass]=\"selectedKey === 'Document' ? 'single_tab_active' : 'single_tab'\">\r\n Document\r\n </div>\r\n <div class=\"single_tab cursor-pointer\" (click)=\"redirectToPayment()\"\r\n *ngIf=\"data?.sectionType === 'admissionForm'\"\r\n [ngClass]=\"selectedKey === 'Payment' ? 'single_tab_active' : 'single_tab'\">\r\n Payment\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"main-content\">\r\n <ng-container *ngFor=\"let group of fieldData[selectedKey] ? Object.keys(fieldData[selectedKey]) : [];let groupIndex = index\">\r\n <div class=\"body\" *ngIf=\"group !== 'Backup Contact'\">\r\n <div class=\"list_tabs backToLeads d-flex align-items-center\">\r\n {{group}}\r\n </div>\r\n\r\n <ng-container *ngIf=\"groupIndex == 0 && Object.keys(fieldData)[0] === selectedKey\">\r\n <div class=\"image-box\" *ngIf=\"!payload.imgUrl\">\r\n <img class=\"dummy-image\" src=\"../../../../../../../../../assets/images/master/add-image.svg\"\r\n (click)=\"fileInput.click()\" alt=\"\">\r\n <div class=\"image_box\">\r\n <span class=\"fc_browse_btn\" id=\"display_browse_btn\" (click)=\"fileInput.click()\">Click to\r\n upload</span>\r\n </div>\r\n </div>\r\n <input style=\"display: none;\" id=\"vendorImage\" type=\"file\" name=\"myfile\"\r\n accept=\"image/x-png,image/jpeg,image/jpg\" (change)=\"updateAdmissionImage($event)\" class=\"pc-btn\"\r\n id=\"browse_contact_image\" #fileInput />\r\n\r\n <div *ngIf=\"payload.imgUrl\" class=\"addedImg\">\r\n <div class=\"uploadedImg\">\r\n <img alt=\"\" [src]=\"ds.bypassSecurityTrustUrl(payload.imgUrl)\">\r\n </div>\r\n <div class=\"image-buttons\">\r\n <div class=\"button\" (click)=\"fileInput.click()\">\r\n <img src=\"../../../../../../../../../assets/images/blogs/change_image.svg\" alt=\"\">\r\n Change Image\r\n </div>\r\n <div class=\"button delete-change\" (click)=\"deleteImg()\">\r\n\r\n <div class=\"delete\">\r\n <img src=\"./../../../../../../../../../assets/images/blogs/delete_image.svg\" alt=\"\">\r\n <div>Delete</div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"row mt-1\">\r\n <div class=\"col-md-4 col-12 mt-1\" *ngFor=\"let info of fieldData[selectedKey][group]\">\r\n <label for=\"\" class=\"label-text\">{{info.fieldLabel}}</label> <span style=\"color: red;\" *ngIf=\"info.required\">*</span> <br>\r\n <ng-container *ngTemplateOutlet=\"inputData; context: {data: info}\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"body\" *ngIf=\"fieldData[selectedKey].hasOwnProperty('Backup Contact') && studentLiveWith === 'single parent' && groupIndex == 0 && Object.keys(fieldData)[0] === selectedKey\">\r\n <div class=\"list_tabs backToLeads d-flex align-items-center\">\r\n Backup Contact (Optional)\r\n </div>\r\n\r\n <div class=\"row mt-1\">\r\n <div class=\"col-md-12\">\r\n <label class=\"mtb-15 checkbox-label\">\r\n <input type=\"checkbox\" name=\"\" id=\"\" [(ngModel)]=\"payload.parentAuthorization\">\r\n I authorize the school to release the child only to the parent listed above\r\n </label>\r\n </div>\r\n <div class=\"col-md-4 col-12 mt-1\" *ngFor=\"let info of fieldData[selectedKey]['Backup Contact']\">\r\n <label for=\"\" class=\"label-text\">{{info.fieldLabel}}</label> <span style=\"color: red;\"\r\n *ngIf=\"info.required\">*</span> <br>\r\n <ng-container *ngTemplateOutlet=\"inputData; context: {data: info}\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 col-12 mt-1\">\r\n <label for=\"\" class=\"label-text\">Upload Supporting Document (Optional)</label>\r\n <div class=\"input-text upload-file\" (click)=\"backUpDocInput.click()\">\r\n <p>{{backupDocFile ? 'File Uploaded' : 'Upload File'}}</p>\r\n <mat-icon>cloud_upload</mat-icon>\r\n </div>\r\n <input id=\"vendorImage\" type=\"file\" name=\"myfile\" hidden\r\n accept=\".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,image/x-png,image/jpeg,image/jpg,.pdf, video/mp4,video/x-matroska,video/x-msvideo,video/quicktime\"\r\n (change)=\"uploadBackUpDocument($event)\" class=\"pc-btn\"\r\n id=\"browse_contact_image\" #backUpDocInput />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n <div class=\"payment-details\" *ngIf=\"selectedKey === 'Document' && data?.sectionType === 'admissionForm'\">\r\n <simpo-document [documentList]=\"documentList\"></simpo-document>\r\n </div>\r\n <div class=\"payment-details\" *ngIf=\"selectedKey === 'Payment' && data?.sectionType === 'admissionForm'\">\r\n <simpo-payment-details [admissionData]=\"payload\"\r\n [subscriptionsData]=\"subscriptionsData\" [termPaymentList]=\"termPaymentList\"></simpo-payment-details>\r\n </div>\r\n </div>\r\n\r\n <div class=\"button-parent\">\r\n <ng-container *ngFor=\"let button of data?.action?.buttons\">\r\n <button class=\"button\" (click)=\"submitForm()\" simpoButtonDirective [id]=\"data?.id+button.id\"\r\n [buttonStyle]=\"button.styles\" *ngIf=\"(data?.sectionType === 'admissionForm' && selectedKey == 'Payment') ||\r\n (data?.sectionType === 'registrationForm' &&\r\n (Object.keys(fieldData)[Object.keys(fieldData).length - 1] == selectedKey))\"\r\n [color]=\"data?.styles?.background?.accentColor\">{{button?.content?.label}}</button>\r\n\r\n <button class=\"button\" (click)=\"continueAdmission()\" simpoButtonDirective [id]=\"data?.id+button.id\"\r\n [buttonStyle]=\"button.styles\" *ngIf=\"selectedKey != 'Payment' && data?.sectionType === 'admissionForm'\"\r\n [color]=\"data?.styles?.background?.accentColor\">Continue</button>\r\n\r\n <button class=\"button\" (click)=\"continueAdmission()\" simpoButtonDirective [id]=\"data?.id+button.id\"\r\n [buttonStyle]=\"button.styles\"\r\n *ngIf=\"data?.sectionType === 'registrationForm' && (Object.keys(fieldData)[Object.keys(fieldData).length - 1] != selectedKey)\"\r\n [color]=\"data?.styles?.background?.accentColor\">Continue</button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"emptyText\" *ngIf=\"formStatus == 'REGISTERED' || formStatus == 'ADMITTED'\">\r\n <img [src]=\"content?.image?.url\" alt=\"\" *ngIf=\"content?.image?.showImage\">\r\n <div class=\"heading-large\" [innerHtml]=\"content?.inputText?.[1]?.value\"></div>\r\n </div>\r\n </section>\r\n\r\n <ng-template #inputData let-field=\"data\">\r\n <div *ngIf=\"field.dataType == 'IMAGE'\">\r\n <div class=\"image-box\">\r\n <img class=\"dummy-image\" src=\"../../../../../../../../../assets/images/master/add-image.svg\"\r\n (click)=\"fileInput.click()\" alt=\"\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"fc_browse_btn\" id=\"display_browse_btn\" (click)=\"fileInput.click()\">Click to\r\n upload</span>\r\n </div>\r\n </div>\r\n <input style=\"display: none;\" id=\"vendorImage\" type=\"file\" name=\"myfile\" accept=\"image/x-png,image/jpeg,image/jpg\"\r\n (change)=\"updateAdmissionImage($event)\" class=\"pc-btn\" id=\"browse_contact_image\" #fileInput />\r\n </div>\r\n <div *ngIf=\"field.dataType === 'TEXT'\">\r\n <input type=\"text\" class=\"input-text\" placeholder=\"enter value\" [(ngModel)]=\"field.fieldValue\">\r\n </div>\r\n <div *ngIf=\"field.dataType === 'NUMBER'\">\r\n <input type=\"number\" class=\"input-text\" placeholder=\"enter value\" [(ngModel)]=\"field.fieldValue\">\r\n </div>\r\n <div *ngIf=\"field.dataType === 'MONEY'\">\r\n <input type=\"text\" class=\"input-text\" placeholder=\"enter value\" [(ngModel)]=\"field.fieldValue\">\r\n </div>\r\n <div *ngIf=\"field.dataType === 'DATE'\">\r\n <input type=\"date\" class=\"input-text\" [(ngModel)]=\"field.fieldValue\">\r\n </div>\r\n <div *ngIf=\"field.dataType === 'DROPDOWN'\" class=\"admission\">\r\n <mat-form-field class=\"input-text\" appearance=\"outline\">\r\n <mat-select class=\"inputStyle\" placeholder=\"--Select--\" [(ngModel)]=\"field.fieldValue\" [multiple]=\"field.multipleSelection\">\r\n <ng-container *ngIf=\"(field?.value?.length || 0) > 0\">\r\n <mat-option *ngFor=\"let item of field.value\" [value]=\"item?.value\" (click)=\"masterDropdownValueChange(item, field)\">{{item.label}}</mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"(field?.value?.length || 0) == 0\">\r\n <mat-option *ngFor=\"let item of field.sourceData[field.dataSourceType]\"\r\n (click)=\"inputFieldChange(item, field)\" [value]=\"item?.name\">{{item.name}}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div *ngIf=\"field.dataType === 'CHECKBOX'\">\r\n <ng-container *ngIf=\"(field?.value?.length || 0) > 0\">\r\n <div class=\"form-check mb-5\" *ngFor=\"let data of field.value\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"flexCheckChecked\" [(ngModel)]=\"data.checked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n {{data.label}}\r\n </label>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"(field?.value?.length || 0) == 0\">\r\n <div class=\"form-check mb-5\" *ngFor=\"let data of field.sourceData[field.dataSourceType]\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"flexCheckChecked\" [(ngModel)]=\"data.checked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n {{data.name}}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n\r\n <ng-container *ngIf=\"styles?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n</section>\r\n", styles: [".total_container{height:auto;position:relative}.body-section{padding:4% 15px}.button-section{margin-top:15px}.clipPath{clip-path:polygon(0% 100%,50% 0%,100% 100%);height:100px;background-color:#00f}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.total-container{position:relative;height:auto}.mt-15{margin-top:15px}@media only screen and (max-width: 475px){.d-flex{justify-content:center;margin-bottom:25px}}.main-section{width:100%;overflow-y:hidden}.subTabs_section{padding:1rem 5rem;height:12vh}.active_route_section{height:89%;border:1px solid #0000000F;padding:15px 20px;background-color:#fff;border-radius:6px}.active_route_section_normal{background-color:#f6f6f6;border:none;padding:10px 4rem}.list_tabs{border:1px solid #0000001A;background-color:#ffffffe5;padding:10px;border-radius:6px;gap:10px;height:50px}.single_tab{color:#0e233c99;font-size:14px;font-weight:500;font-family:interReg;padding:10px 20px}.single_tab_active{width:max-content;height:32px;background-color:#0015800a;display:flex;align-items:center;font-weight:600;padding:10px 20px;border-radius:4px;color:#0e233c}.align-items-center{align-items:center}.header{height:8vh;padding:10px;border-bottom:2px solid rgba(0,0,0,.06);display:flex}.p-5{padding:5rem}.backToLeads{color:#000!important}.body{margin:1rem 5rem 0rem;box-shadow:#00000029 0 1px 4px;padding:2rem;border-radius:10px}.profile-img{display:flex;align-items:center;gap:2rem}.mt-2{margin-top:2rem!important}.mt-1{margin-top:1rem!important}.image-box{display:flex;gap:1rem;margin-top:3rem;cursor:pointer}.image-box span{color:#0189ea;font-size:14px;font-weight:500;padding:11px 7rem;border:2px solid rgba(0,0,0,.06);height:47px;border-radius:10px}.image_box{display:flex;align-items:center}.dummy-image{height:55px}.label-text{font-weight:400;font-family:Inter;font-size:14px;color:#434443}.input-text{border-radius:7px;border:2px solid rgba(208,213,221,1);height:42px;width:100%;margin-top:5px;padding-left:10px}.footer{display:flex;gap:1rem;align-items:center;justify-content:flex-end;height:8vh;padding:10px;border-top:2px solid rgba(0,0,0,.06);position:absolute;bottom:0;width:100%}.footer .continue{font-size:13px;font-family:interMedium;color:#242424;font-weight:500;border:none;background-color:#f6c318;padding:10px 20px;border-radius:8px;width:max-content}.footer .cancel{font-size:13px;font-family:interMedium;color:#f6c318;font-weight:500;border:1px solid #F6C318;background-color:#fff;padding:10px 20px;border-radius:8px;width:max-content}.main-content{overflow:scroll;padding-top:5px;padding-bottom:10px}.button-parent{padding:1rem 5rem 1rem 2rem;align-items:center;display:flex;justify-content:flex-end}.button{font-size:16px!important;padding:1rem 2rem;display:inline-flex;align-items:center;justify-content:center;width:fit-content!important}.payment-details{margin:1rem 5rem 0rem;box-shadow:#00000029 0 1px 4px;border-radius:10px}.mb-5{margin-bottom:5px!important}.addedImg{display:flex;gap:5%;width:95%;margin-top:2rem}.addedImg .uploadedImg img{height:65px;width:65px;border-radius:50%}.addedImg .image-buttons{display:flex;gap:3%;padding-top:20px}.addedImg .image-buttons .button{display:flex;gap:8px;width:142px;height:40px;padding:12px 8px;font-family:lexandMedium;color:#3f3b3b;font-style:normal;font-weight:500;font-size:12px!important;border:1px dashed #E4E7EC;border-radius:12px;cursor:pointer}.addedImg .image-buttons .button img{width:20px}.addedImg .image-buttons .button .delete{display:flex;gap:15%;width:60%;margin:auto}.addedImg .image-buttons .button .delete img{width:12px}.emptyText{height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:50px}.emptyText img{height:200px}@media screen and (max-width: 475px){.body{margin:0rem}.emptyText{padding:1rem}.emptyText img{width:100%}.subTabs_section{padding:1rem .5rem}.list_tabs{white-space:nowrap;overflow:scroll;justify-content:flex-start}.payment-details{margin:0rem}}.mtb-15{margin-top:15px;margin-bottom:15px}.checkbox-label{display:flex;align-items:center;gap:15px}.checkbox-label input{height:16px;width:16px}.upload-file{display:flex;align-items:center;justify-content:space-between;padding-right:10px}.upload-file mat-icon{color:#4caf50}.upload-file p{margin-bottom:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i7.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: MatGridListModule }, { kind: "ngmodule", type: SimpoElementsModule }, { kind: "component", type: i8.TextElementComponent, selector: "simpo-text-element", inputs: ["textData", "textLabel"] }, { kind: "component", type: i9.SvgDividerComponent, selector: "simpo-svg-divider", inputs: ["dividerType", "color"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i10.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i11.PaymentDetailsComponent, selector: "simpo-payment-details", inputs: ["admissionData", "subscriptionsData", "termPaymentList"] }, { kind: "component", type: i12.DocumentComponent, selector: "simpo-document", inputs: ["documentList"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type:
|
383
383
|
//directive
|
384
384
|
AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: BorderDirective, selector: "[simpoBorder]", inputs: ["simpoBorder"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "component", type: i13.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i14.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i15.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i16.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: i16.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i16.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i16.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i16.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i17.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
385
385
|
}
|
@@ -413,7 +413,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
413
413
|
MatSelectModule,
|
414
414
|
FormsModule,
|
415
415
|
MatIconModule
|
416
|
-
], template: "<section simpoHover (hovering)=\"showEditTabs($event)\" class=\"total-container\">\n <div [id]=\"data?.id\" [simpoBackground]=\"styles?.background\">\n <div #mainContainer class=\"rowFlex\" [id]=\"data?.id\" [simpoOverlay]=\"styles?.background\"\n [simpoBorder]=\"styles?.border\">\n <div class=\"main-section\"\n [ngClass]=\"{'justify-content-md-start': styles?.layout?.align === 'left' , 'justify-content-md-end': styles?.layout?.align === 'right'}\"\n [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\">\n <div class=\"body-section\">\n <div [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\n <div>\n <simpo-text-element [textData]=\"content?.inputText?.[0]?.value\" [textLabel]=\"content?.inputText?.[0]?.label\"></simpo-text-element>\n </div>\n <div class=\"d-flex gap-2 d-md-flex mt-15\" *ngIf=\"data?.action?.display\" [ngClass]=\"[\n styles?.layout?.align === 'left' ? 'justify-content-md-start' : '',\n styles?.layout?.align === 'center' ? 'justify-content-md-center' : '',\n styles?.layout?.align === 'right' ? 'justify-content-md-end' : ''\n ]\">\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n\n <section class=\"main-section\">\n <div *ngIf=\"formStatus != 'REGISTERED' && formStatus != 'ADMITTED'\">\n <div class=\"subTabs_section\">\n <div class=\"list_tabs d-flex align-items-center\">\n <ng-container *ngFor=\"let key of Object.keys(fieldData)\">\n <div class=\"single_tab cursor-pointer\" (click)=\"selectedKey = key\"\n [ngClass]=\"selectedKey === key ? 'single_tab_active' : 'single_tab'\">\n {{key | titlecase}}\n </div>\n </ng-container>\n <div class=\"single_tab cursor-pointer\" (click)=\"selectedKey = 'Document'\" *ngIf=\"data?.sectionType === 'admissionForm'\"\n [ngClass]=\"selectedKey === 'Document' ? 'single_tab_active' : 'single_tab'\">\n Document\n </div>\n <div class=\"single_tab cursor-pointer\" (click)=\"redirectToPayment()\"\n *ngIf=\"data?.sectionType === 'admissionForm'\"\n [ngClass]=\"selectedKey === 'Payment' ? 'single_tab_active' : 'single_tab'\">\n Payment\n </div>\n </div>\n </div>\n\n <div class=\"main-content\">\n <ng-container *ngFor=\"let group of fieldData[selectedKey] ? Object.keys(fieldData[selectedKey]) : [];let groupIndex = index\">\n <div class=\"body\" *ngIf=\"group !== 'Backup Contact'\">\n <div class=\"list_tabs backToLeads d-flex align-items-center\">\n {{group}}\n </div>\n\n <ng-container *ngIf=\"groupIndex == 0 && Object.keys(fieldData)[0] === selectedKey\">\n <div class=\"image-box\" *ngIf=\"!payload.imgUrl\">\n <img class=\"dummy-image\" src=\"../../../../../../../../../assets/images/master/add-image.svg\"\n (click)=\"fileInput.click()\" alt=\"\">\n <div class=\"image_box\">\n <span class=\"fc_browse_btn\" id=\"display_browse_btn\" (click)=\"fileInput.click()\">Click to\n upload</span>\n </div>\n </div>\n <input style=\"display: none;\" id=\"vendorImage\" type=\"file\" name=\"myfile\"\n accept=\"image/x-png,image/jpeg,image/jpg\" (change)=\"updateAdmissionImage($event)\" class=\"pc-btn\"\n id=\"browse_contact_image\" #fileInput />\n\n <div *ngIf=\"payload.imgUrl\" class=\"addedImg\">\n <div class=\"uploadedImg\">\n <img alt=\"\" [src]=\"ds.bypassSecurityTrustUrl(payload.imgUrl)\">\n </div>\n <div class=\"image-buttons\">\n <div class=\"button\" (click)=\"fileInput.click()\">\n <img src=\"../../../../../../../../../assets/images/blogs/change_image.svg\" alt=\"\">\n Change Image\n </div>\n <div class=\"button delete-change\" (click)=\"deleteImg()\">\n\n <div class=\"delete\">\n <img src=\"./../../../../../../../../../assets/images/blogs/delete_image.svg\" alt=\"\">\n <div>Delete</div>\n </div>\n\n </div>\n </div>\n\n </div>\n </ng-container>\n\n <div class=\"row mt-1\">\n <div class=\"col-md-4 col-12 mt-1\" *ngFor=\"let info of fieldData[selectedKey][group]\">\n <label for=\"\" class=\"label-text\">{{info.fieldLabel}}</label> <span style=\"color: red;\" *ngIf=\"info.required\">*</span> <br>\n <ng-container *ngTemplateOutlet=\"inputData; context: {data: info}\"></ng-container>\n </div>\n </div>\n </div>\n\n <div class=\"body\" *ngIf=\"fieldData[selectedKey].hasOwnProperty('Backup Contact') && studentLiveWith === 'single parent' && groupIndex == 0 && Object.keys(fieldData)[0] === selectedKey\">\n <div class=\"list_tabs backToLeads d-flex align-items-center\">\n Backup Contact (Optional)\n </div>\n\n <div class=\"row mt-1\">\n <div class=\"col-md-12\">\n <label class=\"mtb-15 checkbox-label\">\n <input type=\"checkbox\" name=\"\" id=\"\" [(ngModel)]=\"payload.parentAuthorization\">\n I authorize the school to release the child only to the parent listed above\n </label>\n </div>\n <div class=\"col-md-4 col-12 mt-1\" *ngFor=\"let info of fieldData[selectedKey]['Backup Contact']\">\n <label for=\"\" class=\"label-text\">{{info.fieldLabel}}</label> <span style=\"color: red;\"\n *ngIf=\"info.required\">*</span> <br>\n <ng-container *ngTemplateOutlet=\"inputData; context: {data: info}\"></ng-container>\n </div>\n <div class=\"col-md-4 col-12 mt-1\">\n <label for=\"\" class=\"label-text\">Upload Supporting Document (Optional)</label>\n <div class=\"input-text upload-file\" (click)=\"backUpDocInput.click()\">\n <p>{{backupDocFile ? 'File Uploaded' : 'Upload File'}}</p>\n <mat-icon>cloud_upload</mat-icon>\n </div>\n <input id=\"vendorImage\" type=\"file\" name=\"myfile\" hidden\n accept=\".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,image/x-png,image/jpeg,image/jpg,.pdf, video/mp4,video/x-matroska,video/x-msvideo,video/quicktime\"\n (change)=\"uploadBackUpDocument($event)\" class=\"pc-btn\"\n id=\"browse_contact_image\" #backUpDocInput />\n </div>\n </div>\n </div>\n\n </ng-container>\n <div class=\"payment-details\" *ngIf=\"selectedKey === 'Document' && data?.sectionType === 'admissionForm'\">\n <simpo-document [documentList]=\"documentList\"></simpo-document>\n </div>\n <div class=\"payment-details\" *ngIf=\"selectedKey === 'Payment' && data?.sectionType === 'admissionForm'\">\n <simpo-payment-details [admissionData]=\"payload\"\n [subscriptionsData]=\"subscriptionsData\" [termPaymentList]=\"termPaymentList\"></simpo-payment-details>\n </div>\n </div>\n\n <div class=\"button-parent\">\n <ng-container *ngFor=\"let button of data?.action?.buttons\">\n <button class=\"button\" (click)=\"submitForm()\" simpoButtonDirective [id]=\"data?.id+button.id\"\n [buttonStyle]=\"button.styles\" *ngIf=\"(data?.sectionType === 'admissionForm' && selectedKey == 'Payment') ||\n (data?.sectionType === 'registrationForm' &&\n (Object.keys(fieldData)[Object.keys(fieldData).length - 1] == selectedKey))\"\n [color]=\"data?.styles?.background?.accentColor\">{{button?.content?.label}}</button>\n\n <button class=\"button\" (click)=\"continueAdmission()\" simpoButtonDirective [id]=\"data?.id+button.id\"\n [buttonStyle]=\"button.styles\" *ngIf=\"selectedKey != 'Payment' && data?.sectionType === 'admissionForm'\"\n [color]=\"data?.styles?.background?.accentColor\">Continue</button>\n\n <button class=\"button\" (click)=\"continueAdmission()\" simpoButtonDirective [id]=\"data?.id+button.id\"\n [buttonStyle]=\"button.styles\"\n *ngIf=\"data?.sectionType === 'registrationForm' && (Object.keys(fieldData)[Object.keys(fieldData).length - 1] != selectedKey)\"\n [color]=\"data?.styles?.background?.accentColor\">Continue</button>\n </ng-container>\n </div>\n </div>\n\n <div class=\"emptyText\" *ngIf=\"formStatus == 'REGISTERED' || formStatus == 'ADMITTED'\">\n <img [src]=\"content?.image?.url\" alt=\"\" *ngIf=\"content?.image?.showImage\">\n <div class=\"heading-large\" [innerHtml]=\"content?.inputText?.[1]?.value\"></div>\n </div>\n </section>\n\n <ng-template #inputData let-field=\"data\">\n <div *ngIf=\"field.dataType == 'IMAGE'\">\n <div class=\"image-box\">\n <img class=\"dummy-image\" src=\"../../../../../../../../../assets/images/master/add-image.svg\"\n (click)=\"fileInput.click()\" alt=\"\">\n <div class=\"d-flex align-items-center\">\n <span class=\"fc_browse_btn\" id=\"display_browse_btn\" (click)=\"fileInput.click()\">Click to\n upload</span>\n </div>\n </div>\n <input style=\"display: none;\" id=\"vendorImage\" type=\"file\" name=\"myfile\" accept=\"image/x-png,image/jpeg,image/jpg\"\n (change)=\"updateAdmissionImage($event)\" class=\"pc-btn\" id=\"browse_contact_image\" #fileInput />\n </div>\n <div *ngIf=\"field.dataType === 'TEXT'\">\n <input type=\"text\" class=\"input-text\" placeholder=\"enter value\" [(ngModel)]=\"field.fieldValue\">\n </div>\n <div *ngIf=\"field.dataType === 'NUMBER'\">\n <input type=\"number\" class=\"input-text\" placeholder=\"enter value\" [(ngModel)]=\"field.fieldValue\">\n </div>\n <div *ngIf=\"field.dataType === 'MONEY'\">\n <input type=\"text\" class=\"input-text\" placeholder=\"enter value\" [(ngModel)]=\"field.fieldValue\">\n </div>\n <div *ngIf=\"field.dataType === 'DATE'\">\n <input type=\"date\" class=\"input-text\" [(ngModel)]=\"field.fieldValue\">\n </div>\n <div *ngIf=\"field.dataType === 'DROPDOWN'\" class=\"admission\">\n <mat-form-field class=\"input-text\" appearance=\"outline\">\n <mat-select class=\"inputStyle\" placeholder=\"--Select--\" [(ngModel)]=\"field.fieldValue\" [multiple]=\"field.multipleSelection\">\n <ng-container *ngIf=\"(field?.value?.length || 0) > 0\">\n <mat-option *ngFor=\"let item of field.value\" [value]=\"item?.value\" (click)=\"masterDropdownValueChange(item, field)\">{{item.label}}</mat-option>\n </ng-container>\n <ng-container *ngIf=\"(field?.value?.length || 0) == 0\">\n <mat-option *ngFor=\"let item of field.sourceData[field.dataSourceType]\"\n (click)=\"inputFieldChange(item, field)\" [value]=\"item?.name\">{{item.name}}</mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n <div *ngIf=\"field.dataType === 'CHECKBOX'\">\n <ng-container *ngIf=\"(field?.value?.length || 0) > 0\">\n <div class=\"form-check mb-5\" *ngFor=\"let data of field.value\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"flexCheckChecked\" [(ngModel)]=\"data.checked\">\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\n {{data.label}}\n </label>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(field?.value?.length || 0) == 0\">\n <div class=\"form-check mb-5\" *ngFor=\"let data of field.sourceData[field.dataSourceType]\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"flexCheckChecked\" [(ngModel)]=\"data.checked\">\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\n {{data.name}}\n </label>\n </div>\n </ng-container>\n </div>\n </ng-template>\n\n\n <ng-container *ngIf=\"styles?.devider?.display\">\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\n </ng-container>\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n</section>\n", styles: [".total_container{height:auto;position:relative}.body-section{padding:4% 15px}.button-section{margin-top:15px}.clipPath{clip-path:polygon(0% 100%,50% 0%,100% 100%);height:100px;background-color:#00f}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.total-container{position:relative;height:auto}.mt-15{margin-top:15px}@media only screen and (max-width: 475px){.d-flex{justify-content:center;margin-bottom:25px}}.main-section{width:100%;overflow-y:hidden}.subTabs_section{padding:1rem 5rem;height:12vh}.active_route_section{height:89%;border:1px solid #0000000F;padding:15px 20px;background-color:#fff;border-radius:6px}.active_route_section_normal{background-color:#f6f6f6;border:none;padding:10px 4rem}.list_tabs{border:1px solid #0000001A;background-color:#ffffffe5;padding:10px;border-radius:6px;gap:10px;height:50px}.single_tab{color:#0e233c99;font-size:14px;font-weight:500;font-family:interReg;padding:10px 20px}.single_tab_active{width:max-content;height:32px;background-color:#0015800a;display:flex;align-items:center;font-weight:600;padding:10px 20px;border-radius:4px;color:#0e233c}.align-items-center{align-items:center}.header{height:8vh;padding:10px;border-bottom:2px solid rgba(0,0,0,.06);display:flex}.p-5{padding:5rem}.backToLeads{color:#000!important}.body{margin:1rem 5rem 0rem;box-shadow:#00000029 0 1px 4px;padding:2rem;border-radius:10px}.profile-img{display:flex;align-items:center;gap:2rem}.mt-2{margin-top:2rem!important}.mt-1{margin-top:1rem!important}.image-box{display:flex;gap:1rem;margin-top:3rem;cursor:pointer}.image-box span{color:#0189ea;font-size:14px;font-weight:500;padding:11px 7rem;border:2px solid rgba(0,0,0,.06);height:47px;border-radius:10px}.image_box{display:flex;align-items:center}.dummy-image{height:55px}.label-text{font-weight:400;font-family:Inter;font-size:14px;color:#434443}.input-text{border-radius:7px;border:2px solid rgba(208,213,221,1);height:42px;width:100%;margin-top:5px;padding-left:10px}.footer{display:flex;gap:1rem;align-items:center;justify-content:flex-end;height:8vh;padding:10px;border-top:2px solid rgba(0,0,0,.06);position:absolute;bottom:0;width:100%}.footer .continue{font-size:13px;font-family:interMedium;color:#242424;font-weight:500;border:none;background-color:#f6c318;padding:10px 20px;border-radius:8px;width:max-content}.footer .cancel{font-size:13px;font-family:interMedium;color:#f6c318;font-weight:500;border:1px solid #F6C318;background-color:#fff;padding:10px 20px;border-radius:8px;width:max-content}.main-content{overflow:scroll;padding-top:5px;padding-bottom:10px}.button-parent{padding:1rem 5rem 1rem 2rem;align-items:center;display:flex;justify-content:flex-end}.button{font-size:16px!important;padding:1rem 2rem;display:inline-flex;align-items:center;justify-content:center;width:fit-content!important}.payment-details{margin:1rem 5rem 0rem;box-shadow:#00000029 0 1px 4px;border-radius:10px}.mb-5{margin-bottom:5px!important}.addedImg{display:flex;gap:5%;width:95%;margin-top:2rem}.addedImg .uploadedImg img{height:65px;width:65px;border-radius:50%}.addedImg .image-buttons{display:flex;gap:3%;padding-top:20px}.addedImg .image-buttons .button{display:flex;gap:8px;width:142px;height:40px;padding:12px 8px;font-family:lexandMedium;color:#3f3b3b;font-style:normal;font-weight:500;font-size:12px!important;border:1px dashed #E4E7EC;border-radius:12px;cursor:pointer}.addedImg .image-buttons .button img{width:20px}.addedImg .image-buttons .button .delete{display:flex;gap:15%;width:60%;margin:auto}.addedImg .image-buttons .button .delete img{width:12px}.emptyText{height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:50px}.emptyText img{height:200px}@media screen and (max-width: 475px){.body{margin:0rem}.emptyText{padding:1rem}.emptyText img{width:100%}.subTabs_section{padding:1rem .5rem}.list_tabs{white-space:nowrap;overflow:scroll;justify-content:flex-start}.payment-details{margin:0rem}}.mtb-15{margin-top:15px;margin-bottom:15px}.checkbox-label{display:flex;align-items:center;gap:15px}.checkbox-label input{height:16px;width:16px}.upload-file{display:flex;align-items:center;justify-content:space-between;padding-right:10px}.upload-file mat-icon{color:#4caf50}.upload-file p{margin-bottom:0}\n"] }]
|
416
|
+
], template: "<section simpoHover (hovering)=\"showEditTabs($event)\" class=\"total-container\">\r\n <div [id]=\"data?.id\" [simpoBackground]=\"styles?.background\">\r\n <div #mainContainer class=\"rowFlex\" [id]=\"data?.id\" [simpoOverlay]=\"styles?.background\"\r\n [simpoBorder]=\"styles?.border\">\r\n <div class=\"main-section\"\r\n [ngClass]=\"{'justify-content-md-start': styles?.layout?.align === 'left' , 'justify-content-md-end': styles?.layout?.align === 'right'}\"\r\n [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\">\r\n <div class=\"body-section\">\r\n <div [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <div>\r\n <simpo-text-element [textData]=\"content?.inputText?.[0]?.value\" [textLabel]=\"content?.inputText?.[0]?.label\"></simpo-text-element>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-flex mt-15\" *ngIf=\"data?.action?.display\" [ngClass]=\"[\r\n styles?.layout?.align === 'left' ? 'justify-content-md-start' : '',\r\n styles?.layout?.align === 'center' ? 'justify-content-md-center' : '',\r\n styles?.layout?.align === 'right' ? 'justify-content-md-end' : ''\r\n ]\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <section class=\"main-section\">\r\n <div *ngIf=\"formStatus != 'REGISTERED' && formStatus != 'ADMITTED'\">\r\n <div class=\"subTabs_section\">\r\n <div class=\"list_tabs d-flex align-items-center\">\r\n <ng-container *ngFor=\"let key of Object.keys(fieldData)\">\r\n <div class=\"single_tab cursor-pointer\" (click)=\"selectedKey = key\"\r\n [ngClass]=\"selectedKey === key ? 'single_tab_active' : 'single_tab'\">\r\n {{key | titlecase}}\r\n </div>\r\n </ng-container>\r\n <div class=\"single_tab cursor-pointer\" (click)=\"selectedKey = 'Document'\" *ngIf=\"data?.sectionType === 'admissionForm'\"\r\n [ngClass]=\"selectedKey === 'Document' ? 'single_tab_active' : 'single_tab'\">\r\n Document\r\n </div>\r\n <div class=\"single_tab cursor-pointer\" (click)=\"redirectToPayment()\"\r\n *ngIf=\"data?.sectionType === 'admissionForm'\"\r\n [ngClass]=\"selectedKey === 'Payment' ? 'single_tab_active' : 'single_tab'\">\r\n Payment\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"main-content\">\r\n <ng-container *ngFor=\"let group of fieldData[selectedKey] ? Object.keys(fieldData[selectedKey]) : [];let groupIndex = index\">\r\n <div class=\"body\" *ngIf=\"group !== 'Backup Contact'\">\r\n <div class=\"list_tabs backToLeads d-flex align-items-center\">\r\n {{group}}\r\n </div>\r\n\r\n <ng-container *ngIf=\"groupIndex == 0 && Object.keys(fieldData)[0] === selectedKey\">\r\n <div class=\"image-box\" *ngIf=\"!payload.imgUrl\">\r\n <img class=\"dummy-image\" src=\"../../../../../../../../../assets/images/master/add-image.svg\"\r\n (click)=\"fileInput.click()\" alt=\"\">\r\n <div class=\"image_box\">\r\n <span class=\"fc_browse_btn\" id=\"display_browse_btn\" (click)=\"fileInput.click()\">Click to\r\n upload</span>\r\n </div>\r\n </div>\r\n <input style=\"display: none;\" id=\"vendorImage\" type=\"file\" name=\"myfile\"\r\n accept=\"image/x-png,image/jpeg,image/jpg\" (change)=\"updateAdmissionImage($event)\" class=\"pc-btn\"\r\n id=\"browse_contact_image\" #fileInput />\r\n\r\n <div *ngIf=\"payload.imgUrl\" class=\"addedImg\">\r\n <div class=\"uploadedImg\">\r\n <img alt=\"\" [src]=\"ds.bypassSecurityTrustUrl(payload.imgUrl)\">\r\n </div>\r\n <div class=\"image-buttons\">\r\n <div class=\"button\" (click)=\"fileInput.click()\">\r\n <img src=\"../../../../../../../../../assets/images/blogs/change_image.svg\" alt=\"\">\r\n Change Image\r\n </div>\r\n <div class=\"button delete-change\" (click)=\"deleteImg()\">\r\n\r\n <div class=\"delete\">\r\n <img src=\"./../../../../../../../../../assets/images/blogs/delete_image.svg\" alt=\"\">\r\n <div>Delete</div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"row mt-1\">\r\n <div class=\"col-md-4 col-12 mt-1\" *ngFor=\"let info of fieldData[selectedKey][group]\">\r\n <label for=\"\" class=\"label-text\">{{info.fieldLabel}}</label> <span style=\"color: red;\" *ngIf=\"info.required\">*</span> <br>\r\n <ng-container *ngTemplateOutlet=\"inputData; context: {data: info}\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"body\" *ngIf=\"fieldData[selectedKey].hasOwnProperty('Backup Contact') && studentLiveWith === 'single parent' && groupIndex == 0 && Object.keys(fieldData)[0] === selectedKey\">\r\n <div class=\"list_tabs backToLeads d-flex align-items-center\">\r\n Backup Contact (Optional)\r\n </div>\r\n\r\n <div class=\"row mt-1\">\r\n <div class=\"col-md-12\">\r\n <label class=\"mtb-15 checkbox-label\">\r\n <input type=\"checkbox\" name=\"\" id=\"\" [(ngModel)]=\"payload.parentAuthorization\">\r\n I authorize the school to release the child only to the parent listed above\r\n </label>\r\n </div>\r\n <div class=\"col-md-4 col-12 mt-1\" *ngFor=\"let info of fieldData[selectedKey]['Backup Contact']\">\r\n <label for=\"\" class=\"label-text\">{{info.fieldLabel}}</label> <span style=\"color: red;\"\r\n *ngIf=\"info.required\">*</span> <br>\r\n <ng-container *ngTemplateOutlet=\"inputData; context: {data: info}\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 col-12 mt-1\">\r\n <label for=\"\" class=\"label-text\">Upload Supporting Document (Optional)</label>\r\n <div class=\"input-text upload-file\" (click)=\"backUpDocInput.click()\">\r\n <p>{{backupDocFile ? 'File Uploaded' : 'Upload File'}}</p>\r\n <mat-icon>cloud_upload</mat-icon>\r\n </div>\r\n <input id=\"vendorImage\" type=\"file\" name=\"myfile\" hidden\r\n accept=\".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,image/x-png,image/jpeg,image/jpg,.pdf, video/mp4,video/x-matroska,video/x-msvideo,video/quicktime\"\r\n (change)=\"uploadBackUpDocument($event)\" class=\"pc-btn\"\r\n id=\"browse_contact_image\" #backUpDocInput />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n <div class=\"payment-details\" *ngIf=\"selectedKey === 'Document' && data?.sectionType === 'admissionForm'\">\r\n <simpo-document [documentList]=\"documentList\"></simpo-document>\r\n </div>\r\n <div class=\"payment-details\" *ngIf=\"selectedKey === 'Payment' && data?.sectionType === 'admissionForm'\">\r\n <simpo-payment-details [admissionData]=\"payload\"\r\n [subscriptionsData]=\"subscriptionsData\" [termPaymentList]=\"termPaymentList\"></simpo-payment-details>\r\n </div>\r\n </div>\r\n\r\n <div class=\"button-parent\">\r\n <ng-container *ngFor=\"let button of data?.action?.buttons\">\r\n <button class=\"button\" (click)=\"submitForm()\" simpoButtonDirective [id]=\"data?.id+button.id\"\r\n [buttonStyle]=\"button.styles\" *ngIf=\"(data?.sectionType === 'admissionForm' && selectedKey == 'Payment') ||\r\n (data?.sectionType === 'registrationForm' &&\r\n (Object.keys(fieldData)[Object.keys(fieldData).length - 1] == selectedKey))\"\r\n [color]=\"data?.styles?.background?.accentColor\">{{button?.content?.label}}</button>\r\n\r\n <button class=\"button\" (click)=\"continueAdmission()\" simpoButtonDirective [id]=\"data?.id+button.id\"\r\n [buttonStyle]=\"button.styles\" *ngIf=\"selectedKey != 'Payment' && data?.sectionType === 'admissionForm'\"\r\n [color]=\"data?.styles?.background?.accentColor\">Continue</button>\r\n\r\n <button class=\"button\" (click)=\"continueAdmission()\" simpoButtonDirective [id]=\"data?.id+button.id\"\r\n [buttonStyle]=\"button.styles\"\r\n *ngIf=\"data?.sectionType === 'registrationForm' && (Object.keys(fieldData)[Object.keys(fieldData).length - 1] != selectedKey)\"\r\n [color]=\"data?.styles?.background?.accentColor\">Continue</button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"emptyText\" *ngIf=\"formStatus == 'REGISTERED' || formStatus == 'ADMITTED'\">\r\n <img [src]=\"content?.image?.url\" alt=\"\" *ngIf=\"content?.image?.showImage\">\r\n <div class=\"heading-large\" [innerHtml]=\"content?.inputText?.[1]?.value\"></div>\r\n </div>\r\n </section>\r\n\r\n <ng-template #inputData let-field=\"data\">\r\n <div *ngIf=\"field.dataType == 'IMAGE'\">\r\n <div class=\"image-box\">\r\n <img class=\"dummy-image\" src=\"../../../../../../../../../assets/images/master/add-image.svg\"\r\n (click)=\"fileInput.click()\" alt=\"\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"fc_browse_btn\" id=\"display_browse_btn\" (click)=\"fileInput.click()\">Click to\r\n upload</span>\r\n </div>\r\n </div>\r\n <input style=\"display: none;\" id=\"vendorImage\" type=\"file\" name=\"myfile\" accept=\"image/x-png,image/jpeg,image/jpg\"\r\n (change)=\"updateAdmissionImage($event)\" class=\"pc-btn\" id=\"browse_contact_image\" #fileInput />\r\n </div>\r\n <div *ngIf=\"field.dataType === 'TEXT'\">\r\n <input type=\"text\" class=\"input-text\" placeholder=\"enter value\" [(ngModel)]=\"field.fieldValue\">\r\n </div>\r\n <div *ngIf=\"field.dataType === 'NUMBER'\">\r\n <input type=\"number\" class=\"input-text\" placeholder=\"enter value\" [(ngModel)]=\"field.fieldValue\">\r\n </div>\r\n <div *ngIf=\"field.dataType === 'MONEY'\">\r\n <input type=\"text\" class=\"input-text\" placeholder=\"enter value\" [(ngModel)]=\"field.fieldValue\">\r\n </div>\r\n <div *ngIf=\"field.dataType === 'DATE'\">\r\n <input type=\"date\" class=\"input-text\" [(ngModel)]=\"field.fieldValue\">\r\n </div>\r\n <div *ngIf=\"field.dataType === 'DROPDOWN'\" class=\"admission\">\r\n <mat-form-field class=\"input-text\" appearance=\"outline\">\r\n <mat-select class=\"inputStyle\" placeholder=\"--Select--\" [(ngModel)]=\"field.fieldValue\" [multiple]=\"field.multipleSelection\">\r\n <ng-container *ngIf=\"(field?.value?.length || 0) > 0\">\r\n <mat-option *ngFor=\"let item of field.value\" [value]=\"item?.value\" (click)=\"masterDropdownValueChange(item, field)\">{{item.label}}</mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"(field?.value?.length || 0) == 0\">\r\n <mat-option *ngFor=\"let item of field.sourceData[field.dataSourceType]\"\r\n (click)=\"inputFieldChange(item, field)\" [value]=\"item?.name\">{{item.name}}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div *ngIf=\"field.dataType === 'CHECKBOX'\">\r\n <ng-container *ngIf=\"(field?.value?.length || 0) > 0\">\r\n <div class=\"form-check mb-5\" *ngFor=\"let data of field.value\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"flexCheckChecked\" [(ngModel)]=\"data.checked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n {{data.label}}\r\n </label>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"(field?.value?.length || 0) == 0\">\r\n <div class=\"form-check mb-5\" *ngFor=\"let data of field.sourceData[field.dataSourceType]\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"flexCheckChecked\" [(ngModel)]=\"data.checked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n {{data.name}}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n\r\n <ng-container *ngIf=\"styles?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n</section>\r\n", styles: [".total_container{height:auto;position:relative}.body-section{padding:4% 15px}.button-section{margin-top:15px}.clipPath{clip-path:polygon(0% 100%,50% 0%,100% 100%);height:100px;background-color:#00f}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.total-container{position:relative;height:auto}.mt-15{margin-top:15px}@media only screen and (max-width: 475px){.d-flex{justify-content:center;margin-bottom:25px}}.main-section{width:100%;overflow-y:hidden}.subTabs_section{padding:1rem 5rem;height:12vh}.active_route_section{height:89%;border:1px solid #0000000F;padding:15px 20px;background-color:#fff;border-radius:6px}.active_route_section_normal{background-color:#f6f6f6;border:none;padding:10px 4rem}.list_tabs{border:1px solid #0000001A;background-color:#ffffffe5;padding:10px;border-radius:6px;gap:10px;height:50px}.single_tab{color:#0e233c99;font-size:14px;font-weight:500;font-family:interReg;padding:10px 20px}.single_tab_active{width:max-content;height:32px;background-color:#0015800a;display:flex;align-items:center;font-weight:600;padding:10px 20px;border-radius:4px;color:#0e233c}.align-items-center{align-items:center}.header{height:8vh;padding:10px;border-bottom:2px solid rgba(0,0,0,.06);display:flex}.p-5{padding:5rem}.backToLeads{color:#000!important}.body{margin:1rem 5rem 0rem;box-shadow:#00000029 0 1px 4px;padding:2rem;border-radius:10px}.profile-img{display:flex;align-items:center;gap:2rem}.mt-2{margin-top:2rem!important}.mt-1{margin-top:1rem!important}.image-box{display:flex;gap:1rem;margin-top:3rem;cursor:pointer}.image-box span{color:#0189ea;font-size:14px;font-weight:500;padding:11px 7rem;border:2px solid rgba(0,0,0,.06);height:47px;border-radius:10px}.image_box{display:flex;align-items:center}.dummy-image{height:55px}.label-text{font-weight:400;font-family:Inter;font-size:14px;color:#434443}.input-text{border-radius:7px;border:2px solid rgba(208,213,221,1);height:42px;width:100%;margin-top:5px;padding-left:10px}.footer{display:flex;gap:1rem;align-items:center;justify-content:flex-end;height:8vh;padding:10px;border-top:2px solid rgba(0,0,0,.06);position:absolute;bottom:0;width:100%}.footer .continue{font-size:13px;font-family:interMedium;color:#242424;font-weight:500;border:none;background-color:#f6c318;padding:10px 20px;border-radius:8px;width:max-content}.footer .cancel{font-size:13px;font-family:interMedium;color:#f6c318;font-weight:500;border:1px solid #F6C318;background-color:#fff;padding:10px 20px;border-radius:8px;width:max-content}.main-content{overflow:scroll;padding-top:5px;padding-bottom:10px}.button-parent{padding:1rem 5rem 1rem 2rem;align-items:center;display:flex;justify-content:flex-end}.button{font-size:16px!important;padding:1rem 2rem;display:inline-flex;align-items:center;justify-content:center;width:fit-content!important}.payment-details{margin:1rem 5rem 0rem;box-shadow:#00000029 0 1px 4px;border-radius:10px}.mb-5{margin-bottom:5px!important}.addedImg{display:flex;gap:5%;width:95%;margin-top:2rem}.addedImg .uploadedImg img{height:65px;width:65px;border-radius:50%}.addedImg .image-buttons{display:flex;gap:3%;padding-top:20px}.addedImg .image-buttons .button{display:flex;gap:8px;width:142px;height:40px;padding:12px 8px;font-family:lexandMedium;color:#3f3b3b;font-style:normal;font-weight:500;font-size:12px!important;border:1px dashed #E4E7EC;border-radius:12px;cursor:pointer}.addedImg .image-buttons .button img{width:20px}.addedImg .image-buttons .button .delete{display:flex;gap:15%;width:60%;margin:auto}.addedImg .image-buttons .button .delete img{width:12px}.emptyText{height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:50px}.emptyText img{height:200px}@media screen and (max-width: 475px){.body{margin:0rem}.emptyText{padding:1rem}.emptyText img{width:100%}.subTabs_section{padding:1rem .5rem}.list_tabs{white-space:nowrap;overflow:scroll;justify-content:flex-start}.payment-details{margin:0rem}}.mtb-15{margin-top:15px;margin-bottom:15px}.checkbox-label{display:flex;align-items:center;gap:15px}.checkbox-label input{height:16px;width:16px}.upload-file{display:flex;align-items:center;justify-content:space-between;padding-right:10px}.upload-file mat-icon{color:#4caf50}.upload-file p{margin-bottom:0}\n"] }]
|
417
417
|
}], ctorParameters: () => [{ type: i1.RestService }, { type: i2.MatSnackBar }, { type: i3.EventsService }, { type: i4.ActivatedRoute }, { type: i5.DomSanitizer }, { type: i6.ImageUplaodService }], propDecorators: { data: [{
|
418
418
|
type: Input
|
419
419
|
}], index: [{
|
@@ -423,4 +423,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
423
423
|
}], nextComponentColor: [{
|
424
424
|
type: Input
|
425
425
|
}] } });
|
426
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9yZWdpc3RyYXRpb24tZm9ybS9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3JlZ2lzdHJhdGlvbi1mb3JtL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FB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QUF5QjtrR0FBekIseUJBQXlCLDRNQzVFdEMsNGhaQXdPQSxvdElEM0xJLFlBQVksaWtCQUNaLGlCQUFpQiw4QkFDakIsbUJBQW1CLDZRQUNuQixvQkFBb0IsMmRBQ3BCLGVBQWU7Z0JBRWYsV0FBVztnQkFDWCxrQkFBa0IseUZBQ2xCLG1CQUFtQiwwR0FFbkIsZUFBZSxtRkFDZix3QkFBd0Isb0hBSXhCLG1CQUFtQixtRkFHbkIsY0FBYyxnRkFFZCxnQkFBZ0Isb0ZBR2hCLGVBQWUsZ01BQ2YsZUFBZSwrdEJBQ2YsV0FBVyxzOEJBQ1gsYUFBYTs7MkZBS0oseUJBQXlCO2tCQW5DckMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsZUFBZTt3QkFDZix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQiw4QkFBOEI7d0JBQzlCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZiwwQkFBMEI7d0JBQzFCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLGdDQUFnQzt3QkFDaEMsZ0NBQWdDO3dCQUNoQyxlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxhQUFhO3FCQUNkOytOQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IGZvcmtKb2luLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEdyaWRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZ3JpZC1saXN0JztcbmltcG9ydCB7IFNpbXBvRWxlbWVudHNNb2R1bGUgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9pbmRleCc7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kTW9kZWwsIFN0eWxlc01vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTaW1wb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL3NpbXBvLWJ1dHRvbi9zaW1wby1idXR0b24uY29tcG9uZW50JztcblxuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCYW5uZXJDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2Jhbm5lci1jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbHVtbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb2x1bW4tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb250YWluZXJGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGFpbmVyLWZpci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgc2ltcG9Db25ldGVuQWxpZ25tZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtYWxpZ25tZW50LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb3JuZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTaW1wb0Zvb3RlckxheW91dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9mb290ZXItbGF5b3V0LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJbWFnZURpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9pbWFnZS1kaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9zaXRpb25MYXlvdXREaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvcG9zaXRpb24tbGF5b3V0LWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvdGV4dC1iYWNrZ3JvdW5kLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uL0Jhc2VTZWN0aW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUZXh0Q29udGVudE1vZGVsLCBUZXh0U2VjdGlvbk1vZGVsIH0gZnJvbSAnLi4vdGV4dC1zZWN0aW9uL3RleHQtc2VjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgSW1hZ2VVcGxhb2RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBSZWdpc3RyYXRpb25Gb3JtQ29udGVudE1vZGVsLCBSZWdpc3RyYXRpb25Gb3JtTW9kZWwgfSBmcm9tICcuL3JlZ2lzdHJhdGlvbkZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLXJlZ2lzdHJhdGlvbi1mb3JtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRHcmlkTGlzdE1vZHVsZSxcbiAgICBTaW1wb0VsZW1lbnRzTW9kdWxlLFxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBTaW1wb0J1dHRvbkNvbXBvbmVudCxcbiAgICAvL2RpcmVjdGl2ZVxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxuICAgIEJhbm5lckNvbnRlbnRGaXREaXJlY3RpdmUsXG4gICAgQm9yZGVyRGlyZWN0aXZlLFxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcbiAgICBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUsXG4gICAgQ29udGFpbmVyRml0RGlyZWN0aXZlLFxuICAgIHNpbXBvQ29uZXRlbkFsaWdubWVudERpcmVjdGl2ZSxcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxuICAgIENvcm5lckRpcmVjdGl2ZSxcbiAgICBTaW1wb0Zvb3RlckxheW91dERpcmVjdGl2ZSxcbiAgICBIb3ZlckRpcmVjdGl2ZSxcbiAgICBJbWFnZURpcmVjdGl2ZURpcmVjdGl2ZSxcbiAgICBPdmVybGF5RGlyZWN0aXZlLFxuICAgIFBvc2l0aW9uTGF5b3V0RGlyZWN0aXZlRGlyZWN0aXZlLFxuICAgIFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0cmF0aW9uRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3l7XG4gIEBJbnB1dCgpIGRhdGE/OiBSZWdpc3RyYXRpb25Gb3JtTW9kZWw7XG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuO1xuICBASW5wdXQoKSBuZXh0Q29tcG9uZW50Q29sb3I/OiBCYWNrZ3JvdW5kTW9kZWw7XG4gIGNvbnRlbnQ6IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwgfCB1bmRlZmluZWQ7XG4gIHN0eWxlczogU3R5bGVzTW9kZWwgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHJpdmF0ZSBfZXZlbnRTZXJ2aWNlIDogRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsXG4gICAgcHVibGljIGRzOiBEb21TYW5pdGl6ZXIsXG4gICAgcHVibGljIGltYWdlVXBsb2FkU2VydmljZTogSW1hZ2VVcGxhb2RTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBPYmplY3QgPSBPYmplY3Q7XG4gIHBheWxvYWQ6IGFueSA9IHtcbiAgICBcImJ1c2luZXNzRGV0YWlsc1wiOiB7XG4gICAgICBcImlkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcbiAgICAgIFwibmFtZVwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJOYW1lXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NOYW1lXCIpXG4gICAgfSxcbiAgICBcImZpZWxkSXRlbXNcIjogW10sXG4gICAgXCJpbWdVcmxcIjogJycsXG4gICAgJ2RvY3VtZW50cyc6IFtdLFxuICAgIFwicGFyZW50QXV0aG9yaXphdGlvblwiOiBmYWxzZSxcbiAgICBcImJhY2t1cERvY1wiIDogJycsXG4gICAgXCJwYXltZW50UGxhblR5cGVcIiA6ICdBTk5VQUxMWSdcbiAgfVxuXG4gIHNlbGVjdGVkS2V5OiBhbnk7XG4gIGZpZWxkRGF0YTogYW55ID0ge31cbiAgYnVzaW5lc3NJZDogYW55O1xuICBzZWxlY3RlZEdyYWRlSWQ6IGFueTtcbiAgc2VsZWN0ZWRBY2FkZW1pY1llYXI6IGFueTtcbiAgZG9jdW1lbnRMaXN0OiBhbnlbXSA9IFtdO1xuICBmb3JtU3RhdHVzOiBzdHJpbmcgPSAnJ1xuICBzdHVkZW50TGl2ZVdpdGg6IGFueSA9ICcnXG4gIGJhY2t1cERvY0ZpbGU/OiBGaWxlO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGVyLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW06IGFueSkgPT4ge1xuICAgICAgaWYocGFyYW1bJ2VJZCddKVxuICAgICAgICB0aGlzLnBheWxvYWRbJ2VucXVpcnlJZCddID0gcGFyYW1bJ2VJZCddO1xuXG4gICAgICBpZihwYXJhbVsncklkJ10pXG4gICAgICAgIHRoaXMucGF5bG9hZFsncmVnaXN0cmF0aW9uSWQnXSA9IHBhcmFtWydySWQnXTtcblxuICAgICAgaWYocGFyYW1bJ2JJZCddKVxuICAgICAgICB0aGlzLmJ1c2luZXNzSWQgPSBwYXJhbVsnYklkJ107XG5cbiAgICAgIGlmKHBhcmFtWyd0SWQnXSlcbiAgICAgICAgdGhpcy5wYXlsb2FkWyd0ZW1wbGF0ZUlkJ10gPSBwYXJhbVsndElkJ107XG5cbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XG5cbiAgICAgIGlmKHRoaXMucGF5bG9hZFsncmVnaXN0cmF0aW9uSWQnXSB8fCB0aGlzLnBheWxvYWRbJ2VucXVpcnlJZCddKSB7XG4gICAgICAgIHRoaXMuZ2V0Rm9ybWRhdGEodGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddIHx8IHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5nZXRBbGxGaWVsZHMoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5nZXRBTExEb2N1bWVudExpc3QoKTtcblxuICAgIH0pXG5cbiAgICAvLyB0aGlzLmJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIik7XG5cbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZm9ybUZpZWxkQ2hhbmdlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0Rm9ybWRhdGEoYWRtaXNzaW9uSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHNlcnZlckNhbGwgPSBmb3JrSm9pbih7XG4gICAgICBhZG1pc3Npb25EYXRhOiB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyB0aGlzLnJlc3RTZXJ2aWNlLmdldExlYWRCeUlkKGFkbWlzc2lvbklkKSA6IHRoaXMucmVzdFNlcnZpY2UuZ2V0UmVnaXN0cmF0aW9uTGlzdCh7aWQ6IGFkbWlzc2lvbklkLCBwYWdlTm86IDAsIHBhZ2VTaXplOiAxfSksXG4gICAgICBmaWVsZERhdGE6IHRoaXMucmVzdFNlcnZpY2UuZ2V0U2VsZWN0ZWRMaXN0RmllbGRzKHRoaXMuYnVzaW5lc3NJZCwgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJywgIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/ICdSRUdJU1RSQVRJT04nIDogJ0FETUlTU0lPTicpXG4gICAgfSlcblxuICAgIHNlcnZlckNhbGwuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgbGV0IGFkbWlzc2lvbkRhdGEgPSB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyByZXN1bHQuYWRtaXNzaW9uRGF0YS5kYXRhIDogcmVzdWx0LmFkbWlzc2lvbkRhdGEuZGF0YS5kYXRhWzBdO1xuICAgICAgbGV0IGZpZWxkRGF0YSA9IHJlc3VsdC5maWVsZERhdGEuZGF0YTtcblxuICAgICAgdGhpcy5mb3JtU3RhdHVzID0gYWRtaXNzaW9uRGF0YS5zdGF0dXNcblxuICAgICAgLy8gdGhpcy5wYXlsb2FkID0gYWRtaXNzaW9uRGF0YTtcbiAgICAgIHRoaXMucGF5bG9hZFsnZG9jdW1lbnRzJ10gPSBbXTtcbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gYWRtaXNzaW9uRGF0YS5pbWdVcmxcblxuICAgICAgYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXSA9IHt9O1xuICAgICAgZm9yKGxldCBmaWVsZEl0ZW0gb2YgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gKGFkbWlzc2lvbkRhdGE/LmZpZWxkRGF0YSB8fCBbXSkgOiAoYWRtaXNzaW9uRGF0YT8uZmllbGRJdGVtcyB8fCBbXSkpIHtcbiAgICAgICAgaWYoZmllbGRJdGVtLmZpZWxkTmFtZSA9PT0gJ0FjYWRlbWljIFllYXInKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmKGZpZWxkSXRlbS50eXBlICE9IG51bGwpIHtcbiAgICAgICAgICBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2ZpZWxkSXRlbS50eXBlXSA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpZCA9IGZpZWxkSXRlbS5maWVsZE5hbWUgKyBmaWVsZEl0ZW0uZmllbGRHcm91cE5hbWU7XG4gICAgICAgIGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ11baWRdID0gZmllbGRJdGVtLmZpZWxkVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZmllbGREYXRhID0gdGhpcy5yZXN0U2VydmljZS5nZXRGaWVsZHNUb0Rpc3BsYXkoZmllbGREYXRhLmRhdGEpO1xuICAgICAgdGhpcy5zZWxlY3RlZEtleSA9IHRoaXMuT2JqZWN0LmtleXModGhpcy5maWVsZERhdGEpWzBdXG5cbiAgICAgIGZvcihsZXQgc3RlcCBvZiB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKSkge1xuICAgICAgICBmb3IobGV0IGdyb3VwIG9mIE9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhW3N0ZXBdKSkge1xuICAgICAgICAgIGZvcihsZXQgZmllbGQgb2YgdGhpcy5maWVsZERhdGFbc3RlcF1bZ3JvdXBdKSB7XG4gICAgICAgICAgICBpZihmaWVsZC50eXBlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgZmllbGQuZmllbGRWYWx1ZSA9IGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ11bZmllbGQudHlwZV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC5maWVsZExhYmVsICsgZ3JvdXBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZihmaWVsZD8udHlwZSA9PT0gJ0dSQURFJylcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVHcmFkZShmaWVsZC5zb3VyY2VEYXRhW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSwgZmllbGQuZmllbGRWYWx1ZSk7XG5cbiAgICAgICAgICAgIGlmKGZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnKSB7XG4gICAgICAgICAgICAgIHRoaXMuZm9ybWF0Q2hlY2tCb3hWYWx1ZShmaWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ2V0RmVlU3RydWN0dXJlKCk7XG4gICAgfSlcblxuICB9XG5cbiAgdXBkYXRlR3JhZGUoZ3JhZGVMaXN0IDphbnlbXSwgZ3JhZGVOYW1lOiBhbnkpIHtcbiAgICBmb3IobGV0IGdyYWRlIG9mIGdyYWRlTGlzdCkge1xuICAgICAgaWYoZ3JhZGUubmFtZSA9PT0gZ3JhZGVOYW1lKXtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyYWRlSWQgPSBncmFkZS5pZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0Q2hlY2tCb3hWYWx1ZShmaWVsZDogYW55KSB7XG4gICAgaWYoZmllbGQudmFsdWUpIHtcbiAgICAgIGZvcihsZXQgZmllbGRWYWx1ZSBvZiBmaWVsZC52YWx1ZSkge1xuICAgICAgICBpZihmaWVsZC5maWVsZFZhbHVlPy5pbmNsdWRlcyhmaWVsZFZhbHVlLnZhbHVlKSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQuc291cmNlRGF0YT8uW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSB8fCBbXSkge1xuICAgICAgICBpZihmaWVsZC5maWVsZFZhbHVlPy5pbmNsdWRlcyhmaWVsZFZhbHVlLm5hbWUpKSB7XG4gICAgICAgICAgZmllbGRWYWx1ZS5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgZ2V0QWxsRmllbGRzKCkge1xuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0U2VsZWN0ZWRMaXN0RmllbGRzKHRoaXMuYnVzaW5lc3NJZCwgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJywgIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/ICdSRUdJU1RSQVRJT04nIDogJ0FETUlTU0lPTicpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZmllbGREYXRhID0gdGhpcy5yZXN0U2VydmljZS5nZXRGaWVsZHNUb0Rpc3BsYXkocmVzLmRhdGEuZGF0YSk7XG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSlbMF07XG4gICAgfSlcbiAgfVxuXG4gIGdldEFMTERvY3VtZW50TGlzdCgpIHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuYnVzaW5lc3NJZCxcbiAgICAgIFwic29ydEJ5XCI6IFwiXCIsXG4gICAgICBcInNvcnRPcmRlclwiOiBcIlwiLFxuICAgICAgXCJzdGF0dXNcIjogdHJ1ZSxcbiAgICAgIFwiaXNEZWxldGVkXCI6IGZhbHNlXG4gICAgfVxuXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRBbGxEb2N1bWVudChwYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLmRvY3VtZW50TGlzdCA9IHJlcy5kYXRhLmRhdGE7XG4gICAgfSlcbiAgfVxuXG4gIGZvcm1GaWVsZENoYW5nZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgZm9ybUZpZWxkQ2hhbmdlZCgpIHtcbiAgICB0aGlzLmZvcm1GaWVsZENoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuX2V2ZW50U2VydmljZS5mb3JtRmllbGRDaGFuZ2VkLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZ2V0QWxsRmllbGRzKCk7XG4gICAgfSlcbiAgfVxuXG5cblxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xuICAgIHRoaXMucGF5bG9hZC5maWVsZEl0ZW1zID0gdGhpcy5jb252ZXJ0VG9MaXN0T2ZGaWVsZHMoKTtcbiAgICBpZih0aGlzLnBheWxvYWQuZmllbGRJdGVtcy5sZW5ndGggPT0gMClcbiAgICAgIHJldHVybjtcblxuICAgIGlmKHRoaXMuZmlsZURhdGEpIHtcbiAgICAgIGxldCBpbWFnZURhdGE6IGFueSA9IGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkF6dXJlKHRoaXMuZmlsZURhdGEpO1xuICAgICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9IGltYWdlRGF0YS51cmxcbiAgICB9XG5cbiAgICB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyB0aGlzLmNyZWF0ZVJlZ2lzdHJhdGlvbigpIDogdGhpcy5jcmVhdGVBZG1pc3Npb24oKTtcbiAgfVxuXG4gIHJlZ2lzdHJhdGlvblN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgY3JlYXRlUmVnaXN0cmF0aW9uKCkge1xuICAgIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9kZXYuY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1SRUdJU1RSQVRJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWBcbiAgICB0aGlzLnJlZ2lzdHJhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlUmVnaXN0cmF0aW9uRm9yUGF5bWVudCh0aGlzLnBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIC8vIHRoaXMuc25hY2tCYXIub3BlbignUmVnaXN0cmF0aW9uIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5JywgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSk7XG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHtyZXNwb25zZTogcmVzLCBwYXltZW50VHlwZTonUkVHSVNUUkFUSU9OJ30pO1xuICAgIH0pXG4gIH1cblxuICBhc3luYyBjcmVhdGVBZG1pc3Npb24oKSB7XG4gICAgaWYodGhpcy5wYXlsb2FkLnBheW1lbnRQbGFuVHlwZSA9PT0gJ1RFUk0nICYmICh0aGlzLnBheWxvYWQ/LnN0dWRlbnRGZWVTdHJ1Y3R1cmU/LnRlcm1QYXltZW50TGlzdD8ubGVuZ3RoIHx8IDApID09IDApe1xuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdQbGVhc2Ugc2VsZWN0IHRlcm0nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZVsncGF5bWVudFBsYW5UeXBlJ10gPSB0aGlzLnBheWxvYWQucGF5bWVudFBsYW5UeXBlO1xuICAgIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPUFETUlTU0lPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YDtcblxuICAgIGlmKHRoaXMuYmFja3VwRG9jRmlsZSkge1xuICAgICAgbGV0IGltYWdlRGF0YTogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUodGhpcy5iYWNrdXBEb2NGaWxlKTtcbiAgICAgIHRoaXMucGF5bG9hZC5iYWNrdXBEb2MgPSBpbWFnZURhdGEudXJsXG4gICAgfVxuXG4gICAgZm9yKGxldCBkb2N1bWVudCBvZiB0aGlzLmRvY3VtZW50TGlzdCkge1xuICAgICAgaWYoZG9jdW1lbnQuZmlsZSkge1xuICAgICAgICBsZXQgaW1hZ2VEYXRhOiBhbnkgPSBhd2FpdCB0aGlzLmltYWdlVXBsb2FkU2VydmljZS51cGxvYWRGaWxlSW5BenVyZShkb2N1bWVudC5maWxlKTtcblxuICAgICAgICB0aGlzLnBheWxvYWRbJ2RvY3VtZW50cyddLnB1c2goXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogZG9jdW1lbnQuZGlzcGxheVRleHQsXG4gICAgICAgICAgICB1cmw6IGltYWdlRGF0YS51cmwsXG4gICAgICAgICAgICBkb2NUeXBlOiBkb2N1bWVudC5uYW1lLFxuICAgICAgICAgICAgYXR0YWNobWVudFR5cGU6IGRvY3VtZW50LnR5cGVcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnJlZ2lzdHJhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlUGF5bWVudEZvckFkbWlzc2lvbih0aGlzLnBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIC8vIHRoaXMuc25hY2tCYXIub3BlbignQWRtaXNzaW9uIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5JywgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSk7XG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHtyZXNwb25zZTogcmVzLCBwYXltZW50VHlwZTonQURNSVNTSU9OJ30pO1xuICAgIH0pXG4gIH1cblxuICBjb252ZXJ0VG9MaXN0T2ZGaWVsZHMoKSB7XG4gICAgbGV0IGZpZWxkTGlzdDogYW55W10gPSBbXTtcblxuICAgIGZvcihsZXQgc3RlcCBvZiB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKSkge1xuICAgICAgZm9yKGxldCBncm91cCBvZiBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YVtzdGVwXSkpIHtcblxuICAgICAgICBpZihncm91cCA9PSAnQmFja3VwIENvbnRhY3QnICYmIHRoaXMuc3R1ZGVudExpdmVXaXRoICE9ICdzaW5nbGUgcGFyZW50JylcbiAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xuICAgICAgICAgIGlmKGZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5maWVsZFZhbHVlICYmIGZpZWxkLmRhdGFUeXBlICE9ICdDSEVDS0JPWCcpIHtcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgUGxlYXNlIGVudGVyICR7ZmllbGQuZmllbGRMYWJlbH1gLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgY2hlY2tCb3hWYWx1ZTogYW55W10gPSBbXTtcbiAgICAgICAgICBpZihmaWVsZC5kYXRhVHlwZSA9PT0gJ0NIRUNLQk9YJykge1xuICAgICAgICAgICAgY2hlY2tCb3hWYWx1ZSA9IHRoaXMuZ2V0Q2hlY2tCb3hWYWx1ZShmaWVsZCk7XG5cbiAgICAgICAgICAgIGlmKGNoZWNrQm94VmFsdWUubGVuZ3RoICA9PSAwICYmIGZpZWxkLnJlcXVpcmVkKXtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGBQbGVhc2UgZW50ZXIgJHtmaWVsZC5maWVsZExhYmVsfWAsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xuICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmllbGRMaXN0LnB1c2goe1xuICAgICAgICAgICAgZmllbGRJZDogZmllbGQuZmllbGRJZCxcbiAgICAgICAgICAgIGZpZWxkTmFtZTogZmllbGQuZmllbGRMYWJlbCxcbiAgICAgICAgICAgIGZpZWxkVmFsdWU6IGZpZWxkLmRhdGFUeXBlICE9PSAnQ0hFQ0tCT1gnID8gZmllbGQuZmllbGRWYWx1ZSA6IGNoZWNrQm94VmFsdWUsXG4gICAgICAgICAgICBmaWVsZEdyb3VwSWQ6IGZpZWxkLmZpZWxkR3JvdXBJZCxcbiAgICAgICAgICAgIGZpZWxkR3JvdXBOYW1lOiBncm91cCxcbiAgICAgICAgICAgIGZpZWxkU3RlcElkOiBmaWVsZC5maWVsZFN0ZXBJZCxcbiAgICAgICAgICAgIGZpZWxkU3RlcE5hbWU6IHN0ZXAsXG4gICAgICAgICAgICB0eXBlOiBmaWVsZC50eXBlXG4gICAgICAgICAgfSlcblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkTGlzdDtcbiAgfVxuXG4gIGdldENoZWNrQm94VmFsdWUoZmllbGQ6IGFueSkge1xuICAgIGxldCByZXNwb25zZTogYW55W10gPSBbXTtcblxuICAgIGlmKGZpZWxkLnZhbHVlKSB7XG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQudmFsdWUpIHtcbiAgICAgICAgaWYoZmllbGRWYWx1ZS5jaGVja2VkKSB7XG4gICAgICAgICAgcmVzcG9uc2UucHVzaChmaWVsZFZhbHVlLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQuc291cmNlRGF0YT8uW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSB8fCBbXSkge1xuICAgICAgICBpZihmaWVsZFZhbHVlLmNoZWNrZWQpIHtcbiAgICAgICAgICByZXNwb25zZS5wdXNoKGZpZWxkVmFsdWUubmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBmaWxlRGF0YT86IEZpbGU7XG4gIHVwZGF0ZUFkbWlzc2lvbkltYWdlKGV2OiBhbnkpIHtcbiAgICB0aGlzLmZpbGVEYXRhID0gZXYuc3JjRWxlbWVudC5maWxlc1swXTtcblxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICByZWFkZXIub25sb2FkID0gKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHRoaXMucGF5bG9hZC5pbWdVcmwgPSByZXNwb25zZS50YXJnZXQucmVzdWx0O1xuICAgIH1cblxuICAgIHRoaXMuZmlsZURhdGEgPyByZWFkZXIucmVhZEFzRGF0YVVSTCh0aGlzLmZpbGVEYXRhKSA6IG51bGw7XG4gIH1cblxuICBkZWxldGVJbWcoKSB7XG4gICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9ICcnO1xuICAgIHRoaXMuZmlsZURhdGEgPSB1bmRlZmluZWQ7XG4gIH0gIHJlZGlyZWN0VG9QYXltZW50KCkge1xuICAgIGlmKCEodGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciAmJiAgdGhpcy5zZWxlY3RlZEdyYWRlSWQpKXtcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignU2VsZWN0ZWQgR3JhZGUgYW5kIEFjYWRlbWljIFllYXIgZmlyc3QnLCdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSAnUGF5bWVudCdcbiAgfVxuXG4gIGNvbnRpbnVlQWRtaXNzaW9uKCkge1xuICAgIGxldCBzdGVwcyA9IE9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKTtcbiAgICBsZXQgaW5kZXggPSBzdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRLZXkpO1xuXG4gICAgaWYodGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nICYmIHRoaXMuc2VsZWN0ZWRLZXkgPT09ICdEb2N1bWVudCcgJiYgISh0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyICYmICB0aGlzLnNlbGVjdGVkR3JhZGVJZCkpIHtcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignU2VsZWN0ZWQgR3JhZGUgYW5kIEFjYWRlbWljIFllYXIgZmlyc3QnLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmKHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJylcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSBpbmRleCA9PT0gc3RlcHMubGVuZ3RoIC0gMSA/ICdEb2N1bWVudCcgOiB0aGlzLnNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnID8gJ1BheW1lbnQnIDogc3RlcHNbaW5kZXggKyAxXTtcbiAgICBlbHNlXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gc3RlcHNbaW5kZXggKyAxXVxuICB9XG5cbiAgc3Vic2NyaXB0aW9uc0RhdGE6IGFueVtdID0gW11cbiAgdGVybVBheW1lbnRMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIGdldEZlZVN0cnVjdHVyZSgpIHtcbiAgICBpZighdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciB8fCAhdGhpcy5zZWxlY3RlZEdyYWRlSWQpXG4gICAgICByZXR1cm47XG5cbiAgICBsZXQgeWVhciA9IHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIuc3BsaXQoXCItXCIpO1xuICAgIGxldCBwYXlsb2FkID0ge1xuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuYnVzaW5lc3NJZCxcbiAgICAgIFwic3RhcnRZZWFyXCI6IE51bWJlcih5ZWFyWzBdKSxcbiAgICAgIFwiZW5kWWVhclwiOiBOdW1iZXIoeWVhclsxXSksXG4gICAgICBcInBhZ2VOb1wiOiAwLFxuICAgICAgXCJzaXplXCI6IDEsXG4gICAgICBcImdyYWRlSWRzXCI6IFt0aGlzLnNlbGVjdGVkR3JhZGVJZF0sXG4gICAgICBcInNlYXJjaFRleHRcIjogXCJcIlxuICAgIH1cblxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0RmVlU3RydWN0dXJlKHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlID0gcmVzLmRhdGEuZGF0YVswXTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc0RhdGEgPSAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS5zdWJzY3JpcHRpb25QbGFucykpO1xuICAgICAgdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUuc3Vic2NyaXB0aW9uUGxhbnMgPSBbXTtcbiAgICAgIHRoaXMudGVybVBheW1lbnRMaXN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZT8udGVybVBheW1lbnRMaXN0IHx8ICcnKSk7XG4gICAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS50ZXJtUGF5bWVudExpc3QgPSBbXTtcbiAgICB9KVxuICB9XG5cbiAgaW5wdXRGaWVsZENoYW5nZShpdGVtOiBhbnksIGZpZWxkOiBhbnkpIHtcbiAgICBpZihmaWVsZC5maWVsZExhYmVsID09PSAnQWNhZGVtaWMgWWVhcicpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgPSBpdGVtLm5hbWU7XG4gICAgICB0aGlzLmdldEZlZVN0cnVjdHVyZSgpO1xuICAgIH1cbiAgICBpZihmaWVsZC5maWVsZExhYmVsID09PSAnR3JhZGUnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR3JhZGVJZCA9IGl0ZW0uaWQ7XG4gICAgICB0aGlzLmdldEZlZVN0cnVjdHVyZSgpO1xuICAgIH1cbiAgfVxuXG4gIG1hc3RlckRyb3Bkb3duVmFsdWVDaGFuZ2UoaXRlbTogYW55LCBmaWVsZDogYW55KSB7XG4gICAgaWYoZmllbGQuZmllbGRMYWJlbCA9PT0gJ1N0dWRlbnQgbGl2ZSB3aXRoJykge1xuICAgICAgdGhpcy5zdHVkZW50TGl2ZVdpdGggPSBpdGVtLnZhbHVlXG4gICAgfVxuICB9XG5cbiAgdXBsb2FkQmFja1VwRG9jdW1lbnQoZXY6IGFueSkge1xuICAgIHRoaXMuYmFja3VwRG9jRmlsZSA9IGV2LnNyY0VsZW1lbnQuZmlsZXNbMF07XG4gIH1cblxuXG4gIGFycmFuZ2VTdWJzY3JpcHRpb25Gb3JBZG1pc3Npb24oc3Vic2NyaXB0aW9uTGlzdDogYW55W10pIHtcbiAgICBsZXQgcmVzcG9uc2U6IGFueSA9IHt9O1xuXG4gICAgZm9yKGxldCBzdWJzY3JpcHRpb24gb2Ygc3Vic2NyaXB0aW9uTGlzdCkge1xuICAgICAgaWYoIXJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXSkge1xuICAgICAgICByZXNwb25zZVtzdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uVHlwZV0gPSBbXTtcbiAgICAgIH1cbiAgICAgIHJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXS5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgYXJyYW5nZUZlZUNvbmZpZyhmZWVDb25maWdMaXN0OiBhbnlbXSkge1xuICAgIGxldCByZXNwb25zZTogYW55ID0ge307XG5cbiAgICBmb3IobGV0IGNvbmZpZyBvZiBmZWVDb25maWdMaXN0KSB7XG4gICAgICBpZighcmVzcG9uc2VbY29uZmlnLmZlZVR5cGVdKVxuICAgICAgICByZXNwb25zZVtjb25maWcuZmVlVHlwZV0gPSBbXTtcblxuICAgICAgcmVzcG9uc2VbY29uZmlnLmZlZVR5cGVdLnB1c2goY29uZmlnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cbn1cbiIsIjxzZWN0aW9uIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIj5cbiAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiPlxuICAgIDxkaXYgI21haW5Db250YWluZXIgY2xhc3M9XCJyb3dGbGV4XCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvT3ZlcmxheV09XCJzdHlsZXM/LmJhY2tncm91bmRcIlxuICAgICAgW3NpbXBvQm9yZGVyXT1cInN0eWxlcz8uYm9yZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFpbi1zZWN0aW9uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieydqdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdsZWZ0JyAsICdqdXN0aWZ5LWNvbnRlbnQtbWQtZW5kJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAncmlnaHQnfVwiXG4gICAgICAgIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0xheW91dF09XCJzdHlsZXM/LmxheW91dFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keS1zZWN0aW9uXCI+XG4gICAgICAgICAgPGRpdiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIiBbaWRdPVwiZGF0YT8uaWRcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVsZW1lbnQgW3RleHREYXRhXT1cImNvbnRlbnQ/LmlucHV0VGV4dD8uWzBdPy52YWx1ZVwiIFt0ZXh0TGFiZWxdPVwiY29udGVudD8uaW5wdXRUZXh0Py5bMF0/LmxhYmVsXCI+PC9zaW1wby10ZXh0LWVsZW1lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgZC1tZC1mbGV4IG10LTE1XCIgKm5nSWY9XCJkYXRhPy5hY3Rpb24/LmRpc3BsYXlcIiBbbmdDbGFzc109XCJbXG4gICAgICAgICAgICAgIHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2xlZnQnID8gJ2p1c3RpZnktY29udGVudC1tZC1zdGFydCcgOiAnJyxcbiAgICAgICAgICAgICAgc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnY2VudGVyJyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyJyA6ICcnLFxuICAgICAgICAgICAgICBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCcgPyAnanVzdGlmeS1jb250ZW50LW1kLWVuZCcgOiAnJ1xuICAgICAgICAgICAgXVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cbiAgPHNlY3Rpb24gY2xhc3M9XCJtYWluLXNlY3Rpb25cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiZm9ybVN0YXR1cyAhPSAnUkVHSVNURVJFRCcgJiYgZm9ybVN0YXR1cyAhPSAnQURNSVRURUQnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3ViVGFic19zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X3RhYnMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtleSBvZiBPYmplY3Qua2V5cyhmaWVsZERhdGEpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlX3RhYiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzZWxlY3RlZEtleSA9IGtleVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkS2V5ID09PSBrZXkgPyAnc2luZ2xlX3RhYl9hY3RpdmUnIDogJ3NpbmdsZV90YWInXCI+XG4gICAgICAgICAgICAgIHt7a2V5IHwgdGl0bGVjYXNlfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGVfdGFiIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNlbGVjdGVkS2V5ID0gJ0RvY3VtZW50J1wiICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cbiAgICAgICAgICAgIERvY3VtZW50XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZV90YWIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicmVkaXJlY3RUb1BheW1lbnQoKVwiXG4gICAgICAgICAgICAqbmdJZj1cImRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRLZXkgPT09ICdQYXltZW50JyA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cbiAgICAgICAgICAgIFBheW1lbnRcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBmaWVsZERhdGFbc2VsZWN0ZWRLZXldID8gT2JqZWN0LmtleXMoZmllbGREYXRhW3NlbGVjdGVkS2V5XSkgOiBbXTtsZXQgZ3JvdXBJbmRleCA9IGluZGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJib2R5XCIgKm5nSWY9XCJncm91cCAhPT0gJ0JhY2t1cCBDb250YWN0J1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X3RhYnMgYmFja1RvTGVhZHMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAge3tncm91cH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBJbmRleCA9PSAwICYmIE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbMF0gPT09IHNlbGVjdGVkS2V5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtYm94XCIgKm5nSWY9XCIhcGF5bG9hZC5pbWdVcmxcIj5cbiAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImR1bW15LWltYWdlXCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9tYXN0ZXIvYWRkLWltYWdlLnN2Z1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZV9ib3hcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZjX2Jyb3dzZV9idG5cIiBpZD1cImRpc3BsYXlfYnJvd3NlX2J0blwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPkNsaWNrIHRvXG4gICAgICAgICAgICAgICAgICB1cGxvYWQ8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGlkPVwidmVuZG9ySW1hZ2VcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCJteWZpbGVcIlxuICAgICAgICAgICAgICBhY2NlcHQ9XCJpbWFnZS94LXBuZyxpbWFnZS9qcGVnLGltYWdlL2pwZ1wiIChjaGFuZ2UpPVwidXBkYXRlQWRtaXNzaW9uSW1hZ2UoJGV2ZW50KVwiIGNsYXNzPVwicGMtYnRuXCJcbiAgICAgICAgICAgICAgaWQ9XCJicm93c2VfY29udGFjdF9pbWFnZVwiICNmaWxlSW5wdXQgLz5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBheWxvYWQuaW1nVXJsXCIgY2xhc3M9XCJhZGRlZEltZ1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkZWRJbWdcIj5cbiAgICAgICAgICAgICAgICA8aW1nICBhbHQ9XCJcIiBbc3JjXT1cImRzLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwocGF5bG9hZC5pbWdVcmwpXCI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9ibG9ncy9jaGFuZ2VfaW1hZ2Uuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgICAgICBDaGFuZ2UgSW1hZ2VcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGRlbGV0ZS1jaGFuZ2VcIiAoY2xpY2spPVwiZGVsZXRlSW1nKClcIj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9ibG9ncy9kZWxldGVfaW1hZ2Uuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+RGVsZXRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtMTIgbXQtMVwiICpuZ0Zvcj1cImxldCBpbmZvIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV1bZ3JvdXBdXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImxhYmVsLXRleHRcIj57e2luZm8uZmllbGRMYWJlbH19PC9sYWJlbD4mbmJzcDsgPHNwYW4gc3R5bGU9XCJjb2xvcjogcmVkO1wiICpuZ0lmPVwiaW5mby5yZXF1aXJlZFwiPio8L3NwYW4+IDxicj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RGF0YTsgY29udGV4dDoge2RhdGE6IGluZm99XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIiAqbmdJZj1cImZpZWxkRGF0YVtzZWxlY3RlZEtleV0uaGFzT3duUHJvcGVydHkoJ0JhY2t1cCBDb250YWN0JykgJiYgc3R1ZGVudExpdmVXaXRoID09PSAnc2luZ2xlIHBhcmVudCcgJiYgZ3JvdXBJbmRleCA9PSAwICYmIE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbMF0gPT09IHNlbGVjdGVkS2V5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfdGFicyBiYWNrVG9MZWFkcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICBCYWNrdXAgQ29udGFjdCAoT3B0aW9uYWwpXG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibXRiLTE1IGNoZWNrYm94LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJcIiBpZD1cIlwiIFsobmdNb2RlbCldPVwicGF5bG9hZC5wYXJlbnRBdXRob3JpemF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICBJIGF1dGhvcml6ZSB0aGUgc2Nob29sIHRvIHJlbGVhc2UgdGhlIGNoaWxkIG9ubHkgdG8gdGhlIHBhcmVudCBsaXN0ZWQgYWJvdmVcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCIgKm5nRm9yPVwibGV0IGluZm8gb2YgZmllbGREYXRhW3NlbGVjdGVkS2V5XVsnQmFja3VwIENvbnRhY3QnXVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJsYWJlbC10ZXh0XCI+e3tpbmZvLmZpZWxkTGFiZWx9fTwvbGFiZWw+Jm5ic3A7IDxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZDtcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaW5mby5yZXF1aXJlZFwiPio8L3NwYW4+IDxicj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RGF0YTsgY29udGV4dDoge2RhdGE6IGluZm99XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtMTIgbXQtMVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJsYWJlbC10ZXh0XCI+VXBsb2FkIFN1cHBvcnRpbmcgRG9jdW1lbnQgKE9wdGlvbmFsKTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC10ZXh0IHVwbG9hZC1maWxlXCIgKGNsaWNrKT1cImJhY2tVcERvY0lucHV0LmNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICA8cD57e2JhY2t1cERvY0ZpbGUgPyAnRmlsZSBVcGxvYWRlZCcgOiAnVXBsb2FkIEZpbGUnfX08L3A+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3VkX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ2ZW5kb3JJbWFnZVwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIm15ZmlsZVwiIGhpZGRlblxuICAgICAgICAgICAgICAgIGFjY2VwdD1cIi5kb2MsLmRvY3gsYXBwbGljYXRpb24vbXN3b3JkLGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50LGltYWdlL3gtcG5nLGltYWdlL2pwZWcsaW1hZ2UvanBnLC5wZGYsIHZpZGVvL21wNCx2aWRlby94LW1hdHJvc2thLHZpZGVvL3gtbXN2aWRlbyx2aWRlby9xdWlja3RpbWVcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBsb2FkQmFja1VwRG9jdW1lbnQoJGV2ZW50KVwiIGNsYXNzPVwicGMtYnRuXCJcbiAgICAgICAgICAgICAgICBpZD1cImJyb3dzZV9jb250YWN0X2ltYWdlXCIgI2JhY2tVcERvY0lucHV0IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWRldGFpbHNcIiAqbmdJZj1cInNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnICYmIGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIj5cbiAgICAgICAgICA8c2ltcG8tZG9jdW1lbnQgW2RvY3VtZW50TGlzdF09XCJkb2N1bWVudExpc3RcIj48L3NpbXBvLWRvY3VtZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGV0YWlsc1wiICpuZ0lmPVwic2VsZWN0ZWRLZXkgPT09ICdQYXltZW50JyAmJiBkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCI+XG4gICAgICAgICAgPHNpbXBvLXBheW1lbnQtZGV0YWlscyBbYWRtaXNzaW9uRGF0YV09XCJwYXlsb2FkXCJcbiAgICAgICAgICAgIFtzdWJzY3JpcHRpb25zRGF0YV09XCJzdWJzY3JpcHRpb25zRGF0YVwiIFt0ZXJtUGF5bWVudExpc3RdPVwidGVybVBheW1lbnRMaXN0XCI+PC9zaW1wby1wYXltZW50LWRldGFpbHM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tcGFyZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBkYXRhPy5hY3Rpb24/LmJ1dHRvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCtidXR0b24uaWRcIlxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIiAqbmdJZj1cIihkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nICYmIHNlbGVjdGVkS2V5ID09ICdQYXltZW50JykgfHxcbiAgICAgICAgICAgIChkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nICYmXG4gICAgICAgICAgICAgIChPYmplY3Qua2V5cyhmaWVsZERhdGEpW09iamVjdC5rZXlzKGZpZWxkRGF0YSkubGVuZ3RoIC0gMV0gPT0gc2VsZWN0ZWRLZXkpKVwiXG4gICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPnt7YnV0dG9uPy5jb250ZW50Py5sYWJlbH19PC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvbnRpbnVlQWRtaXNzaW9uKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCJcbiAgICAgICAgICAgIFtidXR0b25TdHlsZV09XCJidXR0b24uc3R5bGVzXCIgKm5nSWY9XCJzZWxlY3RlZEtleSAhPSAnUGF5bWVudCcgJiYgZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiXG4gICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPkNvbnRpbnVlPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvbnRpbnVlQWRtaXNzaW9uKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCJcbiAgICAgICAgICAgIFtidXR0b25TdHlsZV09XCJidXR0b24uc3R5bGVzXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyAmJiAoT2JqZWN0LmtleXMoZmllbGREYXRhKVtPYmplY3Qua2V5cyhmaWVsZERhdGEpLmxlbmd0aCAtIDFdICE9IHNlbGVjdGVkS2V5KVwiXG4gICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPkNvbnRpbnVlPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZW1wdHlUZXh0XCIgKm5nSWY9XCJmb3JtU3RhdHVzID09ICdSRUdJU1RFUkVEJyB8fCBmb3JtU3RhdHVzID09ICdBRE1JVFRFRCdcIj5cbiAgICAgIDxpbWcgW3NyY109XCJjb250ZW50Py5pbWFnZT8udXJsXCIgYWx0PVwiXCIgKm5nSWY9XCJjb250ZW50Py5pbWFnZT8uc2hvd0ltYWdlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1sYXJnZVwiIFtpbm5lckh0bWxdPVwiY29udGVudD8uaW5wdXRUZXh0Py5bMV0/LnZhbHVlXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cblxuICA8bmctdGVtcGxhdGUgI2lucHV0RGF0YSBsZXQtZmllbGQ9XCJkYXRhXCI+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09ICdJTUFHRSdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1ib3hcIj5cbiAgICAgICAgPGltZyBjbGFzcz1cImR1bW15LWltYWdlXCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9tYXN0ZXIvYWRkLWltYWdlLnN2Z1wiXG4gICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgYWx0PVwiXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmY19icm93c2VfYnRuXCIgaWQ9XCJkaXNwbGF5X2Jyb3dzZV9idG5cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5DbGljayB0b1xuICAgICAgICAgICAgdXBsb2FkPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBpZD1cInZlbmRvckltYWdlXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwibXlmaWxlXCIgYWNjZXB0PVwiaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGdcIlxuICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUFkbWlzc2lvbkltYWdlKCRldmVudClcIiBjbGFzcz1cInBjLWJ0blwiIGlkPVwiYnJvd3NlX2NvbnRhY3RfaW1hZ2VcIiAjZmlsZUlucHV0IC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnVEVYVCdcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIHBsYWNlaG9sZGVyPVwiZW50ZXIgdmFsdWVcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdOVU1CRVInXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIHBsYWNlaG9sZGVyPVwiZW50ZXIgdmFsdWVcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdNT05FWSdcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIHBsYWNlaG9sZGVyPVwiZW50ZXIgdmFsdWVcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdEQVRFJ1wiPlxuICAgICAgPGlucHV0IHR5cGU9XCJkYXRlXCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnRFJPUERPV04nXCIgY2xhc3M9XCJhZG1pc3Npb25cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImlucHV0LXRleHRcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImlucHV0U3R5bGVcIiBwbGFjZWhvbGRlcj1cIi0tU2VsZWN0LS1cIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVTZWxlY3Rpb25cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID4gMFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQudmFsdWVcIiBbdmFsdWVdPVwiaXRlbT8udmFsdWVcIiAoY2xpY2spPVwibWFzdGVyRHJvcGRvd25WYWx1ZUNoYW5nZShpdGVtLCBmaWVsZClcIj57e2l0ZW0ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID09IDBcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLnNvdXJjZURhdGFbZmllbGQuZGF0YVNvdXJjZVR5cGVdXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImlucHV0RmllbGRDaGFuZ2UoaXRlbSwgZmllbGQpXCIgW3ZhbHVlXT1cIml0ZW0/Lm5hbWVcIj57e2l0ZW0ubmFtZX19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ0NIRUNLQk9YJ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItNVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnZhbHVlXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiXCIgaWQ9XCJmbGV4Q2hlY2tDaGVja2VkXCIgWyhuZ01vZGVsKV09XCJkYXRhLmNoZWNrZWRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleENoZWNrQ2hlY2tlZFwiPlxuICAgICAgICAgICAge3tkYXRhLmxhYmVsfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID09IDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItNVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnNvdXJjZURhdGFbZmllbGQuZGF0YVNvdXJjZVR5cGVdXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiXCIgaWQ9XCJmbGV4Q2hlY2tDaGVja2VkXCIgWyhuZ01vZGVsKV09XCJkYXRhLmNoZWNrZWRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleENoZWNrQ2hlY2tlZFwiPlxuICAgICAgICAgICAge3tkYXRhLm5hbWV9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGVzPy5kZXZpZGVyPy5kaXNwbGF5XCI+XG4gICAgPHNpbXBvLXN2Zy1kaXZpZGVyIFtkaXZpZGVyVHlwZV09XCJzdHlsZXM/LmRldmlkZXI/LmRldmlkZXJUeXBlXCJcbiAgICAgIFtjb2xvcl09XCJuZXh0Q29tcG9uZW50Q29sb3I/LmNvbG9yXCI+PC9zaW1wby1zdmctZGl2aWRlcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cbiAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
|
426
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9yZWdpc3RyYXRpb24tZm9ybS9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3JlZ2lzdHJhdGlvbi1mb3JtL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FB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QUF5QjtrR0FBekIseUJBQXlCLDRNQzVFdEMsNCtaQXdPQSxvdElEM0xJLFlBQVksaWtCQUNaLGlCQUFpQiw4QkFDakIsbUJBQW1CLDZRQUNuQixvQkFBb0IsMmRBQ3BCLGVBQWU7Z0JBRWYsV0FBVztnQkFDWCxrQkFBa0IseUZBQ2xCLG1CQUFtQiwwR0FFbkIsZUFBZSxtRkFDZix3QkFBd0Isb0hBSXhCLG1CQUFtQixtRkFHbkIsY0FBYyxnRkFFZCxnQkFBZ0Isb0ZBR2hCLGVBQWUsZ01BQ2YsZUFBZSwrdEJBQ2YsV0FBVyxzOEJBQ1gsYUFBYTs7MkZBS0oseUJBQXlCO2tCQW5DckMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsZUFBZTt3QkFDZix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQiw4QkFBOEI7d0JBQzlCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZiwwQkFBMEI7d0JBQzFCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLGdDQUFnQzt3QkFDaEMsZ0NBQWdDO3dCQUNoQyxlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxhQUFhO3FCQUNkOytOQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0R3JpZExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9ncmlkLWxpc3QnO1xyXG5pbXBvcnQgeyBTaW1wb0VsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kTW9kZWwsIFN0eWxlc01vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTaW1wb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL3NpbXBvLWJ1dHRvbi9zaW1wby1idXR0b24uY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFubmVyQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYW5uZXItY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29sdW1uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250YWluZXJGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGFpbmVyLWZpci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1hbGlnbm1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0Zvb3RlckxheW91dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9mb290ZXItbGF5b3V0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSW1hZ2VEaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBQb3NpdGlvbkxheW91dERpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9wb3NpdGlvbi1sYXlvdXQtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3RleHQtYmFja2dyb3VuZC1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUZXh0Q29udGVudE1vZGVsLCBUZXh0U2VjdGlvbk1vZGVsIH0gZnJvbSAnLi4vdGV4dC1zZWN0aW9uL3RleHQtc2VjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgSW1hZ2VVcGxhb2RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwsIFJlZ2lzdHJhdGlvbkZvcm1Nb2RlbCB9IGZyb20gJy4vcmVnaXN0cmF0aW9uRm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXJlZ2lzdHJhdGlvbi1mb3JtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEdyaWRMaXN0TW9kdWxlLFxyXG4gICAgU2ltcG9FbGVtZW50c01vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gICAgU2ltcG9CdXR0b25Db21wb25lbnQsXHJcbiAgICAvL2RpcmVjdGl2ZVxyXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEJhbm5lckNvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBCb3JkZXJEaXJlY3RpdmUsXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb250YWluZXJGaXREaXJlY3RpdmUsXHJcbiAgICBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgU2ltcG9Gb290ZXJMYXlvdXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgT3ZlcmxheURpcmVjdGl2ZSxcclxuICAgIFBvc2l0aW9uTGF5b3V0RGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBNYXRPcHRpb25Nb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWdpc3RyYXRpb25Gb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveXtcclxuICBASW5wdXQoKSBkYXRhPzogUmVnaXN0cmF0aW9uRm9ybU1vZGVsO1xyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbmV4dENvbXBvbmVudENvbG9yPzogQmFja2dyb3VuZE1vZGVsO1xyXG4gIGNvbnRlbnQ6IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwgfCB1bmRlZmluZWQ7XHJcbiAgc3R5bGVzOiBTdHlsZXNNb2RlbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgIHByaXZhdGUgX2V2ZW50U2VydmljZSA6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwdWJsaWMgZHM6IERvbVNhbml0aXplcixcclxuICAgIHB1YmxpYyBpbWFnZVVwbG9hZFNlcnZpY2U6IEltYWdlVXBsYW9kU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIE9iamVjdCA9IE9iamVjdDtcclxuICBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICBcImJ1c2luZXNzRGV0YWlsc1wiOiB7XHJcbiAgICAgIFwiaWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgICBcIm5hbWVcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiTmFtZVwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzTmFtZVwiKVxyXG4gICAgfSxcclxuICAgIFwiZmllbGRJdGVtc1wiOiBbXSxcclxuICAgIFwiaW1nVXJsXCI6ICcnLFxyXG4gICAgJ2RvY3VtZW50cyc6IFtdLFxyXG4gICAgXCJwYXJlbnRBdXRob3JpemF0aW9uXCI6IGZhbHNlLFxyXG4gICAgXCJiYWNrdXBEb2NcIiA6ICcnLFxyXG4gICAgXCJwYXltZW50UGxhblR5cGVcIiA6ICdBTk5VQUxMWSdcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkS2V5OiBhbnk7XHJcbiAgZmllbGREYXRhOiBhbnkgPSB7fVxyXG4gIGJ1c2luZXNzSWQ6IGFueTtcclxuICBzZWxlY3RlZEdyYWRlSWQ6IGFueTtcclxuICBzZWxlY3RlZEFjYWRlbWljWWVhcjogYW55O1xyXG4gIGRvY3VtZW50TGlzdDogYW55W10gPSBbXTtcclxuICBmb3JtU3RhdHVzOiBzdHJpbmcgPSAnJ1xyXG4gIHN0dWRlbnRMaXZlV2l0aDogYW55ID0gJydcclxuICBiYWNrdXBEb2NGaWxlPzogRmlsZTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtOiBhbnkpID0+IHtcclxuICAgICAgaWYocGFyYW1bJ2VJZCddKVxyXG4gICAgICAgIHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10gPSBwYXJhbVsnZUlkJ107XHJcblxyXG4gICAgICBpZihwYXJhbVsncklkJ10pXHJcbiAgICAgICAgdGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddID0gcGFyYW1bJ3JJZCddO1xyXG5cclxuICAgICAgaWYocGFyYW1bJ2JJZCddKVxyXG4gICAgICAgIHRoaXMuYnVzaW5lc3NJZCA9IHBhcmFtWydiSWQnXTtcclxuXHJcbiAgICAgIGlmKHBhcmFtWyd0SWQnXSlcclxuICAgICAgICB0aGlzLnBheWxvYWRbJ3RlbXBsYXRlSWQnXSA9IHBhcmFtWyd0SWQnXTtcclxuXHJcbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XHJcblxyXG4gICAgICBpZih0aGlzLnBheWxvYWRbJ3JlZ2lzdHJhdGlvbklkJ10gfHwgdGhpcy5wYXlsb2FkWydlbnF1aXJ5SWQnXSkge1xyXG4gICAgICAgIHRoaXMuZ2V0Rm9ybWRhdGEodGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddIHx8IHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0QWxsRmllbGRzKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ2V0QUxMRG9jdW1lbnRMaXN0KCk7XHJcblxyXG4gICAgfSlcclxuXHJcbiAgICAvLyB0aGlzLmJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIik7XHJcblxyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtZGF0YShhZG1pc3Npb25JZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzZXJ2ZXJDYWxsID0gZm9ya0pvaW4oe1xyXG4gICAgICBhZG1pc3Npb25EYXRhOiB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyB0aGlzLnJlc3RTZXJ2aWNlLmdldExlYWRCeUlkKGFkbWlzc2lvbklkKSA6IHRoaXMucmVzdFNlcnZpY2UuZ2V0UmVnaXN0cmF0aW9uTGlzdCh7aWQ6IGFkbWlzc2lvbklkLCBwYWdlTm86IDAsIHBhZ2VTaXplOiAxfSksXHJcbiAgICAgIGZpZWxkRGF0YTogdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJylcclxuICAgIH0pXHJcblxyXG4gICAgc2VydmVyQ2FsbC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGxldCBhZG1pc3Npb25EYXRhID0gdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gcmVzdWx0LmFkbWlzc2lvbkRhdGEuZGF0YSA6IHJlc3VsdC5hZG1pc3Npb25EYXRhLmRhdGEuZGF0YVswXTtcclxuICAgICAgbGV0IGZpZWxkRGF0YSA9IHJlc3VsdC5maWVsZERhdGEuZGF0YTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybVN0YXR1cyA9IGFkbWlzc2lvbkRhdGEuc3RhdHVzXHJcblxyXG4gICAgICAvLyB0aGlzLnBheWxvYWQgPSBhZG1pc3Npb25EYXRhO1xyXG4gICAgICB0aGlzLnBheWxvYWRbJ2RvY3VtZW50cyddID0gW107XHJcbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XHJcbiAgICAgIHRoaXMucGF5bG9hZC5pbWdVcmwgPSBhZG1pc3Npb25EYXRhLmltZ1VybFxyXG5cclxuICAgICAgYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXSA9IHt9O1xyXG4gICAgICBmb3IobGV0IGZpZWxkSXRlbSBvZiB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAoYWRtaXNzaW9uRGF0YT8uZmllbGREYXRhIHx8IFtdKSA6IChhZG1pc3Npb25EYXRhPy5maWVsZEl0ZW1zIHx8IFtdKSkge1xyXG4gICAgICAgIGlmKGZpZWxkSXRlbS5maWVsZE5hbWUgPT09ICdBY2FkZW1pYyBZZWFyJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihmaWVsZEl0ZW0udHlwZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2ZpZWxkSXRlbS50eXBlXSA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaWQgPSBmaWVsZEl0ZW0uZmllbGROYW1lICsgZmllbGRJdGVtLmZpZWxkR3JvdXBOYW1lO1xyXG4gICAgICAgIGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ11baWRdID0gZmllbGRJdGVtLmZpZWxkVmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZmllbGREYXRhID0gdGhpcy5yZXN0U2VydmljZS5nZXRGaWVsZHNUb0Rpc3BsYXkoZmllbGREYXRhLmRhdGEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSlbMF1cclxuXHJcbiAgICAgIGZvcihsZXQgc3RlcCBvZiB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKSkge1xyXG4gICAgICAgIGZvcihsZXQgZ3JvdXAgb2YgT2JqZWN0LmtleXModGhpcy5maWVsZERhdGFbc3RlcF0pKSB7XHJcbiAgICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xyXG4gICAgICAgICAgICBpZihmaWVsZC50eXBlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC50eXBlXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC5maWVsZExhYmVsICsgZ3JvdXBdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihmaWVsZD8udHlwZSA9PT0gJ0dSQURFJylcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdyYWRlKGZpZWxkLnNvdXJjZURhdGFbZmllbGQuZGF0YVNvdXJjZVR5cGVdLCBmaWVsZC5maWVsZFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmKGZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtYXRDaGVja0JveFZhbHVlKGZpZWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5nZXRGZWVTdHJ1Y3R1cmUoKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlR3JhZGUoZ3JhZGVMaXN0IDphbnlbXSwgZ3JhZGVOYW1lOiBhbnkpIHtcclxuICAgIGZvcihsZXQgZ3JhZGUgb2YgZ3JhZGVMaXN0KSB7XHJcbiAgICAgIGlmKGdyYWRlLm5hbWUgPT09IGdyYWRlTmFtZSl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyYWRlSWQgPSBncmFkZS5pZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0Q2hlY2tCb3hWYWx1ZShmaWVsZDogYW55KSB7XHJcbiAgICBpZihmaWVsZC52YWx1ZSkge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQudmFsdWUpIHtcclxuICAgICAgICBpZihmaWVsZC5maWVsZFZhbHVlPy5pbmNsdWRlcyhmaWVsZFZhbHVlLnZhbHVlKSkge1xyXG4gICAgICAgICAgZmllbGRWYWx1ZS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQuc291cmNlRGF0YT8uW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSB8fCBbXSkge1xyXG4gICAgICAgIGlmKGZpZWxkLmZpZWxkVmFsdWU/LmluY2x1ZGVzKGZpZWxkVmFsdWUubmFtZSkpIHtcclxuICAgICAgICAgIGZpZWxkVmFsdWUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0QWxsRmllbGRzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkRGF0YSA9IHRoaXMucmVzdFNlcnZpY2UuZ2V0RmllbGRzVG9EaXNwbGF5KHJlcy5kYXRhLmRhdGEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSlbMF07XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0QUxMRG9jdW1lbnRMaXN0KCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuYnVzaW5lc3NJZCxcclxuICAgICAgXCJzb3J0QnlcIjogXCJcIixcclxuICAgICAgXCJzb3J0T3JkZXJcIjogXCJcIixcclxuICAgICAgXCJzdGF0dXNcIjogdHJ1ZSxcclxuICAgICAgXCJpc0RlbGV0ZWRcIjogZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbERvY3VtZW50KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5kb2N1bWVudExpc3QgPSByZXMuZGF0YS5kYXRhO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZvcm1GaWVsZENoYW5nZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuICBmb3JtRmllbGRDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLl9ldmVudFNlcnZpY2UuZm9ybUZpZWxkQ2hhbmdlZC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0QWxsRmllbGRzKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xyXG4gICAgdGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMgPSB0aGlzLmNvbnZlcnRUb0xpc3RPZkZpZWxkcygpO1xyXG4gICAgaWYodGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZih0aGlzLmZpbGVEYXRhKSB7XHJcbiAgICAgIGxldCBpbWFnZURhdGE6IGFueSA9IGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkF6dXJlKHRoaXMuZmlsZURhdGEpO1xyXG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gaW1hZ2VEYXRhLnVybFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IHRoaXMuY3JlYXRlUmVnaXN0cmF0aW9uKCkgOiB0aGlzLmNyZWF0ZUFkbWlzc2lvbigpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIGNyZWF0ZVJlZ2lzdHJhdGlvbigpIHtcclxuICAgIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9kZXYuY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1SRUdJU1RSQVRJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWBcclxuICAgIHRoaXMucmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5yZXN0U2VydmljZS5jcmVhdGVSZWdpc3RyYXRpb25Gb3JQYXltZW50KHRoaXMucGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAvLyB0aGlzLnNuYWNrQmFyLm9wZW4oJ1JlZ2lzdHJhdGlvbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHtyZXNwb25zZTogcmVzLCBwYXltZW50VHlwZTonUkVHSVNUUkFUSU9OJ30pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZUFkbWlzc2lvbigpIHtcclxuICAgIGlmKHRoaXMucGF5bG9hZC5wYXltZW50UGxhblR5cGUgPT09ICdURVJNJyAmJiAodGhpcy5wYXlsb2FkPy5zdHVkZW50RmVlU3RydWN0dXJlPy50ZXJtUGF5bWVudExpc3Q/Lmxlbmd0aCB8fCAwKSA9PSAwKXtcclxuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdQbGVhc2Ugc2VsZWN0IHRlcm0nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlWydwYXltZW50UGxhblR5cGUnXSA9IHRoaXMucGF5bG9hZC5wYXltZW50UGxhblR5cGU7XHJcbiAgICB0aGlzLnBheWxvYWRbJ3JldHVyblVybCddID0gYGh0dHBzOi8vY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1BRE1JU1NJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWA7XHJcblxyXG4gICAgaWYodGhpcy5iYWNrdXBEb2NGaWxlKSB7XHJcbiAgICAgIGxldCBpbWFnZURhdGE6IGFueSA9IGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkF6dXJlKHRoaXMuYmFja3VwRG9jRmlsZSk7XHJcbiAgICAgIHRoaXMucGF5bG9hZC5iYWNrdXBEb2MgPSBpbWFnZURhdGEudXJsXHJcbiAgICB9XHJcblxyXG4gICAgZm9yKGxldCBkb2N1bWVudCBvZiB0aGlzLmRvY3VtZW50TGlzdCkge1xyXG4gICAgICBpZihkb2N1bWVudC5maWxlKSB7XHJcbiAgICAgICAgbGV0IGltYWdlRGF0YTogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUoZG9jdW1lbnQuZmlsZSk7XHJcblxyXG4gICAgICAgIHRoaXMucGF5bG9hZFsnZG9jdW1lbnRzJ10ucHVzaChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogZG9jdW1lbnQuZGlzcGxheVRleHQsXHJcbiAgICAgICAgICAgIHVybDogaW1hZ2VEYXRhLnVybCxcclxuICAgICAgICAgICAgZG9jVHlwZTogZG9jdW1lbnQubmFtZSxcclxuICAgICAgICAgICAgYXR0YWNobWVudFR5cGU6IGRvY3VtZW50LnR5cGVcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlZ2lzdHJhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlUGF5bWVudEZvckFkbWlzc2lvbih0aGlzLnBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgLy8gdGhpcy5zbmFja0Jhci5vcGVuKCdBZG1pc3Npb24gY3JlYXRlZCBzdWNjZXNzZnVsbHknLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmNhc2hGcmVlRXZlbnQuZW1pdCh7cmVzcG9uc2U6IHJlcywgcGF5bWVudFR5cGU6J0FETUlTU0lPTid9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9MaXN0T2ZGaWVsZHMoKSB7XHJcbiAgICBsZXQgZmllbGRMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGZvcihsZXQgc3RlcCBvZiB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKSkge1xyXG4gICAgICBmb3IobGV0IGdyb3VwIG9mIE9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhW3N0ZXBdKSkge1xyXG5cclxuICAgICAgICBpZihncm91cCA9PSAnQmFja3VwIENvbnRhY3QnICYmIHRoaXMuc3R1ZGVudExpdmVXaXRoICE9ICdzaW5nbGUgcGFyZW50JylcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xyXG4gICAgICAgICAgaWYoZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmZpZWxkVmFsdWUgJiYgZmllbGQuZGF0YVR5cGUgIT0gJ0NIRUNLQk9YJykge1xyXG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYFBsZWFzZSBlbnRlciAke2ZpZWxkLmZpZWxkTGFiZWx9YCwgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBsZXQgY2hlY2tCb3hWYWx1ZTogYW55W10gPSBbXTtcclxuICAgICAgICAgIGlmKGZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnKSB7XHJcbiAgICAgICAgICAgIGNoZWNrQm94VmFsdWUgPSB0aGlzLmdldENoZWNrQm94VmFsdWUoZmllbGQpO1xyXG5cclxuICAgICAgICAgICAgaWYoY2hlY2tCb3hWYWx1ZS5sZW5ndGggID09IDAgJiYgZmllbGQucmVxdWlyZWQpe1xyXG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgUGxlYXNlIGVudGVyICR7ZmllbGQuZmllbGRMYWJlbH1gLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcclxuICAgICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBmaWVsZExpc3QucHVzaCh7XHJcbiAgICAgICAgICAgIGZpZWxkSWQ6IGZpZWxkLmZpZWxkSWQsXHJcbiAgICAgICAgICAgIGZpZWxkTmFtZTogZmllbGQuZmllbGRMYWJlbCxcclxuICAgICAgICAgICAgZmllbGRWYWx1ZTogZmllbGQuZGF0YVR5cGUgIT09ICdDSEVDS0JPWCcgPyBmaWVsZC5maWVsZFZhbHVlIDogY2hlY2tCb3hWYWx1ZSxcclxuICAgICAgICAgICAgZmllbGRHcm91cElkOiBmaWVsZC5maWVsZEdyb3VwSWQsXHJcbiAgICAgICAgICAgIGZpZWxkR3JvdXBOYW1lOiBncm91cCxcclxuICAgICAgICAgICAgZmllbGRTdGVwSWQ6IGZpZWxkLmZpZWxkU3RlcElkLFxyXG4gICAgICAgICAgICBmaWVsZFN0ZXBOYW1lOiBzdGVwLFxyXG4gICAgICAgICAgICB0eXBlOiBmaWVsZC50eXBlXHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmllbGRMaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tCb3hWYWx1ZShmaWVsZDogYW55KSB7XHJcbiAgICBsZXQgcmVzcG9uc2U6IGFueVtdID0gW107XHJcblxyXG4gICAgaWYoZmllbGQudmFsdWUpIHtcclxuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnZhbHVlKSB7XHJcbiAgICAgICAgaWYoZmllbGRWYWx1ZS5jaGVja2VkKSB7XHJcbiAgICAgICAgICByZXNwb25zZS5wdXNoKGZpZWxkVmFsdWUudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnNvdXJjZURhdGE/LltmaWVsZC5kYXRhU291cmNlVHlwZV0gfHwgW10pIHtcclxuICAgICAgICBpZihmaWVsZFZhbHVlLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHJlc3BvbnNlLnB1c2goZmllbGRWYWx1ZS5uYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBmaWxlRGF0YT86IEZpbGU7XHJcbiAgdXBkYXRlQWRtaXNzaW9uSW1hZ2UoZXY6IGFueSkge1xyXG4gICAgdGhpcy5maWxlRGF0YSA9IGV2LnNyY0VsZW1lbnQuZmlsZXNbMF07XHJcblxyXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgICByZWFkZXIub25sb2FkID0gKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9IHJlc3BvbnNlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWxlRGF0YSA/IHJlYWRlci5yZWFkQXNEYXRhVVJMKHRoaXMuZmlsZURhdGEpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUltZygpIHtcclxuICAgIHRoaXMucGF5bG9hZC5pbWdVcmwgPSAnJztcclxuICAgIHRoaXMuZmlsZURhdGEgPSB1bmRlZmluZWQ7XHJcbiAgfSAgcmVkaXJlY3RUb1BheW1lbnQoKSB7XHJcbiAgICBpZighKHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgJiYgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkKSl7XHJcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignU2VsZWN0ZWQgR3JhZGUgYW5kIEFjYWRlbWljIFllYXIgZmlyc3QnLCdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSAnUGF5bWVudCdcclxuICB9XHJcblxyXG4gIGNvbnRpbnVlQWRtaXNzaW9uKCkge1xyXG4gICAgbGV0IHN0ZXBzID0gT2JqZWN0LmtleXModGhpcy5maWVsZERhdGEpO1xyXG4gICAgbGV0IGluZGV4ID0gc3RlcHMuaW5kZXhPZih0aGlzLnNlbGVjdGVkS2V5KTtcclxuXHJcbiAgICBpZih0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybScgJiYgdGhpcy5zZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyAmJiAhKHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgJiYgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkKSkge1xyXG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1NlbGVjdGVkIEdyYWRlIGFuZCBBY2FkZW1pYyBZZWFyIGZpcnN0JywgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJylcclxuICAgICAgdGhpcy5zZWxlY3RlZEtleSA9IGluZGV4ID09PSBzdGVwcy5sZW5ndGggLSAxID8gJ0RvY3VtZW50JyA6IHRoaXMuc2VsZWN0ZWRLZXkgPT09ICdEb2N1bWVudCcgPyAnUGF5bWVudCcgOiBzdGVwc1tpbmRleCArIDFdO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gc3RlcHNbaW5kZXggKyAxXVxyXG4gIH1cclxuXHJcbiAgc3Vic2NyaXB0aW9uc0RhdGE6IGFueVtdID0gW11cclxuICB0ZXJtUGF5bWVudExpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIGdldEZlZVN0cnVjdHVyZSgpIHtcclxuICAgIGlmKCF0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyIHx8ICF0aGlzLnNlbGVjdGVkR3JhZGVJZClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGxldCB5ZWFyID0gdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhci5zcGxpdChcIi1cIik7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuYnVzaW5lc3NJZCxcclxuICAgICAgXCJzdGFydFllYXJcIjogTnVtYmVyKHllYXJbMF0pLFxyXG4gICAgICBcImVuZFllYXJcIjogTnVtYmVyKHllYXJbMV0pLFxyXG4gICAgICBcInBhZ2VOb1wiOiAwLFxyXG4gICAgICBcInNpemVcIjogMSxcclxuICAgICAgXCJncmFkZUlkc1wiOiBbdGhpcy5zZWxlY3RlZEdyYWRlSWRdLFxyXG4gICAgICBcInNlYXJjaFRleHRcIjogXCJcIlxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0RmVlU3RydWN0dXJlKHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUgPSByZXMuZGF0YS5kYXRhWzBdO1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnNEYXRhID0gIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUuc3Vic2NyaXB0aW9uUGxhbnMpKTtcclxuICAgICAgdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUuc3Vic2NyaXB0aW9uUGxhbnMgPSBbXTtcclxuICAgICAgdGhpcy50ZXJtUGF5bWVudExpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlPy50ZXJtUGF5bWVudExpc3QgfHwgJycpKTtcclxuICAgICAgdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUudGVybVBheW1lbnRMaXN0ID0gW107XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgaW5wdXRGaWVsZENoYW5nZShpdGVtOiBhbnksIGZpZWxkOiBhbnkpIHtcclxuICAgIGlmKGZpZWxkLmZpZWxkTGFiZWwgPT09ICdBY2FkZW1pYyBZZWFyJykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyID0gaXRlbS5uYW1lO1xyXG4gICAgICB0aGlzLmdldEZlZVN0cnVjdHVyZSgpO1xyXG4gICAgfVxyXG4gICAgaWYoZmllbGQuZmllbGRMYWJlbCA9PT0gJ0dyYWRlJykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JhZGVJZCA9IGl0ZW0uaWQ7XHJcbiAgICAgIHRoaXMuZ2V0RmVlU3RydWN0dXJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtYXN0ZXJEcm9wZG93blZhbHVlQ2hhbmdlKGl0ZW06IGFueSwgZmllbGQ6IGFueSkge1xyXG4gICAgaWYoZmllbGQuZmllbGRMYWJlbCA9PT0gJ1N0dWRlbnQgbGl2ZSB3aXRoJykge1xyXG4gICAgICB0aGlzLnN0dWRlbnRMaXZlV2l0aCA9IGl0ZW0udmFsdWVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwbG9hZEJhY2tVcERvY3VtZW50KGV2OiBhbnkpIHtcclxuICAgIHRoaXMuYmFja3VwRG9jRmlsZSA9IGV2LnNyY0VsZW1lbnQuZmlsZXNbMF07XHJcbiAgfVxyXG5cclxuXHJcbiAgYXJyYW5nZVN1YnNjcmlwdGlvbkZvckFkbWlzc2lvbihzdWJzY3JpcHRpb25MaXN0OiBhbnlbXSkge1xyXG4gICAgbGV0IHJlc3BvbnNlOiBhbnkgPSB7fTtcclxuXHJcbiAgICBmb3IobGV0IHN1YnNjcmlwdGlvbiBvZiBzdWJzY3JpcHRpb25MaXN0KSB7XHJcbiAgICAgIGlmKCFyZXNwb25zZVtzdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uVHlwZV0pIHtcclxuICAgICAgICByZXNwb25zZVtzdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uVHlwZV0gPSBbXTtcclxuICAgICAgfVxyXG4gICAgICByZXNwb25zZVtzdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uVHlwZV0ucHVzaChzdWJzY3JpcHRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIGFycmFuZ2VGZWVDb25maWcoZmVlQ29uZmlnTGlzdDogYW55W10pIHtcclxuICAgIGxldCByZXNwb25zZTogYW55ID0ge307XHJcblxyXG4gICAgZm9yKGxldCBjb25maWcgb2YgZmVlQ29uZmlnTGlzdCkge1xyXG4gICAgICBpZighcmVzcG9uc2VbY29uZmlnLmZlZVR5cGVdKVxyXG4gICAgICAgIHJlc3BvbnNlW2NvbmZpZy5mZWVUeXBlXSA9IFtdO1xyXG5cclxuICAgICAgcmVzcG9uc2VbY29uZmlnLmZlZVR5cGVdLnB1c2goY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIj5cclxuICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCI+XHJcbiAgICA8ZGl2ICNtYWluQ29udGFpbmVyIGNsYXNzPVwicm93RmxleFwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb092ZXJsYXldPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCJcclxuICAgICAgW3NpbXBvQm9yZGVyXT1cInN0eWxlcz8uYm9yZGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLXNlY3Rpb25cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0Jzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcgLCAnanVzdGlmeS1jb250ZW50LW1kLWVuZCc6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ3JpZ2h0J31cIlxyXG4gICAgICAgIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0xheW91dF09XCJzdHlsZXM/LmxheW91dFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib2R5LXNlY3Rpb25cIj5cclxuICAgICAgICAgIDxkaXYgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWxlbWVudCBbdGV4dERhdGFdPVwiY29udGVudD8uaW5wdXRUZXh0Py5bMF0/LnZhbHVlXCIgW3RleHRMYWJlbF09XCJjb250ZW50Py5pbnB1dFRleHQ/LlswXT8ubGFiZWxcIj48L3NpbXBvLXRleHQtZWxlbWVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgZC1tZC1mbGV4IG10LTE1XCIgKm5nSWY9XCJkYXRhPy5hY3Rpb24/LmRpc3BsYXlcIiBbbmdDbGFzc109XCJbXHJcbiAgICAgICAgICAgICAgc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcgPyAnanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0JyA6ICcnLFxyXG4gICAgICAgICAgICAgIHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2NlbnRlcicgPyAnanVzdGlmeS1jb250ZW50LW1kLWNlbnRlcicgOiAnJyxcclxuICAgICAgICAgICAgICBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCcgPyAnanVzdGlmeS1jb250ZW50LW1kLWVuZCcgOiAnJ1xyXG4gICAgICAgICAgICBdXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuICA8c2VjdGlvbiBjbGFzcz1cIm1haW4tc2VjdGlvblwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImZvcm1TdGF0dXMgIT0gJ1JFR0lTVEVSRUQnICYmIGZvcm1TdGF0dXMgIT0gJ0FETUlUVEVEJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ViVGFic19zZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfdGFicyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2YgT2JqZWN0LmtleXMoZmllbGREYXRhKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlX3RhYiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzZWxlY3RlZEtleSA9IGtleVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRLZXkgPT09IGtleSA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cclxuICAgICAgICAgICAgICB7e2tleSB8IHRpdGxlY2FzZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlX3RhYiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzZWxlY3RlZEtleSA9ICdEb2N1bWVudCdcIiAqbmdJZj1cImRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cclxuICAgICAgICAgICAgRG9jdW1lbnRcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZV90YWIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicmVkaXJlY3RUb1BheW1lbnQoKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkS2V5ID09PSAnUGF5bWVudCcgPyAnc2luZ2xlX3RhYl9hY3RpdmUnIDogJ3NpbmdsZV90YWInXCI+XHJcbiAgICAgICAgICAgIFBheW1lbnRcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBmaWVsZERhdGFbc2VsZWN0ZWRLZXldID8gT2JqZWN0LmtleXMoZmllbGREYXRhW3NlbGVjdGVkS2V5XSkgOiBbXTtsZXQgZ3JvdXBJbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIiAqbmdJZj1cImdyb3VwICE9PSAnQmFja3VwIENvbnRhY3QnXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdF90YWJzIGJhY2tUb0xlYWRzIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAge3tncm91cH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBJbmRleCA9PSAwICYmIE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbMF0gPT09IHNlbGVjdGVkS2V5XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1ib3hcIiAqbmdJZj1cIiFwYXlsb2FkLmltZ1VybFwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJkdW1teS1pbWFnZVwiIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvbWFzdGVyL2FkZC1pbWFnZS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlX2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmY19icm93c2VfYnRuXCIgaWQ9XCJkaXNwbGF5X2Jyb3dzZV9idG5cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5DbGljayB0b1xyXG4gICAgICAgICAgICAgICAgICB1cGxvYWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGlkPVwidmVuZG9ySW1hZ2VcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCJteWZpbGVcIlxyXG4gICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlL3gtcG5nLGltYWdlL2pwZWcsaW1hZ2UvanBnXCIgKGNoYW5nZSk9XCJ1cGRhdGVBZG1pc3Npb25JbWFnZSgkZXZlbnQpXCIgY2xhc3M9XCJwYy1idG5cIlxyXG4gICAgICAgICAgICAgIGlkPVwiYnJvd3NlX2NvbnRhY3RfaW1hZ2VcIiAjZmlsZUlucHV0IC8+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGF5bG9hZC5pbWdVcmxcIiBjbGFzcz1cImFkZGVkSW1nXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZGVkSW1nXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nICBhbHQ9XCJcIiBbc3JjXT1cImRzLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwocGF5bG9hZC5pbWdVcmwpXCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Jsb2dzL2NoYW5nZV9pbWFnZS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgQ2hhbmdlIEltYWdlXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gZGVsZXRlLWNoYW5nZVwiIChjbGljayk9XCJkZWxldGVJbWcoKVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Jsb2dzL2RlbGV0ZV9pbWFnZS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PkRlbGV0ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0xXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtMTIgbXQtMVwiICpuZ0Zvcj1cImxldCBpbmZvIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV1bZ3JvdXBdXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwibGFiZWwtdGV4dFwiPnt7aW5mby5maWVsZExhYmVsfX08L2xhYmVsPiZuYnNwOyA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWQ7XCIgKm5nSWY9XCJpbmZvLnJlcXVpcmVkXCI+Kjwvc3Bhbj4gPGJyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dERhdGE7IGNvbnRleHQ6IHtkYXRhOiBpbmZvfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwiZmllbGREYXRhW3NlbGVjdGVkS2V5XS5oYXNPd25Qcm9wZXJ0eSgnQmFja3VwIENvbnRhY3QnKSAmJiBzdHVkZW50TGl2ZVdpdGggPT09ICdzaW5nbGUgcGFyZW50JyAmJiBncm91cEluZGV4ID09IDAgJiYgT2JqZWN0LmtleXMoZmllbGREYXRhKVswXSA9PT0gc2VsZWN0ZWRLZXlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X3RhYnMgYmFja1RvTGVhZHMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICBCYWNrdXAgQ29udGFjdCAoT3B0aW9uYWwpXHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm10Yi0xNSBjaGVja2JveC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJcIiBpZD1cIlwiIFsobmdNb2RlbCldPVwicGF5bG9hZC5wYXJlbnRBdXRob3JpemF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgIEkgYXV0aG9yaXplIHRoZSBzY2hvb2wgdG8gcmVsZWFzZSB0aGUgY2hpbGQgb25seSB0byB0aGUgcGFyZW50IGxpc3RlZCBhYm92ZVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgY29sLTEyIG10LTFcIiAqbmdGb3I9XCJsZXQgaW5mbyBvZiBmaWVsZERhdGFbc2VsZWN0ZWRLZXldWydCYWNrdXAgQ29udGFjdCddXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwibGFiZWwtdGV4dFwiPnt7aW5mby5maWVsZExhYmVsfX08L2xhYmVsPiZuYnNwOyA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWQ7XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaW5mby5yZXF1aXJlZFwiPio8L3NwYW4+IDxicj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXREYXRhOyBjb250ZXh0OiB7ZGF0YTogaW5mb31cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtMTIgbXQtMVwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImxhYmVsLXRleHRcIj5VcGxvYWQgU3VwcG9ydGluZyBEb2N1bWVudCAoT3B0aW9uYWwpPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtdGV4dCB1cGxvYWQtZmlsZVwiIChjbGljayk9XCJiYWNrVXBEb2NJbnB1dC5jbGljaygpXCI+XHJcbiAgICAgICAgICAgICAgICA8cD57e2JhY2t1cERvY0ZpbGUgPyAnRmlsZSBVcGxvYWRlZCcgOiAnVXBsb2FkIEZpbGUnfX08L3A+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvdWRfdXBsb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ2ZW5kb3JJbWFnZVwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIm15ZmlsZVwiIGhpZGRlblxyXG4gICAgICAgICAgICAgICAgYWNjZXB0PVwiLmRvYywuZG9jeCxhcHBsaWNhdGlvbi9tc3dvcmQsYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQsaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGcsLnBkZiwgdmlkZW8vbXA0LHZpZGVvL3gtbWF0cm9za2EsdmlkZW8veC1tc3ZpZGVvLHZpZGVvL3F1aWNrdGltZVwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZEJhY2tVcERvY3VtZW50KCRldmVudClcIiBjbGFzcz1cInBjLWJ0blwiXHJcbiAgICAgICAgICAgICAgICBpZD1cImJyb3dzZV9jb250YWN0X2ltYWdlXCIgI2JhY2tVcERvY0lucHV0IC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWRldGFpbHNcIiAqbmdJZj1cInNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnICYmIGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIj5cclxuICAgICAgICAgIDxzaW1wby1kb2N1bWVudCBbZG9jdW1lbnRMaXN0XT1cImRvY3VtZW50TGlzdFwiPjwvc2ltcG8tZG9jdW1lbnQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGV0YWlsc1wiICpuZ0lmPVwic2VsZWN0ZWRLZXkgPT09ICdQYXltZW50JyAmJiBkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCI+XHJcbiAgICAgICAgICA8c2ltcG8tcGF5bWVudC1kZXRhaWxzIFthZG1pc3Npb25EYXRhXT1cInBheWxvYWRcIlxyXG4gICAgICAgICAgICBbc3Vic2NyaXB0aW9uc0RhdGFdPVwic3Vic2NyaXB0aW9uc0RhdGFcIiBbdGVybVBheW1lbnRMaXN0XT1cInRlcm1QYXltZW50TGlzdFwiPjwvc2ltcG8tcGF5bWVudC1kZXRhaWxzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tcGFyZW50XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGRhdGE/LmFjdGlvbj8uYnV0dG9uc1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJzdWJtaXRGb3JtKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCJcclxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIiAqbmdJZj1cIihkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nICYmIHNlbGVjdGVkS2V5ID09ICdQYXltZW50JykgfHxcclxuICAgICAgICAgICAgKGRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgJiZcclxuICAgICAgICAgICAgICAoT2JqZWN0LmtleXMoZmllbGREYXRhKVtPYmplY3Qua2V5cyhmaWVsZERhdGEpLmxlbmd0aCAtIDFdID09IHNlbGVjdGVkS2V5KSlcIlxyXG4gICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPnt7YnV0dG9uPy5jb250ZW50Py5sYWJlbH19PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjb250aW51ZUFkbWlzc2lvbigpXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkK2J1dHRvbi5pZFwiXHJcbiAgICAgICAgICAgIFtidXR0b25TdHlsZV09XCJidXR0b24uc3R5bGVzXCIgKm5nSWY9XCJzZWxlY3RlZEtleSAhPSAnUGF5bWVudCcgJiYgZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiXHJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+Q29udGludWU8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvbnRpbnVlQWRtaXNzaW9uKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCJcclxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgJiYgKE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbT2JqZWN0LmtleXMoZmllbGREYXRhKS5sZW5ndGggLSAxXSAhPSBzZWxlY3RlZEtleSlcIlxyXG4gICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPkNvbnRpbnVlPC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImVtcHR5VGV4dFwiICpuZ0lmPVwiZm9ybVN0YXR1cyA9PSAnUkVHSVNURVJFRCcgfHwgZm9ybVN0YXR1cyA9PSAnQURNSVRURUQnXCI+XHJcbiAgICAgIDxpbWcgW3NyY109XCJjb250ZW50Py5pbWFnZT8udXJsXCIgYWx0PVwiXCIgKm5nSWY9XCJjb250ZW50Py5pbWFnZT8uc2hvd0ltYWdlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLWxhcmdlXCIgW2lubmVySHRtbF09XCJjb250ZW50Py5pbnB1dFRleHQ/LlsxXT8udmFsdWVcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNpbnB1dERhdGEgbGV0LWZpZWxkPVwiZGF0YVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09ICdJTUFHRSdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWJveFwiPlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJkdW1teS1pbWFnZVwiIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvbWFzdGVyL2FkZC1pbWFnZS5zdmdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmNfYnJvd3NlX2J0blwiIGlkPVwiZGlzcGxheV9icm93c2VfYnRuXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+Q2xpY2sgdG9cclxuICAgICAgICAgICAgdXBsb2FkPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBpZD1cInZlbmRvckltYWdlXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwibXlmaWxlXCIgYWNjZXB0PVwiaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGdcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwidXBkYXRlQWRtaXNzaW9uSW1hZ2UoJGV2ZW50KVwiIGNsYXNzPVwicGMtYnRuXCIgaWQ9XCJicm93c2VfY29udGFjdF9pbWFnZVwiICNmaWxlSW5wdXQgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnVEVYVCdcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgcGxhY2Vob2xkZXI9XCJlbnRlciB2YWx1ZVwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdOVU1CRVInXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgcGxhY2Vob2xkZXI9XCJlbnRlciB2YWx1ZVwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdNT05FWSdcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgcGxhY2Vob2xkZXI9XCJlbnRlciB2YWx1ZVwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdEQVRFJ1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImlucHV0LXRleHRcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnRFJPUERPV04nXCIgY2xhc3M9XCJhZG1pc3Npb25cIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXQtdGV4dFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJpbnB1dFN0eWxlXCIgcGxhY2Vob2xkZXI9XCItLVNlbGVjdC0tXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlU2VsZWN0aW9uXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID4gMFwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC52YWx1ZVwiIFt2YWx1ZV09XCJpdGVtPy52YWx1ZVwiIChjbGljayk9XCJtYXN0ZXJEcm9wZG93blZhbHVlQ2hhbmdlKGl0ZW0sIGZpZWxkKVwiPnt7aXRlbS5sYWJlbH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID09IDBcIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuc291cmNlRGF0YVtmaWVsZC5kYXRhU291cmNlVHlwZV1cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJpbnB1dEZpZWxkQ2hhbmdlKGl0ZW0sIGZpZWxkKVwiIFt2YWx1ZV09XCJpdGVtPy5uYW1lXCI+e3tpdGVtLm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPiAwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItNVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnZhbHVlXCI+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIiBpZD1cImZsZXhDaGVja0NoZWNrZWRcIiBbKG5nTW9kZWwpXT1cImRhdGEuY2hlY2tlZFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImZsZXhDaGVja0NoZWNrZWRcIj5cclxuICAgICAgICAgICAge3tkYXRhLmxhYmVsfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA9PSAwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItNVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnNvdXJjZURhdGFbZmllbGQuZGF0YVNvdXJjZVR5cGVdXCI+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIiBpZD1cImZsZXhDaGVja0NoZWNrZWRcIiBbKG5nTW9kZWwpXT1cImRhdGEuY2hlY2tlZFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImZsZXhDaGVja0NoZWNrZWRcIj5cclxuICAgICAgICAgICAge3tkYXRhLm5hbWV9fVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlcz8uZGV2aWRlcj8uZGlzcGxheVwiPlxyXG4gICAgPHNpbXBvLXN2Zy1kaXZpZGVyIFtkaXZpZGVyVHlwZV09XCJzdHlsZXM/LmRldmlkZXI/LmRldmlkZXJUeXBlXCJcclxuICAgICAgW2NvbG9yXT1cIm5leHRDb21wb25lbnRDb2xvcj8uY29sb3JcIj48L3NpbXBvLXN2Zy1kaXZpZGVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uRm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvcmVnaXN0cmF0aW9uLWZvcm0vcmVnaXN0cmF0aW9uRm9ybS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW1hZ2VNb2RlbCB9IGZyb20gJy4uL2Jhbm5lci1zZWN0aW9uL2Jhbm5lci1zZWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgVGV4dENvbnRlbnRNb2RlbCwgVGV4dFNlY3Rpb25Nb2RlbCB9IGZyb20gJy4uL3RleHQtc2VjdGlvbi90ZXh0LXNlY3Rpb24ubW9kZWwnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyYXRpb25Gb3JtTW9kZWwgZXh0ZW5kcyBUZXh0U2VjdGlvbk1vZGVse1xyXG4gIGNvbnRlbnQ6IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0cmF0aW9uRm9ybUNvbnRlbnRNb2RlbCBleHRlbmRzIFRleHRDb250ZW50TW9kZWx7XHJcbiAgaW1hZ2U6IEltYWdlTW9kZWw7XHJcbn1cclxuIl19
|