@hmcts/ccpay-web-component 6.2.13 → 6.2.14-beta2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/esm2022/lib/components/add-remission/add-remission.component.mjs +4 -4
  2. package/esm2022/lib/components/allocate-payments/allocate-payments.component.mjs +14 -9
  3. package/esm2022/lib/components/card-details/card-details.component.mjs +4 -4
  4. package/esm2022/lib/components/case-transactions/case-transactions.component.mjs +4 -4
  5. package/esm2022/lib/components/contact-details/contact-details.component.mjs +4 -4
  6. package/esm2022/lib/components/error-banner/error-banner.component.mjs +4 -4
  7. package/esm2022/lib/components/fee-summary/fee-summary.component.mjs +4 -4
  8. package/esm2022/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.mjs +4 -4
  9. package/esm2022/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.mjs +4 -4
  10. package/esm2022/lib/components/notification-preview/notification-preview.component.mjs +4 -4
  11. package/esm2022/lib/components/page-not-found.component.mjs +4 -4
  12. package/esm2022/lib/components/payment-list/payment-list.component.mjs +4 -4
  13. package/esm2022/lib/components/payment-view/payment-view.component.mjs +4 -4
  14. package/esm2022/lib/components/pba-details/pba-details.component.mjs +4 -4
  15. package/esm2022/lib/components/pba-payment/pba-payment.component.mjs +4 -4
  16. package/esm2022/lib/components/process-refund/process-refund.component.mjs +4 -4
  17. package/esm2022/lib/components/processed-payments/processed-payments.component.mjs +4 -4
  18. package/esm2022/lib/components/refund-list/refund-list.component.mjs +4 -4
  19. package/esm2022/lib/components/refund-status/refund-status.component.mjs +4 -4
  20. package/esm2022/lib/components/reports/reports.component.mjs +4 -4
  21. package/esm2022/lib/components/service-request/service-request.component.mjs +4 -4
  22. package/esm2022/lib/components/status-history/status-history.component.mjs +4 -4
  23. package/esm2022/lib/components/table/table.component.mjs +4 -4
  24. package/esm2022/lib/components/unprocessed-payments/unprocessed-payments.component.mjs +4 -4
  25. package/esm2022/lib/payment-lib.component.mjs +4 -4
  26. package/esm2022/lib/payment-lib.module.mjs +35 -42
  27. package/esm2022/lib/payment-lib.service.mjs +4 -4
  28. package/esm2022/lib/pipes/capitalize.pipe.mjs +4 -4
  29. package/esm2022/lib/pipes/ccd-hyphens.pipe.mjs +4 -4
  30. package/esm2022/lib/pipes/key-value.pipe.mjs +4 -4
  31. package/esm2022/lib/pipes/sanitize-html.pipe.mjs +4 -4
  32. package/esm2022/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.mjs +4 -4
  33. package/esm2022/lib/services/card-details/card-details.service.mjs +4 -4
  34. package/esm2022/lib/services/case-transactions/case-transactions.service.mjs +4 -4
  35. package/esm2022/lib/services/notification/notification.service.mjs +4 -4
  36. package/esm2022/lib/services/orderslist.service.mjs +4 -4
  37. package/esm2022/lib/services/payment-list/payment-list.service.mjs +4 -4
  38. package/esm2022/lib/services/payment-view/payment-view.service.mjs +4 -4
  39. package/esm2022/lib/services/refunds/refunds.service.mjs +4 -4
  40. package/esm2022/lib/services/shared/error-handler.service.mjs +4 -4
  41. package/esm2022/lib/services/shared/httpclient/webcomponent.http.client.mjs +4 -4
  42. package/esm2022/lib/services/shared/logger/console-logger.service.mjs +4 -4
  43. package/esm2022/lib/services/shared/logger/logger.service.mjs +4 -4
  44. package/esm2022/lib/services/status-history/status-history.service.mjs +4 -4
  45. package/esm2022/lib/services/xl-file/xl-file.service.mjs +4 -4
  46. package/fesm2022/hmcts-ccpay-web-component.mjs +177 -179
  47. package/fesm2022/hmcts-ccpay-web-component.mjs.map +1 -1
  48. package/lib/components/add-remission/add-remission.component.d.ts +1 -1
  49. package/lib/components/allocate-payments/allocate-payments.component.d.ts +2 -2
  50. package/lib/components/case-transactions/case-transactions.component.d.ts +1 -1
  51. package/lib/components/fee-summary/fee-summary.component.d.ts +1 -1
  52. package/lib/payment-lib.module.d.ts +19 -20
  53. package/package.json +3 -3
@@ -421,10 +421,10 @@ export class RefundStatusComponent {
421
421
  this.notificationSentViewIndex = -1;
422
422
  this.notificationSentView = false;
423
423
  }
424
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: RefundStatusComponent, deps: [{ token: i1.FormBuilder }, { token: i2.RefundsService }, { token: i3.NotificationService }, { token: 'PAYMENT_LIB' }, { token: i4.OrderslistService }, { token: i5.PaymentViewService }], target: i0.ɵɵFactoryTarget.Component });
425
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: RefundStatusComponent, isStandalone: true, selector: "ccpay-refund-status", inputs: { LOGGEDINUSERROLES: "LOGGEDINUSERROLES", API_ROOT: "API_ROOT", ccdCaseNumber: "ccdCaseNumber", isTurnOff: "isTurnOff", orderParty: "orderParty" }, ngImport: i0, template: "\n<div *ngIf=\"errorMessage\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n Error in processing the request\n </h2>\n <div class=\"govuk-error-summary__body\">\n {{ errorMessage }}\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"viewName==='refundstatuslist' && rejectedRefundList && !isResendOperationSuccess && !isEditDetailsClicked\">\n <!-- payments -->\n\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-16\" scope=\"col\">Status</td>\n <td class=\"govuk-table__header col-11\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header col-18\" scope=\"col\">Date</td>\n <td class=\"govuk-table__header col-25\" scope=\"col\">Refund reference</td>\n <td class=\"govuk-table__header col-24 \" scope=\"col\">Reason</td>\n <td class=\"govuk-table__header\" scope=\"col\"></td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"rejectedRefundList?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let refundList of rejectedRefundList\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.refund_status['name'] }}</td>\n <td class=\"channel govuk-table__cell whitespace-inherit\">\u00A3{{ refundList?.amount | number:'.2' }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.date_updated | date:'dd MMM yyyy'}}\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.refund_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\"> {{refundList?.reason}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">\n <a href=\"javascript:void(0)\" (click)=\"goToRefundView(refundList,'casetransactions')\">Review</a>\n </td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"rejectedRefundList?.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No refunds recorded</td>\n </tbody>\n </table>\n</ng-container>\n\n<ng-container *ngIf=\"viewName==='refundview' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n </div>\n <h2 class=\"govuk-heading-l\">Refund details</h2>\n <table>\n \n <tbody>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Refund reference</td>\n <td>{{ refundlist?.refund_reference }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Payment to be refunded</td>\n <td>{{refundlist?.payment_reference }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Reason for refund</td>\n <td>{{ refundlist?.reason }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Amount refunded</td>\n <td>\u00A3{{refundlist?.amount | number:'.2' }}</td>\n </tr>\n\n </tbody>\n </table>\n\n\n <!-- Notification sent details -->\n <div>\n <br />\n <h2 class=\"govuk-heading-m\">Notifications sent</h2>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-24 whitespace-inherit\" scope=\"col\">Date and time</td>\n <td class=\"govuk-table__header col-27 whitespace-inherit\" scope=\"col\">Sent to</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Sent via</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Actions</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"notificationList\">\n <ng-container *ngFor=\"let notification of notificationList; let i = index;\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{notification.date_created | date:'dd MMMM yyyy HH:mm:ss'}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{orderParty}}</td>\n <td class=\"govuk-table__cell whitespace-inherit col-40\">\n <div *ngIf=\"notification?.notification_type === 'EMAIL'\">\n <strong>Email</strong><br>\n {{notification?.contact_details?.email?.trim()}}\n </div>\n <div *ngIf=\"notification?.notification_type === 'LETTER'\">\n <strong>Post</strong><br>\n {{notification?.contact_details?.address_line?.trim()}} {{notification?.contact_details?.city?.trim()}} {{notification?.contact_details?.county?.trim()}} {{notification?.contact_details?.country?.trim()}} {{notification?.contact_details?.postal_code?.trim()}}\n </div>\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\" *ngIf=\"i === 0\"><a href=\"Javascript:void(0);\" (click)=\"putResend(notification)\">Resend</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href=\"Javascript:void(0);\" (click)=\"gotoEditAddressDetails(notification)\">Edit details</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a *ngIf=\"!notificationSentView || i != notificationSentViewIndex\" href=\"Javascript:void(0);\" (click)=\"showNotificationSentView(i)\">View</a><a *ngIf=\"i === notificationSentViewIndex && notificationSentView\" href=\"Javascript:void(0);\" (click)=\"hideNotificationSentView()\">Hide</a></td>\n <td class=\"govuk-table__cell whitespace-inherit\" *ngIf=\"i > 0\"><a *ngIf=\"!notificationSentView || i != notificationSentViewIndex\" href=\"Javascript:void(0);\" (click)=\"showNotificationSentView(i)\">View</a><a *ngIf=\"i === notificationSentViewIndex && notificationSentView\" href=\"Javascript:void(0);\" (click)=\"hideNotificationSentView()\">Hide</a></td>\n </tr>\n <tr *ngIf=\"i === notificationSentViewIndex && notificationSentView\">\n <td class=\"govuk-table__cell\" colspan=\"4\">\n <app-notification-preview\n [previewJourney]=\"'Notifications sent'\" [notificationSent]=\"notification?.sent_notification\">\n </app-notification-preview>\n </td>\n </tr>\n </ng-container>\n\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"!notificationList\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\" colspan=\"4\">No record found ... </td>\n </tr>\n </tbody>\n </table> \n </div>\n <!-- Status history -->\n <div>\n <br />\n <h2 class=\"govuk-heading-m\">Refund status history</h2>\n <div *ngIf=\"refundStatusHistories\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-24 whitespace-inherit\" scope=\"col\">Status</td>\n <td class=\"govuk-table__header col-27 whitespace-inherit\" scope=\"col\">Date and time</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Users</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Notes</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngFor=\"let refundStatusHistory of refundStatusHistories;\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.status}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">\n {{refundStatusHistory.date_created | date:'dd MMMM yyyy HH:mm:ss'}}\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.created_by}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.notes}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n </div>\n\n <ng-container *ngIf=\"viewName==='refundview' && !isFromPayBubble && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div *ngIf=\"refundButtonState==='Update required'\" >\n <!-- <div *ngIf=\"refundButtonState==='sent back'\"> -->\n <br />\n <button type=\"submit\" class=\"button govuk-button--secondary btnmargin\"\n (click)=\"gotoReviewAndReSubmitPage()\">Change refund details</button>\n </div>\n <div *ngIf=\"isProcessRefund && !isLastUpdatedByCurrentUser && refundButtonState==='Sent for approval'\" >\n <!-- <div *ngIf=\"isProcessRefund && !isLastUpdatedByCurrentUser && refundButtonState==='sent for approval'\"> -->\n <br />\n <button type=\"submit\" class=\"button govuk-button--secondary\"\n (click)=\"goToRefundProcessComponent(refundlist.refund_reference,refundlist)\">Process refund</button>\n </div>\n </ng-container>\n\n\n</ng-container>\n\n<ng-container *ngIf=\"viewName==='reviewandsubmitview' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <!-- <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a (click)=\"gotoReviewDetailsPage($event)\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n </div> -->\n <div class=\"govuk-warning-text\">\n <h1 class=\"heading-large\">Check your answers</h1>\n </div>\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Payment reference</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.payment_reference}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Reason for return</td>\n <td class=\"govuk-table__cell\">{{refundreason}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund reference</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.refund_reference}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Reason for refund</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.reason?.trim()}}\n <a (click)=\"gotoRefundReasonPage(refundlist?.reason)\" *ngIf=\"refundlist?.reason !== 'Retrospective remission' && refundlist?.reason !== 'Overpayment'\"\n class=\"govuk-link right\">Change</a>\n </td>\n\n <!-- <td class=\"govuk-table__cell\">{{ refundlist?.reason }}</td>\n <a (click)=\"gotoRefundReasonPage()\" class=\"govuk-link right\">Change</a> -->\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund amount</td>\n <td class=\"govuk-table__cell\">\u00A3{{ changedAmount ? changedAmount : refundlist?.amount | number:'.2' }}\n <a (click)=\"gotoAmountPage()\" *ngIf=\"refundlist?.reason !== 'Overpayment'\"\n class=\"govuk-link right\">Change</a>\n </td>\n\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send to</td>\n <td class=\"govuk-table__cell\">{{orderParty}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send via</td>\n <td class=\"govuk-table__cell whitespace-inherit\">\n <div *ngIf=\"refundlist?.contact_details?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{refundlist?.contact_details?.email?.trim()}}\n </div>\n <div *ngIf=\"refundlist?.contact_details?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{refundlist?.contact_details?.address_line?.trim()}} {{refundlist?.contact_details?.city?.trim()}} {{refundlist?.contact_details?.county?.trim()}} {{refundlist?.contact_details?.country?.trim()}} {{refundlist?.contact_details?.postal_code?.trim()}}\n </div> \n <a class=\"govuk-link\" href=\"Javascript:void(0)\" *ngIf=\"refundlist?.contact_details !=null\" class=\"govuk-link right\" (click)=\"gotoEditDetailsPage(refundlist?.contact_details, 'reviewandsubmitEditview')\">\n Change\n </a>\n </td>\n </tr> \n\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Notification</td>\n <td class=\"govuk-table__cell\">{{templateInstructionType}} \n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </td>\n </tr>\n </table>\n <app-notification-preview *ngIf=\"notificationPreview\" \n [paymentReference]=\"refundlist?.payment_reference\"\n [payment]=\"paymentObj\" \n [contactDetails]=\"refundlist?.contact_details\"\n [refundReason]=\"refundlist?.reason_code\"\n [refundAmount]=\"changedAmount ? changedAmount : refundlist?.amount\"\n [refundReference]=\"refundlist?.refund_reference\"></app-notification-preview>\n\n <div class=\"govuk-button-group\">\n <button (click)=\"gotoReviewDetailsPage($event)\" class=\"govuk-button govuk-button--secondary\"> Previous</button>\n <button [disabled]=\"isRefundBtnDisabled\" (click)=\"gotoReviewRefundConfirmationPage()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit refund\n </button>\n</div>\n<p><a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">Cancel</a></p>\n <!-- <div class=\"govuk-button-group\">\n <button [disabled]=\"isRefundBtnDisabled\" (click)=\"gotoReviewRefundConfirmationPage()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit refund\n </button>\n </div> -->\n <!-- <p>\n <a (click)=\"loadRefundListPage()\" href=\"\" class=\"cancelbtn\">Cancel</a>\n </p> -->\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'reviewandsubmitEditview' && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSPAGE'> \n <h1 class=\"govuk-heading-l\">Edit contact details</h1>\n <h2 class=\"govuk-heading-m govuk-font19px\">Case reference: {{ccdCaseNumber | ccdHyphens }}</h2>\n <span class=\"govuk-hint font-size-19px\">\n Refund reference: {{ refundlist?.refund_reference}}\n </span>\n <ccpay-contact-details\n [isEditOperationInRefundList] = isEditDetailsClicked\n [addressObj] = notification\n (assignContactDetailsInFefundsList)=\"getContactDetailsForRefundList($event)\"\n (redirectToIssueRefund)=\"gotoRefundReviewAndSubmitViewPageCancelBtnClicked($event)\" ></ccpay-contact-details>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'issuerefundpage1' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\" [isFromRefundStatusPage] = \"true\"\n [changeRefundReason]= \"changeRefundReason\" [ccdCaseNumber]=\"ccdCaseNumber\" (refundListReason)=\"getRefundListReason($event)\" [refundPaymentReference]= \"refundlist?.payment_reference\" ></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'processretroremissonpage' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\"\n [ccdCaseNumber]=\"ccdCaseNumber\" [refundPaymentReference]= \"refundlist?.payment_reference\" (refundListAmount)=\"getRefundAmount($event)\"></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'issuerefund' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\" [isFromServiceRequestPage] = \"true\"\n [ccdCaseNumber]=\"ccdCaseNumber\" [refundPaymentReference]= \"refundlist?.payment_reference\" [isFromRefundStatusPage]=\"true\" (refundListAmount)=\"getRefundAmount($event)\" (refundFees)=\"getRefundFees($event)\"></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'reviewrefundconfirmationpage' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div class=\"govuk-grid-row pagesize\">\n <div>\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel_refund_title\">\n Refund submitted\n </h1>\n\n <div class=\"govuk-panel__body\">\n <p class=\"govuk-body white\"><strong class=\"white\">Refund reference:{{refundReference}} </strong></p>\n </div>\n\n </div>\n\n <h2 class=\"govuk-heading-l\">What happens next</h2>\n <p class=\"govuk-body\">\n A refund request for {{refundAmount| currency:'GBP':'symbol-narrow':'1.2-2'}} has been created and will be passed to a team leader to approve.\n </p>\n\n <p class=\"govuk-body\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\">Return to case</a>\n </p>\n </div>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isResendOperationSuccess\">\n <div class=\"govuk-grid-row pagesize\">\n <div>\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel_refund_title\">\n Notification sent\n </h1>\n\n <div class=\"govuk-panel__body\">\n <p class=\"govuk-body white\"><strong class=\"white\">Refund reference: {{ refundlist?.refund_reference}} </strong></p>\n </div>\n\n </div>\n <p class=\"govuk-body\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\">Return to case</a>\n </p>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"viewName === 'refundEditView' && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSPAGE'> \n <h1 class=\"govuk-heading-l\">Edit contact details</h1>\n <h2 class=\"govuk-heading-m govuk-font19px\">Case reference: {{ccdCaseNumber | ccdHyphens }}</h2>\n <span class=\"govuk-hint font-size-19px\">\n Refund reference: {{ refundlist?.refund_reference}}\n </span>\n <ccpay-contact-details\n [isEditOperationInRefundList] = isEditDetailsClicked\n [addressObj] = notification\n (assignContactDetailsInFefundsList)=\"getContactDetails($event)\"\n (redirectToIssueRefund)=\"gotoRefundViewPageCancelBtnClicked($event)\" ></ccpay-contact-details>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n<ng-container *ngIf=\"viewName === 'revieweditdetailsconfirmationpage' && !isResendOperationSuccess && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSCHECKANDANSWERPAGE'> \n <h1 class=\"govuk-heading-l\">Check your answers</h1>\n <dl class=\"govuk-summary-list\">\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Refund reference\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ refundlist?.refund_reference}}\n </dd>\n <span class=\"govuk-summary-list__actions\"></span> \n </div>\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Send via\n <br/>\n </dt>\n <dd class=\"govuk-summary-list__value\">\n <div *ngIf=\"addressDetails?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{addressDetails?.email?.trim()}}\n </div>\n <div *ngIf=\"addressDetails?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{addressDetails?.address_line?.trim()}} {{addressDetails?.city?.trim()}} {{addressDetails?.county?.trim()}} {{addressDetails?.country?.trim()}} {{addressDetails?.postal_code?.trim()}}\n </div> \n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a class=\"govuk-link\" href=\"Javascript:void(0)\" (click)=\"gotoEditDetailsPage(addressDetails, 'refundEditView')\">\n Change\n </a>\n </dd>\n </div>\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Notification\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{templateInstructionType}} \n </dd>\n <span class=\"govuk-summary-list__actions\">\n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </span> \n </div>\n </dl>\n\n <app-notification-preview *ngIf=\"notificationPreview\" [paymentReference]=\"refundlist?.payment_reference\"\n [payment]=\"paymentObj\"\n [contactDetails]=\"addressDetails\"\n [refundReason]=\"refundlist?.reason_code\"\n [refundAmount]=\"refundlist?.amount\"\n [refundReference]=\"refundlist?.refund_reference\">\n </app-notification-preview>\n\n\n\n <div class=\"govuk-button-group\">\n <button (click)=\"gotoEditDetailsPage(addressDetails, 'refundEditView')\" class=\"govuk-button govuk-button--secondary\"> Previous</button>\n <button (click)=\"submitEditDetail()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Send notification\n </button>\n </div>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n", styles: [".right{float:right!important}.button{margin-bottom:3em;font-size:19px}.cancelbtn{font-size:19px;font-weight:400}.btnmargin{margin-bottom:2em}.govuk-button--secondary{background-color:#dee0e2;box-shadow:0 2px #858688;color:#0b0c0c;margin-right:.5em}.govuk-warning-text__text,.govuk-label--s,.refund__symbol{font-size:19px;font-weight:400}.inline-error-class{outline:3px solid #a71414;outline-offset:0}.inline-error-message{color:#a71414;font-weight:700;margin-top:10px;font-size:20px}.govuk-button,.govuk-link{margin-right:1em;font-size:19px;font-weight:200}.govuk-button-group{padding-top:2em}.heading-medium{margin-top:.875em}.heading-large{margin-top:.25em}.govuk-panel--confirmation{color:#fff;background:#00703c}.govuk-heading-l{font-size:36px}.govuk-heading-m{font-size:24px}.govuk-panel__title{font-size:5rem}.govuk-panel_refund_title{margin-top:0;margin-bottom:30px;color:#fff;font-family:nta,Arial,sans-serif;-webkit-font-smoothing:antialiased;font-weight:700;font-size:48px}.govuk-body-m,.govuk-body{font-size:2.1875rem}.govuk-input--width-10{max-width:36ex}.col-14{width:14%!important}.col-10{width:10%!important}.col-11{width:11%!important}.col-18{width:18%!important}.col-21{width:21%!important}.col-9{width:9%!important}.col-40{width:40%!important}.col-15{width:15%!important}.col-16{width:16%!important}.col-25{width:25%!important}.col-24{width:24%!important}.govuk-error-summary__title{font-size:24px!important}.govuk-error-summary__body{font-size:19px!important}.font-size-19px{font-size:19px}.white{color:#fff}.pagesize{margin:2em;width:97%}.govuk-link{cursor:pointer}.contactDetails-width{width:70%}.whitespace-inherit{white-space:inherit!important}.hmcts-currency-input__symbol{font-family:nta,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:initial;position:absolute;font-weight:200;padding:8px 10px;height:40px;box-sizing:border-box;background-color:#dee0e2;border:2px solid #0b0c0c}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i6.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i6.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i0.forwardRef(() => i6.DecimalPipe), name: "number" }, { kind: "pipe", type: i0.forwardRef(() => i6.CurrencyPipe), name: "currency" }, { kind: "pipe", type: i0.forwardRef(() => i6.DatePipe), name: "date" }, { kind: "component", type: i0.forwardRef(() => NotificationPreviewComponent), selector: "app-notification-preview", inputs: ["payment", "contactDetails", "refundReason", "refundAmount", "paymentReference", "refundReference", "previewJourney", "notificationSent"], outputs: ["notificationPreviewEvent"] }, { kind: "component", type: i0.forwardRef(() => ContactDetailsComponent), selector: "ccpay-contact-details", inputs: ["isEditOperation", "isEditOperationInRefundList", "addressObj"], outputs: ["assignContactDetails", "assignContactDetailsInFefundsList", "redirectToIssueRefund"] }, { kind: "component", type: i0.forwardRef(() => AddRemissionComponent), selector: "ccpay-add-remission", inputs: ["fee", "fees", "payment", "remission", "ccdCaseNumber", "caseType", "viewCompStatus", "paymentGroupRef", "isTurnOff", "isRefundRemission", "isStrategicFixEnable", "paidAmount", "isFromRefundListPage", "isFromPaymentDetailPage", "isFromServiceRequestPage", "isFullyRefund", "feeamount", "refundPaymentReference", "isFromRefundStatusPage", "changeRefundReason", "isServiceRequest", "LOGGEDINUSERROLES", "orderDetail", "orderRef", "orderStatus", "orderParty", "orderCreated", "orderCCDEvent", "takepayment", "orderFeesTotal", "orderTotalPayments", "orderRemissionTotal"], outputs: ["cancelRemission", "refundListReason", "refundListAmount", "refundFees"] }, { kind: "pipe", type: i0.forwardRef(() => CcdHyphensPipe), name: "ccdHyphens" }] });
424
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RefundStatusComponent, deps: [{ token: i1.FormBuilder }, { token: i2.RefundsService }, { token: i3.NotificationService }, { token: 'PAYMENT_LIB' }, { token: i4.OrderslistService }, { token: i5.PaymentViewService }], target: i0.ɵɵFactoryTarget.Component });
425
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RefundStatusComponent, isStandalone: true, selector: "ccpay-refund-status", inputs: { LOGGEDINUSERROLES: "LOGGEDINUSERROLES", API_ROOT: "API_ROOT", ccdCaseNumber: "ccdCaseNumber", isTurnOff: "isTurnOff", orderParty: "orderParty" }, ngImport: i0, template: "\n<div *ngIf=\"errorMessage\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n Error in processing the request\n </h2>\n <div class=\"govuk-error-summary__body\">\n {{ errorMessage }}\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"viewName==='refundstatuslist' && rejectedRefundList && !isResendOperationSuccess && !isEditDetailsClicked\">\n <!-- payments -->\n\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-16\" scope=\"col\">Status</td>\n <td class=\"govuk-table__header col-11\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header col-18\" scope=\"col\">Date</td>\n <td class=\"govuk-table__header col-25\" scope=\"col\">Refund reference</td>\n <td class=\"govuk-table__header col-24 \" scope=\"col\">Reason</td>\n <td class=\"govuk-table__header\" scope=\"col\"></td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"rejectedRefundList?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let refundList of rejectedRefundList\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.refund_status['name'] }}</td>\n <td class=\"channel govuk-table__cell whitespace-inherit\">\u00A3{{ refundList?.amount | number:'.2' }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.date_updated | date:'dd MMM yyyy'}}\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.refund_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\"> {{refundList?.reason}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">\n <a href=\"javascript:void(0)\" (click)=\"goToRefundView(refundList,'casetransactions')\">Review</a>\n </td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"rejectedRefundList?.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No refunds recorded</td>\n </tbody>\n </table>\n</ng-container>\n\n<ng-container *ngIf=\"viewName==='refundview' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n </div>\n <h2 class=\"govuk-heading-l\">Refund details</h2>\n <table>\n \n <tbody>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Refund reference</td>\n <td>{{ refundlist?.refund_reference }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Payment to be refunded</td>\n <td>{{refundlist?.payment_reference }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Reason for refund</td>\n <td>{{ refundlist?.reason }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Amount refunded</td>\n <td>\u00A3{{refundlist?.amount | number:'.2' }}</td>\n </tr>\n\n </tbody>\n </table>\n\n\n <!-- Notification sent details -->\n <div>\n <br />\n <h2 class=\"govuk-heading-m\">Notifications sent</h2>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-24 whitespace-inherit\" scope=\"col\">Date and time</td>\n <td class=\"govuk-table__header col-27 whitespace-inherit\" scope=\"col\">Sent to</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Sent via</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Actions</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"notificationList\">\n <ng-container *ngFor=\"let notification of notificationList; let i = index;\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{notification.date_created | date:'dd MMMM yyyy HH:mm:ss'}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{orderParty}}</td>\n <td class=\"govuk-table__cell whitespace-inherit col-40\">\n <div *ngIf=\"notification?.notification_type === 'EMAIL'\">\n <strong>Email</strong><br>\n {{notification?.contact_details?.email?.trim()}}\n </div>\n <div *ngIf=\"notification?.notification_type === 'LETTER'\">\n <strong>Post</strong><br>\n {{notification?.contact_details?.address_line?.trim()}} {{notification?.contact_details?.city?.trim()}} {{notification?.contact_details?.county?.trim()}} {{notification?.contact_details?.country?.trim()}} {{notification?.contact_details?.postal_code?.trim()}}\n </div>\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\" *ngIf=\"i === 0\"><a href=\"Javascript:void(0);\" (click)=\"putResend(notification)\">Resend</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href=\"Javascript:void(0);\" (click)=\"gotoEditAddressDetails(notification)\">Edit details</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a *ngIf=\"!notificationSentView || i != notificationSentViewIndex\" href=\"Javascript:void(0);\" (click)=\"showNotificationSentView(i)\">View</a><a *ngIf=\"i === notificationSentViewIndex && notificationSentView\" href=\"Javascript:void(0);\" (click)=\"hideNotificationSentView()\">Hide</a></td>\n <td class=\"govuk-table__cell whitespace-inherit\" *ngIf=\"i > 0\"><a *ngIf=\"!notificationSentView || i != notificationSentViewIndex\" href=\"Javascript:void(0);\" (click)=\"showNotificationSentView(i)\">View</a><a *ngIf=\"i === notificationSentViewIndex && notificationSentView\" href=\"Javascript:void(0);\" (click)=\"hideNotificationSentView()\">Hide</a></td>\n </tr>\n <tr *ngIf=\"i === notificationSentViewIndex && notificationSentView\">\n <td class=\"govuk-table__cell\" colspan=\"4\">\n <app-notification-preview\n [previewJourney]=\"'Notifications sent'\" [notificationSent]=\"notification?.sent_notification\">\n </app-notification-preview>\n </td>\n </tr>\n </ng-container>\n\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"!notificationList\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\" colspan=\"4\">No record found ... </td>\n </tr>\n </tbody>\n </table> \n </div>\n <!-- Status history -->\n <div>\n <br />\n <h2 class=\"govuk-heading-m\">Refund status history</h2>\n <div *ngIf=\"refundStatusHistories\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-24 whitespace-inherit\" scope=\"col\">Status</td>\n <td class=\"govuk-table__header col-27 whitespace-inherit\" scope=\"col\">Date and time</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Users</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Notes</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngFor=\"let refundStatusHistory of refundStatusHistories;\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.status}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">\n {{refundStatusHistory.date_created | date:'dd MMMM yyyy HH:mm:ss'}}\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.created_by}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.notes}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n </div>\n\n <ng-container *ngIf=\"viewName==='refundview' && !isFromPayBubble && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div *ngIf=\"refundButtonState==='Update required'\" >\n <!-- <div *ngIf=\"refundButtonState==='sent back'\"> -->\n <br />\n <button type=\"submit\" class=\"button govuk-button--secondary btnmargin\"\n (click)=\"gotoReviewAndReSubmitPage()\">Change refund details</button>\n </div>\n <div *ngIf=\"isProcessRefund && !isLastUpdatedByCurrentUser && refundButtonState==='Sent for approval'\" >\n <!-- <div *ngIf=\"isProcessRefund && !isLastUpdatedByCurrentUser && refundButtonState==='sent for approval'\"> -->\n <br />\n <button type=\"submit\" class=\"button govuk-button--secondary\"\n (click)=\"goToRefundProcessComponent(refundlist.refund_reference,refundlist)\">Process refund</button>\n </div>\n </ng-container>\n\n\n</ng-container>\n\n<ng-container *ngIf=\"viewName==='reviewandsubmitview' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <!-- <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a (click)=\"gotoReviewDetailsPage($event)\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n </div> -->\n <div class=\"govuk-warning-text\">\n <h1 class=\"heading-large\">Check your answers</h1>\n </div>\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Payment reference</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.payment_reference}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Reason for return</td>\n <td class=\"govuk-table__cell\">{{refundreason}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund reference</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.refund_reference}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Reason for refund</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.reason?.trim()}}\n <a (click)=\"gotoRefundReasonPage(refundlist?.reason)\" *ngIf=\"refundlist?.reason !== 'Retrospective remission' && refundlist?.reason !== 'Overpayment'\"\n class=\"govuk-link right\">Change</a>\n </td>\n\n <!-- <td class=\"govuk-table__cell\">{{ refundlist?.reason }}</td>\n <a (click)=\"gotoRefundReasonPage()\" class=\"govuk-link right\">Change</a> -->\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund amount</td>\n <td class=\"govuk-table__cell\">\u00A3{{ changedAmount ? changedAmount : refundlist?.amount | number:'.2' }}\n <a (click)=\"gotoAmountPage()\" *ngIf=\"refundlist?.reason !== 'Overpayment'\"\n class=\"govuk-link right\">Change</a>\n </td>\n\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send to</td>\n <td class=\"govuk-table__cell\">{{orderParty}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send via</td>\n <td class=\"govuk-table__cell whitespace-inherit\">\n <div *ngIf=\"refundlist?.contact_details?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{refundlist?.contact_details?.email?.trim()}}\n </div>\n <div *ngIf=\"refundlist?.contact_details?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{refundlist?.contact_details?.address_line?.trim()}} {{refundlist?.contact_details?.city?.trim()}} {{refundlist?.contact_details?.county?.trim()}} {{refundlist?.contact_details?.country?.trim()}} {{refundlist?.contact_details?.postal_code?.trim()}}\n </div> \n <a class=\"govuk-link\" href=\"Javascript:void(0)\" *ngIf=\"refundlist?.contact_details !=null\" class=\"govuk-link right\" (click)=\"gotoEditDetailsPage(refundlist?.contact_details, 'reviewandsubmitEditview')\">\n Change\n </a>\n </td>\n </tr> \n\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Notification</td>\n <td class=\"govuk-table__cell\">{{templateInstructionType}} \n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </td>\n </tr>\n </table>\n <app-notification-preview *ngIf=\"notificationPreview\" \n [paymentReference]=\"refundlist?.payment_reference\"\n [payment]=\"paymentObj\" \n [contactDetails]=\"refundlist?.contact_details\"\n [refundReason]=\"refundlist?.reason_code\"\n [refundAmount]=\"changedAmount ? changedAmount : refundlist?.amount\"\n [refundReference]=\"refundlist?.refund_reference\"></app-notification-preview>\n\n <div class=\"govuk-button-group\">\n <button (click)=\"gotoReviewDetailsPage($event)\" class=\"govuk-button govuk-button--secondary\"> Previous</button>\n <button [disabled]=\"isRefundBtnDisabled\" (click)=\"gotoReviewRefundConfirmationPage()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit refund\n </button>\n</div>\n<p><a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">Cancel</a></p>\n <!-- <div class=\"govuk-button-group\">\n <button [disabled]=\"isRefundBtnDisabled\" (click)=\"gotoReviewRefundConfirmationPage()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit refund\n </button>\n </div> -->\n <!-- <p>\n <a (click)=\"loadRefundListPage()\" href=\"\" class=\"cancelbtn\">Cancel</a>\n </p> -->\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'reviewandsubmitEditview' && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSPAGE'> \n <h1 class=\"govuk-heading-l\">Edit contact details</h1>\n <h2 class=\"govuk-heading-m govuk-font19px\">Case reference: {{ccdCaseNumber | ccdHyphens }}</h2>\n <span class=\"govuk-hint font-size-19px\">\n Refund reference: {{ refundlist?.refund_reference}}\n </span>\n <ccpay-contact-details\n [isEditOperationInRefundList] = isEditDetailsClicked\n [addressObj] = notification\n (assignContactDetailsInFefundsList)=\"getContactDetailsForRefundList($event)\"\n (redirectToIssueRefund)=\"gotoRefundReviewAndSubmitViewPageCancelBtnClicked($event)\" ></ccpay-contact-details>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'issuerefundpage1' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\" [isFromRefundStatusPage] = \"true\"\n [changeRefundReason]= \"changeRefundReason\" [ccdCaseNumber]=\"ccdCaseNumber\" (refundListReason)=\"getRefundListReason($event)\" [refundPaymentReference]= \"refundlist?.payment_reference\" ></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'processretroremissonpage' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\"\n [ccdCaseNumber]=\"ccdCaseNumber\" [refundPaymentReference]= \"refundlist?.payment_reference\" (refundListAmount)=\"getRefundAmount($event)\"></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'issuerefund' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\" [isFromServiceRequestPage] = \"true\"\n [ccdCaseNumber]=\"ccdCaseNumber\" [refundPaymentReference]= \"refundlist?.payment_reference\" [isFromRefundStatusPage]=\"true\" (refundListAmount)=\"getRefundAmount($event)\" (refundFees)=\"getRefundFees($event)\"></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'reviewrefundconfirmationpage' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div class=\"govuk-grid-row pagesize\">\n <div>\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel_refund_title\">\n Refund submitted\n </h1>\n\n <div class=\"govuk-panel__body\">\n <p class=\"govuk-body white\"><strong class=\"white\">Refund reference:{{refundReference}} </strong></p>\n </div>\n\n </div>\n\n <h2 class=\"govuk-heading-l\">What happens next</h2>\n <p class=\"govuk-body\">\n A refund request for {{refundAmount| currency:'GBP':'symbol-narrow':'1.2-2'}} has been created and will be passed to a team leader to approve.\n </p>\n\n <p class=\"govuk-body\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\">Return to case</a>\n </p>\n </div>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isResendOperationSuccess\">\n <div class=\"govuk-grid-row pagesize\">\n <div>\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel_refund_title\">\n Notification sent\n </h1>\n\n <div class=\"govuk-panel__body\">\n <p class=\"govuk-body white\"><strong class=\"white\">Refund reference: {{ refundlist?.refund_reference}} </strong></p>\n </div>\n\n </div>\n <p class=\"govuk-body\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\">Return to case</a>\n </p>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"viewName === 'refundEditView' && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSPAGE'> \n <h1 class=\"govuk-heading-l\">Edit contact details</h1>\n <h2 class=\"govuk-heading-m govuk-font19px\">Case reference: {{ccdCaseNumber | ccdHyphens }}</h2>\n <span class=\"govuk-hint font-size-19px\">\n Refund reference: {{ refundlist?.refund_reference}}\n </span>\n <ccpay-contact-details\n [isEditOperationInRefundList] = isEditDetailsClicked\n [addressObj] = notification\n (assignContactDetailsInFefundsList)=\"getContactDetails($event)\"\n (redirectToIssueRefund)=\"gotoRefundViewPageCancelBtnClicked($event)\" ></ccpay-contact-details>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n<ng-container *ngIf=\"viewName === 'revieweditdetailsconfirmationpage' && !isResendOperationSuccess && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSCHECKANDANSWERPAGE'> \n <h1 class=\"govuk-heading-l\">Check your answers</h1>\n <dl class=\"govuk-summary-list\">\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Refund reference\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ refundlist?.refund_reference}}\n </dd>\n <span class=\"govuk-summary-list__actions\"></span> \n </div>\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Send via\n <br/>\n </dt>\n <dd class=\"govuk-summary-list__value\">\n <div *ngIf=\"addressDetails?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{addressDetails?.email?.trim()}}\n </div>\n <div *ngIf=\"addressDetails?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{addressDetails?.address_line?.trim()}} {{addressDetails?.city?.trim()}} {{addressDetails?.county?.trim()}} {{addressDetails?.country?.trim()}} {{addressDetails?.postal_code?.trim()}}\n </div> \n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a class=\"govuk-link\" href=\"Javascript:void(0)\" (click)=\"gotoEditDetailsPage(addressDetails, 'refundEditView')\">\n Change\n </a>\n </dd>\n </div>\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Notification\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{templateInstructionType}} \n </dd>\n <span class=\"govuk-summary-list__actions\">\n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </span> \n </div>\n </dl>\n\n <app-notification-preview *ngIf=\"notificationPreview\" [paymentReference]=\"refundlist?.payment_reference\"\n [payment]=\"paymentObj\"\n [contactDetails]=\"addressDetails\"\n [refundReason]=\"refundlist?.reason_code\"\n [refundAmount]=\"refundlist?.amount\"\n [refundReference]=\"refundlist?.refund_reference\">\n </app-notification-preview>\n\n\n\n <div class=\"govuk-button-group\">\n <button (click)=\"gotoEditDetailsPage(addressDetails, 'refundEditView')\" class=\"govuk-button govuk-button--secondary\"> Previous</button>\n <button (click)=\"submitEditDetail()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Send notification\n </button>\n </div>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n", styles: [".right{float:right!important}.button{margin-bottom:3em;font-size:19px}.cancelbtn{font-size:19px;font-weight:400}.btnmargin{margin-bottom:2em}.govuk-button--secondary{background-color:#dee0e2;box-shadow:0 2px #858688;color:#0b0c0c;margin-right:.5em}.govuk-warning-text__text,.govuk-label--s,.refund__symbol{font-size:19px;font-weight:400}.inline-error-class{outline:3px solid #a71414;outline-offset:0}.inline-error-message{color:#a71414;font-weight:700;margin-top:10px;font-size:20px}.govuk-button,.govuk-link{margin-right:1em;font-size:19px;font-weight:200}.govuk-button-group{padding-top:2em}.heading-medium{margin-top:.875em}.heading-large{margin-top:.25em}.govuk-panel--confirmation{color:#fff;background:#00703c}.govuk-heading-l{font-size:36px}.govuk-heading-m{font-size:24px}.govuk-panel__title{font-size:5rem}.govuk-panel_refund_title{margin-top:0;margin-bottom:30px;color:#fff;font-family:nta,Arial,sans-serif;-webkit-font-smoothing:antialiased;font-weight:700;font-size:48px}.govuk-body-m,.govuk-body{font-size:2.1875rem}.govuk-input--width-10{max-width:36ex}.col-14{width:14%!important}.col-10{width:10%!important}.col-11{width:11%!important}.col-18{width:18%!important}.col-21{width:21%!important}.col-9{width:9%!important}.col-40{width:40%!important}.col-15{width:15%!important}.col-16{width:16%!important}.col-25{width:25%!important}.col-24{width:24%!important}.govuk-error-summary__title{font-size:24px!important}.govuk-error-summary__body{font-size:19px!important}.font-size-19px{font-size:19px}.white{color:#fff}.pagesize{margin:2em;width:97%}.govuk-link{cursor:pointer}.contactDetails-width{width:70%}.whitespace-inherit{white-space:inherit!important}.hmcts-currency-input__symbol{font-family:nta,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:initial;position:absolute;font-weight:200;padding:8px 10px;height:40px;box-sizing:border-box;background-color:#dee0e2;border:2px solid #0b0c0c}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i6.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i6.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i0.forwardRef(() => i6.DecimalPipe), name: "number" }, { kind: "pipe", type: i0.forwardRef(() => i6.CurrencyPipe), name: "currency" }, { kind: "pipe", type: i0.forwardRef(() => i6.DatePipe), name: "date" }, { kind: "component", type: i0.forwardRef(() => NotificationPreviewComponent), selector: "app-notification-preview", inputs: ["payment", "contactDetails", "refundReason", "refundAmount", "paymentReference", "refundReference", "previewJourney", "notificationSent"], outputs: ["notificationPreviewEvent"] }, { kind: "component", type: i0.forwardRef(() => ContactDetailsComponent), selector: "ccpay-contact-details", inputs: ["isEditOperation", "isEditOperationInRefundList", "addressObj"], outputs: ["assignContactDetails", "assignContactDetailsInFefundsList", "redirectToIssueRefund"] }, { kind: "component", type: i0.forwardRef(() => AddRemissionComponent), selector: "ccpay-add-remission", inputs: ["fee", "fees", "payment", "remission", "ccdCaseNumber", "caseType", "viewCompStatus", "paymentGroupRef", "isTurnOff", "isRefundRemission", "isStrategicFixEnable", "paidAmount", "isFromRefundListPage", "isFromPaymentDetailPage", "isFromServiceRequestPage", "isFullyRefund", "feeamount", "refundPaymentReference", "isFromRefundStatusPage", "changeRefundReason", "isServiceRequest", "LOGGEDINUSERROLES", "orderDetail", "orderRef", "orderStatus", "orderParty", "orderCreated", "orderCCDEvent", "takepayment", "orderFeesTotal", "orderTotalPayments", "orderRemissionTotal"], outputs: ["cancelRemission", "refundListReason", "refundListAmount", "refundFees"] }, { kind: "pipe", type: i0.forwardRef(() => CcdHyphensPipe), name: "ccdHyphens" }] });
426
426
  }
427
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: RefundStatusComponent, decorators: [{
427
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RefundStatusComponent, decorators: [{
428
428
  type: Component,
429
429
  args: [{ selector: 'ccpay-refund-status', imports: [
430
430
  CommonModule,
@@ -450,4 +450,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
450
450
  }], orderParty: [{
451
451
  type: Input
452
452
  }] } });
453
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmdW5kLXN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXltZW50LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcmVmdW5kLXN0YXR1cy9yZWZ1bmQtc3RhdHVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9yZWZ1bmQtc3RhdHVzL3JlZnVuZC1zdGF0dXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFJdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxj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S0FBSzt1QkFBQyxVQUFVO2dCQUNSLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBJbmplY3QsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlZnVuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVmdW5kcy9yZWZ1bmRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElSZWZ1bmRMaXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kTGlzdCc7XG5pbXBvcnQgeyBJUmVmdW5kc05vdGlmaWNhdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRzTm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgeyBPcmRlcnNsaXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29yZGVyc2xpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBJUHV0Tm90aWZpY2F0aW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QnO1xuaW1wb3J0IHsgSVJlZnVuZENvbnRhY3REZXRhaWxzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kQ29udGFjdERldGFpbHMnO1xuaW1wb3J0IHsgSVJlZnVuZFN0YXR1cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZFN0YXR1cyc7XG5pbXBvcnQgeyBJUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0JztcbmltcG9ydCB0eXBlIHsgUGF5bWVudExpYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYXltZW50Vmlld1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgSVBheW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lQYXltZW50JztcbmltcG9ydCB7IElGZWUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lGZWUnO1xuaW1wb3J0IHsgSVJlZnVuZEZlZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZEZlZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi1wcmV2aWV3L25vdGlmaWNhdGlvbi1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250YWN0RGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbnRhY3QtZGV0YWlscy9jb250YWN0LWRldGFpbHMuY29tcG9uZW50JztcbmltcG9ydCB7IEFkZFJlbWlzc2lvbkNvbXBvbmVudCB9IGZyb20gJy4uL2FkZC1yZW1pc3Npb24vYWRkLXJlbWlzc2lvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2NkSHlwaGVuc1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9jY2QtaHlwaGVucy5waXBlJztcbmltcG9ydCB7IENhcGl0YWxpemVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY2FwaXRhbGl6ZS5waXBlJztcbnR5cGUgUGF5bWVudExpYkFsaWFzID0gUGF5bWVudExpYkNvbXBvbmVudDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktcmVmdW5kLXN0YXR1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWZ1bmQtc3RhdHVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVmdW5kLXN0YXR1cy5jb21wb25lbnQuY3NzJ10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgZm9yd2FyZFJlZigoKSA9PiBOb3RpZmljYXRpb25QcmV2aWV3Q29tcG9uZW50KSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IENvbnRhY3REZXRhaWxzQ29tcG9uZW50KSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IEFkZFJlbWlzc2lvbkNvbXBvbmVudCksXG4gICAgQ2NkSHlwaGVuc1BpcGUsXG4gICAgQ2FwaXRhbGl6ZVBpcGUsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUmVmdW5kU3RhdHVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCdMT0dHRURJTlVTRVJST0xFUycpIExPR0dFRElOVVNFUlJPTEVTOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoJ0FQSV9ST09UJykgQVBJX1JPT1Q6IHN0cmluZztcbiAgQElucHV0KCkgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBASW5wdXQoKSBpc1R1cm5PZmY6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG9yZGVyUGFydHk6IHN0cmluZztcbiAgcmVmdW5kU3RhdHVzRm9ybTogRm9ybUdyb3VwO1xuICBzZWxlY3RlZFJlZnVuZFJlYXNvbjogc3RyaW5nO1xuICByZWplY3RlZFJlZnVuZExpc3Q6IElSZWZ1bmRMaXN0W10gPSBbXTtcbiAgbm90aWZpY2F0aW9uTGlzdDogYW55O1xuICBub3RpZmljYXRpb246IGFueTtcbiAgYXBwcm92YWxTdGF0dXMgPSAnU2VudCBmb3IgYXBwcm92YWwnO1xuICByZWplY3RTdGF0dXMgPSAnVXBkYXRlIHJlcXVpcmVkJztcbiAgZXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgdmlld05hbWU6IHN0cmluZztcbiAgcmVmdW5kUmVhc29uOiBzdHJpbmc7XG4gIHJlZnVuZGxpc3Q6IElSZWZ1bmRMaXN0O1xuICBic1BheW1lbnREY25OdW1iZXI6IHN0cmluZztcbiAgaXNDYWxsRnJvbVJlZnVuZExpc3Q6IGJvb2xlYW47XG4gIHJlZnVuZEJ1dHRvblN0YXRlOiBzdHJpbmcgPSAnJztcbiAgaXNBbW91bnRFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1JlYXNvbkVtcHR5OiBib29sZWFuID0gZmFsc2U7XG4gIGFtb3VudEhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVtaXNzaW9uTGVzc1RoYW5GZWVFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICByZWZ1bmRIYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICByZWZ1bmRSZWFzb25zOiBhbnlbXSA9IFtdO1xuICByZWZ1bmRTdGF0dXNIaXN0b3JpZXM6IElSZWZ1bmRTdGF0dXNbXTtcbiAgcmVmdW5kTm90aWZpY2F0aW9uczogSVJlZnVuZFN0YXR1c1tdO1xuICBpc1Jlc2VuZE9wZXJhdGlvblN1Y2Nlc3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNFZGl0RGV0YWlsc0NsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNFZGl0QWRkcmVzc0RlYXRpbHNDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGFkZHJlc3NEZXRhaWxzOiBJUmVmdW5kQ29udGFjdERldGFpbHM7XG4gIHJlZnVuZFJlZmVyZW5jZTogc3RyaW5nO1xuICByZWZ1bmRBbW91bnQ6IHN0cmluZztcbiAgcmVmdW5kQ29kZTogc3RyaW5nO1xuICBpc1JlZnVuZEJ0bkRpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNGcm9tUGF5QnViYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIG9sZFJlZnVuZFJlYXNvbjogc3RyaW5nO1xuICByZWZ1bmRyZWFzb246IHN0cmluZztcbiAgbmF2aWdhdGlvbnBhZ2U6IHN0cmluZztcbiAgaXNMYXN0VXBkYXRlZEJ5Q3VycmVudFVzZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBpc1Byb2Nlc3NSZWZ1bmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2hhbmdlZEFtb3VudDogbnVtYmVyO1xuICBpc1JlbWlzc2lvbnNNYXRjaDogYm9vbGVhbjtcbiAgcGF5bWVudDogSVBheW1lbnQ7XG4gIGNoYW5nZVJlZnVuZFJlYXNvbjogc3RyaW5nO1xuICBmZWVzOiBJRmVlW107XG4gIHJlZnVuZEZlZXM6IElSZWZ1bmRGZWVbXTtcbiAgcGF5bWVudE9iajogSVBheW1lbnQ7XG4gIHRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlOiBzdHJpbmc7XG4gIG5vdGlmaWNhdGlvblNlbnRWaWV3SW5kZXg6IG51bWJlciA9IC0xO1xuICBub3RpZmljYXRpb25QcmV2aWV3OiBib29sZWFuID0gZmFsc2U7XG4gIG5vdGlmaWNhdGlvblNlbnRWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gIGFsbG93ZWRSb2xlc1RvQWNjZXNzUmVmdW5kID0gWydwYXltZW50cy1yZWZ1bmQtYXBwcm92ZXInLCAncGF5bWVudHMtcmVmdW5kJywgJ3BheW1lbnRzJ107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWZ1bmRTZXJ2aWNlOiBSZWZ1bmRzU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgQEluamVjdCgnUEFZTUVOVF9MSUInKSBwcml2YXRlIHBheW1lbnRMaWJDb21wb25lbnQ6IFBheW1lbnRMaWJBbGlhcyxcbiAgICBwcml2YXRlIE9yZGVyc2xpc3RTZXJ2aWNlOiBPcmRlcnNsaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdBbGwnKTtcbiAgICB0aGlzLmJzUGF5bWVudERjbk51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5ic3BheW1lbnRkY247XG4gICAgdGhpcy5pc0NhbGxGcm9tUmVmdW5kTGlzdCA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0NhbGxGcm9tUmVmdW5kTGlzdDtcbiAgICBpZiAodGhpcy5BUElfUk9PVCA9PSAnYXBpL3BheW1lbnQtaGlzdG9yeScpIHtcbiAgICAgIHRoaXMuaXNGcm9tUGF5QnViYmxlID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1JlZnVuZFN0YXR1c1ZpZXcpIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAncmVmdW5kdmlldyc7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldFJlZnVuZFZpZXcoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMucmVmdW5kbGlzdCA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRDQ0RDYXNlTnVtYmVyZm9yUmVmdW5kLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5jY2RDYXNlTnVtYmVyID0gZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAncmVmdW5kc3RhdHVzbGlzdCc7XG4gICAgICB0aGlzLnJlZnVuZFNlcnZpY2UuZ2V0UmVmdW5kU3RhdHVzTGlzdCh0aGlzLmNjZENhc2VOdW1iZXIpLnN1YnNjcmliZShcbiAgICAgICAgcmVmdW5kTGlzdCA9PiB7XG4gICAgICAgICAgdGhpcy5yZWplY3RlZFJlZnVuZExpc3QgPSByZWZ1bmRMaXN0WydyZWZ1bmRfbGlzdCddO1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZywgXCJcIik7XG4gICAgICAgIH07XG4gICAgfVxuXG5cbiAgICB0aGlzLnJlZnVuZFN0YXR1c0Zvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGFtb3VudDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05XSsoXFwuWzAtOV17MSwyfSk/JCcpXG4gICAgICBdKSksXG4gICAgICByZWZ1bmRSZWFzb246IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkpLFxuICAgICAgcmVhc29uOiBuZXcgRm9ybUNvbnRyb2woKVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucmVmdW5kbGlzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmdldFJlZnVuZHNOb3RpZmljYXRpb24oKTtcbiAgICAgIHRoaXMuZ2V0UmVmdW5kc1N0YXR1c0hpc3RvcnlMaXN0KCk7XG5cbiAgICAgIGlmICh0aGlzLkxPR0dFRElOVVNFUlJPTEVTLnNvbWUoaSA9PiBpLmluY2x1ZGVzKCdwYXltZW50cy1yZWZ1bmQtYXBwcm92ZXInKSkpIHtcbiAgICAgICAgdGhpcy5pc1Byb2Nlc3NSZWZ1bmQgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlZnVuZEJ1dHRvblN0YXRlID0gdGhpcy5yZWZ1bmRsaXN0LnJlZnVuZF9zdGF0dXMubmFtZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5MT0dHRURJTlVTRVJST0xFUy5zb21lKGkgPT4gaS5pbmNsdWRlcygncGF5bWVudHMtcmVmdW5kJykpKSB7XG4gICAgICAgIHRoaXMuaXNQcm9jZXNzUmVmdW5kID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVmdW5kQnV0dG9uU3RhdGUgPSB0aGlzLnJlZnVuZGxpc3QucmVmdW5kX3N0YXR1cy5uYW1lO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgZ2V0UmVmdW5kc1N0YXR1c0hpc3RvcnlMaXN0KCkge1xuICAgIGlmICh0aGlzLnJlZnVuZGxpc3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yZWZ1bmRTZXJ2aWNlLmdldFJlZnVuZFN0YXR1c0hpc3RvcnkodGhpcy5yZWZ1bmRsaXN0LnJlZnVuZF9yZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgICAgc3RhdHVzSGlzdG9yeUxpc3QgPT4ge1xuICAgICAgICAgIHRoaXMucmVmdW5kU3RhdHVzSGlzdG9yaWVzID0gc3RhdHVzSGlzdG9yeUxpc3Quc3RhdHVzX2hpc3RvcnlfZHRvX2xpc3Q7XG4gICAgICAgICAgdGhpcy5pc0xhc3RVcGRhdGVkQnlDdXJyZW50VXNlciA9IHN0YXR1c0hpc3RvcnlMaXN0Lmxhc3RfdXBkYXRlZF9ieV9jdXJyZW50X3VzZXI7XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvci5yZXBsYWNlKC9cIi9nLCBcIlwiKTtcbiAgICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZ1bmRzTm90aWZpY2F0aW9uKCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5nZXRSZWZ1bmROb3RpZmljYXRpb24odGhpcy5yZWZ1bmRsaXN0LnJlZnVuZF9yZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgIHJlZnVuZHNOb3RpZmljYXRpb24gPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxpc3QgPSByZWZ1bmRzTm90aWZpY2F0aW9uWydub3RpZmljYXRpb25zJ107XG4gICAgICB9XG4gICAgKSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZywgXCJcIik7XG4gICAgICB9O1xuICB9XG5cbiAgZ29Ub1JlZnVuZFZpZXcocmVmdW5kbGlzdDogSVJlZnVuZExpc3QsIG5hdmlnYXRpb25wYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldFJlZnVuZFZpZXcocmVmdW5kbGlzdCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRDQ0RDYXNlTnVtYmVyKHRoaXMuY2NkQ2FzZU51bWJlcik7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3JlZnVuZHN0YXR1c2xpc3QnO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1JlZnVuZFN0YXR1c1ZpZXcgPSB0cnVlO1xuICAgIHRoaXMucmVmdW5kbGlzdCA9IHJlZnVuZGxpc3Q7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRuYXZpZ2F0aW9uUGFnZShuYXZpZ2F0aW9ucGFnZSk7XG4gIH1cblxuICBsb2FkQ2FzZVRyYW5zYWN0aW9uUGFnZSgpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG5hdmlnYXRpb25QYWdlKCdjYXNldHJhbnNhY3Rpb25zJyk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UoZmFsc2UpO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1JlZnVuZFN0YXR1c1ZpZXcgPSBmYWxzZTtcbiAgfVxuXG4gIGxvYWRSZWZ1bmRMaXN0UGFnZSgpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG5hdmlnYXRpb25QYWdlVmFsdWUoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMubmF2aWdhdGlvbnBhZ2UgPSBkYXRhKTtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9ucGFnZSA9PT0gJ2Nhc2V0cmFuc2FjdGlvbnMnKSB7XG4gICAgICB0aGlzLmxvYWRDYXNlVHJhbnNhY3Rpb25QYWdlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdyZWZ1bmQtbGlzdCc7XG4gICAgfVxuICB9XG5cbiAgZ290b1Jldmlld0RldGFpbHNQYWdlKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZmFsc2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzUmVmdW5kU3RhdHVzVmlldyA9IHRydWU7XG4gICAgdGhpcy5uZ09uSW5pdCgpO1xuICB9XG5cbiAgZ290b1Jldmlld0FuZFJlU3VibWl0UGFnZSgpIHtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICAgIHRoaXMuZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50T2JqLCB0aGlzLnJlZnVuZGxpc3QucGF5bWVudF9yZWZlcmVuY2UpO1xuICAgIHRoaXMub2xkUmVmdW5kUmVhc29uID0gdGhpcy5yZWZ1bmRsaXN0LnJlYXNvbjtcbiAgICB0aGlzLmNoYW5nZWRBbW91bnQgPSB0aGlzLnJlZnVuZGxpc3QuYW1vdW50O1xuICAgIHRoaXMucmVmdW5kcmVhc29uID0gdGhpcy5yZWZ1bmRTdGF0dXNIaXN0b3JpZXMuZmlsdGVyKGRhdGEgPT4gZGF0YS5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3VwZGF0ZSByZXF1aXJlZCcpWzBdLm5vdGVzO1xuICAgIHRoaXMucmVmdW5kU2VydmljZS5nZXRSZWZ1bmRSZWFzb25zKCkuc3Vic2NyaWJlKFxuICAgICAgcmVmdW5kUmVhc29ucyA9PiB7XG4gICAgICAgIHRoaXMucmVmdW5kUmVhc29ucyA9IHJlZnVuZFJlYXNvbnM7XG4gICAgICB9KTtcbiAgfVxuICBnb3RvUmVmdW5kUmVhc29uUGFnZShyZWZ1bmRSZWFzb246IHN0cmluZykge1xuICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5SRUZVTkRMSVNUID0gXCJ0cnVlXCI7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVJlZnVuZFN0YXR1c1BhZ2UgPSB0cnVlO1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVI7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZVJlZnVuZFJlYXNvbiA9IHJlZnVuZFJlYXNvbjtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ2lzc3VlcmVmdW5kcGFnZTEnO1xuICB9XG5cbiAgZ290b0Ftb3VudFBhZ2UoKSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuUkVGVU5ETElTVCA9IFwidHJ1ZVwiO1xuICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVI7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVJlZnVuZFN0YXR1c1BhZ2UgPSB0cnVlO1xuICAgIGlmICh0aGlzLnJlZnVuZGxpc3QucmVhc29uID09ICdSZXRyb3NwZWN0aXZlIHJlbWlzc2lvbicpIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAncHJvY2Vzc3JldHJvcmVtaXNzb25wYWdlJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3TmFtZSA9ICdpc3N1ZXJlZnVuZCc7XG4gICAgfVxuICB9XG5cbiAgZ29Ub1Jldmlld0FuZFN1Ym1pdFZpZXcoKSB7XG4gICAgY29uc3QgcmVtaXNzaW9uY3RybHMgPSB0aGlzLnJlZnVuZFN0YXR1c0Zvcm0uY29udHJvbHNcbiAgICBpZiAodGhpcy5yZWZ1bmRTdGF0dXNGb3JtLmRpcnR5KSB7XG4gICAgICBpZiAocmVtaXNzaW9uY3RybHNbJ2Ftb3VudCddLnZhbHVlID09ICcnKSB7XG4gICAgICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFt0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ2Ftb3VudCcpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAocmVtaXNzaW9uY3RybHNbJ2Ftb3VudCddLnZhbHVlICE9ICcnICYmIHJlbWlzc2lvbmN0cmxzWydhbW91bnQnXS5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFtmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlXSwgJ2Ftb3VudCcpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAocmVtaXNzaW9uY3RybHNbJ3JlYXNvbiddLnZhbHVlID09ICcnKSB7XG4gICAgICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlXSwgJ3JlYXNvbicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZWZ1bmRsaXN0LnJlYXNvbiA9IHJlbWlzc2lvbmN0cmxzWydyZWFzb24nXS52YWx1ZTtcbiAgICAgICAgdGhpcy52aWV3TmFtZSA9ICdyZXZpZXdhbmRzdWJtaXR2aWV3JztcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIHJlc2V0UmVtaXNzaW9uRm9ybSh2YWwsIGZpZWxkKSB7XG4gICAgaWYgKGZpZWxkID09PSAnQWxsJykge1xuICAgICAgdGhpcy5pc0Ftb3VudEVtcHR5ID0gdmFsWzBdO1xuICAgICAgdGhpcy5hbW91bnRIYXNFcnJvciA9IHZhbFsxXTtcbiAgICAgIHRoaXMuaXNSZW1pc3Npb25MZXNzVGhhbkZlZUVycm9yID0gdmFsWzJdO1xuICAgICAgdGhpcy5pc1JlYXNvbkVtcHR5ID0gdmFsWzNdO1xuICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdhbW91bnQnIHx8IGZpZWxkID09PSAnQWxsJykge1xuICAgICAgdGhpcy5pc0Ftb3VudEVtcHR5ID0gdmFsWzBdO1xuICAgICAgdGhpcy5hbW91bnRIYXNFcnJvciA9IHZhbFsxXTtcbiAgICAgIHRoaXMuaXNSZW1pc3Npb25MZXNzVGhhbkZlZUVycm9yID0gdmFsWzJdO1xuICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdyZWFzb24nIHx8IGZpZWxkID09PSAnQWxsJykge1xuICAgICAgdGhpcy5pc1JlYXNvbkVtcHR5ID0gdmFsWzNdO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJhZGlvQnV0dG9uKGtleSwgdmFsdWUpIHtcbiAgICB0aGlzLnJlZnVuZEhhc0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZFJlZnVuZFJlYXNvbiA9IGtleTtcbiAgICBpZiAoa2V5ID09PSAnT3RoZXInKSB7XG4gICAgICB0aGlzLnJlZnVuZEhhc0Vycm9yID0gZmFsc2U7XG4gICAgICB0aGlzLnJlZnVuZFJlYXNvbiA9IGtleTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZ1bmRMaXN0UmVhc29uKHJlZnVuZExpc3RSZWFzb246IGFueSkge1xuICAgIGlmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUmVmdW5kU3RhdHVzUGFnZSAmJiAhdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzY2FuY2VsQ2xpY2tlZCkge1xuICAgICAgaWYgKHJlZnVuZExpc3RSZWFzb24ucmVhc29uICE9IHVuZGVmaW5lZCAmJiByZWZ1bmRMaXN0UmVhc29uLnJlYXNvbiAhPSBudWxsICYmIHJlZnVuZExpc3RSZWFzb24ucmVhc29uICE9IHRoaXMucmVmdW5kbGlzdC5yZWFzb24pIHtcbiAgICAgICAgdGhpcy5yZWZ1bmRsaXN0LnJlYXNvbiA9IHJlZnVuZExpc3RSZWFzb24ucmVhc29uO1xuICAgICAgICB0aGlzLnJlZnVuZGxpc3QucmVhc29uX2NvZGUgPSByZWZ1bmRMaXN0UmVhc29uLmNvZGUuc3BsaXQoJy0nKVswXS50cmltKCk7XG4gICAgICAgIHRoaXMucmVmdW5kbGlzdC5jb2RlID0gcmVmdW5kTGlzdFJlYXNvbi5jb2RlO1xuICAgICAgICB0aGlzLnJlZnVuZENvZGUgPSByZWZ1bmRMaXN0UmVhc29uLmNvZGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMudmlld05hbWUgPSAncmV2aWV3YW5kc3VibWl0dmlldyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNDRF9DQVNFX05VTUJFUiA9IHRoaXMuY2NkQ2FzZU51bWJlcjtcbiAgfVxuXG4gIGdldFJlZnVuZEFtb3VudChhbW91bnQ6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUmVmdW5kU3RhdHVzUGFnZSAmJiAhdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzY2FuY2VsQ2xpY2tlZCkge1xuICAgICAgaWYgKGFtb3VudCA+IDApIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VkQW1vdW50ID0gYW1vdW50O1xuICAgICAgICAvLyB0aGlzLnJlZnVuZGxpc3QuYW1vdW50ID0gYW1vdW50O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzUmVmdW5kQnRuRGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVIgPSB0aGlzLmNjZENhc2VOdW1iZXI7XG4gIH1cblxuICBnZXRSZWZ1bmRGZWVzKGZlZXM6IElGZWVbXSkge1xuICAgIHRoaXMuZmVlcyA9IGZlZXM7XG4gICAgdGhpcy5yZWZ1bmRGZWVzID0gdGhpcy5mZWVzLm1hcChvYmogPT4gKHtcbiAgICAgIGZlZV9pZDogb2JqLmlkLFxuICAgICAgY29kZTogb2JqLmNvZGUsXG4gICAgICB2ZXJzaW9uOiBvYmoudmVyc2lvbixcbiAgICAgIHZvbHVtZTogb2JqLnVwZGF0ZWRfdm9sdW1lID8gb2JqLnVwZGF0ZWRfdm9sdW1lIDogb2JqLnZvbHVtZSxcbiAgICAgIHJlZnVuZF9hbW91bnQ6IG9iai5yZWZ1bmRfYW1vdW50XG4gICAgfSkpO1xuICB9XG5cbiAgZ290b1Jldmlld1JlZnVuZENvbmZpcm1hdGlvblBhZ2UoKSB7XG4gICAgLy8gaWYgKHRoaXMub2xkUmVmdW5kUmVhc29uID09PSB0aGlzLnJlZnVuZGxpc3QucmVhc29uKSB7XG4gICAgLy8gICB0aGlzLnJlZnVuZENvZGUgPSAnJztcbiAgICAvLyB9XG4gICAgaWYgKHRoaXMucmVmdW5kRmVlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnJlZnVuZEZlZXMgPSB0aGlzLnJlZnVuZGxpc3RbJ3JlZnVuZF9mZWVzJ107XG4gICAgfVxuICAgIGlmICh0aGlzLnJlZnVuZGxpc3QucmVhc29uID09ICdSZXRyb3NwZWN0aXZlIHJlbWlzc2lvbicpIHtcbiAgICAgIHRoaXMucmVmdW5kRmVlc1swXS5yZWZ1bmRfYW1vdW50ID0gdGhpcy5jaGFuZ2VkQW1vdW50O1xuICAgIH1cbiAgICB0aGlzLnJlZnVuZENvZGUgPSB0aGlzLnJlZnVuZGxpc3QuY29kZTtcbiAgICBjb25zdCByZXN1Ym1pdFJlcXVlc3QgPSBuZXcgSVJlc3VibWl0UmVmdW5kUmVxdWVzdCh0aGlzLnJlZnVuZENvZGUsIHRoaXMuY2hhbmdlZEFtb3VudCwgdGhpcy5yZWZ1bmRsaXN0LmNvbnRhY3RfZGV0YWlscywgdGhpcy5yZWZ1bmRGZWVzKTtcbiAgICB0aGlzLnJlZnVuZFNlcnZpY2UucGF0Y2hSZXN1Ym1pdFJlZnVuZChyZXN1Ym1pdFJlcXVlc3QsIHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgIGlmIChKU09OLnBhcnNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgIHRoaXMucmVmdW5kUmVmZXJlbmNlID0gSlNPTi5wYXJzZShyZXNwb25zZSkucmVmdW5kX3JlZmVyZW5jZTtcbiAgICAgICAgICB0aGlzLnJlZnVuZEFtb3VudCA9IEpTT04ucGFyc2UocmVzcG9uc2UpLnJlZnVuZF9hbW91bnQ7XG4gICAgICAgICAgdGhpcy52aWV3TmFtZSA9ICdyZXZpZXdyZWZ1bmRjb25maXJtYXRpb25wYWdlJztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZywgXCJcIik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdvdG9FZGl0QWRkcmVzc0RldGFpbHMobm90ZTogSVJlZnVuZHNOb3RpZmljYXRpb25zKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb24gPSBub3RlO1xuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSB0cnVlO1xuICAgIHRoaXMudmlld05hbWUgPSAncmVmdW5kRWRpdFZpZXcnXG4gIH1cbiAgZ2V0Q29udGFjdERldGFpbHMob2JqOiBJUmVmdW5kQ29udGFjdERldGFpbHMpIHtcbiAgICB0aGlzLmFkZHJlc3NEZXRhaWxzID0gb2JqO1xuICAgIHRoaXMuZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50T2JqLCB0aGlzLnJlZnVuZGxpc3QucGF5bWVudF9yZWZlcmVuY2UpO1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMudmlld05hbWUgPSAncmV2aWV3ZWRpdGRldGFpbHNjb25maXJtYXRpb25wYWdlJztcbiAgfVxuICBnZXRDb250YWN0RGV0YWlsc0ZvclJlZnVuZExpc3Qob2JqOiBJUmVmdW5kQ29udGFjdERldGFpbHMpIHtcbiAgICB0aGlzLnJlZnVuZGxpc3QuY29udGFjdF9kZXRhaWxzID0gb2JqO1xuICAgIHRoaXMuZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50T2JqLCB0aGlzLnJlZnVuZGxpc3QucGF5bWVudF9yZWZlcmVuY2UpO1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzUmVmdW5kQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICB9XG4gIGdvdG9FZGl0RGV0YWlsc1BhZ2Uobm90ZT86IGFueSwgdmlldz86IHN0cmluZykge1xuICAgIGlmIChub3RlKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IHsgY29udGFjdF9kZXRhaWxzOiBub3RlLCBub3RpZmljYXRpb25fdHlwZTogbm90ZS5ub3RpZmljYXRpb25fdHlwZSB9O1xuICAgIH1cbiAgICB0aGlzLmlzRWRpdERldGFpbHNDbGlja2VkID0gdHJ1ZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gdmlldztcbiAgfVxuICBzdWJtaXRFZGl0RGV0YWlsKCkge1xuICAgIHRoaXMuaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzID0gZmFsc2U7XG4gICAgY29uc3QgY29udGFjdERldGFpbHMgPSB0aGlzLmFkZHJlc3NEZXRhaWxzLm5vdGlmaWNhdGlvbl90eXBlID09PSAnRU1BSUwnID8gdGhpcy5hZGRyZXNzRGV0YWlscy5lbWFpbCA6XG4gICAgICB7XG4gICAgICAgIGFkZHJlc3NfbGluZTogdGhpcy5hZGRyZXNzRGV0YWlscy5hZGRyZXNzX2xpbmUsXG4gICAgICAgIGNpdHk6IHRoaXMuYWRkcmVzc0RldGFpbHMuY2l0eSxcbiAgICAgICAgY291bnR5OiB0aGlzLmFkZHJlc3NEZXRhaWxzLmNvdW50eSxcbiAgICAgICAgY291bnRyeTogdGhpcy5hZGRyZXNzRGV0YWlscy5jb3VudHJ5LFxuICAgICAgICBwb3N0YWxfY29kZTogdGhpcy5hZGRyZXNzRGV0YWlscy5wb3N0YWxfY29kZSxcbiAgICAgIH07XG4gICAgY29uc3QgcmVzZW5kUmVxdWVzdCA9IG5ldyBJUHV0Tm90aWZpY2F0aW9uUmVxdWVzdChjb250YWN0RGV0YWlscywgdGhpcy5hZGRyZXNzRGV0YWlscy5ub3RpZmljYXRpb25fdHlwZSk7XG5cbiAgICB0aGlzLnJlZnVuZFNlcnZpY2UucHV0UmVzZW5kT3JFZGl0KHJlc2VuZFJlcXVlc3QsIHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlLCB0aGlzLmFkZHJlc3NEZXRhaWxzLm5vdGlmaWNhdGlvbl90eXBlKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5pc1Jlc2VuZE9wZXJhdGlvblN1Y2Nlc3MgPSByZXNwb25zZTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLnJlcGxhY2UoL1wiL2csIFwiXCIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgcHV0UmVzZW5kKG5vdGlmaWNhdGlvbjogSVJlZnVuZHNOb3RpZmljYXRpb25zKSB7XG4gICAgdGhpcy5pc1Jlc2VuZE9wZXJhdGlvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgICBjb25zdCBjb250YWN0RGV0YWlscyA9IG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25fdHlwZSA9PT0gJ0VNQUlMJyA/IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuZW1haWwgOlxuICAgICAge1xuICAgICAgICBhZGRyZXNzX2xpbmU6IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuYWRkcmVzc19saW5lLFxuICAgICAgICBjaXR5OiBub3RpZmljYXRpb24uY29udGFjdF9kZXRhaWxzLmNpdHksXG4gICAgICAgIGNvdW50eTogbm90aWZpY2F0aW9uLmNvbnRhY3RfZGV0YWlscy5jb3VudHksXG4gICAgICAgIGNvdW50cnk6IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuY291bnRyeSxcbiAgICAgICAgcG9zdGFsX2NvZGU6IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMucG9zdGFsX2NvZGUsXG4gICAgICB9O1xuICAgIGNvbnN0IHJlc2VuZFJlcXVlc3QgPSBuZXcgSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QoY29udGFjdERldGFpbHMsIG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25fdHlwZSk7XG5cbiAgICB0aGlzLnJlZnVuZFNlcnZpY2UucHV0UmVzZW5kT3JFZGl0KHJlc2VuZFJlcXVlc3QsIHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlLCBub3RpZmljYXRpb24ubm90aWZpY2F0aW9uX3R5cGUpLnN1YnNjcmliZShcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyA9IHJlc3BvbnNlO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZywgXCJcIik7XG4gICAgICB9XG4gICAgKTtcblxuICB9XG5cbiAgZ290b1JlZnVuZFZpZXdQYWdlQ2FuY2VsQnRuQ2xpY2tlZChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3JlZnVuZHZpZXcnO1xuICB9XG5cbiAgZ290b1JlZnVuZFJldmlld0FuZFN1Ym1pdFZpZXdQYWdlQ2FuY2VsQnRuQ2xpY2tlZChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICB9XG5cbiAgZ29Ub1JlZnVuZFByb2Nlc3NDb21wb25lbnQocmVmdW5kUmVmZXJlbmNlOiBzdHJpbmcsIHJlZnVuZExpc3Q6IElSZWZ1bmRMaXN0KSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnJlZnVuZGxpc3Rzb3VyY2UgPSByZWZ1bmRMaXN0O1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5yZWZ1bmRSZWZlcmVuY2UgPSByZWZ1bmRSZWZlcmVuY2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVBheUJ1YmJsZSA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3Byb2Nlc3MtcmVmdW5kJztcbiAgfVxuXG4gIGdldFRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlKHBheW1lbnQ6IElQYXltZW50LCBwYXltZW50UmVmZXJlbmNlOiBzdHJpbmcpOiB2b2lkIHtcblxuICAgIGlmIChwYXltZW50ID09IHVuZGVmaW5lZCB8fCBwYXltZW50ID09IG51bGwgfHwgcGF5bWVudC5yZWZlcmVuY2UgIT0gcGF5bWVudFJlZmVyZW5jZSkge1xuXG4gICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRQYXltZW50RGV0YWlscyhwYXltZW50UmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICAgIHBheW1lbnQgPT4ge1xuICAgICAgICAgIHRoaXMucGF5bWVudE9iaiA9IHBheW1lbnQ7XG4gICAgICAgICAgdGhpcy5wYXltZW50T2JqLnJlZmVyZW5jZSA9IHBheW1lbnRSZWZlcmVuY2U7XG4gICAgICAgICAgdGhpcy50ZW1wbGF0ZUluc3RydWN0aW9uVHlwZSA9IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5nZXROb3RpZmljYXRpb25JbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50T2JqLmNoYW5uZWwsIHRoaXMucGF5bWVudE9iai5tZXRob2QpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudGVtcGxhdGVJbnN0cnVjdGlvblR5cGUgPSAnVGVtcGxhdGUnO1xuICAgICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlID0gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmdldE5vdGlmaWNhdGlvbkluc3RydWN0aW9uVHlwZShwYXltZW50LmNoYW5uZWwsIHBheW1lbnQubWV0aG9kKTtcbiAgICB9XG4gIH1cblxuICBzaG93Tm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSB0cnVlO1xuICB9XG5cbiAgaGlkZU5vdGlmaWNhdGlvblByZXZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3ID0gZmFsc2U7XG4gIH1cblxuICBzaG93Tm90aWZpY2F0aW9uU2VudFZpZXcoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VudFZpZXdJbmRleCA9IGluZGV4O1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VudFZpZXcgPSB0cnVlO1xuICB9XG5cbiAgaGlkZU5vdGlmaWNhdGlvblNlbnRWaWV3KCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VudFZpZXdJbmRleCA9IC0xO1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VudFZpZXcgPSBmYWxzZTtcbiAgfVxuXG59XG4iLCJcbjxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj5cbiAgPGRpdiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJmYWlsdXJlLWVycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bSBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImZhaWx1cmUtZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAgICBFcnJvciBpbiBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0XG4gICAgPC9oMj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiPlxuICAgICAge3sgZXJyb3JNZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3TmFtZT09PSdyZWZ1bmRzdGF0dXNsaXN0JyAmJiByZWplY3RlZFJlZnVuZExpc3QgJiYgIWlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyAmJiAhaXNFZGl0RGV0YWlsc0NsaWNrZWRcIj5cbiAgPCEtLSBwYXltZW50cyAtLT5cblxuICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTE2XCIgc2NvcGU9XCJjb2xcIj5TdGF0dXM8L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNvbC0xMVwiIHNjb3BlPVwiY29sXCI+QW1vdW50PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjb2wtMThcIiBzY29wZT1cImNvbFwiPkRhdGU8L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNvbC0yNVwiIHNjb3BlPVwiY29sXCI+UmVmdW5kIHJlZmVyZW5jZTwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTI0IFwiIHNjb3BlPVwiY29sXCI+UmVhc29uPC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0lmPVwicmVqZWN0ZWRSZWZ1bmRMaXN0Py5sZW5ndGggPiAwXCI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgKm5nRm9yPVwibGV0IHJlZnVuZExpc3Qgb2YgcmVqZWN0ZWRSZWZ1bmRMaXN0XCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlZnVuZExpc3Q/LnJlZnVuZF9zdGF0dXNbJ25hbWUnXSB9fTwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cImNoYW5uZWwgZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+wqN7eyByZWZ1bmRMaXN0Py5hbW91bnQgfCBudW1iZXI6Jy4yJyB9fTwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsICB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZWZ1bmRMaXN0Py5kYXRlX3VwZGF0ZWQgfCBkYXRlOidkZCBNTU0geXl5eSd9fVxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZWZ1bmRMaXN0Py5yZWZ1bmRfcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+IHt7cmVmdW5kTGlzdD8ucmVhc29ufX08L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImdvVG9SZWZ1bmRWaWV3KHJlZnVuZExpc3QsJ2Nhc2V0cmFuc2FjdGlvbnMnKVwiPlJldmlldzwvYT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cbiAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0lmPVwicmVqZWN0ZWRSZWZ1bmRMaXN0Py5sZW5ndGggPT09IDBcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCIgY29sc3Bhbj1cIjZcIj5ObyByZWZ1bmRzIHJlY29yZGVkPC90ZD5cbiAgICA8L3Rib2R5PlxuICA8L3RhYmxlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3TmFtZT09PSdyZWZ1bmR2aWV3JyAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmICFpc0VkaXREZXRhaWxzQ2xpY2tlZFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNcIj5cbiAgICA8b2wgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic19fbGlzdFwiPlxuICAgICAgPGxpIGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNfX2xpc3QtaXRlbVwiPlxuICAgICAgICA8YSAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJsb2FkUmVmdW5kTGlzdFBhZ2UoKVwiIGNsYXNzPVwiZ292dWstYmFjay1saW5rIGdvdnVrLWxhYmVsXCI+QmFjazwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC9vbD5cbiAgPC9kaXY+XG4gIDxoMiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPlJlZnVuZCBkZXRhaWxzPC9oMj5cbiAgPHRhYmxlPlxuICAgIFxuICAgIDx0Ym9keT5cbiAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPlJlZnVuZCByZWZlcmVuY2U8L3RkPlxuICAgICAgICA8dGQ+e3sgcmVmdW5kbGlzdD8ucmVmdW5kX3JlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+UGF5bWVudCB0byBiZSByZWZ1bmRlZDwvdGQ+XG4gICAgICAgIDx0ZD57e3JlZnVuZGxpc3Q/LnBheW1lbnRfcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj5SZWFzb24gZm9yIHJlZnVuZDwvdGQ+XG4gICAgICAgIDx0ZD57eyByZWZ1bmRsaXN0Py5yZWFzb24gfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPkFtb3VudCByZWZ1bmRlZDwvdGQ+XG4gICAgICAgIDx0ZD7Co3t7cmVmdW5kbGlzdD8uYW1vdW50IHwgbnVtYmVyOicuMicgfX08L3RkPlxuICAgICAgPC90cj5cblxuICAgIDwvdGJvZHk+XG4gIDwvdGFibGU+XG5cblxuICAgIDwhLS0gTm90aWZpY2F0aW9uIHNlbnQgZGV0YWlscyAtLT5cbiAgICA8ZGl2PlxuICAgICAgPGJyIC8+XG4gICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLW1cIj5Ob3RpZmljYXRpb25zIHNlbnQ8L2gyPlxuICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgPHRoZWFkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRcIj5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNvbC0yNCB3aGl0ZXNwYWNlLWluaGVyaXRcIiBzY29wZT1cImNvbFwiPkRhdGUgYW5kIHRpbWU8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjb2wtMjcgd2hpdGVzcGFjZS1pbmhlcml0XCIgc2NvcGU9XCJjb2xcIj5TZW50IHRvPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgd2hpdGVzcGFjZS1pbmhlcml0XCIgc2NvcGU9XCJjb2xcIj5TZW50IHZpYTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+QWN0aW9uczwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdJZj1cIm5vdGlmaWNhdGlvbkxpc3RcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9uTGlzdDsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3tub3RpZmljYXRpb24uZGF0ZV9jcmVhdGVkIHwgZGF0ZTonZGQgTU1NTSB5eXl5IEhIOm1tOnNzJ319PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3tvcmRlclBhcnR5fX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXQgY29sLTQwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vdGlmaWNhdGlvbj8ubm90aWZpY2F0aW9uX3R5cGUgPT09ICdFTUFJTCdcIj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+RW1haWw8L3N0cm9uZz48YnI+XG4gICAgICAgICAgICAgICAgICB7e25vdGlmaWNhdGlvbj8uY29udGFjdF9kZXRhaWxzPy5lbWFpbD8udHJpbSgpfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm90aWZpY2F0aW9uPy5ub3RpZmljYXRpb25fdHlwZSA9PT0gJ0xFVFRFUidcIj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+UG9zdDwvc3Ryb25nPjxicj5cbiAgICAgICAgICAgICAgICAgIHt7bm90aWZpY2F0aW9uPy5jb250YWN0X2RldGFpbHM/LmFkZHJlc3NfbGluZT8udHJpbSgpfX0ge3tub3RpZmljYXRpb24/LmNvbnRhY3RfZGV0YWlscz8uY2l0eT8udHJpbSgpfX0ge3tub3RpZmljYXRpb24/LmNvbnRhY3RfZGV0YWlscz8uY291bnR5Py50cmltKCl9fSB7e25vdGlmaWNhdGlvbj8uY29udGFjdF9kZXRhaWxzPy5jb3VudHJ5Py50cmltKCl9fSB7e25vdGlmaWNhdGlvbj8uY29udGFjdF9kZXRhaWxzPy5wb3N0YWxfY29kZT8udHJpbSgpfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCIgKm5nSWY9XCJpID09PSAwXCI+PGEgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwicHV0UmVzZW5kKG5vdGlmaWNhdGlvbilcIj5SZXNlbmQ8L2E+Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwOzxhIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMCk7XCIgKGNsaWNrKT1cImdvdG9FZGl0QWRkcmVzc0RldGFpbHMobm90aWZpY2F0aW9uKVwiPkVkaXQgZGV0YWlsczwvYT4mbmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7PGEgKm5nSWY9XCIhbm90aWZpY2F0aW9uU2VudFZpZXcgfHwgaSAhPSBub3RpZmljYXRpb25TZW50Vmlld0luZGV4XCIgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwic2hvd05vdGlmaWNhdGlvblNlbnRWaWV3KGkpXCI+VmlldzwvYT48YSAqbmdJZj1cImkgPT09IG5vdGlmaWNhdGlvblNlbnRWaWV3SW5kZXggJiYgbm90aWZpY2F0aW9uU2VudFZpZXdcIiBocmVmPVwiSmF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJoaWRlTm90aWZpY2F0aW9uU2VudFZpZXcoKVwiPkhpZGU8L2E+PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCIgKm5nSWY9XCJpID4gMFwiPjxhICpuZ0lmPVwiIW5vdGlmaWNhdGlvblNlbnRWaWV3IHx8IGkgIT0gbm90aWZpY2F0aW9uU2VudFZpZXdJbmRleFwiIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMCk7XCIgKGNsaWNrKT1cInNob3dOb3RpZmljYXRpb25TZW50VmlldyhpKVwiPlZpZXc8L2E+PGEgKm5nSWY9XCJpID09PSBub3RpZmljYXRpb25TZW50Vmlld0luZGV4ICYmIG5vdGlmaWNhdGlvblNlbnRWaWV3XCIgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwiaGlkZU5vdGlmaWNhdGlvblNlbnRWaWV3KClcIj5IaWRlPC9hPjwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiaSA9PT0gbm90aWZpY2F0aW9uU2VudFZpZXdJbmRleCAmJiBub3RpZmljYXRpb25TZW50Vmlld1wiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGNvbHNwYW49XCI0XCI+XG4gICAgICAgICAgICAgICAgPGFwcC1ub3RpZmljYXRpb24tcHJldmlld1xuICAgICAgICAgICAgICAgICAgW3ByZXZpZXdKb3VybmV5XT1cIidOb3RpZmljYXRpb25zIHNlbnQnXCIgW25vdGlmaWNhdGlvblNlbnRdPVwibm90aWZpY2F0aW9uPy5zZW50X25vdGlmaWNhdGlvblwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLW5vdGlmaWNhdGlvbi1wcmV2aWV3PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0lmPVwiIW5vdGlmaWNhdGlvbkxpc3RcIj5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIiBjb2xzcGFuPVwiNFwiPk5vIHJlY29yZCBmb3VuZCAuLi4gPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT4gIFxuICAgIDwvZGl2PlxuICA8IS0tIFN0YXR1cyBoaXN0b3J5IC0tPlxuICA8ZGl2PlxuICAgIDxiciAvPlxuICAgIDxoMiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbVwiPlJlZnVuZCBzdGF0dXMgaGlzdG9yeTwvaDI+XG4gICAgPGRpdiAqbmdJZj1cInJlZnVuZFN0YXR1c0hpc3Rvcmllc1wiPlxuICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCI+XG4gICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjb2wtMjQgd2hpdGVzcGFjZS1pbmhlcml0XCIgc2NvcGU9XCJjb2xcIj5TdGF0dXM8L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTI3IHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+RGF0ZSBhbmQgdGltZTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciB3aGl0ZXNwYWNlLWluaGVyaXRcIiBzY29wZT1cImNvbFwiPlVzZXJzPC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+Tm90ZXM8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgKm5nRm9yPVwibGV0IHJlZnVuZFN0YXR1c0hpc3Rvcnkgb2YgcmVmdW5kU3RhdHVzSGlzdG9yaWVzO1wiPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3tyZWZ1bmRTdGF0dXNIaXN0b3J5LnN0YXR1c319PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj5cbiAgICAgICAgICAgICB7e3JlZnVuZFN0YXR1c0hpc3RvcnkuZGF0ZV9jcmVhdGVkIHwgZGF0ZTonZGQgTU1NTSB5eXl5IEhIOm1tOnNzJ319XG4gICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3tyZWZ1bmRTdGF0dXNIaXN0b3J5LmNyZWF0ZWRfYnl9fTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3tyZWZ1bmRTdGF0dXNIaXN0b3J5Lm5vdGVzfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld05hbWU9PT0ncmVmdW5kdmlldycgJiYgIWlzRnJvbVBheUJ1YmJsZSAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmICFpc0VkaXREZXRhaWxzQ2xpY2tlZFwiPlxuICAgIDxkaXYgICpuZ0lmPVwicmVmdW5kQnV0dG9uU3RhdGU9PT0nVXBkYXRlIHJlcXVpcmVkJ1wiID5cbiAgICAgIDwhLS0gPGRpdiAqbmdJZj1cInJlZnVuZEJ1dHRvblN0YXRlPT09J3NlbnQgYmFjaydcIj4gLS0+XG4gICAgICA8YnIgLz5cbiAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5IGJ0bm1hcmdpblwiXG4gICAgICAgIChjbGljayk9XCJnb3RvUmV2aWV3QW5kUmVTdWJtaXRQYWdlKClcIj5DaGFuZ2UgcmVmdW5kIGRldGFpbHM8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNQcm9jZXNzUmVmdW5kICYmICFpc0xhc3RVcGRhdGVkQnlDdXJyZW50VXNlciAmJiByZWZ1bmRCdXR0b25TdGF0ZT09PSdTZW50IGZvciBhcHByb3ZhbCdcIiA+XG4gICAgICA8IS0tIDxkaXYgKm5nSWY9XCJpc1Byb2Nlc3NSZWZ1bmQgJiYgIWlzTGFzdFVwZGF0ZWRCeUN1cnJlbnRVc2VyICYmIHJlZnVuZEJ1dHRvblN0YXRlPT09J3NlbnQgZm9yIGFwcHJvdmFsJ1wiPiAtLT5cbiAgICAgIDxiciAvPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub1JlZnVuZFByb2Nlc3NDb21wb25lbnQocmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlLHJlZnVuZGxpc3QpXCI+UHJvY2VzcyByZWZ1bmQ8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cblxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3TmFtZT09PSdyZXZpZXdhbmRzdWJtaXR2aWV3JyAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmICFpc0VkaXREZXRhaWxzQ2xpY2tlZFwiPlxuICA8IS0tIDxkaXYgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic1wiPlxuICAgIDxvbCBjbGFzcz1cImdvdnVrLWJyZWFkY3J1bWJzX19saXN0XCI+XG4gICAgICA8bGkgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic19fbGlzdC1pdGVtXCI+XG4gICAgICAgIDxhIChjbGljayk9XCJnb3RvUmV2aWV3RGV0YWlsc1BhZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZ292dWstYmFjay1saW5rIGdvdnVrLWxhYmVsXCI+QmFjazwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC9vbD5cbiAgPC9kaXY+IC0tPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0XCI+XG4gICAgPGgxIGNsYXNzPVwiaGVhZGluZy1sYXJnZVwiPkNoZWNrIHlvdXIgYW5zd2VyczwvaDE+XG4gIDwvZGl2PlxuICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPlBheW1lbnQgcmVmZXJlbmNlPC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcmVmdW5kbGlzdD8ucGF5bWVudF9yZWZlcmVuY2V9fSA8L3RkPlxuICAgIDwvdHI+XG4gICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+UmVhc29uIGZvciByZXR1cm48L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e3JlZnVuZHJlYXNvbn19PC90ZD5cbiAgICA8L3RyPlxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPlJlZnVuZCByZWZlcmVuY2U8L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyByZWZ1bmRsaXN0Py5yZWZ1bmRfcmVmZXJlbmNlfX0gPC90ZD5cbiAgICA8L3RyPlxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPlJlYXNvbiBmb3IgcmVmdW5kPC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcmVmdW5kbGlzdD8ucmVhc29uPy50cmltKCl9fVxuICAgICAgICA8YSAoY2xpY2spPVwiZ290b1JlZnVuZFJlYXNvblBhZ2UocmVmdW5kbGlzdD8ucmVhc29uKVwiICpuZ0lmPVwicmVmdW5kbGlzdD8ucmVhc29uICE9PSAnUmV0cm9zcGVjdGl2ZSByZW1pc3Npb24nICYmIHJlZnVuZGxpc3Q/LnJlYXNvbiAhPT0gJ092ZXJwYXltZW50J1wiXG4gICAgICAgICAgY2xhc3M9XCJnb3Z1ay1saW5rIHJpZ2h0XCI+Q2hhbmdlPC9hPlxuICAgICAgPC90ZD5cblxuICAgICAgPCEtLSA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IHJlZnVuZGxpc3Q/LnJlYXNvbiB9fTwvdGQ+XG4gICAgICA8YSAoY2xpY2spPVwiZ290b1JlZnVuZFJlYXNvblBhZ2UoKVwiIGNsYXNzPVwiZ292dWstbGluayByaWdodFwiPkNoYW5nZTwvYT4gLS0+XG4gICAgPC90cj5cbiAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj5SZWZ1bmQgYW1vdW50PC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+wqN7eyBjaGFuZ2VkQW1vdW50ID8gY2hhbmdlZEFtb3VudCA6IHJlZnVuZGxpc3Q/LmFtb3VudCB8IG51bWJlcjonLjInIH19XG4gICAgICAgIDxhIChjbGljayk9XCJnb3RvQW1vdW50UGFnZSgpXCIgKm5nSWY9XCJyZWZ1bmRsaXN0Py5yZWFzb24gIT09ICdPdmVycGF5bWVudCdcIlxuICAgICAgICAgIGNsYXNzPVwiZ292dWstbGluayByaWdodFwiPkNoYW5nZTwvYT5cbiAgICAgIDwvdGQ+XG5cbiAgICA8L3RyPlxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPlNlbmQgdG88L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e29yZGVyUGFydHl9fSA8L3RkPlxuICAgIDwvdHI+XG4gICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+U2VuZCB2aWE8L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZWZ1bmRsaXN0Py5jb250YWN0X2RldGFpbHM/Lm5vdGlmaWNhdGlvbl90eXBlID09PSAnRU1BSUwnXCIgY2xhc3M9XCJjb250YWN0RGV0YWlscy13aWR0aCBmb250LXNpemUtMTlweFwiPlxuICAgICAgICAgIDxzdHJvbmc+RW1haWw8L3N0cm9uZz5cbiAgICAgICAgICA8YnIvPlxuICAgICAgICAgIHt7cmVmdW5kbGlzdD8uY29udGFjdF9kZXRhaWxzPy5lbWFpbD8udHJpbSgpfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZWZ1bmRsaXN0Py5jb250YWN0X2RldGFpbHM/Lm5vdGlmaWNhdGlvbl90eXBlID09PSAnTEVUVEVSJ1wiIGNsYXNzPVwiY29udGFjdERldGFpbHMtd2lkdGggZm9udC1zaXplLTE5cHhcIj5cbiAgICAgICAgICA8c3Ryb25nPlBvc3Q8L3N0cm9uZz5cbiAgICAgICAgICA8YnIvPlxuICAgICAgICAgIHt7cmVmdW5kbGlzdD8uY29udGFjdF9kZXRhaWxzPy5hZGRyZXNzX2xpbmU/LnRyaW0oKX19IHt7cmVmdW5kbGlzdD8uY29udGFjdF9kZXRhaWxzPy5jaXR5Py50cmltKCl9fSB7e3JlZnVuZGxpc3Q/LmNvbnRhY3RfZGV0YWlscz8uY291bnR5Py50cmltKCl9fSB7e3JlZnVuZGxpc3Q/LmNvbnRhY3RfZGV0YWlscz8uY291bnRyeT8udHJpbSgpfX0ge3tyZWZ1bmRsaXN0Py5jb250YWN0X2RldGFpbHM/LnBvc3RhbF9jb2RlPy50cmltKCl9fVxuICAgICAgICA8L2Rpdj4gXG4gICAgICAgIDxhIGNsYXNzPVwiZ292dWstbGlua1wiIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMClcIiAqbmdJZj1cInJlZnVuZGxpc3Q/LmNvbnRhY3RfZGV0YWlscyAhPW51bGxcIiAgY2xhc3M9XCJnb3Z1ay1saW5rIHJpZ2h0XCIgKGNsaWNrKT1cImdvdG9FZGl0RGV0YWlsc1BhZ2UocmVmdW5kbGlzdD8uY29udGFjdF9kZXRhaWxzLCAncmV2aWV3YW5kc3VibWl0RWRpdHZpZXcnKVwiPlxuICAgICAgICAgIENoYW5nZVxuICAgICAgICA8L2E+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+IFxuXG4gICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+Tm90aWZpY2F0aW9uPC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3t0ZW1wbGF0ZUluc3RydWN0aW9uVHlwZX19IFxuICAgICAgICAgIDxhICpuZ0lmPVwiIW5vdGlmaWNhdGlvblByZXZpZXdcIiBocmVmPVwiSmF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHJpZ2h0XCIgKGNsaWNrKT1cInNob3dOb3RpZmljYXRpb25QcmV2aWV3KClcIj5cbiAgICAgICAgICAgIFByZXZpZXdcbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGEgKm5nSWY9XCJub3RpZmljYXRpb25QcmV2aWV3XCIgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGluayByaWdodFwiIChjbGljayk9XCJoaWRlTm90aWZpY2F0aW9uUHJldmlldygpXCI+XG4gICAgICAgICAgICBIaWRlIFByZXZpZXdcbiAgICAgICAgICA8L2E+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvdGFibGU+XG4gIDxhcHAtbm90aWZpY2F0aW9uLXByZXZpZXcgKm5nSWY9XCJub3RpZmljYXRpb25QcmV2aWV3XCIgXG4gIFtwYXltZW50UmVmZXJlbmNlXT1cInJlZnVuZGxpc3Q/LnBheW1lbnRfcmVmZXJlbmNlXCJcbiAgW3BheW1lbnRdPVwicGF5bWVudE9ialwiIFxuICBbY29udGFjdERldGFpbHNdPVwicmVmdW5kbGlzdD8uY29udGFjdF9kZXRhaWxzXCJcbiAgW3JlZnVuZFJlYXNvbl09XCJyZWZ1bmRsaXN0Py5yZWFzb25fY29kZVwiXG4gIFtyZWZ1bmRBbW91bnRdPVwiY2hhbmdlZEFtb3VudCA/IGNoYW5nZWRBbW91bnQgOiByZWZ1bmRsaXN0Py5hbW91bnRcIlxuICBbcmVmdW5kUmVmZXJlbmNlXT1cInJlZnVuZGxpc3Q/LnJlZnVuZF9yZWZlcmVuY2VcIj48L2FwcC1ub3RpZmljYXRpb24tcHJldmlldz5cblxuICA8ZGl2IGNsYXNzPVwiZ292dWstYnV0dG9uLWdyb3VwXCI+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiZ290b1Jldmlld0RldGFpbHNQYWdlKCRldmVudClcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeVwiPiBQcmV2aW91czwvYnV0dG9uPlxuICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImlzUmVmdW5kQnRuRGlzYWJsZWRcIiAoY2xpY2spPVwiZ290b1Jldmlld1JlZnVuZENvbmZpcm1hdGlvblBhZ2UoKVwiIGNsYXNzPVwiZ292dWstYnV0dG9uIGJ1dHRvblwiXG4gICAgICBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiPlxuICAgICAgU3VibWl0IHJlZnVuZFxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG48cD48YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImxvYWRSZWZ1bmRMaXN0UGFnZSgpXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIj5DYW5jZWw8L2E+PC9wPlxuICA8IS0tIDxkaXYgY2xhc3M9XCJnb3Z1ay1idXR0b24tZ3JvdXBcIj5cbiAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1JlZnVuZEJ0bkRpc2FibGVkXCIgKGNsaWNrKT1cImdvdG9SZXZpZXdSZWZ1bmRDb25maXJtYXRpb25QYWdlKClcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBidXR0b25cIlxuICAgICAgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIj5cbiAgICAgIFN1Ym1pdCByZWZ1bmRcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+IC0tPlxuICA8IS0tIDxwPlxuICAgIDxhIChjbGljayk9XCJsb2FkUmVmdW5kTGlzdFBhZ2UoKVwiIGhyZWY9XCJcIiBjbGFzcz1cImNhbmNlbGJ0blwiPkNhbmNlbDwvYT5cbiAgPC9wPiAtLT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld05hbWUgPT09ICdyZXZpZXdhbmRzdWJtaXRFZGl0dmlldycgJiYgaXNFZGl0RGV0YWlsc0NsaWNrZWRcIj5cbiAgPGlucHV0ICNteUlucHV0IHR5cGU9J2hpZGRlbicgaWQ9J2lGcmFtZURyaXZlbkltYWdlVmFsdWUnIHZhbHVlPSdFRElUREVUQUlMU1BBR0UnPiAgICAgIFxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPkVkaXQgY29udGFjdCBkZXRhaWxzPC9oMT5cbiAgICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLW0gZ292dWstZm9udDE5cHhcIj5DYXNlIHJlZmVyZW5jZToge3tjY2RDYXNlTnVtYmVyIHwgY2NkSHlwaGVucyB9fTwvaDI+XG4gICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay1oaW50IGZvbnQtc2l6ZS0xOXB4XCI+XG4gICAgICBSZWZ1bmQgcmVmZXJlbmNlOiB7eyByZWZ1bmRsaXN0Py5yZWZ1bmRfcmVmZXJlbmNlfX1cbiAgICA8L3NwYW4+XG4gICAgPGNjcGF5LWNvbnRhY3QtZGV0YWlsc1xuICAgIFtpc0VkaXRPcGVyYXRpb25JblJlZnVuZExpc3RdID0gaXNFZGl0RGV0YWlsc0NsaWNrZWRcbiAgICBbYWRkcmVzc09ial0gPSBub3RpZmljYXRpb25cbiAgICAoYXNzaWduQ29udGFjdERldGFpbHNJbkZlZnVuZHNMaXN0KT1cImdldENvbnRhY3REZXRhaWxzRm9yUmVmdW5kTGlzdCgkZXZlbnQpXCJcbiAgICAocmVkaXJlY3RUb0lzc3VlUmVmdW5kKT1cImdvdG9SZWZ1bmRSZXZpZXdBbmRTdWJtaXRWaWV3UGFnZUNhbmNlbEJ0bkNsaWNrZWQoJGV2ZW50KVwiID48L2NjcGF5LWNvbnRhY3QtZGV0YWlscz5cbiAgPHA+XG4gICAgICA8YSAoY2xpY2spPVwibG9hZFJlZnVuZExpc3RQYWdlKClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiPlxuICAgICAgICAgIENhbmNlbFxuICAgICAgPC9hPlxuICA8L3A+XG5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld05hbWUgPT09ICdpc3N1ZXJlZnVuZHBhZ2UxJyAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmICFpc0VkaXREZXRhaWxzQ2xpY2tlZFwiPlxuICA8Y2NwYXktYWRkLXJlbWlzc2lvbiBbaXNGcm9tUmVmdW5kTGlzdFBhZ2VdPVwidHJ1ZVwiIFt2aWV3Q29tcFN0YXR1c109XCJ2aWV3TmFtZVwiIFtpc1JlZnVuZFJlbWlzc2lvbl09XCJ0cnVlXCIgW2lzRnJvbVJlZnVuZFN0YXR1c1BhZ2VdID0gXCJ0cnVlXCJcbiAgIFtjaGFuZ2VSZWZ1bmRSZWFzb25dPSBcImNoYW5nZVJlZnVuZFJlYXNvblwiIFtjY2RDYXNlTnVtYmVyXT1cImNjZENhc2VOdW1iZXJcIiAocmVmdW5kTGlzdFJlYXNvbik9XCJnZXRSZWZ1bmRMaXN0UmVhc29uKCRldmVudClcIiBbcmVmdW5kUGF5bWVudFJlZmVyZW5jZV09IFwicmVmdW5kbGlzdD8ucGF5bWVudF9yZWZlcmVuY2VcIiA+PC9jY3BheS1hZGQtcmVtaXNzaW9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3Byb2Nlc3NyZXRyb3JlbWlzc29ucGFnZScgJiYgIWlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyAmJiAhaXNFZGl0RGV0YWlsc0NsaWNrZWRcIj5cbiAgPGNjcGF5LWFkZC1yZW1pc3Npb24gW2lzRnJvbVJlZnVuZExpc3RQYWdlXT1cInRydWVcIiBbdmlld0NvbXBTdGF0dXNdPVwidmlld05hbWVcIiBbaXNSZWZ1bmRSZW1pc3Npb25dPVwidHJ1ZVwiXG4gICAgW2NjZENhc2VOdW1iZXJdPVwiY2NkQ2FzZU51bWJlclwiIFtyZWZ1bmRQYXltZW50UmVmZXJlbmNlXT0gXCJyZWZ1bmRsaXN0Py5wYXltZW50X3JlZmVyZW5jZVwiIChyZWZ1bmRMaXN0QW1vdW50KT1cImdldFJlZnVuZEFtb3VudCgkZXZlbnQpXCI+PC9jY3BheS1hZGQtcmVtaXNzaW9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ2lzc3VlcmVmdW5kJyAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmICFpc0VkaXREZXRhaWxzQ2xpY2tlZFwiPlxuICA8Y2NwYXktYWRkLXJlbWlzc2lvbiBbaXNGcm9tUmVmdW5kTGlzdFBhZ2VdPVwidHJ1ZVwiIFt2aWV3Q29tcFN0YXR1c109XCJ2aWV3TmFtZVwiIFtpc1JlZnVuZFJlbWlzc2lvbl09XCJ0cnVlXCIgW2lzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZV0gPSBcInRydWVcIlxuICAgIFtjY2RDYXNlTnVtYmVyXT1cImNjZENhc2VOdW1iZXJcIiBbcmVmdW5kUGF5bWVudFJlZmVyZW5jZV09IFwicmVmdW5kbGlzdD8ucGF5bWVudF9yZWZlcmVuY2VcIiBbaXNGcm9tUmVmdW5kU3RhdHVzUGFnZV09XCJ0cnVlXCIgIChyZWZ1bmRMaXN0QW1vdW50KT1cImdldFJlZnVuZEFtb3VudCgkZXZlbnQpXCIgIChyZWZ1bmRGZWVzKT1cImdldFJlZnVuZEZlZXMoJGV2ZW50KVwiPjwvY2NwYXktYWRkLXJlbWlzc2lvbj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld05hbWUgPT09ICdyZXZpZXdyZWZ1bmRjb25maXJtYXRpb25wYWdlJyAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmICFpc0VkaXREZXRhaWxzQ2xpY2tlZFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3cgcGFnZXNpemVcIj5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsIGdvdnVrLXBhbmVsLS1jb25maXJtYXRpb25cIj5cbiAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstcGFuZWxfcmVmdW5kX3RpdGxlXCI+XG4gICAgICAgICAgUmVmdW5kIHN1Ym1pdHRlZFxuICAgICAgICA8L2gxPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1wYW5lbF9fYm9keVwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwiZ292dWstYm9keSB3aGl0ZVwiPjxzdHJvbmcgY2xhc3M9XCJ3aGl0ZVwiPlJlZnVuZCByZWZlcmVuY2U6e3tyZWZ1bmRSZWZlcmVuY2V9fSA8L3N0cm9uZz48L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cblxuICAgICAgPGgyIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+V2hhdCBoYXBwZW5zIG5leHQ8L2gyPlxuICAgICAgPHAgY2xhc3M9XCJnb3Z1ay1ib2R5XCI+XG4gICAgICAgIEEgcmVmdW5kIHJlcXVlc3QgZm9yIHt7cmVmdW5kQW1vdW50fCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319IGhhcyBiZWVuIGNyZWF0ZWQgYW5kIHdpbGwgYmUgcGFzc2VkIHRvIGEgdGVhbSBsZWFkZXIgdG8gYXBwcm92ZS5cbiAgICAgIDwvcD5cblxuICAgICAgPHAgY2xhc3M9XCJnb3Z1ay1ib2R5XCI+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwibG9hZFJlZnVuZExpc3RQYWdlKClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIj5SZXR1cm4gdG8gY2FzZTwvYT5cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmVzZW5kT3BlcmF0aW9uU3VjY2Vzc1wiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3cgcGFnZXNpemVcIj5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsIGdvdnVrLXBhbmVsLS1jb25maXJtYXRpb25cIj5cbiAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstcGFuZWxfcmVmdW5kX3RpdGxlXCI+XG4gICAgICAgICAgTm90aWZpY2F0aW9uIHNlbnRcbiAgICAgICAgPC9oMT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcGFuZWxfX2JvZHlcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cImdvdnVrLWJvZHkgd2hpdGVcIj48c3Ryb25nIGNsYXNzPVwid2hpdGVcIj5SZWZ1bmQgcmVmZXJlbmNlOiB7eyByZWZ1bmRsaXN0Py5yZWZ1bmRfcmVmZXJlbmNlfX0gPC9zdHJvbmc+PC9wPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9kaXY+XG4gICAgICA8cCBjbGFzcz1cImdvdnVrLWJvZHlcIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJsb2FkUmVmdW5kTGlzdFBhZ2UoKVwiIGNsYXNzPVwiZ292dWstbGlua1wiPlJldHVybiB0byBjYXNlPC9hPlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdOYW1lID09PSAncmVmdW5kRWRpdFZpZXcnICYmIGlzRWRpdERldGFpbHNDbGlja2VkXCI+XG4gIDxpbnB1dCAjbXlJbnB1dCB0eXBlPSdoaWRkZW4nIGlkPSdpRnJhbWVEcml2ZW5JbWFnZVZhbHVlJyB2YWx1ZT0nRURJVERFVEFJTFNQQUdFJz4gICAgICBcbiAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj5FZGl0IGNvbnRhY3QgZGV0YWlsczwvaDE+XG4gICAgPGgyIGNsYXNzPVwiZ292dWstaGVhZGluZy1tIGdvdnVrLWZvbnQxOXB4XCI+Q2FzZSByZWZlcmVuY2U6IHt7Y2NkQ2FzZU51bWJlciB8IGNjZEh5cGhlbnMgfX08L2gyPlxuICAgIDxzcGFuIGNsYXNzPVwiZ292dWstaGludCBmb250LXNpemUtMTlweFwiPlxuICAgICAgUmVmdW5kIHJlZmVyZW5jZToge3sgcmVmdW5kbGlzdD8ucmVmdW5kX3JlZmVyZW5jZX19XG4gICAgPC9zcGFuPlxuICAgIDxjY3BheS1jb250YWN0LWRldGFpbHNcbiAgICBbaXNFZGl0T3BlcmF0aW9uSW5SZWZ1bmRMaXN0XSA9IGlzRWRpdERldGFpbHNDbGlja2VkXG4gICAgW2FkZHJlc3NPYmpdID0gbm90aWZpY2F0aW9uXG4gICAgKGFzc2lnbkNvbnRhY3REZXRhaWxzSW5GZWZ1bmRzTGlzdCk9XCJnZXRDb250YWN0RGV0YWlscygkZXZlbnQpXCJcbiAgICAocmVkaXJlY3RUb0lzc3VlUmVmdW5kKT1cImdvdG9SZWZ1bmRWaWV3UGFnZUNhbmNlbEJ0bkNsaWNrZWQoJGV2ZW50KVwiID48L2NjcGF5LWNvbnRhY3QtZGV0YWlscz5cbiAgPHA+XG4gICAgICA8YSAoY2xpY2spPVwibG9hZFJlZnVuZExpc3RQYWdlKClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiPlxuICAgICAgICAgIENhbmNlbFxuICAgICAgPC9hPlxuICA8L3A+XG5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdOYW1lID09PSAncmV2aWV3ZWRpdGRldGFpbHNjb25maXJtYXRpb25wYWdlJyAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmIGlzRWRpdERldGFpbHNDbGlja2VkXCI+XG4gIDxpbnB1dCAjbXlJbnB1dCB0eXBlPSdoaWRkZW4nIGlkPSdpRnJhbWVEcml2ZW5JbWFnZVZhbHVlJyB2YWx1ZT0nRURJVERFVEFJTFNDSEVDS0FOREFOU1dFUlBBR0UnPiAgICAgIFxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPkNoZWNrIHlvdXIgYW5zd2VyczwvaDE+XG4gICAgPGRsIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3cgZm9udC1zaXplLTE5cHhcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICBSZWZ1bmQgcmVmZXJlbmNlXG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICB7eyByZWZ1bmRsaXN0Py5yZWZ1bmRfcmVmZXJlbmNlfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj48L3NwYW4+IFxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3cgZm9udC1zaXplLTE5cHhcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICBTZW5kIHZpYVxuICAgICAgICAgIDxici8+XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWRkcmVzc0RldGFpbHM/Lm5vdGlmaWNhdGlvbl90eXBlID09PSAnRU1BSUwnXCIgY2xhc3M9XCJjb250YWN0RGV0YWlscy13aWR0aCBmb250LXNpemUtMTlweFwiPlxuICAgICAgICAgICAgPHN0cm9uZz5FbWFpbDwvc3Ryb25nPlxuICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgIHt7YWRkcmVzc0RldGFpbHM/LmVtYWlsPy50cmltKCl9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhZGRyZXNzRGV0YWlscz8ubm90aWZpY2F0aW9uX3R5cGUgPT09ICdMRVRURVInXCIgY2xhc3M9XCJjb250YWN0RGV0YWlscy13aWR0aCBmb250LXNpemUtMTlweFwiPlxuICAgICAgICAgICAgPHN0cm9uZz5Qb3N0PC9zdHJvbmc+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAge3thZGRyZXNzRGV0YWlscz8uYWRkcmVzc19saW5lPy50cmltKCl9fSB7e2FkZHJlc3NEZXRhaWxzPy5jaXR5Py50cmltKCl9fSB7e2FkZHJlc3NEZXRhaWxzPy5jb3VudHk/LnRyaW0oKX19IHt7YWRkcmVzc0RldGFpbHM/LmNvdW50cnk/LnRyaW0oKX19IHt7YWRkcmVzc0RldGFpbHM/LnBvc3RhbF9jb2RlPy50cmltKCl9fVxuICAgICAgICAgIDwvZGl2PiAgICAgICAgXG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZ292dWstbGlua1wiIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZ290b0VkaXREZXRhaWxzUGFnZShhZGRyZXNzRGV0YWlscywgJ3JlZnVuZEVkaXRWaWV3JylcIj5cbiAgICAgICAgICAgIENoYW5nZVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93IGZvbnQtc2l6ZS0xOXB4XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAgTm90aWZpY2F0aW9uXG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICB7e3RlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlfX0gXG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgKm5nSWY9XCIhbm90aWZpY2F0aW9uUHJldmlld1wiIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmsgcmlnaHRcIiAoY2xpY2spPVwic2hvd05vdGlmaWNhdGlvblByZXZpZXcoKVwiPlxuICAgICAgICAgICAgUHJldmlld1xuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8YSAqbmdJZj1cIm5vdGlmaWNhdGlvblByZXZpZXdcIiBocmVmPVwiSmF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHJpZ2h0XCIgKGNsaWNrKT1cImhpZGVOb3RpZmljYXRpb25QcmV2aWV3KClcIj5cbiAgICAgICAgICAgIEhpZGUgUHJldmlld1xuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9zcGFuPiBcbiAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG5cbiAgICA8YXBwLW5vdGlmaWNhdGlvbi1wcmV2aWV3ICpuZ0lmPVwibm90aWZpY2F0aW9uUHJldmlld1wiIFtwYXltZW50UmVmZXJlbmNlXT1cInJlZnVuZGxpc3Q/LnBheW1lbnRfcmVmZXJlbmNlXCJcbiAgICBbcGF5bWVudF09XCJwYXltZW50T2JqXCJcbiAgICBbY29udGFjdERldGFpbHNdPVwiYWRkcmVzc0RldGFpbHNcIlxuICAgIFtyZWZ1bmRSZWFzb25dPVwicmVmdW5kbGlzdD8ucmVhc29uX2NvZGVcIlxuICAgIFtyZWZ1bmRBbW91bnRdPVwicmVmdW5kbGlzdD8uYW1vdW50XCJcbiAgICBbcmVmdW5kUmVmZXJlbmNlXT1cInJlZnVuZGxpc3Q/LnJlZnVuZF9yZWZlcmVuY2VcIj5cbiAgPC9hcHAtbm90aWZpY2F0aW9uLXByZXZpZXc+XG5cblxuXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncm91cFwiPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZ290b0VkaXREZXRhaWxzUGFnZShhZGRyZXNzRGV0YWlscywgJ3JlZnVuZEVkaXRWaWV3JylcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeVwiPiBQcmV2aW91czwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic3VibWl0RWRpdERldGFpbCgpXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24gYnV0dG9uXCJcbiAgICAgICAgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIj5cbiAgICAgICAgICBTZW5kIG5vdGlmaWNhdGlvblxuICAgICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8cD5cbiAgICAgIDxhIChjbGljayk9XCJsb2FkUmVmdW5kTGlzdFBhZ2UoKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCI+XG4gICAgICAgICAgQ2FuY2VsXG4gICAgICA8L2E+XG4gIDwvcD5cblxuPC9uZy1jb250YWluZXI+XG4iXX0=
453
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmdW5kLXN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXltZW50LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcmVmdW5kLXN0YXR1cy9yZWZ1bmQtc3RhdHVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9yZWZ1bmQtc3RhdHVzL3JlZnVuZC1zdGF0dXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFJdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxj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S0FBSzt1QkFBQyxVQUFVO2dCQUNSLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBJbmplY3QsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlZnVuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVmdW5kcy9yZWZ1bmRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElSZWZ1bmRMaXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kTGlzdCc7XG5pbXBvcnQgeyBJUmVmdW5kc05vdGlmaWNhdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRzTm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgeyBPcmRlcnNsaXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29yZGVyc2xpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBJUHV0Tm90aWZpY2F0aW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QnO1xuaW1wb3J0IHsgSVJlZnVuZENvbnRhY3REZXRhaWxzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kQ29udGFjdERldGFpbHMnO1xuaW1wb3J0IHsgSVJlZnVuZFN0YXR1cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZFN0YXR1cyc7XG5pbXBvcnQgeyBJUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0JztcbmltcG9ydCB0eXBlIHsgUGF5bWVudExpYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYXltZW50Vmlld1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgSVBheW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lQYXltZW50JztcbmltcG9ydCB7IElGZWUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lGZWUnO1xuaW1wb3J0IHsgSVJlZnVuZEZlZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZEZlZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi1wcmV2aWV3L25vdGlmaWNhdGlvbi1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250YWN0RGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbnRhY3QtZGV0YWlscy9jb250YWN0LWRldGFpbHMuY29tcG9uZW50JztcbmltcG9ydCB7IEFkZFJlbWlzc2lvbkNvbXBvbmVudCB9IGZyb20gJy4uL2FkZC1yZW1pc3Npb24vYWRkLXJlbWlzc2lvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2NkSHlwaGVuc1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9jY2QtaHlwaGVucy5waXBlJztcbmltcG9ydCB7IENhcGl0YWxpemVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY2FwaXRhbGl6ZS5waXBlJztcbnR5cGUgUGF5bWVudExpYkFsaWFzID0gUGF5bWVudExpYkNvbXBvbmVudDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktcmVmdW5kLXN0YXR1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWZ1bmQtc3RhdHVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVmdW5kLXN0YXR1cy5jb21wb25lbnQuY3NzJ10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgZm9yd2FyZFJlZigoKSA9PiBOb3RpZmljYXRpb25QcmV2aWV3Q29tcG9uZW50KSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IENvbnRhY3REZXRhaWxzQ29tcG9uZW50KSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IEFkZFJlbWlzc2lvbkNvbXBvbmVudCksXG4gICAgQ2NkSHlwaGVuc1BpcGUsXG4gICAgQ2FwaXRhbGl6ZVBpcGUsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUmVmdW5kU3RhdHVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCdMT0dHRURJTlVTRVJST0xFUycpIExPR0dFRElOVVNFUlJPTEVTOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoJ0FQSV9ST09UJykgQVBJX1JPT1Q6IHN0cmluZztcbiAgQElucHV0KCkgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBASW5wdXQoKSBpc1R1cm5PZmY6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG9yZGVyUGFydHk6IHN0cmluZztcbiAgcmVmdW5kU3RhdHVzRm9ybTogRm9ybUdyb3VwO1xuICBzZWxlY3RlZFJlZnVuZFJlYXNvbjogc3RyaW5nO1xuICByZWplY3RlZFJlZnVuZExpc3Q6IElSZWZ1bmRMaXN0W10gPSBbXTtcbiAgbm90aWZpY2F0aW9uTGlzdDogYW55O1xuICBub3RpZmljYXRpb246IGFueTtcbiAgYXBwcm92YWxTdGF0dXMgPSAnU2VudCBmb3IgYXBwcm92YWwnO1xuICByZWplY3RTdGF0dXMgPSAnVXBkYXRlIHJlcXVpcmVkJztcbiAgZXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgdmlld05hbWU6IHN0cmluZztcbiAgcmVmdW5kUmVhc29uOiBzdHJpbmc7XG4gIHJlZnVuZGxpc3Q6IElSZWZ1bmRMaXN0O1xuICBic1BheW1lbnREY25OdW1iZXI6IHN0cmluZztcbiAgaXNDYWxsRnJvbVJlZnVuZExpc3Q6IGJvb2xlYW47XG4gIHJlZnVuZEJ1dHRvblN0YXRlOiBzdHJpbmcgPSAnJztcbiAgaXNBbW91bnRFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1JlYXNvbkVtcHR5OiBib29sZWFuID0gZmFsc2U7XG4gIGFtb3VudEhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVtaXNzaW9uTGVzc1RoYW5GZWVFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICByZWZ1bmRIYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICByZWZ1bmRSZWFzb25zOiBhbnlbXSA9IFtdO1xuICByZWZ1bmRTdGF0dXNIaXN0b3JpZXM6IElSZWZ1bmRTdGF0dXNbXTtcbiAgcmVmdW5kTm90aWZpY2F0aW9uczogSVJlZnVuZFN0YXR1c1tdO1xuICBpc1Jlc2VuZE9wZXJhdGlvblN1Y2Nlc3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNFZGl0RGV0YWlsc0NsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNFZGl0QWRkcmVzc0RlYXRpbHNDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGFkZHJlc3NEZXRhaWxzOiBJUmVmdW5kQ29udGFjdERldGFpbHM7XG4gIHJlZnVuZFJlZmVyZW5jZTogc3RyaW5nO1xuICByZWZ1bmRBbW91bnQ6IHN0cmluZztcbiAgcmVmdW5kQ29kZTogc3RyaW5nO1xuICBpc1JlZnVuZEJ0bkRpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNGcm9tUGF5QnViYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIG9sZFJlZnVuZFJlYXNvbjogc3RyaW5nO1xuICByZWZ1bmRyZWFzb246IHN0cmluZztcbiAgbmF2aWdhdGlvbnBhZ2U6IHN0cmluZztcbiAgaXNMYXN0VXBkYXRlZEJ5Q3VycmVudFVzZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBpc1Byb2Nlc3NSZWZ1bmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2hhbmdlZEFtb3VudDogbnVtYmVyO1xuICBpc1JlbWlzc2lvbnNNYXRjaDogYm9vbGVhbjtcbiAgcGF5bWVudDogSVBheW1lbnQ7XG4gIGNoYW5nZVJlZnVuZFJlYXNvbjogc3RyaW5nO1xuICBmZWVzOiBJRmVlW107XG4gIHJlZnVuZEZlZXM6IElSZWZ1bmRGZWVbXTtcbiAgcGF5bWVudE9iajogSVBheW1lbnQ7XG4gIHRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlOiBzdHJpbmc7XG4gIG5vdGlmaWNhdGlvblNlbnRWaWV3SW5kZXg6IG51bWJlciA9IC0xO1xuICBub3RpZmljYXRpb25QcmV2aWV3OiBib29sZWFuID0gZmFsc2U7XG4gIG5vdGlmaWNhdGlvblNlbnRWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gIGFsbG93ZWRSb2xlc1RvQWNjZXNzUmVmdW5kID0gWydwYXltZW50cy1yZWZ1bmQtYXBwcm92ZXInLCAncGF5bWVudHMtcmVmdW5kJywgJ3BheW1lbnRzJ107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWZ1bmRTZXJ2aWNlOiBSZWZ1bmRzU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgQEluamVjdCgnUEFZTUVOVF9MSUInKSBwcml2YXRlIHBheW1lbnRMaWJDb21wb25lbnQ6IFBheW1lbnRMaWJBbGlhcyxcbiAgICBwcml2YXRlIE9yZGVyc2xpc3RTZXJ2aWNlOiBPcmRlcnNsaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdBbGwnKTtcbiAgICB0aGlzLmJzUGF5bWVudERjbk51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5ic3BheW1lbnRkY247XG4gICAgdGhpcy5pc0NhbGxGcm9tUmVmdW5kTGlzdCA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0NhbGxGcm9tUmVmdW5kTGlzdDtcbiAgICBpZiAodGhpcy5BUElfUk9PVCA9PSAnYXBpL3BheW1lbnQtaGlzdG9yeScpIHtcbiAgICAgIHRoaXMuaXNGcm9tUGF5QnViYmxlID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1JlZnVuZFN0YXR1c1ZpZXcpIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAncmVmdW5kdmlldyc7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldFJlZnVuZFZpZXcoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMucmVmdW5kbGlzdCA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRDQ0RDYXNlTnVtYmVyZm9yUmVmdW5kLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5jY2RDYXNlTnVtYmVyID0gZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAncmVmdW5kc3RhdHVzbGlzdCc7XG4gICAgICB0aGlzLnJlZnVuZFNlcnZpY2UuZ2V0UmVmdW5kU3RhdHVzTGlzdCh0aGlzLmNjZENhc2VOdW1iZXIpLnN1YnNjcmliZShcbiAgICAgICAgcmVmdW5kTGlzdCA9PiB7XG4gICAgICAgICAgdGhpcy5yZWplY3RlZFJlZnVuZExpc3QgPSByZWZ1bmRMaXN0WydyZWZ1bmRfbGlzdCddO1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZywgXCJcIik7XG4gICAgICAgIH07XG4gICAgfVxuXG5cbiAgICB0aGlzLnJlZnVuZFN0YXR1c0Zvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGFtb3VudDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05XSsoXFwuWzAtOV17MSwyfSk/JCcpXG4gICAgICBdKSksXG4gICAgICByZWZ1bmRSZWFzb246IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkpLFxuICAgICAgcmVhc29uOiBuZXcgRm9ybUNvbnRyb2woKVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucmVmdW5kbGlzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmdldFJlZnVuZHNOb3RpZmljYXRpb24oKTtcbiAgICAgIHRoaXMuZ2V0UmVmdW5kc1N0YXR1c0hpc3RvcnlMaXN0KCk7XG5cbiAgICAgIGlmICh0aGlzLkxPR0dFRElOVVNFUlJPTEVTLnNvbWUoaSA9PiBpLmluY2x1ZGVzKCdwYXltZW50cy1yZWZ1bmQtYXBwcm92ZXInKSkpIHtcbiAgICAgICAgdGhpcy5pc1Byb2Nlc3NSZWZ1bmQgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlZnVuZEJ1dHRvblN0YXRlID0gdGhpcy5yZWZ1bmRsaXN0LnJlZnVuZF9zdGF0dXMubmFtZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5MT0dHRURJTlVTRVJST0xFUy5zb21lKGkgPT4gaS5pbmNsdWRlcygncGF5bWVudHMtcmVmdW5kJykpKSB7XG4gICAgICAgIHRoaXMuaXNQcm9jZXNzUmVmdW5kID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVmdW5kQnV0dG9uU3RhdGUgPSB0aGlzLnJlZnVuZGxpc3QucmVmdW5kX3N0YXR1cy5uYW1lO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgZ2V0UmVmdW5kc1N0YXR1c0hpc3RvcnlMaXN0KCkge1xuICAgIGlmICh0aGlzLnJlZnVuZGxpc3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yZWZ1bmRTZXJ2aWNlLmdldFJlZnVuZFN0YXR1c0hpc3RvcnkodGhpcy5yZWZ1bmRsaXN0LnJlZnVuZF9yZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgICAgc3RhdHVzSGlzdG9yeUxpc3QgPT4ge1xuICAgICAgICAgIHRoaXMucmVmdW5kU3RhdHVzSGlzdG9yaWVzID0gc3RhdHVzSGlzdG9yeUxpc3Quc3RhdHVzX2hpc3RvcnlfZHRvX2xpc3Q7XG4gICAgICAgICAgdGhpcy5pc0xhc3RVcGRhdGVkQnlDdXJyZW50VXNlciA9IHN0YXR1c0hpc3RvcnlMaXN0Lmxhc3RfdXBkYXRlZF9ieV9jdXJyZW50X3VzZXI7XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvci5yZXBsYWNlKC9cIi9nLCBcIlwiKTtcbiAgICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZ1bmRzTm90aWZpY2F0aW9uKCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5nZXRSZWZ1bmROb3RpZmljYXRpb24odGhpcy5yZWZ1bmRsaXN0LnJlZnVuZF9yZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgIHJlZnVuZHNOb3RpZmljYXRpb24gPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxpc3QgPSByZWZ1bmRzTm90aWZpY2F0aW9uWydub3RpZmljYXRpb25zJ107XG4gICAgICB9XG4gICAgKSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZywgXCJcIik7XG4gICAgICB9O1xuICB9XG5cbiAgZ29Ub1JlZnVuZFZpZXcocmVmdW5kbGlzdDogSVJlZnVuZExpc3QsIG5hdmlnYXRpb25wYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldFJlZnVuZFZpZXcocmVmdW5kbGlzdCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRDQ0RDYXNlTnVtYmVyKHRoaXMuY2NkQ2FzZU51bWJlcik7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3JlZnVuZHN0YXR1c2xpc3QnO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1JlZnVuZFN0YXR1c1ZpZXcgPSB0cnVlO1xuICAgIHRoaXMucmVmdW5kbGlzdCA9IHJlZnVuZGxpc3Q7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRuYXZpZ2F0aW9uUGFnZShuYXZpZ2F0aW9ucGFnZSk7XG4gIH1cblxuICBsb2FkQ2FzZVRyYW5zYWN0aW9uUGFnZSgpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG5hdmlnYXRpb25QYWdlKCdjYXNldHJhbnNhY3Rpb25zJyk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UoZmFsc2UpO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1JlZnVuZFN0YXR1c1ZpZXcgPSBmYWxzZTtcbiAgfVxuXG4gIGxvYWRSZWZ1bmRMaXN0UGFnZSgpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG5hdmlnYXRpb25QYWdlVmFsdWUoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMubmF2aWdhdGlvbnBhZ2UgPSBkYXRhKTtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9ucGFnZSA9PT0gJ2Nhc2V0cmFuc2FjdGlvbnMnKSB7XG4gICAgICB0aGlzLmxvYWRDYXNlVHJhbnNhY3Rpb25QYWdlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdyZWZ1bmQtbGlzdCc7XG4gICAgfVxuICB9XG5cbiAgZ290b1Jldmlld0RldGFpbHNQYWdlKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZmFsc2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzUmVmdW5kU3RhdHVzVmlldyA9IHRydWU7XG4gICAgdGhpcy5uZ09uSW5pdCgpO1xuICB9XG5cbiAgZ290b1Jldmlld0FuZFJlU3VibWl0UGFnZSgpIHtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICAgIHRoaXMuZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50T2JqLCB0aGlzLnJlZnVuZGxpc3QucGF5bWVudF9yZWZlcmVuY2UpO1xuICAgIHRoaXMub2xkUmVmdW5kUmVhc29uID0gdGhpcy5yZWZ1bmRsaXN0LnJlYXNvbjtcbiAgICB0aGlzLmNoYW5nZWRBbW91bnQgPSB0aGlzLnJlZnVuZGxpc3QuYW1vdW50O1xuICAgIHRoaXMucmVmdW5kcmVhc29uID0gdGhpcy5yZWZ1bmRTdGF0dXNIaXN0b3JpZXMuZmlsdGVyKGRhdGEgPT4gZGF0YS5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3VwZGF0ZSByZXF1aXJlZCcpWzBdLm5vdGVzO1xuICAgIHRoaXMucmVmdW5kU2VydmljZS5nZXRSZWZ1bmRSZWFzb25zKCkuc3Vic2NyaWJlKFxuICAgICAgcmVmdW5kUmVhc29ucyA9PiB7XG4gICAgICAgIHRoaXMucmVmdW5kUmVhc29ucyA9IHJlZnVuZFJlYXNvbnM7XG4gICAgICB9KTtcbiAgfVxuICBnb3RvUmVmdW5kUmVhc29uUGFnZShyZWZ1bmRSZWFzb246IHN0cmluZykge1xuICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5SRUZVTkRMSVNUID0gXCJ0cnVlXCI7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVJlZnVuZFN0YXR1c1BhZ2UgPSB0cnVlO1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVI7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZVJlZnVuZFJlYXNvbiA9IHJlZnVuZFJlYXNvbjtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ2lzc3VlcmVmdW5kcGFnZTEnO1xuICB9XG5cbiAgZ290b0Ftb3VudFBhZ2UoKSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuUkVGVU5ETElTVCA9IFwidHJ1ZVwiO1xuICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVI7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVJlZnVuZFN0YXR1c1BhZ2UgPSB0cnVlO1xuICAgIGlmICh0aGlzLnJlZnVuZGxpc3QucmVhc29uID09ICdSZXRyb3NwZWN0aXZlIHJlbWlzc2lvbicpIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAncHJvY2Vzc3JldHJvcmVtaXNzb25wYWdlJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3TmFtZSA9ICdpc3N1ZXJlZnVuZCc7XG4gICAgfVxuICB9XG5cbiAgZ29Ub1Jldmlld0FuZFN1Ym1pdFZpZXcoKSB7XG4gICAgY29uc3QgcmVtaXNzaW9uY3RybHMgPSB0aGlzLnJlZnVuZFN0YXR1c0Zvcm0uY29udHJvbHNcbiAgICBpZiAodGhpcy5yZWZ1bmRTdGF0dXNGb3JtLmRpcnR5KSB7XG4gICAgICBpZiAocmVtaXNzaW9uY3RybHNbJ2Ftb3VudCddLnZhbHVlID09ICcnKSB7XG4gICAgICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFt0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ2Ftb3VudCcpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAocmVtaXNzaW9uY3RybHNbJ2Ftb3VudCddLnZhbHVlICE9ICcnICYmIHJlbWlzc2lvbmN0cmxzWydhbW91bnQnXS5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFtmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlXSwgJ2Ftb3VudCcpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAocmVtaXNzaW9uY3RybHNbJ3JlYXNvbiddLnZhbHVlID09ICcnKSB7XG4gICAgICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlXSwgJ3JlYXNvbicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZWZ1bmRsaXN0LnJlYXNvbiA9IHJlbWlzc2lvbmN0cmxzWydyZWFzb24nXS52YWx1ZTtcbiAgICAgICAgdGhpcy52aWV3TmFtZSA9ICdyZXZpZXdhbmRzdWJtaXR2aWV3JztcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIHJlc2V0UmVtaXNzaW9uRm9ybSh2YWwsIGZpZWxkKSB7XG4gICAgaWYgKGZpZWxkID09PSAnQWxsJykge1xuICAgICAgdGhpcy5pc0Ftb3VudEVtcHR5ID0gdmFsWzBdO1xuICAgICAgdGhpcy5hbW91bnRIYXNFcnJvciA9IHZhbFsxXTtcbiAgICAgIHRoaXMuaXNSZW1pc3Npb25MZXNzVGhhbkZlZUVycm9yID0gdmFsWzJdO1xuICAgICAgdGhpcy5pc1JlYXNvbkVtcHR5ID0gdmFsWzNdO1xuICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdhbW91bnQnIHx8IGZpZWxkID09PSAnQWxsJykge1xuICAgICAgdGhpcy5pc0Ftb3VudEVtcHR5ID0gdmFsWzBdO1xuICAgICAgdGhpcy5hbW91bnRIYXNFcnJvciA9IHZhbFsxXTtcbiAgICAgIHRoaXMuaXNSZW1pc3Npb25MZXNzVGhhbkZlZUVycm9yID0gdmFsWzJdO1xuICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdyZWFzb24nIHx8IGZpZWxkID09PSAnQWxsJykge1xuICAgICAgdGhpcy5pc1JlYXNvbkVtcHR5ID0gdmFsWzNdO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJhZGlvQnV0dG9uKGtleSwgdmFsdWUpIHtcbiAgICB0aGlzLnJlZnVuZEhhc0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZFJlZnVuZFJlYXNvbiA9IGtleTtcbiAgICBpZiAoa2V5ID09PSAnT3RoZXInKSB7XG4gICAgICB0aGlzLnJlZnVuZEhhc0Vycm9yID0gZmFsc2U7XG4gICAgICB0aGlzLnJlZnVuZFJlYXNvbiA9IGtleTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZ1bmRMaXN0UmVhc29uKHJlZnVuZExpc3RSZWFzb246IGFueSkge1xuICAgIGlmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUmVmdW5kU3RhdHVzUGFnZSAmJiAhdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzY2FuY2VsQ2xpY2tlZCkge1xuICAgICAgaWYgKHJlZnVuZExpc3RSZWFzb24ucmVhc29uICE9IHVuZGVmaW5lZCAmJiByZWZ1bmRMaXN0UmVhc29uLnJlYXNvbiAhPSBudWxsICYmIHJlZnVuZExpc3RSZWFzb24ucmVhc29uICE9IHRoaXMucmVmdW5kbGlzdC5yZWFzb24pIHtcbiAgICAgICAgdGhpcy5yZWZ1bmRsaXN0LnJlYXNvbiA9IHJlZnVuZExpc3RSZWFzb24ucmVhc29uO1xuICAgICAgICB0aGlzLnJlZnVuZGxpc3QucmVhc29uX2NvZGUgPSByZWZ1bmRMaXN0UmVhc29uLmNvZGUuc3BsaXQoJy0nKVswXS50cmltKCk7XG4gICAgICAgIHRoaXMucmVmdW5kbGlzdC5jb2RlID0gcmVmdW5kTGlzdFJlYXNvbi5jb2RlO1xuICAgICAgICB0aGlzLnJlZnVuZENvZGUgPSByZWZ1bmRMaXN0UmVhc29uLmNvZGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMudmlld05hbWUgPSAncmV2aWV3YW5kc3VibWl0dmlldyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNDRF9DQVNFX05VTUJFUiA9IHRoaXMuY2NkQ2FzZU51bWJlcjtcbiAgfVxuXG4gIGdldFJlZnVuZEFtb3VudChhbW91bnQ6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUmVmdW5kU3RhdHVzUGFnZSAmJiAhdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzY2FuY2VsQ2xpY2tlZCkge1xuICAgICAgaWYgKGFtb3VudCA+IDApIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VkQW1vdW50ID0gYW1vdW50O1xuICAgICAgICAvLyB0aGlzLnJlZnVuZGxpc3QuYW1vdW50ID0gYW1vdW50O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzUmVmdW5kQnRuRGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVIgPSB0aGlzLmNjZENhc2VOdW1iZXI7XG4gIH1cblxuICBnZXRSZWZ1bmRGZWVzKGZlZXM6IElGZWVbXSkge1xuICAgIHRoaXMuZmVlcyA9IGZlZXM7XG4gICAgdGhpcy5yZWZ1bmRGZWVzID0gdGhpcy5mZWVzLm1hcChvYmogPT4gKHtcbiAgICAgIGZlZV9pZDogb2JqLmlkLFxuICAgICAgY29kZTogb2JqLmNvZGUsXG4gICAgICB2ZXJzaW9uOiBvYmoudmVyc2lvbixcbiAgICAgIHZvbHVtZTogb2JqLnVwZGF0ZWRfdm9sdW1lID8gb2JqLnVwZGF0ZWRfdm9sdW1lIDogb2JqLnZvbHVtZSxcbiAgICAgIHJlZnVuZF9hbW91bnQ6IG9iai5yZWZ1bmRfYW1vdW50XG4gICAgfSkpO1xuICB9XG5cbiAgZ290b1Jldmlld1JlZnVuZENvbmZpcm1hdGlvblBhZ2UoKSB7XG4gICAgLy8gaWYgKHRoaXMub2xkUmVmdW5kUmVhc29uID09PSB0aGlzLnJlZnVuZGxpc3QucmVhc29uKSB7XG4gICAgLy8gICB0aGlzLnJlZnVuZENvZGUgPSAnJztcbiAgICAvLyB9XG4gICAgaWYgKHRoaXMucmVmdW5kRmVlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnJlZnVuZEZlZXMgPSB0aGlzLnJlZnVuZGxpc3RbJ3JlZnVuZF9mZWVzJ107XG4gICAgfVxuICAgIGlmICh0aGlzLnJlZnVuZGxpc3QucmVhc29uID09ICdSZXRyb3NwZWN0aXZlIHJlbWlzc2lvbicpIHtcbiAgICAgIHRoaXMucmVmdW5kRmVlc1swXS5yZWZ1bmRfYW1vdW50ID0gdGhpcy5jaGFuZ2VkQW1vdW50O1xuICAgIH1cbiAgICB0aGlzLnJlZnVuZENvZGUgPSB0aGlzLnJlZnVuZGxpc3QuY29kZTtcbiAgICBjb25zdCByZXN1Ym1pdFJlcXVlc3QgPSBuZXcgSVJlc3VibWl0UmVmdW5kUmVxdWVzdCh0aGlzLnJlZnVuZENvZGUsIHRoaXMuY2hhbmdlZEFtb3VudCwgdGhpcy5yZWZ1bmRsaXN0LmNvbnRhY3RfZGV0YWlscywgdGhpcy5yZWZ1bmRGZWVzKTtcbiAgICB0aGlzLnJlZnVuZFNlcnZpY2UucGF0Y2hSZXN1Ym1pdFJlZnVuZChyZXN1Ym1pdFJlcXVlc3QsIHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgIGlmIChKU09OLnBhcnNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgIHRoaXMucmVmdW5kUmVmZXJlbmNlID0gSlNPTi5wYXJzZShyZXNwb25zZSkucmVmdW5kX3JlZmVyZW5jZTtcbiAgICAgICAgICB0aGlzLnJlZnVuZEFtb3VudCA9IEpTT04ucGFyc2UocmVzcG9uc2UpLnJlZnVuZF9hbW91bnQ7XG4gICAgICAgICAgdGhpcy52aWV3TmFtZSA9ICdyZXZpZXdyZWZ1bmRjb25maXJtYXRpb25wYWdlJztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZywgXCJcIik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdvdG9FZGl0QWRkcmVzc0RldGFpbHMobm90ZTogSVJlZnVuZHNOb3RpZmljYXRpb25zKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb24gPSBub3RlO1xuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSB0cnVlO1xuICAgIHRoaXMudmlld05hbWUgPSAncmVmdW5kRWRpdFZpZXcnXG4gIH1cbiAgZ2V0Q29udGFjdERldGFpbHMob2JqOiBJUmVmdW5kQ29udGFjdERldGFpbHMpIHtcbiAgICB0aGlzLmFkZHJlc3NEZXRhaWxzID0gb2JqO1xuICAgIHRoaXMuZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50T2JqLCB0aGlzLnJlZnVuZGxpc3QucGF5bWVudF9yZWZlcmVuY2UpO1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMudmlld05hbWUgPSAncmV2aWV3ZWRpdGRldGFpbHNjb25maXJtYXRpb25wYWdlJztcbiAgfVxuICBnZXRDb250YWN0RGV0YWlsc0ZvclJlZnVuZExpc3Qob2JqOiBJUmVmdW5kQ29udGFjdERldGFpbHMpIHtcbiAgICB0aGlzLnJlZnVuZGxpc3QuY29udGFjdF9kZXRhaWxzID0gb2JqO1xuICAgIHRoaXMuZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50T2JqLCB0aGlzLnJlZnVuZGxpc3QucGF5bWVudF9yZWZlcmVuY2UpO1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzUmVmdW5kQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICB9XG4gIGdvdG9FZGl0RGV0YWlsc1BhZ2Uobm90ZT86IGFueSwgdmlldz86IHN0cmluZykge1xuICAgIGlmIChub3RlKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IHsgY29udGFjdF9kZXRhaWxzOiBub3RlLCBub3RpZmljYXRpb25fdHlwZTogbm90ZS5ub3RpZmljYXRpb25fdHlwZSB9O1xuICAgIH1cbiAgICB0aGlzLmlzRWRpdERldGFpbHNDbGlja2VkID0gdHJ1ZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gdmlldztcbiAgfVxuICBzdWJtaXRFZGl0RGV0YWlsKCkge1xuICAgIHRoaXMuaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzID0gZmFsc2U7XG4gICAgY29uc3QgY29udGFjdERldGFpbHMgPSB0aGlzLmFkZHJlc3NEZXRhaWxzLm5vdGlmaWNhdGlvbl90eXBlID09PSAnRU1BSUwnID8gdGhpcy5hZGRyZXNzRGV0YWlscy5lbWFpbCA6XG4gICAgICB7XG4gICAgICAgIGFkZHJlc3NfbGluZTogdGhpcy5hZGRyZXNzRGV0YWlscy5hZGRyZXNzX2xpbmUsXG4gICAgICAgIGNpdHk6IHRoaXMuYWRkcmVzc0RldGFpbHMuY2l0eSxcbiAgICAgICAgY291bnR5OiB0aGlzLmFkZHJlc3NEZXRhaWxzLmNvdW50eSxcbiAgICAgICAgY291bnRyeTogdGhpcy5hZGRyZXNzRGV0YWlscy5jb3VudHJ5LFxuICAgICAgICBwb3N0YWxfY29kZTogdGhpcy5hZGRyZXNzRGV0YWlscy5wb3N0YWxfY29kZSxcbiAgICAgIH07XG4gICAgY29uc3QgcmVzZW5kUmVxdWVzdCA9IG5ldyBJUHV0Tm90aWZpY2F0aW9uUmVxdWVzdChjb250YWN0RGV0YWlscywgdGhpcy5hZGRyZXNzRGV0YWlscy5ub3RpZmljYXRpb25fdHlwZSk7XG5cbiAgICB0aGlzLnJlZnVuZFNlcnZpY2UucHV0UmVzZW5kT3JFZGl0KHJlc2VuZFJlcXVlc3QsIHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlLCB0aGlzLmFkZHJlc3NEZXRhaWxzLm5vdGlmaWNhdGlvbl90eXBlKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5pc1Jlc2VuZE9wZXJhdGlvblN1Y2Nlc3MgPSByZXNwb25zZTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLnJlcGxhY2UoL1wiL2csIFwiXCIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgcHV0UmVzZW5kKG5vdGlmaWNhdGlvbjogSVJlZnVuZHNOb3RpZmljYXRpb25zKSB7XG4gICAgdGhpcy5pc1Jlc2VuZE9wZXJhdGlvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgICBjb25zdCBjb250YWN0RGV0YWlscyA9IG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25fdHlwZSA9PT0gJ0VNQUlMJyA/IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuZW1haWwgOlxuICAgICAge1xuICAgICAgICBhZGRyZXNzX2xpbmU6IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuYWRkcmVzc19saW5lLFxuICAgICAgICBjaXR5OiBub3RpZmljYXRpb24uY29udGFjdF9kZXRhaWxzLmNpdHksXG4gICAgICAgIGNvdW50eTogbm90aWZpY2F0aW9uLmNvbnRhY3RfZGV0YWlscy5jb3VudHksXG4gICAgICAgIGNvdW50cnk6IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuY291bnRyeSxcbiAgICAgICAgcG9zdGFsX2NvZGU6IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMucG9zdGFsX2NvZGUsXG4gICAgICB9O1xuICAgIGNvbnN0IHJlc2VuZFJlcXVlc3QgPSBuZXcgSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QoY29udGFjdERldGFpbHMsIG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25fdHlwZSk7XG5cbiAgICB0aGlzLnJlZnVuZFNlcnZpY2UucHV0UmVzZW5kT3JFZGl0KHJlc2VuZFJlcXVlc3QsIHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlLCBub3RpZmljYXRpb24ubm90aWZpY2F0aW9uX3R5cGUpLnN1YnNjcmliZShcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyA9IHJlc3BvbnNlO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZywgXCJcIik7XG4gICAgICB9XG4gICAgKTtcblxuICB9XG5cbiAgZ290b1JlZnVuZFZpZXdQYWdlQ2FuY2VsQnRuQ2xpY2tlZChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3JlZnVuZHZpZXcnO1xuICB9XG5cbiAgZ290b1JlZnVuZFJldmlld0FuZFN1Ym1pdFZpZXdQYWdlQ2FuY2VsQnRuQ2xpY2tlZChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICB9XG5cbiAgZ29Ub1JlZnVuZFByb2Nlc3NDb21wb25lbnQocmVmdW5kUmVmZXJlbmNlOiBzdHJpbmcsIHJlZnVuZExpc3Q6IElSZWZ1bmRMaXN0KSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnJlZnVuZGxpc3Rzb3VyY2UgPSByZWZ1bmRMaXN0O1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5yZWZ1bmRSZWZlcmVuY2UgPSByZWZ1bmRSZWZlcmVuY2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVBheUJ1YmJsZSA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3Byb2Nlc3MtcmVmdW5kJztcbiAgfVxuXG4gIGdldFRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlKHBheW1lbnQ6IElQYXltZW50LCBwYXltZW50UmVmZXJlbmNlOiBzdHJpbmcpOiB2b2lkIHtcblxuICAgIGlmIChwYXltZW50ID09IHVuZGVmaW5lZCB8fCBwYXltZW50ID09IG51bGwgfHwgcGF5bWVudC5yZWZlcmVuY2UgIT0gcGF5bWVudFJlZmVyZW5jZSkge1xuXG4gICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRQYXltZW50RGV0YWlscyhwYXltZW50UmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICAgIHBheW1lbnQgPT4ge1xuICAgICAgICAgIHRoaXMucGF5bWVudE9iaiA9IHBheW1lbnQ7XG4gICAgICAgICAgdGhpcy5wYXltZW50T2JqLnJlZmVyZW5jZSA9IHBheW1lbnRSZWZlcmVuY2U7XG4gICAgICAgICAgdGhpcy50ZW1wbGF0ZUluc3RydWN0aW9uVHlwZSA9IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5nZXROb3RpZmljYXRpb25JbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50T2JqLmNoYW5uZWwsIHRoaXMucGF5bWVudE9iai5tZXRob2QpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudGVtcGxhdGVJbnN0cnVjdGlvblR5cGUgPSAnVGVtcGxhdGUnO1xuICAgICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlID0gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmdldE5vdGlmaWNhdGlvbkluc3RydWN0aW9uVHlwZShwYXltZW50LmNoYW5uZWwsIHBheW1lbnQubWV0aG9kKTtcbiAgICB9XG4gIH1cblxuICBzaG93Tm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSB0cnVlO1xuICB9XG5cbiAgaGlkZU5vdGlmaWNhdGlvblByZXZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3ID0gZmFsc2U7XG4gIH1cblxuICBzaG93Tm90aWZpY2F0aW9uU2VudFZpZXcoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VudFZpZXdJbmRleCA9IGluZGV4O1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VudFZpZXcgPSB0cnVlO1xuICB9XG5cbiAgaGlkZU5vdGlmaWNhdGlvblNlbnRWaWV3KCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VudFZpZXdJbmRleCA9IC0xO1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VudFZpZXcgPSBmYWxzZTtcbiAgfVxuXG59XG4iLCJcbjxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj5cbiAgPGRpdiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJmYWlsdXJlLWVycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bSBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImZhaWx1cmUtZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAgICBFcnJvciBpbiBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0XG4gICAgPC9oMj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiPlxuICAgICAge3sgZXJyb3JNZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3TmFtZT09PSdyZWZ1bmRzdGF0dXNsaXN0JyAmJiByZWplY3RlZFJlZnVuZExpc3QgJiYgIWlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyAmJiAhaXNFZGl0RGV0YWlsc0NsaWNrZWRcIj5cbiAgPCEtLSBwYXltZW50cyAtLT5cblxuICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTE2XCIgc2NvcGU9XCJjb2xcIj5TdGF0dXM8L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNvbC0xMVwiIHNjb3BlPVwiY29sXCI+QW1vdW50PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjb2wtMThcIiBzY29wZT1cImNvbFwiPkRhdGU8L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNvbC0yNVwiIHNjb3BlPVwiY29sXCI+UmVmdW5kIHJlZmVyZW5jZTwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTI0IFwiIHNjb3BlPVwiY29sXCI+UmVhc29uPC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0lmPVwicmVqZWN0ZWRSZWZ1bmRMaXN0Py5sZW5ndGggPiAwXCI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgKm5nRm9yPVwibGV0IHJlZnVuZExpc3Qgb2YgcmVqZWN0ZWRSZWZ1bmRMaXN0XCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlZnVuZExpc3Q/LnJlZnVuZF9zdGF0dXNbJ25hbWUnXSB9fTwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cImNoYW5uZWwgZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+wqN7eyByZWZ1bmRMaXN0Py5hbW91bnQgfCBudW1iZXI6Jy4yJyB9fTwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsICB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZWZ1bmRMaXN0Py5kYXRlX3VwZGF0ZWQgfCBkYXRlOidkZCBNTU0geXl5eSd9fVxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZWZ1bmRMaXN0Py5yZWZ1bmRfcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+IHt7cmVmdW5kTGlzdD8ucmVhc29ufX08L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImdvVG9SZWZ1bmRWaWV3KHJlZnVuZExpc3QsJ2Nhc2V0cmFuc2FjdGlvbnMnKVwiPlJldmlldzwvYT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cbiAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0lmPVwicmVqZWN0ZWRSZWZ1bmRMaXN0Py5sZW5ndGggPT09IDBcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCIgY29sc3Bhbj1cIjZcIj5ObyByZWZ1bmRzIHJlY29yZGVkPC90ZD5cbiAgICA8L3Rib2R5PlxuICA8L3RhYmxlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3TmFtZT09PSdyZWZ1bmR2aWV3JyAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmICFpc0VkaXREZXRhaWxzQ2xpY2tlZFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNcIj5cbiAgICA8b2wgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic19fbGlzdFwiPlxuICAgICAgPGxpIGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNfX2xpc3QtaXRlbVwiPlxuICAgICAgICA8YSAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJsb2FkUmVmdW5kTGlzdFBhZ2UoKVwiIGNsYXNzPVwiZ292dWstYmFjay1saW5rIGdvdnVrLWxhYmVsXCI+QmFjazwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC9vbD5cbiAgPC9kaXY+XG4gIDxoMiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPlJlZnVuZCBkZXRhaWxzPC9oMj5cbiAgPHRhYmxlPlxuICAgIFxuICAgIDx0Ym9keT5cbiAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPlJlZnVuZCByZWZlcmVuY2U8L3RkPlxuICAgICAgICA8dGQ+e3sgcmVmdW5kbGlzdD8ucmVmdW5kX3JlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+UGF5bWVudCB0byBiZSByZWZ1bmRlZDwvdGQ+XG4gICAgICAgIDx0ZD57e3JlZnVuZGxpc3Q/LnBheW1lbnRfcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj5SZWFzb24gZm9yIHJlZnVuZDwvdGQ+XG4gICAgICAgIDx0ZD57eyByZWZ1bmRsaXN0Py5yZWFzb24gfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPkFtb3VudCByZWZ1bmRlZDwvdGQ+XG4gICAgICAgIDx0ZD7Co3t7cmVmdW5kbGlzdD8uYW1vdW50IHwgbnVtYmVyOicuMicgfX08L3RkPlxuICAgICAgPC90cj5cblxuICAgIDwvdGJvZHk+XG4gIDwvdGFibGU+XG5cblxuICAgIDwhLS0gTm90aWZpY2F0aW9uIHNlbnQgZGV0YWlscyAtLT5cbiAgICA8ZGl2PlxuICAgICAgPGJyIC8+XG4gICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLW1cIj5Ob3RpZmljYXRpb25zIHNlbnQ8L2gyPlxuICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgPHRoZWFkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRcIj5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNvbC0yNCB3aGl0ZXNwYWNlLWluaGVyaXRcIiBzY29wZT1cImNvbFwiPkRhdGUgYW5kIHRpbWU8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjb2wtMjcgd2hpdGVzcGFjZS1pbmhlcml0XCIgc2NvcGU9XCJjb2xcIj5TZW50IHRvPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgd2hpdGVzcGFjZS1pbmhlcml0XCIgc2NvcGU9XCJjb2xcIj5TZW50IHZpYTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+QWN0aW9uczwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdJZj1cIm5vdGlmaWNhdGlvbkxpc3RcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9uTGlzdDsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3tub3RpZmljYXRpb24uZGF0ZV9jcmVhdGVkIHwgZGF0ZTonZGQgTU1NTSB5eXl5IEhIOm1tOnNzJ319PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3tvcmRlclBhcnR5fX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXQgY29sLTQwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vdGlmaWNhdGlvbj8ubm90aWZpY2F0aW9uX3R5cGUgPT09ICdFTUFJTCdcIj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+RW1haWw8L3N0cm9uZz48YnI+XG4gICAgICAgICAgICAgICAgICB7e25vdGlmaWNhdGlvbj8uY29udGFjdF9kZXRhaWxzPy5lbWFpbD8udHJpbSgpfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm90aWZpY2F0aW9uPy5ub3RpZmljYXRpb25fdHlwZSA9PT0gJ0xFVFRFUidcIj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+UG9zdDwvc3Ryb25nPjxicj5cbiAgICAgICAgICAgICAgICAgIHt7bm90aWZpY2F0aW9uPy5jb250YWN0X2RldGFpbHM/LmFkZHJlc3NfbGluZT8udHJpbSgpfX0ge3tub3RpZmljYXRpb24/LmNvbnRhY3RfZGV0YWlscz8uY2l0eT8udHJpbSgpfX0ge3tub3RpZmljYXRpb24/LmNvbnRhY3RfZGV0YWlscz8uY291bnR5Py50cmltKCl9fSB7e25vdGlmaWNhdGlvbj8uY29udGFjdF9kZXRhaWxzPy5jb3VudHJ5Py50cmltKCl9fSB7e25vdGlmaWNhdGlvbj8uY29udGFjdF9kZXRhaWxzPy5wb3N0YWxfY29kZT8udHJpbSgpfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCIgKm5nSWY9XCJpID09PSAwXCI+PGEgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwicHV0UmVzZW5kKG5vdGlmaWNhdGlvbilcIj5SZXNlbmQ8L2E+Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwOzxhIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMCk7XCIgKGNsaWNrKT1cImdvdG9FZGl0QWRkcmVzc0RldGFpbHMobm90aWZpY2F0aW9uKVwiPkVkaXQgZGV0YWlsczwvYT4mbmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7PGEgKm5nSWY9XCIhbm90aWZpY2F0aW9uU2VudFZpZXcgfHwgaSAhPSBub3RpZmljYXRpb25TZW50Vmlld0luZGV4XCIgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwic2hvd05vdGlmaWNhdGlvblNlbnRWaWV3KGkpXCI+VmlldzwvYT48YSAqbmdJZj1cImkgPT09IG5vdGlmaWNhdGlvblNlbnRWaWV3SW5kZXggJiYgbm90aWZpY2F0aW9uU2VudFZpZXdcIiBocmVmPVwiSmF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJoaWRlTm90aWZpY2F0aW9uU2VudFZpZXcoKVwiPkhpZGU8L2E+PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCIgKm5nSWY9XCJpID4gMFwiPjxhICpuZ0lmPVwiIW5vdGlmaWNhdGlvblNlbnRWaWV3IHx8IGkgIT0gbm90aWZpY2F0aW9uU2VudFZpZXdJbmRleFwiIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMCk7XCIgKGNsaWNrKT1cInNob3dOb3RpZmljYXRpb25TZW50VmlldyhpKVwiPlZpZXc8L2E+PGEgKm5nSWY9XCJpID09PSBub3RpZmljYXRpb25TZW50Vmlld0luZGV4ICYmIG5vdGlmaWNhdGlvblNlbnRWaWV3XCIgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwiaGlkZU5vdGlmaWNhdGlvblNlbnRWaWV3KClcIj5IaWRlPC9hPjwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiaSA9PT0gbm90aWZpY2F0aW9uU2VudFZpZXdJbmRleCAmJiBub3RpZmljYXRpb25TZW50Vmlld1wiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGNvbHNwYW49XCI0XCI+XG4gICAgICAgICAgICAgICAgPGFwcC1ub3RpZmljYXRpb24tcHJldmlld1xuICAgICAgICAgICAgICAgICAgW3ByZXZpZXdKb3VybmV5XT1cIidOb3RpZmljYXRpb25zIHNlbnQnXCIgW25vdGlmaWNhdGlvblNlbnRdPVwibm90aWZpY2F0aW9uPy5zZW50X25vdGlmaWNhdGlvblwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLW5vdGlmaWNhdGlvbi1wcmV2aWV3PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0lmPVwiIW5vdGlmaWNhdGlvbkxpc3RcIj5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIiBjb2xzcGFuPVwiNFwiPk5vIHJlY29yZCBmb3VuZCAuLi4gPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT4gIFxuICAgIDwvZGl2PlxuICA8IS0tIFN0YXR1cyBoaXN0b3J5IC0tPlxuICA8ZGl2PlxuICAgIDxiciAvPlxuICAgIDxoMiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbVwiPlJlZnVuZCBzdGF0dXMgaGlzdG9yeTwvaDI+XG4gICAgPGRpdiAqbmdJZj1cInJlZnVuZFN0YXR1c0hpc3Rvcmllc1wiPlxuICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCI+XG4gICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjb2wtMjQgd2hpdGVzcGFjZS1pbmhlcml0XCIgc2NvcGU9XCJjb2xcIj5TdGF0dXM8L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTI3IHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+RGF0ZSBhbmQgdGltZTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciB3aGl0ZXNwYWNlLWluaGVyaXRcIiBzY29wZT1cImNvbFwiPlVzZXJzPC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+Tm90ZXM8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgKm5nRm9yPVwibGV0IHJlZnVuZFN0YXR1c0hpc3Rvcnkgb2YgcmVmdW5kU3RhdHVzSGlzdG9yaWVzO1wiPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3tyZWZ1bmRTdGF0dXNIaXN0b3J5LnN0YXR1c319PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj5cbiAgICAgICAgICAgICB7e3JlZnVuZFN0YXR1c0hpc3RvcnkuZGF0ZV9jcmVhdGVkIHwgZGF0ZTonZGQgTU1NTSB5eXl5IEhIOm1tOnNzJ319XG4gICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3tyZWZ1bmRTdGF0dXNIaXN0b3J5LmNyZWF0ZWRfYnl9fTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3tyZWZ1bmRTdGF0dXNIaXN0b3J5Lm5vdGVzfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld05hbWU9PT0ncmVmdW5kdmlldycgJiYgIWlzRnJvbVBheUJ1YmJsZSAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmICFpc0VkaXREZXRhaWxzQ2xpY2tlZFwiPlxuICAgIDxkaXYgICpuZ0lmPVwicmVmdW5kQnV0dG9uU3RhdGU9PT0nVXBkYXRlIHJlcXVpcmVkJ1wiID5cbiAgICAgIDwhLS0gPGRpdiAqbmdJZj1cInJlZnVuZEJ1dHRvblN0YXRlPT09J3NlbnQgYmFjaydcIj4gLS0+XG4gICAgICA8YnIgLz5cbiAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5IGJ0bm1hcmdpblwiXG4gICAgICAgIChjbGljayk9XCJnb3RvUmV2aWV3QW5kUmVTdWJtaXRQYWdlKClcIj5DaGFuZ2UgcmVmdW5kIGRldGFpbHM8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNQcm9jZXNzUmVmdW5kICYmICFpc0xhc3RVcGRhdGVkQnlDdXJyZW50VXNlciAmJiByZWZ1bmRCdXR0b25TdGF0ZT09PSdTZW50IGZvciBhcHByb3ZhbCdcIiA+XG4gICAgICA8IS0tIDxkaXYgKm5nSWY9XCJpc1Byb2Nlc3NSZWZ1bmQgJiYgIWlzTGFzdFVwZGF0ZWRCeUN1cnJlbnRVc2VyICYmIHJlZnVuZEJ1dHRvblN0YXRlPT09J3NlbnQgZm9yIGFwcHJvdmFsJ1wiPiAtLT5cbiAgICAgIDxiciAvPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub1JlZnVuZFByb2Nlc3NDb21wb25lbnQocmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlLHJlZnVuZGxpc3QpXCI+UHJvY2VzcyByZWZ1bmQ8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cblxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3TmFtZT09PSdyZXZpZXdhbmRzdWJtaXR2aWV3JyAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmICFpc0VkaXREZXRhaWxzQ2xpY2tlZFwiPlxuICA8IS0tIDxkaXYgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic1wiPlxuICAgIDxvbCBjbGFzcz1cImdvdnVrLWJyZWFkY3J1bWJzX19saXN0XCI+XG4gICAgICA8bGkgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic19fbGlzdC1pdGVtXCI+XG4gICAgICAgIDxhIChjbGljayk9XCJnb3RvUmV2aWV3RGV0YWlsc1BhZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZ292dWstYmFjay1saW5rIGdvdnVrLWxhYmVsXCI+QmFjazwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC9vbD5cbiAgPC9kaXY+IC0tPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0XCI+XG4gICAgPGgxIGNsYXNzPVwiaGVhZGluZy1sYXJnZVwiPkNoZWNrIHlvdXIgYW5zd2VyczwvaDE+XG4gIDwvZGl2PlxuICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPlBheW1lbnQgcmVmZXJlbmNlPC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcmVmdW5kbGlzdD8ucGF5bWVudF9yZWZlcmVuY2V9fSA8L3RkPlxuICAgIDwvdHI+XG4gICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+UmVhc29uIGZvciByZXR1cm48L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e3JlZnVuZHJlYXNvbn19PC90ZD5cbiAgICA8L3RyPlxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPlJlZnVuZCByZWZlcmVuY2U8L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyByZWZ1bmRsaXN0Py5yZWZ1bmRfcmVmZXJlbmNlfX0gPC90ZD5cbiAgICA8L3RyPlxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPlJlYXNvbiBmb3IgcmVmdW5kPC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcmVmdW5kbGlzdD8ucmVhc29uPy50cmltKCl9fVxuICAgICAgICA8YSAoY2xpY2spPVwiZ290b1JlZnVuZFJlYXNvblBhZ2UocmVmdW5kbGlzdD8ucmVhc29uKVwiICpuZ0lmPVwicmVmdW5kbGlzdD8ucmVhc29uICE9PSAnUmV0cm9zcGVjdGl2ZSByZW1pc3Npb24nICYmIHJlZnVuZGxpc3Q/LnJlYXNvbiAhPT0gJ092ZXJwYXltZW50J1wiXG4gICAgICAgICAgY2xhc3M9XCJnb3Z1ay1saW5rIHJpZ2h0XCI+Q2hhbmdlPC9hPlxuICAgICAgPC90ZD5cblxuICAgICAgPCEtLSA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IHJlZnVuZGxpc3Q/LnJlYXNvbiB9fTwvdGQ+XG4gICAgICA8YSAoY2xpY2spPVwiZ290b1JlZnVuZFJlYXNvblBhZ2UoKVwiIGNsYXNzPVwiZ292dWstbGluayByaWdodFwiPkNoYW5nZTwvYT4gLS0+XG4gICAgPC90cj5cbiAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj5SZWZ1bmQgYW1vdW50PC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+wqN7eyBjaGFuZ2VkQW1vdW50ID8gY2hhbmdlZEFtb3VudCA6IHJlZnVuZGxpc3Q/LmFtb3VudCB8IG51bWJlcjonLjInIH19XG4gICAgICAgIDxhIChjbGljayk9XCJnb3RvQW1vdW50UGFnZSgpXCIgKm5nSWY9XCJyZWZ1bmRsaXN0Py5yZWFzb24gIT09ICdPdmVycGF5bWVudCdcIlxuICAgICAgICAgIGNsYXNzPVwiZ292dWstbGluayByaWdodFwiPkNoYW5nZTwvYT5cbiAgICAgIDwvdGQ+XG5cbiAgICA8L3RyPlxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPlNlbmQgdG88L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e29yZGVyUGFydHl9fSA8L3RkPlxuICAgIDwvdHI+XG4gICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+U2VuZCB2aWE8L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZWZ1bmRsaXN0Py5jb250YWN0X2RldGFpbHM/Lm5vdGlmaWNhdGlvbl90eXBlID09PSAnRU1BSUwnXCIgY2xhc3M9XCJjb250YWN0RGV0YWlscy13aWR0aCBmb250LXNpemUtMTlweFwiPlxuICAgICAgICAgIDxzdHJvbmc+RW1haWw8L3N0cm9uZz5cbiAgICAgICAgICA8YnIvPlxuICAgICAgICAgIHt7cmVmdW5kbGlzdD8uY29udGFjdF9kZXRhaWxzPy5lbWFpbD8udHJpbSgpfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZWZ1bmRsaXN0Py5jb250YWN0X2RldGFpbHM/Lm5vdGlmaWNhdGlvbl90eXBlID09PSAnTEVUVEVSJ1wiIGNsYXNzPVwiY29udGFjdERldGFpbHMtd2lkdGggZm9udC1zaXplLTE5cHhcIj5cbiAgICAgICAgICA8c3Ryb25nPlBvc3Q8L3N0cm9uZz5cbiAgICAgICAgICA8YnIvPlxuICAgICAgICAgIHt7cmVmdW5kbGlzdD8uY29udGFjdF9kZXRhaWxzPy5hZGRyZXNzX2xpbmU/LnRyaW0oKX19IHt7cmVmdW5kbGlzdD8uY29udGFjdF9kZXRhaWxzPy5jaXR5Py50cmltKCl9fSB7e3JlZnVuZGxpc3Q/LmNvbnRhY3RfZGV0YWlscz8uY291bnR5Py50cmltKCl9fSB7e3JlZnVuZGxpc3Q/LmNvbnRhY3RfZGV0YWlscz8uY291bnRyeT8udHJpbSgpfX0ge3tyZWZ1bmRsaXN0Py5jb250YWN0X2RldGFpbHM/LnBvc3RhbF9jb2RlPy50cmltKCl9fVxuICAgICAgICA8L2Rpdj4gXG4gICAgICAgIDxhIGNsYXNzPVwiZ292dWstbGlua1wiIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMClcIiAqbmdJZj1cInJlZnVuZGxpc3Q/LmNvbnRhY3RfZGV0YWlscyAhPW51bGxcIiAgY2xhc3M9XCJnb3Z1ay1saW5rIHJpZ2h0XCIgKGNsaWNrKT1cImdvdG9FZGl0RGV0YWlsc1BhZ2UocmVmdW5kbGlzdD8uY29udGFjdF9kZXRhaWxzLCAncmV2aWV3YW5kc3VibWl0RWRpdHZpZXcnKVwiPlxuICAgICAgICAgIENoYW5nZVxuICAgICAgICA8L2E+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+IFxuXG4gICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+Tm90aWZpY2F0aW9uPC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3t0ZW1wbGF0ZUluc3RydWN0aW9uVHlwZX19IFxuICAgICAgICAgIDxhICpuZ0lmPVwiIW5vdGlmaWNhdGlvblByZXZpZXdcIiBocmVmPVwiSmF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHJpZ2h0XCIgKGNsaWNrKT1cInNob3dOb3RpZmljYXRpb25QcmV2aWV3KClcIj5cbiAgICAgICAgICAgIFByZXZpZXdcbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGEgKm5nSWY9XCJub3RpZmljYXRpb25QcmV2aWV3XCIgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGluayByaWdodFwiIChjbGljayk9XCJoaWRlTm90aWZpY2F0aW9uUHJldmlldygpXCI+XG4gICAgICAgICAgICBIaWRlIFByZXZpZXdcbiAgICAgICAgICA8L2E+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvdGFibGU+XG4gIDxhcHAtbm90aWZpY2F0aW9uLXByZXZpZXcgKm5nSWY9XCJub3RpZmljYXRpb25QcmV2aWV3XCIgXG4gIFtwYXltZW50UmVmZXJlbmNlXT1cInJlZnVuZGxpc3Q/LnBheW1lbnRfcmVmZXJlbmNlXCJcbiAgW3BheW1lbnRdPVwicGF5bWVudE9ialwiIFxuICBbY29udGFjdERldGFpbHNdPVwicmVmdW5kbGlzdD8uY29udGFjdF9kZXRhaWxzXCJcbiAgW3JlZnVuZFJlYXNvbl09XCJyZWZ1bmRsaXN0Py5yZWFzb25fY29kZVwiXG4gIFtyZWZ1bmRBbW91bnRdPVwiY2hhbmdlZEFtb3VudCA/IGNoYW5nZWRBbW91bnQgOiByZWZ1bmRsaXN0Py5hbW91bnRcIlxuICBbcmVmdW5kUmVmZXJlbmNlXT1cInJlZnVuZGxpc3Q/LnJlZnVuZF9yZWZlcmVuY2VcIj48L2FwcC1ub3RpZmljYXRpb24tcHJldmlldz5cblxuICA8ZGl2IGNsYXNzPVwiZ292dWstYnV0dG9uLWdyb3VwXCI+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiZ290b1Jldmlld0RldGFpbHNQYWdlKCRldmVudClcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeVwiPiBQcmV2aW91czwvYnV0dG9uPlxuICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImlzUmVmdW5kQnRuRGlzYWJsZWRcIiAoY2xpY2spPVwiZ290b1Jldmlld1JlZnVuZENvbmZpcm1hdGlvblBhZ2UoKVwiIGNsYXNzPVwiZ292dWstYnV0dG9uIGJ1dHRvblwiXG4gICAgICBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiPlxuICAgICAgU3VibWl0IHJlZnVuZFxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG48cD48YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImxvYWRSZWZ1bmRMaXN0UGFnZSgpXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIj5DYW5jZWw8L2E+PC9wPlxuICA8IS0tIDxkaXYgY2xhc3M9XCJnb3Z1ay1idXR0b24tZ3JvdXBcIj5cbiAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1JlZnVuZEJ0bkRpc2FibGVkXCIgKGNsaWNrKT1cImdvdG9SZXZpZXdSZWZ1bmRDb25maXJtYXRpb25QYWdlKClcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBidXR0b25cIlxuICAgICAgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIj5cbiAgICAgIFN1Ym1pdCByZWZ1bmRcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+IC0tPlxuICA8IS0tIDxwPlxuICAgIDxhIChjbGljayk9XCJsb2FkUmVmdW5kTGlzdFBhZ2UoKVwiIGhyZWY9XCJcIiBjbGFzcz1cImNhbmNlbGJ0blwiPkNhbmNlbDwvYT5cbiAgPC9wPiAtLT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld05hbWUgPT09ICdyZXZpZXdhbmRzdWJtaXRFZGl0dmlldycgJiYgaXNFZGl0RGV0YWlsc0NsaWNrZWRcIj5cbiAgPGlucHV0ICNteUlucHV0IHR5cGU9J2hpZGRlbicgaWQ9J2lGcmFtZURyaXZlbkltYWdlVmFsdWUnIHZhbHVlPSdFRElUREVUQUlMU1BBR0UnPiAgICAgIFxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPkVkaXQgY29udGFjdCBkZXRhaWxzPC9oMT5cbiAgICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLW0gZ292dWstZm9udDE5cHhcIj5DYXNlIHJlZmVyZW5jZToge3tjY2RDYXNlTnVtYmVyIHwgY2NkSHlwaGVucyB9fTwvaDI+XG4gICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay1oaW50IGZvbnQtc2l6ZS0xOXB4XCI+XG4gICAgICBSZWZ1bmQgcmVmZXJlbmNlOiB7eyByZWZ1bmRsaXN0Py5yZWZ1bmRfcmVmZXJlbmNlfX1cbiAgICA8L3NwYW4+XG4gICAgPGNjcGF5LWNvbnRhY3QtZGV0YWlsc1xuICAgIFtpc0VkaXRPcGVyYXRpb25JblJlZnVuZExpc3RdID0gaXNFZGl0RGV0YWlsc0NsaWNrZWRcbiAgICBbYWRkcmVzc09ial0gPSBub3RpZmljYXRpb25cbiAgICAoYXNzaWduQ29udGFjdERldGFpbHNJbkZlZnVuZHNMaXN0KT1cImdldENvbnRhY3REZXRhaWxzRm9yUmVmdW5kTGlzdCgkZXZlbnQpXCJcbiAgICAocmVkaXJlY3RUb0lzc3VlUmVmdW5kKT1cImdvdG9SZWZ1bmRSZXZpZXdBbmRTdWJtaXRWaWV3UGFnZUNhbmNlbEJ0bkNsaWNrZWQoJGV2ZW50KVwiID48L2NjcGF5LWNvbnRhY3QtZGV0YWlscz5cbiAgPHA+XG4gICAgICA8YSAoY2xpY2spPVwibG9hZFJlZnVuZExpc3RQYWdlKClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiPlxuICAgICAgICAgIENhbmNlbFxuICAgICAgPC9hPlxuICA8L3A+XG5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld05hbWUgPT09ICdpc3N1ZXJlZnVuZHBhZ2UxJyAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmICFpc0VkaXREZXRhaWxzQ2xpY2tlZFwiPlxuICA8Y2NwYXktYWRkLXJlbWlzc2lvbiBbaXNGcm9tUmVmdW5kTGlzdFBhZ2VdPVwidHJ1ZVwiIFt2aWV3Q29tcFN0YXR1c109XCJ2aWV3TmFtZVwiIFtpc1JlZnVuZFJlbWlzc2lvbl09XCJ0cnVlXCIgW2lzRnJvbVJlZnVuZFN0YXR1c1BhZ2VdID0gXCJ0cnVlXCJcbiAgIFtjaGFuZ2VSZWZ1bmRSZWFzb25dPSBcImNoYW5nZVJlZnVuZFJlYXNvblwiIFtjY2RDYXNlTnVtYmVyXT1cImNjZENhc2VOdW1iZXJcIiAocmVmdW5kTGlzdFJlYXNvbik9XCJnZXRSZWZ1bmRMaXN0UmVhc29uKCRldmVudClcIiBbcmVmdW5kUGF5bWVudFJlZmVyZW5jZV09IFwicmVmdW5kbGlzdD8ucGF5bWVudF9yZWZlcmVuY2VcIiA+PC9jY3BheS1hZGQtcmVtaXNzaW9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3Byb2Nlc3NyZXRyb3JlbWlzc29ucGFnZScgJiYgIWlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyAmJiAhaXNFZGl0RGV0YWlsc0NsaWNrZWRcIj5cbiAgPGNjcGF5LWFkZC1yZW1pc3Npb24gW2lzRnJvbVJlZnVuZExpc3RQYWdlXT1cInRydWVcIiBbdmlld0NvbXBTdGF0dXNdPVwidmlld05hbWVcIiBbaXNSZWZ1bmRSZW1pc3Npb25dPVwidHJ1ZVwiXG4gICAgW2NjZENhc2VOdW1iZXJdPVwiY2NkQ2FzZU51bWJlclwiIFtyZWZ1bmRQYXltZW50UmVmZXJlbmNlXT0gXCJyZWZ1bmRsaXN0Py5wYXltZW50X3JlZmVyZW5jZVwiIChyZWZ1bmRMaXN0QW1vdW50KT1cImdldFJlZnVuZEFtb3VudCgkZXZlbnQpXCI+PC9jY3BheS1hZGQtcmVtaXNzaW9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ2lzc3VlcmVmdW5kJyAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmICFpc0VkaXREZXRhaWxzQ2xpY2tlZFwiPlxuICA8Y2NwYXktYWRkLXJlbWlzc2lvbiBbaXNGcm9tUmVmdW5kTGlzdFBhZ2VdPVwidHJ1ZVwiIFt2aWV3Q29tcFN0YXR1c109XCJ2aWV3TmFtZVwiIFtpc1JlZnVuZFJlbWlzc2lvbl09XCJ0cnVlXCIgW2lzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZV0gPSBcInRydWVcIlxuICAgIFtjY2RDYXNlTnVtYmVyXT1cImNjZENhc2VOdW1iZXJcIiBbcmVmdW5kUGF5bWVudFJlZmVyZW5jZV09IFwicmVmdW5kbGlzdD8ucGF5bWVudF9yZWZlcmVuY2VcIiBbaXNGcm9tUmVmdW5kU3RhdHVzUGFnZV09XCJ0cnVlXCIgIChyZWZ1bmRMaXN0QW1vdW50KT1cImdldFJlZnVuZEFtb3VudCgkZXZlbnQpXCIgIChyZWZ1bmRGZWVzKT1cImdldFJlZnVuZEZlZXMoJGV2ZW50KVwiPjwvY2NwYXktYWRkLXJlbWlzc2lvbj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld05hbWUgPT09ICdyZXZpZXdyZWZ1bmRjb25maXJtYXRpb25wYWdlJyAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmICFpc0VkaXREZXRhaWxzQ2xpY2tlZFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3cgcGFnZXNpemVcIj5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsIGdvdnVrLXBhbmVsLS1jb25maXJtYXRpb25cIj5cbiAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstcGFuZWxfcmVmdW5kX3RpdGxlXCI+XG4gICAgICAgICAgUmVmdW5kIHN1Ym1pdHRlZFxuICAgICAgICA8L2gxPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1wYW5lbF9fYm9keVwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwiZ292dWstYm9keSB3aGl0ZVwiPjxzdHJvbmcgY2xhc3M9XCJ3aGl0ZVwiPlJlZnVuZCByZWZlcmVuY2U6e3tyZWZ1bmRSZWZlcmVuY2V9fSA8L3N0cm9uZz48L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cblxuICAgICAgPGgyIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+V2hhdCBoYXBwZW5zIG5leHQ8L2gyPlxuICAgICAgPHAgY2xhc3M9XCJnb3Z1ay1ib2R5XCI+XG4gICAgICAgIEEgcmVmdW5kIHJlcXVlc3QgZm9yIHt7cmVmdW5kQW1vdW50fCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319IGhhcyBiZWVuIGNyZWF0ZWQgYW5kIHdpbGwgYmUgcGFzc2VkIHRvIGEgdGVhbSBsZWFkZXIgdG8gYXBwcm92ZS5cbiAgICAgIDwvcD5cblxuICAgICAgPHAgY2xhc3M9XCJnb3Z1ay1ib2R5XCI+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwibG9hZFJlZnVuZExpc3RQYWdlKClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIj5SZXR1cm4gdG8gY2FzZTwvYT5cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmVzZW5kT3BlcmF0aW9uU3VjY2Vzc1wiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3cgcGFnZXNpemVcIj5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsIGdvdnVrLXBhbmVsLS1jb25maXJtYXRpb25cIj5cbiAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstcGFuZWxfcmVmdW5kX3RpdGxlXCI+XG4gICAgICAgICAgTm90aWZpY2F0aW9uIHNlbnRcbiAgICAgICAgPC9oMT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcGFuZWxfX2JvZHlcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cImdvdnVrLWJvZHkgd2hpdGVcIj48c3Ryb25nIGNsYXNzPVwid2hpdGVcIj5SZWZ1bmQgcmVmZXJlbmNlOiB7eyByZWZ1bmRsaXN0Py5yZWZ1bmRfcmVmZXJlbmNlfX0gPC9zdHJvbmc+PC9wPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9kaXY+XG4gICAgICA8cCBjbGFzcz1cImdvdnVrLWJvZHlcIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJsb2FkUmVmdW5kTGlzdFBhZ2UoKVwiIGNsYXNzPVwiZ292dWstbGlua1wiPlJldHVybiB0byBjYXNlPC9hPlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdOYW1lID09PSAncmVmdW5kRWRpdFZpZXcnICYmIGlzRWRpdERldGFpbHNDbGlja2VkXCI+XG4gIDxpbnB1dCAjbXlJbnB1dCB0eXBlPSdoaWRkZW4nIGlkPSdpRnJhbWVEcml2ZW5JbWFnZVZhbHVlJyB2YWx1ZT0nRURJVERFVEFJTFNQQUdFJz4gICAgICBcbiAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj5FZGl0IGNvbnRhY3QgZGV0YWlsczwvaDE+XG4gICAgPGgyIGNsYXNzPVwiZ292dWstaGVhZGluZy1tIGdvdnVrLWZvbnQxOXB4XCI+Q2FzZSByZWZlcmVuY2U6IHt7Y2NkQ2FzZU51bWJlciB8IGNjZEh5cGhlbnMgfX08L2gyPlxuICAgIDxzcGFuIGNsYXNzPVwiZ292dWstaGludCBmb250LXNpemUtMTlweFwiPlxuICAgICAgUmVmdW5kIHJlZmVyZW5jZToge3sgcmVmdW5kbGlzdD8ucmVmdW5kX3JlZmVyZW5jZX19XG4gICAgPC9zcGFuPlxuICAgIDxjY3BheS1jb250YWN0LWRldGFpbHNcbiAgICBbaXNFZGl0T3BlcmF0aW9uSW5SZWZ1bmRMaXN0XSA9IGlzRWRpdERldGFpbHNDbGlja2VkXG4gICAgW2FkZHJlc3NPYmpdID0gbm90aWZpY2F0aW9uXG4gICAgKGFzc2lnbkNvbnRhY3REZXRhaWxzSW5GZWZ1bmRzTGlzdCk9XCJnZXRDb250YWN0RGV0YWlscygkZXZlbnQpXCJcbiAgICAocmVkaXJlY3RUb0lzc3VlUmVmdW5kKT1cImdvdG9SZWZ1bmRWaWV3UGFnZUNhbmNlbEJ0bkNsaWNrZWQoJGV2ZW50KVwiID48L2NjcGF5LWNvbnRhY3QtZGV0YWlscz5cbiAgPHA+XG4gICAgICA8YSAoY2xpY2spPVwibG9hZFJlZnVuZExpc3RQYWdlKClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiPlxuICAgICAgICAgIENhbmNlbFxuICAgICAgPC9hPlxuICA8L3A+XG5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdOYW1lID09PSAncmV2aWV3ZWRpdGRldGFpbHNjb25maXJtYXRpb25wYWdlJyAmJiAhaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzICYmIGlzRWRpdERldGFpbHNDbGlja2VkXCI+XG4gIDxpbnB1dCAjbXlJbnB1dCB0eXBlPSdoaWRkZW4nIGlkPSdpRnJhbWVEcml2ZW5JbWFnZVZhbHVlJyB2YWx1ZT0nRURJVERFVEFJTFNDSEVDS0FOREFOU1dFUlBBR0UnPiAgICAgIFxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPkNoZWNrIHlvdXIgYW5zd2VyczwvaDE+XG4gICAgPGRsIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3cgZm9udC1zaXplLTE5cHhcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICBSZWZ1bmQgcmVmZXJlbmNlXG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICB7eyByZWZ1bmRsaXN0Py5yZWZ1bmRfcmVmZXJlbmNlfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj48L3NwYW4+IFxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3cgZm9udC1zaXplLTE5cHhcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICBTZW5kIHZpYVxuICAgICAgICAgIDxici8+XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWRkcmVzc0RldGFpbHM/Lm5vdGlmaWNhdGlvbl90eXBlID09PSAnRU1BSUwnXCIgY2xhc3M9XCJjb250YWN0RGV0YWlscy13aWR0aCBmb250LXNpemUtMTlweFwiPlxuICAgICAgICAgICAgPHN0cm9uZz5FbWFpbDwvc3Ryb25nPlxuICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgIHt7YWRkcmVzc0RldGFpbHM/LmVtYWlsPy50cmltKCl9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhZGRyZXNzRGV0YWlscz8ubm90aWZpY2F0aW9uX3R5cGUgPT09ICdMRVRURVInXCIgY2xhc3M9XCJjb250YWN0RGV0YWlscy13aWR0aCBmb250LXNpemUtMTlweFwiPlxuICAgICAgICAgICAgPHN0cm9uZz5Qb3N0PC9zdHJvbmc+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAge3thZGRyZXNzRGV0YWlscz8uYWRkcmVzc19saW5lPy50cmltKCl9fSB7e2FkZHJlc3NEZXRhaWxzPy5jaXR5Py50cmltKCl9fSB7e2FkZHJlc3NEZXRhaWxzPy5jb3VudHk/LnRyaW0oKX19IHt7YWRkcmVzc0RldGFpbHM/LmNvdW50cnk/LnRyaW0oKX19IHt7YWRkcmVzc0RldGFpbHM/LnBvc3RhbF9jb2RlPy50cmltKCl9fVxuICAgICAgICAgIDwvZGl2PiAgICAgICAgXG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZ292dWstbGlua1wiIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZ290b0VkaXREZXRhaWxzUGFnZShhZGRyZXNzRGV0YWlscywgJ3JlZnVuZEVkaXRWaWV3JylcIj5cbiAgICAgICAgICAgIENoYW5nZVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93IGZvbnQtc2l6ZS0xOXB4XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAgTm90aWZpY2F0aW9uXG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICB7e3RlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlfX0gXG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgKm5nSWY9XCIhbm90aWZpY2F0aW9uUHJldmlld1wiIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmsgcmlnaHRcIiAoY2xpY2spPVwic2hvd05vdGlmaWNhdGlvblByZXZpZXcoKVwiPlxuICAgICAgICAgICAgUHJldmlld1xuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8YSAqbmdJZj1cIm5vdGlmaWNhdGlvblByZXZpZXdcIiBocmVmPVwiSmF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHJpZ2h0XCIgKGNsaWNrKT1cImhpZGVOb3RpZmljYXRpb25QcmV2aWV3KClcIj5cbiAgICAgICAgICAgIEhpZGUgUHJldmlld1xuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9zcGFuPiBcbiAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG5cbiAgICA8YXBwLW5vdGlmaWNhdGlvbi1wcmV2aWV3ICpuZ0lmPVwibm90aWZpY2F0aW9uUHJldmlld1wiIFtwYXltZW50UmVmZXJlbmNlXT1cInJlZnVuZGxpc3Q/LnBheW1lbnRfcmVmZXJlbmNlXCJcbiAgICBbcGF5bWVudF09XCJwYXltZW50T2JqXCJcbiAgICBbY29udGFjdERldGFpbHNdPVwiYWRkcmVzc0RldGFpbHNcIlxuICAgIFtyZWZ1bmRSZWFzb25dPVwicmVmdW5kbGlzdD8ucmVhc29uX2NvZGVcIlxuICAgIFtyZWZ1bmRBbW91bnRdPVwicmVmdW5kbGlzdD8uYW1vdW50XCJcbiAgICBbcmVmdW5kUmVmZXJlbmNlXT1cInJlZnVuZGxpc3Q/LnJlZnVuZF9yZWZlcmVuY2VcIj5cbiAgPC9hcHAtbm90aWZpY2F0aW9uLXByZXZpZXc+XG5cblxuXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncm91cFwiPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZ290b0VkaXREZXRhaWxzUGFnZShhZGRyZXNzRGV0YWlscywgJ3JlZnVuZEVkaXRWaWV3JylcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeVwiPiBQcmV2aW91czwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic3VibWl0RWRpdERldGFpbCgpXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24gYnV0dG9uXCJcbiAgICAgICAgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIj5cbiAgICAgICAgICBTZW5kIG5vdGlmaWNhdGlvblxuICAgICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8cD5cbiAgICAgIDxhIChjbGljayk9XCJsb2FkUmVmdW5kTGlzdFBhZ2UoKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCI+XG4gICAgICAgICAgQ2FuY2VsXG4gICAgICA8L2E+XG4gIDwvcD5cblxuPC9uZy1jb250YWluZXI+XG4iXX0=