@piserve-tech/form-submission 1.3.319 → 1.3.320
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.
- package/README.md +24 -24
- package/assets/icons/close-sidebar-mark-icon.svg +3 -3
- package/assets/icons/copy-icon.svg +5 -5
- package/assets/icons/delete-icon.svg +7 -7
- package/assets/icons/delete-no-outline-icon.svg +7 -7
- package/esm2022/form-fields/aggregate-function/aggregate-function.component.mjs +3 -3
- package/esm2022/form-fields/check-box-fields/check-box-fields.component.mjs +10 -7
- package/esm2022/form-fields/currency-fields/currency-fields.component.mjs +11 -8
- package/esm2022/form-fields/date-time-fields/date-time-fields.component.mjs +12 -9
- package/esm2022/form-fields/drop-down-fields/drop-down-fields.component.mjs +11 -8
- package/esm2022/form-fields/file-picker-fields/file-picker-fields.component.mjs +11 -8
- package/esm2022/form-fields/form-fields.module.mjs +1 -1
- package/esm2022/form-fields/hidden-field/hidden-field.component.mjs +26 -19
- package/esm2022/form-fields/iframe-fields/iframe-fields.component.mjs +21 -21
- package/esm2022/form-fields/location-fields/location-fields.component.mjs +3 -3
- package/esm2022/form-fields/mail-fields/mail-fields.component.mjs +11 -8
- package/esm2022/form-fields/mobile-fields/mobile-fields.component.mjs +12 -9
- package/esm2022/form-fields/number-fields/number-fields.component.mjs +11 -8
- package/esm2022/form-fields/password-fields/password-fields.component.mjs +11 -8
- package/esm2022/form-fields/radio-button-fields/radio-button-fields.component.mjs +11 -8
- package/esm2022/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.mjs +12 -9
- package/esm2022/form-fields/section-fields/section-fields.component.mjs +3 -3
- package/esm2022/form-fields/selection-matrix-fields/selection-matrix-fields.component.mjs +11 -8
- package/esm2022/form-fields/signature-fields/signature-fields.component.mjs +3 -3
- package/esm2022/form-fields/slider-fields/slider-fields.component.mjs +12 -9
- package/esm2022/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.mjs +9 -7
- package/esm2022/form-fields/text-area-fields/text-area-fields.component.mjs +11 -8
- package/esm2022/form-fields/text-fields/text-fields.component.mjs +11 -8
- package/esm2022/form-fields/toggle-switch-fields/toggle-switch-fields.component.mjs +10 -7
- package/esm2022/form-fields/url-fields/url-fields.component.mjs +11 -8
- package/esm2022/form-submission/form-submission.module.mjs +1 -1
- package/esm2022/form-submission/header/header.component.mjs +3 -3
- package/esm2022/form-submission/navigation-tabs/navigation-tabs.component.mjs +3 -3
- package/esm2022/form-submission/next-prev-navigation/next-prev-navigation.component.mjs +3 -3
- package/esm2022/form-submission/save-as-draft/saveDraftModalComponent .mjs +3 -3
- package/esm2022/form-submission/submit-form/submit-form.component.mjs +25 -22
- package/esm2022/lib/form-submission.component.mjs +3 -3
- package/esm2022/lib/form-submission.module.mjs +1 -1
- package/esm2022/models/aggregate.model.mjs +1 -1
- package/esm2022/models/answer.model.mjs +1 -1
- package/esm2022/models/appearance.model.mjs +1 -1
- package/esm2022/models/attachment.model.mjs +1 -1
- package/esm2022/models/defaultAnswerEntry.model.mjs +1 -1
- package/esm2022/models/defaultAnswersModel.model.mjs +1 -1
- package/esm2022/models/defaultQuestionAnswer.model.mjs +1 -1
- package/esm2022/models/elementOptionAPI.model.mjs +1 -1
- package/esm2022/models/elementOptionDB.model.mjs +1 -1
- package/esm2022/models/emitters.model.mjs +1 -1
- package/esm2022/models/formElement.model.mjs +1 -1
- package/esm2022/models/grid.model.mjs +1 -1
- package/esm2022/models/hiddenField.model.mjs +1 -1
- package/esm2022/models/iFrameProperties.model.mjs +1 -1
- package/esm2022/models/multifields.model.mjs +1 -1
- package/esm2022/models/page.model.mjs +1 -1
- package/esm2022/models/publicForm.model.mjs +1 -1
- package/esm2022/models/question.model.mjs +1 -1
- package/esm2022/models/questionGroup.model.mjs +1 -1
- package/esm2022/models/scoring.model.mjs +1 -1
- package/esm2022/models/section.model.mjs +1 -1
- package/esm2022/models/subForm.model.mjs +1 -1
- package/esm2022/models/subformConfiguration.model.mjs +1 -1
- package/esm2022/models/subformPropery.model.mjs +1 -1
- package/esm2022/models/submission.model.mjs +1 -1
- package/esm2022/models/submissionCopyConfig.mopdel.mjs +1 -1
- package/esm2022/models/whenClause.model.mjs +1 -1
- package/esm2022/models/whenClauseCondition.model.mjs +1 -1
- package/esm2022/models/whenClauseElements.model.mjs +1 -1
- package/esm2022/question/card-subform/card-subform.component.mjs +83 -53
- package/esm2022/question/confirm-dialog/confirm-dialog.component.mjs +3 -3
- package/esm2022/question/form-elements/form-elements.component.mjs +3 -3
- package/esm2022/question/inline-multiple-subform/inline-multiple-subform.component.mjs +37 -30
- package/esm2022/question/multifields/multifields.component.mjs +3 -3
- package/esm2022/question/multiple-subform/multiple-subform.component.mjs +3 -3
- package/esm2022/question/question/question.component.mjs +3 -3
- package/esm2022/question/question-group/question-group.component.mjs +3 -3
- package/esm2022/question/recursive-logic/recursive-logic.component.mjs +3 -3
- package/esm2022/question/sub-form/sub-form.component.mjs +3 -3
- package/esm2022/services/aggregate.service.mjs +1 -1
- package/esm2022/services/countryService.mjs +1 -1
- package/esm2022/services/data.service.mjs +1 -1
- package/esm2022/services/form-validation.service.mjs +1 -1
- package/esm2022/services/form.service.mjs +1 -1
- package/esm2022/services/hidden-field.service.mjs +160 -0
- package/esm2022/services/mapper.service.mjs +3 -2
- package/esm2022/services/recaptcha.service.mjs +1 -1
- package/esm2022/services/score.service.mjs +1 -1
- package/esm2022/services/subform-copy.service.mjs +1 -1
- package/esm2022/services/whenClause.service.mjs +1 -1
- package/esm2022/shared/shared.module.mjs +1 -1
- package/esm2022/sub-form/submission-modal/submission-modal.component.mjs +3 -3
- package/fesm2022/piserve-tech-form-submission.mjs +457 -225
- package/fesm2022/piserve-tech-form-submission.mjs.map +1 -1
- package/form-fields/check-box-fields/check-box-fields.component.d.ts +3 -1
- package/form-fields/currency-fields/currency-fields.component.d.ts +3 -1
- package/form-fields/date-time-fields/date-time-fields.component.d.ts +3 -1
- package/form-fields/drop-down-fields/drop-down-fields.component.d.ts +3 -1
- package/form-fields/file-picker-fields/file-picker-fields.component.d.ts +3 -1
- package/form-fields/hidden-field/hidden-field.component.d.ts +6 -1
- package/form-fields/mail-fields/mail-fields.component.d.ts +3 -1
- package/form-fields/mobile-fields/mobile-fields.component.d.ts +3 -1
- package/form-fields/number-fields/number-fields.component.d.ts +3 -1
- package/form-fields/password-fields/password-fields.component.d.ts +3 -1
- package/form-fields/radio-button-fields/radio-button-fields.component.d.ts +3 -1
- package/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.d.ts +3 -1
- package/form-fields/selection-matrix-fields/selection-matrix-fields.component.d.ts +3 -1
- package/form-fields/slider-fields/slider-fields.component.d.ts +3 -1
- package/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.d.ts +3 -1
- package/form-fields/text-area-fields/text-area-fields.component.d.ts +3 -1
- package/form-fields/text-fields/text-fields.component.d.ts +3 -1
- package/form-fields/toggle-switch-fields/toggle-switch-fields.component.d.ts +3 -0
- package/form-fields/url-fields/url-fields.component.d.ts +3 -1
- package/form-submission/submit-form/submit-form.component.d.ts +3 -1
- package/models/hiddenField.model.d.ts +1 -0
- package/package.json +1 -1
- package/question/card-subform/card-subform.component.d.ts +7 -1
- package/question/inline-multiple-subform/inline-multiple-subform.component.d.ts +4 -1
- package/services/hidden-field.service.d.ts +31 -0
|
@@ -3,13 +3,15 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
import * as i1 from "../../services/validation.service";
|
|
4
4
|
import * as i2 from "../../services/element-tracker.service";
|
|
5
5
|
import * as i3 from "../../services/aggregate.service";
|
|
6
|
-
import * as i4 from "
|
|
7
|
-
import * as i5 from "@angular/
|
|
6
|
+
import * as i4 from "../../services/hidden-field.service";
|
|
7
|
+
import * as i5 from "@angular/common";
|
|
8
|
+
import * as i6 from "@angular/forms";
|
|
8
9
|
export class CurrencyFieldsComponent {
|
|
9
|
-
constructor(validationService, tracker, aggregateService) {
|
|
10
|
+
constructor(validationService, tracker, aggregateService, hiddenFieldService) {
|
|
10
11
|
this.validationService = validationService;
|
|
11
12
|
this.tracker = tracker;
|
|
12
13
|
this.aggregateService = aggregateService;
|
|
14
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
13
15
|
this.question = {};
|
|
14
16
|
this.inLine = false;
|
|
15
17
|
this.inCard = false;
|
|
@@ -258,6 +260,7 @@ export class CurrencyFieldsComponent {
|
|
|
258
260
|
currency: this.currencySymbol
|
|
259
261
|
});
|
|
260
262
|
this.validateNumber();
|
|
263
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
261
264
|
}
|
|
262
265
|
// 3) convertAmountToWords using CurrencyMeta typing
|
|
263
266
|
convertAmountToWords(value) {
|
|
@@ -478,13 +481,13 @@ export class CurrencyFieldsComponent {
|
|
|
478
481
|
this.tracker.unregisterElement(this.elementId);
|
|
479
482
|
}
|
|
480
483
|
}
|
|
481
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CurrencyFieldsComponent, deps: [{ token: i1.ValidationService }, { token: i2.ElementTrackerService }, { token: i3.AggregationFunctionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
482
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit", rowId: "rowId" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
484
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CurrencyFieldsComponent, deps: [{ token: i1.ValidationService }, { token: i2.ElementTrackerService }, { token: i3.AggregationFunctionService }, { token: i4.HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
485
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit", rowId: "rowId" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span>\n <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n\n <div class=\"currency-input inside\">\n <span *ngIf=\"symbolPosition === 'Before the value'\" class=\"currency-symbol left\">\n {{ currencySymbol }}\n </span>\n\n <input\n type=\"text\"\n class=\"form-control mb-2 height\"\n [placeholder]=\"placeholder\"\n [class.hide-spin-buttons]=\"true\"\n (blur)=\"validateNumber()\"\n [(ngModel)]=\"enteredAmount\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredAmount)\"\n (input)=\"validateInput($event)\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n (wheel)=\"preventNumberScroll($event)\"\n [disabled]=\"disableEdit\"\n />\n\n <span *ngIf=\"symbolPosition === 'After the value'\" class=\"currency-symbol right\">\n {{ currencySymbol }}\n </span>\n\n </div>\n <div *ngIf=\"showAmountInWords && amountInWordsText\" class=\"amount-in-words\">\n {{ amountInWordsText }}\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !enteredAmount)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.hide-spin-buttons::-webkit-outer-spin-button,.hide-spin-buttons::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.currency-input.inside{position:relative}.currency-input.inside input{padding-left:.75rem;padding-right:.75rem}.currency-input.inside .currency-symbol{position:absolute;top:50%;transform:translateY(-50%);color:#444;font-weight:700;pointer-events:none;white-space:nowrap}.currency-input.inside .currency-symbol.left{left:1%}.currency-input.inside .currency-symbol.left+input{padding-left:6ch}.currency-input.inside input+.currency-symbol.right{right:10px;padding-right:4ch}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
483
486
|
}
|
|
484
487
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CurrencyFieldsComponent, decorators: [{
|
|
485
488
|
type: Component,
|
|
486
|
-
args: [{ selector: 'lib-currency-fields', template: "<div\
|
|
487
|
-
}], ctorParameters: function () { return [{ type: i1.ValidationService }, { type: i2.ElementTrackerService }, { type: i3.AggregationFunctionService }]; }, propDecorators: { question: [{
|
|
489
|
+
args: [{ selector: 'lib-currency-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span>\n <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n\n <div class=\"currency-input inside\">\n <span *ngIf=\"symbolPosition === 'Before the value'\" class=\"currency-symbol left\">\n {{ currencySymbol }}\n </span>\n\n <input\n type=\"text\"\n class=\"form-control mb-2 height\"\n [placeholder]=\"placeholder\"\n [class.hide-spin-buttons]=\"true\"\n (blur)=\"validateNumber()\"\n [(ngModel)]=\"enteredAmount\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredAmount)\"\n (input)=\"validateInput($event)\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n (wheel)=\"preventNumberScroll($event)\"\n [disabled]=\"disableEdit\"\n />\n\n <span *ngIf=\"symbolPosition === 'After the value'\" class=\"currency-symbol right\">\n {{ currencySymbol }}\n </span>\n\n </div>\n <div *ngIf=\"showAmountInWords && amountInWordsText\" class=\"amount-in-words\">\n {{ amountInWordsText }}\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !enteredAmount)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.hide-spin-buttons::-webkit-outer-spin-button,.hide-spin-buttons::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.currency-input.inside{position:relative}.currency-input.inside input{padding-left:.75rem;padding-right:.75rem}.currency-input.inside .currency-symbol{position:absolute;top:50%;transform:translateY(-50%);color:#444;font-weight:700;pointer-events:none;white-space:nowrap}.currency-input.inside .currency-symbol.left{left:1%}.currency-input.inside .currency-symbol.left+input{padding-left:6ch}.currency-input.inside input+.currency-symbol.right{right:10px;padding-right:4ch}\n"] }]
|
|
490
|
+
}], ctorParameters: function () { return [{ type: i1.ValidationService }, { type: i2.ElementTrackerService }, { type: i3.AggregationFunctionService }, { type: i4.HiddenFieldService }]; }, propDecorators: { question: [{
|
|
488
491
|
type: Input
|
|
489
492
|
}], inLine: [{
|
|
490
493
|
type: Input
|
|
@@ -499,4 +502,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
499
502
|
}], rowId: [{
|
|
500
503
|
type: Input
|
|
501
504
|
}] } });
|
|
502
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktZmllbGRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvZm9ybS1maWVsZHMvY3VycmVuY3ktZmllbGRzL2N1cnJlbmN5LWZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2N1cnJlbmN5LWZpZWxkcy9jdXJyZW5jeS1maWVsZHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQWlCdkUsTUFBTSxPQUFPLHVCQUF1QjtJQStCbEMsWUFDVSxpQkFBb0MsRUFDcEMsT0FBOEIsRUFDOUIsZ0JBQTRDO1FBRjVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE0QjtRQWpDN0MsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUNuQixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFeEIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDNUIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFLckMsQ0FBQztRQUdMLFVBQUssR0FBVyxDQUFDLENBQUM7UUFDbEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBR3pCLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBRTVCLG1CQUFjLEdBQVcsa0JBQWtCLENBQUM7UUFFNUMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBRW5DLHFCQUFnQixHQUFZLEtBQUss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dUJBQXVCLDRQQ2pCcEMsaXhHQXFGQTs7NEZEcEVhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7cUxBS3RCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFNRSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEVsZW1lbnRUcmFja2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VsZW1lbnQtdHJhY2tlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWdncmVnYXRpb25GdW5jdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hZ2dyZWdhdGUuc2VydmljZSc7XHJcbnR5cGUgQ3VycmVuY3lNZXRhID0ge1xyXG4gIGNvZGVzOiBzdHJpbmdbXTtcclxuICBzeW1ib2xzPzogc3RyaW5nW107XHJcbiAgbWFpblVuaXQ6IHN0cmluZztcclxuICBzdWJVbml0OiBzdHJpbmc7XHJcbiAgZGVjaW1hbHM6IG51bWJlcjtcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWN1cnJlbmN5LWZpZWxkcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1cnJlbmN5LWZpZWxkcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3VycmVuY3ktZmllbGRzLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXJyZW5jeUZpZWxkc0NvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgcXVlc3Rpb246IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIGluTGluZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGluQ2FyZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHN1Ym1pc3Npb25JbmRleCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBkaXNhYmxlRWRpdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBhbnN3ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGFuc3dlcjogYW55O1xyXG4gICAgbWF4UG9zc2libGVTY29yZT86IG51bWJlcjtcclxuICAgIGFtb3VudEluV29yZHM6IHN0cmluZztcclxuICAgIGN1cnJlbmN5OiBzdHJpbmc7XHJcbiAgfT4oKTtcclxuICBASW5wdXQoKSByb3dJZDogYW55O1xyXG5cclxuICBjb3VudDogbnVtYmVyID0gMDtcclxuICByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhpbnQ6IHN0cmluZyA9ICcnO1xyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuICBtaW4hOiBudW1iZXI7XHJcbiAgbWF4ITogbnVtYmVyO1xyXG4gIGN1cnJlbmN5U3ltYm9sOiBzdHJpbmcgPSAnJztcclxuICBkZWNpbWFsUHJlY2lzaW9uITogbnVtYmVyO1xyXG4gIHN5bWJvbFBvc2l0aW9uOiBzdHJpbmcgPSAnQmVmb3JlIHRoZSB2YWx1ZSc7XHJcbiAgdGhvdXNhbmRTZXBhcmF0b3IhOiBib29sZWFuO1xyXG4gIHNob3dBbW91bnRJbldvcmRzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZW50ZXJlZEFtb3VudCE6IHN0cmluZztcclxuICB2YWxpZGF0aW9uRmFpbGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIHByaXZhdGUgZWxlbWVudElkOiBzdHJpbmcgPSAnJztcclxuICBhbW91bnRJbldvcmRzVGV4dDogc3RyaW5nID0gJyc7XHJcbiAgZGVmYXVsdEN1cnJlbmN5OnN0cmluZz0nJztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFja2VyOiBFbGVtZW50VHJhY2tlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFnZ3JlZ2F0ZVNlcnZpY2U6IEFnZ3JlZ2F0aW9uRnVuY3Rpb25TZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudmFsdWVBc3NpZ25lZCgpO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVBc3NpZ25lZCgpIHtcclxuICAgIHRoaXMuY291bnQgPSB0aGlzLnF1ZXN0aW9uLmNvdW50O1xyXG4gICAgdGhpcy5yZXF1aXJlZCA9IHRoaXMucXVlc3Rpb24ucmVxdWlyZWQ7XHJcbiAgICB0aGlzLmhpbnQgPSB0aGlzLnF1ZXN0aW9uLmhpbnQ7XHJcbiAgICB0aGlzLmRlZmF1bHRDdXJyZW5jeT10aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Py5hcHBlYXJhbmNlPy5kZWZhdWx0Q3VycmVuY3kgfHwgJyc7XHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudD8uYXBwZWFyYW5jZT8ucGxhY2Vob2xkZXIgfHwgJyc7XHJcbiAgICB0aGlzLmN1cnJlbmN5U3ltYm9sID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudD8uYXBwZWFyYW5jZT8uY3VycmVuY3lTeW1ib2w7XHJcbiAgICB0aGlzLmRlY2ltYWxQcmVjaXNpb24gPVxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Py5hcHBlYXJhbmNlPy5kZWNpbWFsUHJlY2lzaW9uIHx8IDI7XHJcbiAgICB0aGlzLnN5bWJvbFBvc2l0aW9uID1cclxuICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudD8uYXBwZWFyYW5jZT8uc3ltYm9sUG9zaXRpb24gfHxcclxuICAgICAgJ0JlZm9yZSB0aGUgdmFsdWUnO1xyXG4gICAgdGhpcy50aG91c2FuZFNlcGFyYXRvciA9XHJcbiAgICAgIHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQ/LmFwcGVhcmFuY2U/LnRob3VzYW5kU2VwYXJhdG9yO1xyXG4gICAgdGhpcy5taW4gPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWluO1xyXG4gICAgdGhpcy5tYXggPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWF4O1xyXG4gICAgdGhpcy5zaG93QW1vdW50SW5Xb3JkcyA9XHJcbiAgICAgIHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQ/LmFwcGVhcmFuY2U/LnNob3dBbW91bnRJbldvcmRzO1xyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQ/LmFwcGVhcmFuY2U/LmN1cnJlbmN5KSB7XHJcbiAgICAgIGxldCB1c2VyTG9jYWxlQ3VyZWVuY3kgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Py5hcHBlYXJhbmNlPy5jdXJyZW5jeTtcclxuICAgICAgaWYgKHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS5jdXJyZW5jeU9wdGlvbikge1xyXG4gICAgICAgIGxldCBjdXJyZW5jeU9wdGlvbiA9XHJcbiAgICAgICAgICB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2UuY3VycmVuY3lPcHRpb247XHJcbiAgICAgICAgaWYgKGN1cnJlbmN5T3B0aW9uID09ICdhdXRvJykge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2UubGltaXRDdXJyZW5jeVN5bWJvbCAmJlxyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2UubGltaXRDdXJyZW5jeVN5bWJvbC5sZW5ndGggPiAwXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeVN5bWJvbCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLmxpbWl0Q3VycmVuY3lTeW1ib2wuaW5jbHVkZXMoXHJcbiAgICAgICAgICAgICAgICB1c2VyTG9jYWxlQ3VyZWVuY3lcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICA/IHVzZXJMb2NhbGVDdXJlZW5jeVxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Py5hcHBlYXJhbmNlPy5jdXJyZW5jeVN5bWJvbDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lTeW1ib2wgPSB1c2VyTG9jYWxlQ3VyZWVuY3k7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW5jeU9wdGlvbiA9PSAnc3BlY2lmaWMnKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbmN5U3ltYm9sID1cclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudD8uYXBwZWFyYW5jZT8uc3BlY2lmaWNDdXJyZW5jeVN5bWJvbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuY3VycmVuY3lTeW1ib2wgJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudD8uYXBwZWFyYW5jZT8uY3VycmVuY3lTeW1ib2xcclxuICAgICkge1xyXG4gICAgICB0aGlzLmN1cnJlbmN5U3ltYm9sID1cclxuICAgICAgICB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Py5hcHBlYXJhbmNlPy5jdXJyZW5jeVN5bWJvbDtcclxuICAgIH1cclxuICAgIGlmKHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQ/LmFwcGVhcmFuY2U/LmRlZmF1bHRDdXJyZW5jeSl7XHJcbiAgICAgIHRoaXMuY3VycmVuY3lTeW1ib2wgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Py5hcHBlYXJhbmNlPy5kZWZhdWx0Q3VycmVuY3k7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLnF1ZXN0aW9uLmFuc3dlckN1cnJlbmN5KXtcclxuICAgICAgdGhpcy5jdXJyZW5jeVN5bWJvbD10aGlzLnF1ZXN0aW9uLmFuc3dlckN1cnJlbmN5O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbi5hbnN3ZXIpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplQW5zd2VyKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zaG93QW1vdW50SW5Xb3Jkcykge1xyXG4gICAgICB0aGlzLmFtb3VudEluV29yZHNUZXh0ID0gdGhpcy5xdWVzdGlvbi5hbW91bnRJbldvcmRzO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uY2hpbGRMb2dpY3MgJiYgdGhpcy5xdWVzdGlvbi5hbnN3ZXIpIHtcclxuICAgICAgdGhpcy51cGRhdGVDaGlsZExvZ2ljcyh0aGlzLnF1ZXN0aW9uKTtcclxuICAgIH1cclxuICAgIHRoaXMuYWdncmVnYXRlU2VydmljZS5zZXROdW1iZXJGaWVsZChcclxuICAgICAgdGhpcy5yb3dJZCxcclxuICAgICAgdGhpcy5xdWVzdGlvbi5pZCxcclxuICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplQW5zd2VyKCkge1xyXG4gICAgbGV0IHZhbHVlID0gdGhpcy5xdWVzdGlvbj8uYW5zd2VyO1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xyXG4gICAgLy8gY2hlY2sgaWYgbnVtZXJpY1xyXG4gICAgaWYgKCFpc05hTihOdW1iZXIodmFsdWUpKSkge1xyXG4gICAgICBpZiAodGhpcy50aG91c2FuZFNlcGFyYXRvcikge1xyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJy4nKTtcclxuICAgICAgICBwYXJ0c1swXSA9IE51bWJlcihwYXJ0c1swXSkudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJyk7IC8vIGFkZHMgcHJvcGVyIHRob3VzYW5kIHNlcGFyYXRvclxyXG4gICAgICAgIHZhbHVlID0gcGFydHMuam9pbignLicpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVudGVyZWRBbW91bnQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByZXZlbnROdW1iZXJTY3JvbGwoZXZlbnQ6IFdoZWVsRXZlbnQpIHtcclxuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBldmVudC50YXJnZXQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlTnVtYmVyKCkge1xyXG4gICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmNsZWFySW52YWxpZCh0aGlzLmJ1aWxkRWxlbWVudElkKCkpO1xyXG4gICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xyXG4gICAgbGV0IGVudGVyZWRBbW91bnQgPSB0aGlzLnBhcnNlQ3VycmVuY3lUb051bWJlcih0aGlzLmVudGVyZWRBbW91bnQpO1xyXG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIWVudGVyZWRBbW91bnQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWxpZCBhbW91bnRgO1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb25NZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbGlkIGFtb3VudGA7XHJcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgKHRoaXMubWluICE9PSB1bmRlZmluZWQgJiYgZW50ZXJlZEFtb3VudCA8IHRoaXMubWluKSB8fFxyXG4gICAgICAodGhpcy5tYXggIT09IHVuZGVmaW5lZCAmJiBlbnRlcmVkQW1vdW50ID4gdGhpcy5tYXgpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIC8vIENvbnN0cnVjdCBhcHByb3ByaWF0ZSB2YWxpZGF0aW9uIG1lc3NhZ2UgYmFzZWQgb24gd2hldGhlciBtaW4sIG1heCwgb3IgYm90aCBhcmUgcHJvdmlkZWRcclxuICAgICAgaWYgKHRoaXMubWluICE9PSB1bmRlZmluZWQgJiYgdGhpcy5tYXggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsaWQgYW1vdW50IGJldHdlZW4gJHt0aGlzLm1pbn0gYW5kICR7dGhpcy5tYXh9YDtcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb25NZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbGlkIGFtb3VudCBiZXR3ZWVuICR7dGhpcy5taW59IGFuZCAke3RoaXMubWF4fWA7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5taW4gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgYW1vdW50IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke3RoaXMubWlufWA7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uTWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSBhbW91bnQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7dGhpcy5taW59YDtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm1heCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSBhbW91bnQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICR7dGhpcy5tYXh9YDtcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb25NZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIGFtb3VudCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHt0aGlzLm1heH1gO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbi5jaGlsZExvZ2ljcykge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNoaWxkTG9naWNzKHRoaXMucXVlc3Rpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVJbnB1dChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmNsZWFySW52YWxpZCh0aGlzLmJ1aWxkRWxlbWVudElkKCkpO1xyXG5cclxuICAgIC8vIHJlbW92ZSBleGlzdGluZyBjb21tYXMgJiBjdXJyZW5jeSBzeW1ib2xcclxuICAgIGxldCByYXdWYWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldC52YWx1ZSB8fCAnJylcclxuICAgICAgLnJlcGxhY2UoLywvZywgJycpXHJcbiAgICAgIC5yZXBsYWNlKHRoaXMuY3VycmVuY3lTeW1ib2wgfHwgJycsICcnKTtcclxuXHJcbiAgICAvLyByZW1vdmUgYW55IGNoYXJhY3RlcnMgZXhjZXB0IGRpZ2l0cyBhbmQgZG90XHJcbiAgICByYXdWYWx1ZSA9IHJhd1ZhbHVlLnJlcGxhY2UoL1teXFxkLl0vZywgJycpO1xyXG5cclxuICAgIC8vIGtlZXAgb25seSB0aGUgZmlyc3QgZG90IChyZW1vdmUgYW55IGFkZGl0aW9uYWwgZG90cylcclxuICAgIGNvbnN0IGZpcnN0RG90ID0gcmF3VmFsdWUuaW5kZXhPZignLicpO1xyXG4gICAgaWYgKGZpcnN0RG90ICE9PSAtMSkge1xyXG4gICAgICAvLyBzcGxpdCBpbnRvIGJlZm9yZS1maXJzdC1kb3QgYW5kIHJlc3QsIHJlbW92ZSBhZGRpdGlvbmFsIGRvdHMgZnJvbSByZXN0XHJcbiAgICAgIGNvbnN0IGJlZm9yZSA9IHJhd1ZhbHVlLnNsaWNlKDAsIGZpcnN0RG90KTtcclxuICAgICAgY29uc3QgYWZ0ZXIgPSByYXdWYWx1ZS5zbGljZShmaXJzdERvdCArIDEpLnJlcGxhY2UoL1xcLi9nLCAnJyk7XHJcbiAgICAgIHJhd1ZhbHVlID0gYCR7YmVmb3JlfS4ke2FmdGVyfWA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGV0ZXJtaW5lIGRlY2ltYWwgcHJlY2lzaW9uIHRvIGVuZm9yY2UgKGRlZmF1bHQgdG8gMilcclxuICAgIGNvbnN0IGRwID1cclxuICAgICAgdHlwZW9mIHRoaXMuZGVjaW1hbFByZWNpc2lvbiA9PT0gJ251bWJlcicgJiYgdGhpcy5kZWNpbWFsUHJlY2lzaW9uID49IDBcclxuICAgICAgICA/IHRoaXMuZGVjaW1hbFByZWNpc2lvblxyXG4gICAgICAgIDogMjtcclxuXHJcbiAgICAvLyBpZiB0aGVyZSdzIGEgZGVjaW1hbCBwYXJ0LCB0cmltIGl0IHRvIGFsbG93ZWQgbGVuZ3RoXHJcbiAgICBpZiAocmF3VmFsdWUuaW5jbHVkZXMoJy4nKSkge1xyXG4gICAgICBjb25zdCBbaW50UGFydCwgZGVjaW1hbFBhcnQgPSAnJ10gPSByYXdWYWx1ZS5zcGxpdCgnLicpO1xyXG4gICAgICBjb25zdCB0cmltbWVkRGVjaW1hbCA9IGRlY2ltYWxQYXJ0LnNsaWNlKDAsIGRwKTtcclxuICAgICAgcmF3VmFsdWUgPSB0cmltbWVkRGVjaW1hbFxyXG4gICAgICAgID8gYCR7aW50UGFydH0uJHt0cmltbWVkRGVjaW1hbH1gXHJcbiAgICAgICAgOiBpbnRQYXJ0ICsgJy4nO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGZvcm1hdCB3aXRoIHRob3VzYW5kIHNlcGFyYXRvciBmb3IgZGlzcGxheVxyXG4gICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gcmF3VmFsdWU7XHJcbiAgICBpZiAodGhpcy50aG91c2FuZFNlcGFyYXRvciAmJiByYXdWYWx1ZSkge1xyXG4gICAgICBjb25zdCBwYXJ0cyA9IHJhd1ZhbHVlLnNwbGl0KCcuJyk7XHJcbiAgICAgIC8vIGhhbmRsZSBjYXNlIHdoZXJlIHVzZXIgdHlwZXMgXCIuMTJcIiAtPiBwYXJ0c1swXSA9PT0gJydcclxuICAgICAgY29uc3QgaW50UGFydEZvckZvcm1hdCA9IHBhcnRzWzBdID09PSAnJyA/ICcwJyA6IHBhcnRzWzBdO1xyXG4gICAgICBwYXJ0c1swXSA9IE51bWJlcihpbnRQYXJ0Rm9yRm9ybWF0KS50b0xvY2FsZVN0cmluZygnZW4tVVMnKTtcclxuICAgICAgZm9ybWF0dGVkVmFsdWUgPSBwYXJ0cy5qb2luKCcuJyk7XHJcbiAgICAgIC8vIGlmIG9yaWdpbmFsIGhhZCBsZWFkaW5nICcuJyAodXNlciB0eXBlZCBcIi4xMlwiKSwgcmVzdG9yZSBpdCB2aXN1YWxseSBhcyBcIi4xMlwiXHJcbiAgICAgIGlmIChyYXdWYWx1ZS5zdGFydHNXaXRoKCcuJykgJiYgIWZvcm1hdHRlZFZhbHVlLnN0YXJ0c1dpdGgoJy4nKSkge1xyXG4gICAgICAgIGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0dGVkVmFsdWUucmVwbGFjZSgvXjAvLCAnJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBrZWVwIG51bWVyaWMgdmVyc2lvbiBmb3IgYmFja2VuZC9jYWxjdWxhdGlvbnNcclxuICAgIHRoaXMucXVlc3Rpb24uYW5zd2VyID0gcmF3VmFsdWU7XHJcbiAgICB0aGlzLnF1ZXN0aW9uLmN1cnJlbmN5U3ltYm9sID0gdGhpcy5jdXJyZW5jeVN5bWJvbDtcclxuXHJcbiAgICAvLyB1cGRhdGUgZmllbGQgZGlzcGxheVxyXG4gICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gZm9ybWF0dGVkVmFsdWU7XHJcblxyXG4gICAgdGhpcy5hZ2dyZWdhdGVTZXJ2aWNlLnNldE51bWJlckZpZWxkKFxyXG4gICAgICB0aGlzLnJvd0lkLFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLmlkLFxyXG4gICAgICByYXdWYWx1ZSA/IHBhcnNlRmxvYXQocmF3VmFsdWUpIDogMFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbi5jaGlsZExvZ2ljcykge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNoaWxkTG9naWNzKHRoaXMucXVlc3Rpb24pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2hvd0Ftb3VudEluV29yZHMpIHtcclxuICAgICAgdGhpcy5hbW91bnRJbldvcmRzVGV4dCA9IHRoaXMuY29udmVydEFtb3VudFRvV29yZHMocmF3VmFsdWUpO1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uLmFtb3VudEluV29yZHMgPSB0aGlzLmFtb3VudEluV29yZHNUZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYW5zd2VyQ2hhbmdlLmVtaXQoe1xyXG4gICAgICBhbnN3ZXI6IHRoaXMucXVlc3Rpb24uYW5zd2VyLFxyXG4gICAgICBtYXhQb3NzaWJsZVNjb3JlOiAwLFxyXG4gICAgICBhbW91bnRJbldvcmRzOiB0aGlzLnF1ZXN0aW9uLmFtb3VudEluV29yZHMsXHJcbiAgICAgIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5U3ltYm9sXHJcbiAgICB9KTtcclxuICAgIHRoaXMudmFsaWRhdGVOdW1iZXIoKTtcclxuICB9XHJcblxyXG4gIC8vIDIpIHR5cGVkIGN1cnJlbmN5IG1hcFxyXG4gIHByaXZhdGUgY3VycmVuY3lNYXA6IFJlY29yZDxzdHJpbmcsIEN1cnJlbmN5TWV0YT4gPSB7XHJcbiAgICBVU0Q6IHtcclxuICAgICAgY29kZXM6IFsnVVNEJ10sXHJcbiAgICAgIHN5bWJvbHM6IFsnJCcsICdVUyQnXSxcclxuICAgICAgbWFpblVuaXQ6ICdEb2xsYXJzJyxcclxuICAgICAgc3ViVW5pdDogJ0NlbnRzJyxcclxuICAgICAgZGVjaW1hbHM6IDIsXHJcbiAgICB9LFxyXG4gICAgSU5SOiB7XHJcbiAgICAgIGNvZGVzOiBbJ0lOUiddLFxyXG4gICAgICBzeW1ib2xzOiBbJ+KCuScsICdScycsICfigqgnXSxcclxuICAgICAgbWFpblVuaXQ6ICdSdXBlZXMnLFxyXG4gICAgICBzdWJVbml0OiAnUGFpc2EnLFxyXG4gICAgICBkZWNpbWFsczogMixcclxuICAgIH0sXHJcbiAgICBFVVI6IHtcclxuICAgICAgY29kZXM6IFsnRVVSJ10sXHJcbiAgICAgIHN5bWJvbHM6IFsn4oKsJ10sXHJcbiAgICAgIG1haW5Vbml0OiAnRXVyb3MnLFxyXG4gICAgICBzdWJVbml0OiAnQ2VudHMnLFxyXG4gICAgICBkZWNpbWFsczogMixcclxuICAgIH0sXHJcbiAgICBBRUQ6IHtcclxuICAgICAgY29kZXM6IFsnQUVEJ10sXHJcbiAgICAgIHN5bWJvbHM6IFsnQUVEJywgJ9ivLtilJ10sXHJcbiAgICAgIG1haW5Vbml0OiAnRGlyaGFtcycsXHJcbiAgICAgIHN1YlVuaXQ6ICdGaWxzJyxcclxuICAgICAgZGVjaW1hbHM6IDIsXHJcbiAgICB9LFxyXG4gICAgR0JQOiB7XHJcbiAgICAgIGNvZGVzOiBbJ0dCUCddLFxyXG4gICAgICBzeW1ib2xzOiBbJ8KjJ10sXHJcbiAgICAgIG1haW5Vbml0OiAnUG91bmRzJyxcclxuICAgICAgc3ViVW5pdDogJ1BlbmNlJyxcclxuICAgICAgZGVjaW1hbHM6IDIsXHJcbiAgICB9LFxyXG4gICAgSlBZOiB7XHJcbiAgICAgIGNvZGVzOiBbJ0pQWSddLFxyXG4gICAgICBzeW1ib2xzOiBbJ8KlJ10sXHJcbiAgICAgIG1haW5Vbml0OiAnWWVuJyxcclxuICAgICAgc3ViVW5pdDogJycsXHJcbiAgICAgIGRlY2ltYWxzOiAwLFxyXG4gICAgfSxcclxuICAgIC8vIGFkZCBtb3JlIGVudHJpZXMgYXMgbmVlZGVkXHJcbiAgfTtcclxuXHJcbiAgLy8gMykgY29udmVydEFtb3VudFRvV29yZHMgdXNpbmcgQ3VycmVuY3lNZXRhIHR5cGluZ1xyXG4gIGNvbnZlcnRBbW91bnRUb1dvcmRzKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xyXG5cclxuICAgIC8vIHByZWZlciBjdXJyZW5jeUNvZGUgKElTTykgaWYgYXZhaWxhYmxlOyBmYWxsIGJhY2sgdG8gc3ltYm9sXHJcbiAgICBjb25zdCBjdXJyZW5jeUNvZGUgPSB0aGlzLnF1ZXN0aW9uPy5jdXJyZW5jeUNvZGUgfHwgbnVsbDtcclxuICAgIGNvbnN0IGN1cnJlbmN5U3ltYm9sID1cclxuICAgICAgdGhpcy5xdWVzdGlvbj8uY3VycmVuY3lTeW1ib2wgfHwgdGhpcy5jdXJyZW5jeVN5bWJvbCB8fCBudWxsO1xyXG5cclxuICAgIC8vIGZpbmQgY3VycmVuY3kgbWV0YWRhdGEgZnJvbSBtYXA6XHJcbiAgICBsZXQgbWV0YTogQ3VycmVuY3lNZXRhIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIGlmIChjdXJyZW5jeUNvZGUpIHtcclxuICAgICAgbWV0YSA9IHRoaXMuY3VycmVuY3lNYXBbY3VycmVuY3lDb2RlXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIW1ldGEgJiYgY3VycmVuY3lTeW1ib2wpIHtcclxuICAgICAgbWV0YSA9IE9iamVjdC52YWx1ZXModGhpcy5jdXJyZW5jeU1hcCkuZmluZChcclxuICAgICAgICAobSkgPT4gQXJyYXkuaXNBcnJheShtLnN5bWJvbHMpICYmIG0uc3ltYm9scy5pbmNsdWRlcyhjdXJyZW5jeVN5bWJvbClcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB1c2UgZmFsbGJhY2sgaWYgbm90IGZvdW5kIOKAlCB0eXBlZCBhcyBDdXJyZW5jeU1ldGFcclxuICAgIGlmICghbWV0YSkge1xyXG4gICAgICBjb25zdCBmYWxsYmFja05hbWUgPSAoXHJcbiAgICAgICAgY3VycmVuY3lDb2RlIHx8XHJcbiAgICAgICAgY3VycmVuY3lTeW1ib2wgfHxcclxuICAgICAgICAnQ3VycmVuY3knXHJcbiAgICAgICkudG9TdHJpbmcoKTtcclxuICAgICAgbWV0YSA9IHtcclxuICAgICAgICBjb2RlczogW2N1cnJlbmN5Q29kZSB8fCBmYWxsYmFja05hbWVdLFxyXG4gICAgICAgIHN5bWJvbHM6IGN1cnJlbmN5U3ltYm9sID8gW2N1cnJlbmN5U3ltYm9sXSA6IFtdLFxyXG4gICAgICAgIG1haW5Vbml0OiBmYWxsYmFja05hbWUsXHJcbiAgICAgICAgc3ViVW5pdDogJycsXHJcbiAgICAgICAgZGVjaW1hbHM6IDIsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gbm9ybWFsaXplIG51bWVyaWMgcGFydHNcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSAodmFsdWUgfHwgJycpLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICBjb25zdCBbaW50UGFydFN0ciA9ICcwJywgZGVjaW1hbFBhcnRTdHIgPSAnJ10gPSBub3JtYWxpemVkLnNwbGl0KCcuJyk7XHJcblxyXG4gICAgY29uc3QgaW50UGFydE51bSA9IE51bWJlcihpbnRQYXJ0U3RyKSB8fCAwO1xyXG5cclxuICAgIC8vIGNhbGN1bGF0ZSBzdWJ1bml0IG51bWJlciByb2J1c3RseTpcclxuICAgIGNvbnN0IGRwID1cclxuICAgICAgdHlwZW9mIG1ldGEuZGVjaW1hbHMgPT09ICdudW1iZXInICYmIG1ldGEuZGVjaW1hbHMgPj0gMFxyXG4gICAgICAgID8gbWV0YS5kZWNpbWFsc1xyXG4gICAgICAgIDogMjtcclxuICAgIGxldCBzdWJVbml0TnVtYmVyID0gMDtcclxuXHJcbiAgICBpZiAoZHAgPiAwICYmIGRlY2ltYWxQYXJ0U3RyKSB7XHJcbiAgICAgIGNvbnN0IHNjYWxlID0gTWF0aC5wb3coMTAsIGRwKTtcclxuICAgICAgY29uc3QgZGVjRGlnaXRzID0gZGVjaW1hbFBhcnRTdHIucmVwbGFjZSgvXFxEL2csICcnKTtcclxuICAgICAgLy8gaWYgc2hvcnRlciB0aGFuIGRwLCBtdWx0aXBseTsgaWYgbG9uZ2VyLCB0cmltIHRvIGRwXHJcbiAgICAgIGNvbnN0IHRyaW1tZWQgPSBkZWNEaWdpdHMuc2xpY2UoMCwgZHApO1xyXG4gICAgICBzdWJVbml0TnVtYmVyID0gTnVtYmVyKHRyaW1tZWQpICogTWF0aC5wb3coMTAsIGRwIC0gdHJpbW1lZC5sZW5ndGgpO1xyXG4gICAgICAvLyBndWFyZCBmb3Igcm91bmRpbmcgb3ZlcmZsb3cgKGUuZy4sIC45OTkgLT4gMS4wMClcclxuICAgICAgaWYgKHN1YlVuaXROdW1iZXIgPj0gc2NhbGUpIHtcclxuICAgICAgICAvLyBpbmNyZW1lbnQgaW50ZWdlciBwYXJ0XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRGaW5hbFBocmFzZShpbnRQYXJ0TnVtICsgMSwgMCwgbWV0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5idWlsZEZpbmFsUGhyYXNlKGludFBhcnROdW0sIHN1YlVuaXROdW1iZXIsIG1ldGEpO1xyXG4gIH1cclxuXHJcbiAgLy8gNCkgYnVpbGRGaW5hbFBocmFzZSBhY2NlcHRzIEN1cnJlbmN5TWV0YSAob3Igc2FtZSBzaGFwZSkg4oCUIHR5cGVkIGFjY29yZGluZ2x5XHJcbiAgcHJpdmF0ZSBidWlsZEZpbmFsUGhyYXNlKFxyXG4gICAgaW50TnVtOiBudW1iZXIsXHJcbiAgICBzdWJOdW06IG51bWJlcixcclxuICAgIG1ldGE6IHsgbWFpblVuaXQ6IHN0cmluZzsgc3ViVW5pdDogc3RyaW5nOyBkZWNpbWFsczogbnVtYmVyIH1cclxuICApOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbWFpbldvcmRzID0gdGhpcy5udW1iZXJUb1dvcmRzKGludE51bSkgfHwgJ1plcm8nO1xyXG5cclxuICAgIGlmIChtZXRhLmRlY2ltYWxzID09PSAwIHx8ICFtZXRhLnN1YlVuaXQpIHtcclxuICAgICAgcmV0dXJuIGAke21haW5Xb3Jkc30gJHttZXRhLm1haW5Vbml0fSBPbmx5YDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXN1Yk51bSkge1xyXG4gICAgICByZXR1cm4gYCR7bWFpbldvcmRzfSAke21ldGEubWFpblVuaXR9IE9ubHlgO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN1YldvcmRzID0gdGhpcy5udW1iZXJUb1dvcmRzKHN1Yk51bSk7XHJcbiAgICByZXR1cm4gYCR7bWFpbldvcmRzfSAke21ldGEubWFpblVuaXR9IGFuZCAke3N1YldvcmRzfSAke21ldGEuc3ViVW5pdH0gT25seWA7XHJcbiAgfVxyXG5cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgLy8gTlVNQkVSIOKGkiBXT1JEUyAoVXAgdG8gQ3JvcmVzKVxyXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBudW1iZXJUb1dvcmRzKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChudW0gPT09IDApIHJldHVybiAnWmVybyc7XHJcblxyXG4gICAgY29uc3QgYSA9IFtcclxuICAgICAgJycsXHJcbiAgICAgICdPbmUnLFxyXG4gICAgICAnVHdvJyxcclxuICAgICAgJ1RocmVlJyxcclxuICAgICAgJ0ZvdXInLFxyXG4gICAgICAnRml2ZScsXHJcbiAgICAgICdTaXgnLFxyXG4gICAgICAnU2V2ZW4nLFxyXG4gICAgICAnRWlnaHQnLFxyXG4gICAgICAnTmluZScsXHJcbiAgICAgICdUZW4nLFxyXG4gICAgICAnRWxldmVuJyxcclxuICAgICAgJ1R3ZWx2ZScsXHJcbiAgICAgICdUaGlydGVlbicsXHJcbiAgICAgICdGb3VydGVlbicsXHJcbiAgICAgICdGaWZ0ZWVuJyxcclxuICAgICAgJ1NpeHRlZW4nLFxyXG4gICAgICAnU2V2ZW50ZWVuJyxcclxuICAgICAgJ0VpZ2h0ZWVuJyxcclxuICAgICAgJ05pbmV0ZWVuJyxcclxuICAgIF07XHJcbiAgICBjb25zdCBiID0gW1xyXG4gICAgICAnJyxcclxuICAgICAgJycsXHJcbiAgICAgICdUd2VudHknLFxyXG4gICAgICAnVGhpcnR5JyxcclxuICAgICAgJ0ZvcnR5JyxcclxuICAgICAgJ0ZpZnR5JyxcclxuICAgICAgJ1NpeHR5JyxcclxuICAgICAgJ1NldmVudHknLFxyXG4gICAgICAnRWlnaHR5JyxcclxuICAgICAgJ05pbmV0eScsXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0IHRvV29yZHMgPSAobjogbnVtYmVyKTogc3RyaW5nID0+IHtcclxuICAgICAgaWYgKG4gPCAyMCkgcmV0dXJuIGFbbl07XHJcbiAgICAgIGlmIChuIDwgMTAwKSByZXR1cm4gYCR7YltNYXRoLmZsb29yKG4gLyAxMCldfSAke2FbbiAlIDEwXX1gLnRyaW0oKTtcclxuICAgICAgaWYgKG4gPCAxMDAwKVxyXG4gICAgICAgIHJldHVybiBgJHthW01hdGguZmxvb3IobiAvIDEwMCldfSBIdW5kcmVkICR7dG9Xb3JkcyhuICUgMTAwKX1gLnRyaW0oKTtcclxuICAgICAgaWYgKG4gPCAxMDAwMDApXHJcbiAgICAgICAgcmV0dXJuIGAke3RvV29yZHMoTWF0aC5mbG9vcihuIC8gMTAwMCkpfSBUaG91c2FuZCAke3RvV29yZHMoXHJcbiAgICAgICAgICBuICUgMTAwMFxyXG4gICAgICAgICl9YC50cmltKCk7XHJcbiAgICAgIGlmIChuIDwgMTAwMDAwMDApXHJcbiAgICAgICAgcmV0dXJuIGAke3RvV29yZHMoTWF0aC5mbG9vcihuIC8gMTAwMDAwKSl9IExha2ggJHt0b1dvcmRzKFxyXG4gICAgICAgICAgbiAlIDEwMDAwMFxyXG4gICAgICAgICl9YC50cmltKCk7XHJcbiAgICAgIHJldHVybiBgJHt0b1dvcmRzKE1hdGguZmxvb3IobiAvIDEwMDAwMDAwKSl9IENyb3JlICR7dG9Xb3JkcyhcclxuICAgICAgICBuICUgMTAwMDAwMDBcclxuICAgICAgKX1gLnRyaW0oKTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRvV29yZHMobnVtKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoaWxkTG9naWNzKHF1ZXN0aW9uOiBhbnkpIHtcclxuICAgIGlmIChxdWVzdGlvbi5jaGlsZExvZ2ljcyAmJiBBcnJheS5pc0FycmF5KHF1ZXN0aW9uLmNoaWxkTG9naWNzKSkge1xyXG4gICAgICBxdWVzdGlvbi5jaGlsZExvZ2ljcy5mb3JFYWNoKChjaGlsZExvZ2ljOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmV2YWx1YXRlQ29uZGl0aW9uKFxyXG4gICAgICAgICAgICBxdWVzdGlvbi5hbnN3ZXIsXHJcbiAgICAgICAgICAgIGNoaWxkTG9naWMuY29uZGl0aW9uLFxyXG4gICAgICAgICAgICBjaGlsZExvZ2ljLmlucHV0VmFsdWVcclxuICAgICAgICAgIClcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNoaWxkTG9naWMuc2hvd0xvZ2ljID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY2hpbGRMb2dpYy5zaG93TG9naWMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2xlYXJBbnN3ZXJzUmVjdXJzaXZlbHkoY2hpbGRMb2dpYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhcnNlQ3VycmVuY3lUb051bWJlcih2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAwO1xyXG5cclxuICAgIC8vIFJlbW92ZSBjdXJyZW5jeSBzeW1ib2wsIGNvbW1hcywgc3BhY2VzXHJcbiAgICBjb25zdCBudW1lcmljU3RyaW5nID0gdmFsdWVcclxuICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCR7dGhpcy5jdXJyZW5jeVN5bWJvbH1gLCAnZycpLCAnJykgLy8gcmVtb3ZlIHN5bWJvbFxyXG4gICAgICAucmVwbGFjZSgvLC9nLCAnJykgLy8gcmVtb3ZlIHRob3VzYW5kIHNlcGFyYXRvcnNcclxuICAgICAgLnRyaW0oKTtcclxuXHJcbiAgICAvLyBDb252ZXJ0IHRvIG51bWJlclxyXG4gICAgY29uc3QgbnVtID0gcGFyc2VGbG9hdChudW1lcmljU3RyaW5nKTtcclxuICAgIHJldHVybiBpc05hTihudW0pID8gMCA6IG51bTtcclxuICB9XHJcblxyXG4gIGNsZWFyQW5zd2Vyc1JlY3Vyc2l2ZWx5KGxvZ2ljOiBhbnkpIHtcclxuICAgIGlmICghbG9naWMgfHwgIWxvZ2ljLnJvd3MpIHJldHVybjtcclxuXHJcbiAgICBsb2dpYy5yb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgIHJvdy5ncmlkLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBpdGVtLmVsZW1lbnQ7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicgJiYgZWxlbWVudCkge1xyXG4gICAgICAgICAgLy8gQ2xlYXIgYW5zd2VyIGlmIHByZXNlbnRcclxuICAgICAgICAgIGlmICgnYW5zd2VyJyBpbiBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuYW5zd2VyID0gJyc7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gUmVjdXJzaXZlbHkgY2xlYXIgY2hpbGRMb2dpY3MgaWYgYW55XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5jaGlsZExvZ2ljcyAmJiBlbGVtZW50LmNoaWxkTG9naWNzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZWxlbWVudC5jaGlsZExvZ2ljcy5mb3JFYWNoKChjaGlsZExvZ2ljOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmNsZWFyQW5zd2Vyc1JlY3Vyc2l2ZWx5KGNoaWxkTG9naWMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpdGVtLmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJiBlbGVtZW50ICYmIGVsZW1lbnQucm93cykge1xyXG4gICAgICAgICAgLy8gU1VCRk9STSBjb250YWlucyBpdHMgb3duIHJvd3Mgc3RydWN0dXJlIGxpa2UgYSBmb3JtXHJcbiAgICAgICAgICB0aGlzLmNsZWFyQW5zd2Vyc1JlY3Vyc2l2ZWx5KHsgcm93czogZWxlbWVudC5yb3dzIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlQ29uZGl0aW9uKGFuc3dlcjogYW55LCBjb25kaXRpb246IGFueSwgaW5wdXRWYWx1ZTogYW55KSB7XHJcbiAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xyXG4gICAgICBjYXNlICc+JzpcclxuICAgICAgICByZXR1cm4gYW5zd2VyID4gTnVtYmVyKGlucHV0VmFsdWUpO1xyXG4gICAgICBjYXNlICc8JzpcclxuICAgICAgICByZXR1cm4gYW5zd2VyIDwgTnVtYmVyKGlucHV0VmFsdWUpO1xyXG4gICAgICBjYXNlICc+PSc6XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlciA+PSBOdW1iZXIoaW5wdXRWYWx1ZSk7XHJcbiAgICAgIGNhc2UgJzw9JzpcclxuICAgICAgICByZXR1cm4gYW5zd2VyIDw9IE51bWJlcihpbnB1dFZhbHVlKTtcclxuICAgICAgY2FzZSAnPSc6XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlciA9PSBpbnB1dFZhbHVlO1xyXG4gICAgICBjYXNlICchPSc6XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlciAhPSBpbnB1dFZhbHVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVZhbGlkYXRpb24oXHJcbiAgICBpc1ZhbGlkOiBib29sZWFuLFxyXG4gICAgbWVzc2FnZTogc3RyaW5nID0gJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnXHJcbiAgKSB7XHJcbiAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmNsZWFySW52YWxpZCh0aGlzLmJ1aWxkRWxlbWVudElkKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy52YWxpZGF0aW9uU2VydmljZS5zZXRJbnZhbGlkKHRoaXMucXVlc3Rpb24uaWQsIG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEVsZW1lbnRJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5MaW5lIHx8IHRoaXMuaW5DYXJkXHJcbiAgICAgID8gYCR7dGhpcy5zdWJtaXNzaW9uSW5kZXh9LSR7dGhpcy5xdWVzdGlvbi5pZH1gXHJcbiAgICAgIDogYCR7dGhpcy5xdWVzdGlvbi5pZH1gO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKHRoaXMuYnVpbGRFbGVtZW50SWQoKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZXJyb3JNZXNzYWdlKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKHRoaXMuYnVpbGRFbGVtZW50SWQoKSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5pbkxpbmUgfHwgdGhpcy5pbkNhcmQpIHtcclxuICAgICAgdGhpcy5lbGVtZW50SWQgPSBgcXVlc3Rpb24tJHt0aGlzLnN1Ym1pc3Npb25JbmRleH0tJHt0aGlzLnF1ZXN0aW9uLmlkfWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVsZW1lbnRJZCA9IGBxdWVzdGlvbi0ke3RoaXMucXVlc3Rpb24uaWR9YDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYWNrZXIucmVnaXN0ZXJFbGVtZW50KHRoaXMuZWxlbWVudElkKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuZWxlbWVudElkKSB7XHJcbiAgICAgIHRoaXMudHJhY2tlci51bnJlZ2lzdGVyRWxlbWVudCh0aGlzLmVsZW1lbnRJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBbbmdDbGFzc109XCJ7ICdtYi00JzogIWluTGluZSB9XCJcclxuICBjbGFzcz1cInB4LTNcIlxyXG4gIFtpZF09XCIoaW5MaW5lIHx8IGluQ2FyZCkgPyAncXVlc3Rpb24tJyArIHN1Ym1pc3Npb25JbmRleCArICctJyArIHF1ZXN0aW9uLmlkIDogJ3F1ZXN0aW9uLScgKyBxdWVzdGlvbi5pZFwiXHJcbiAgW2F0dHIubmFtZV09XCJxdWVzdGlvbi50ZXN0RWxlbWVudE5hbWVcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXIgbWItMlwiICpuZ0lmPVwiIWluTGluZVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uTnVtYmVyXCIgW2lubmVySFRNTF09XCJxdWVzdGlvbi5xdWVzdGlvbk51bWJlclwiPjwvZGl2PlxyXG4gICAgPHNwYW4gKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvbk51bWJlclwiIGNsYXNzPVwic3BhY2VcIj48L3NwYW4+XHJcbiAgICA8bGFiZWw+e3sgcXVlc3Rpb24ucXVlc3Rpb24gfX08L2xhYmVsXHJcbiAgICA+Jm5ic3A7XHJcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJxdWVzdGlvbj8ucmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInN2Zy13cmFwcGVyIG1iLTIgaGludEljb25cIlxyXG4gICAgICBbYXR0ci5kYXRhLXRpdGxlXT1cImhpbnRcIlxyXG4gICAgICAqbmdJZj1cImhpbnRcIlxyXG4gICAgPlxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJoaW50U3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDMwIDMwXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgZD1cIk0xNSAyNi4yNVYyNi4yNUM4Ljc4NjI1IDI2LjI1IDMuNzUgMjEuMjEzOCAzLjc1IDE1VjE1QzMuNzUgOC43ODYyNSA4Ljc4NjI1IDMuNzUgMTUgMy43NVYzLjc1QzIxLjIxMzggMy43NSAyNi4yNSA4Ljc4NjI1IDI2LjI1IDE1VjE1QzI2LjI1IDIxLjIxMzggMjEuMjEzOCAyNi4yNSAxNSAyNi4yNVpcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiIzMyMzIzMlwiXHJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0xNSAxNi41NjIzVjE2LjI0OThDMTUgMTUuMjI4NSAxNS42MzEyIDE0LjY3NDggMTYuMjYzNyAxNC4yNDk4QzE2Ljg4MTIgMTMuODMzNSAxNy41IDEzLjI5MSAxNy41IDEyLjI5MUMxNy41IDEwLjkwOTggMTYuMzgxMyA5Ljc5MTAyIDE1IDkuNzkxMDJDMTMuNjE4NyA5Ljc5MTAyIDEyLjUgMTAuOTA5OCAxMi41IDEyLjI5MVwiXHJcbiAgICAgICAgICBzdHJva2U9XCIjMzIzMjMyXCJcclxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTE0Ljk5ODggMjBDMTQuODI2MyAyMCAxNC42ODYzIDIwLjE0IDE0LjY4NzUgMjAuMzEyNUMxNC42ODc1IDIwLjQ4NSAxNC44Mjc1IDIwLjYyNSAxNSAyMC42MjVDMTUuMTcyNSAyMC42MjUgMTUuMzEyNSAyMC40ODUgMTUuMzEyNSAyMC4zMTI1QzE1LjMxMjUgMjAuMTQgMTUuMTcyNSAyMCAxNC45OTg4IDIwXCJcclxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxyXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjdXJyZW5jeS1pbnB1dCBpbnNpZGVcIj5cclxuICAgIDxzcGFuICpuZ0lmPVwic3ltYm9sUG9zaXRpb24gPT09ICdCZWZvcmUgdGhlIHZhbHVlJ1wiIGNsYXNzPVwiY3VycmVuY3ktc3ltYm9sIGxlZnRcIj5cclxuICAgICAge3sgY3VycmVuY3lTeW1ib2wgfX1cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8aW5wdXRcclxuICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIG1iLTIgaGVpZ2h0XCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICBbY2xhc3MuaGlkZS1zcGluLWJ1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAoYmx1cik9XCJ2YWxpZGF0ZU51bWJlcigpXCJcclxuICAgIFsobmdNb2RlbCldPVwiZW50ZXJlZEFtb3VudFwiXHJcbiAgICBbY2xhc3MuaW52YWxpZF09XCJ2YWxpZGF0aW9uRmFpbGVkXCJcclxuICAgIFtjbGFzcy5pbnZhbGlkLXF1ZXN0aW9uXT1cImlzSW52YWxpZCAmJiAoIWluTGluZSB8fCAhZW50ZXJlZEFtb3VudClcIlxyXG4gICAgKGlucHV0KT1cInZhbGlkYXRlSW5wdXQoJGV2ZW50KVwiXHJcbiAgICBbYXR0ci5taW5dPVwibWluXCJcclxuICAgIFthdHRyLm1heF09XCJtYXhcIlxyXG4gICAgKHdoZWVsKT1cInByZXZlbnROdW1iZXJTY3JvbGwoJGV2ZW50KVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUVkaXRcIlxyXG4gICAgLz5cclxuXHJcbiAgICA8c3BhbiAqbmdJZj1cInN5bWJvbFBvc2l0aW9uID09PSAnQWZ0ZXIgdGhlIHZhbHVlJ1wiIGNsYXNzPVwiY3VycmVuY3ktc3ltYm9sIHJpZ2h0XCI+XHJcbiAgICAgICAge3sgY3VycmVuY3lTeW1ib2wgfX1cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInNob3dBbW91bnRJbldvcmRzICYmIGFtb3VudEluV29yZHNUZXh0XCIgY2xhc3M9XCJhbW91bnQtaW4td29yZHNcIj5cclxuICAgIHt7IGFtb3VudEluV29yZHNUZXh0IH19XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cImlzSW52YWxpZCAmJiAoIWluTGluZSB8fCAhZW50ZXJlZEFtb3VudClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cclxuICAgIHt7IGVycm9yTWVzc2FnZSB9fVxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRmFpbGVkICYmICFpc0ludmFsaWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIGVycm9yLW1lc3NhZ2VcIj5cclxuICAgIHt7IHZhbGlkYXRpb25NZXNzYWdlIH19XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
505
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktZmllbGRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvZm9ybS1maWVsZHMvY3VycmVuY3ktZmllbGRzL2N1cnJlbmN5LWZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2N1cnJlbmN5LWZpZWxkcy9jdXJyZW5jeS1maWVsZHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFrQnZFLE1BQU0sT0FBTyx1QkFBdUI7SUErQmxDLFlBQ1UsaUJBQW9DLEVBQ3BDLE9BQThCLEVBQzlCLGdCQUE0QyxFQUM1QyxrQkFBcUM7UUFIckMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxZQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTRCO1FBQzVDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFsQ3RDLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFDbkIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzVCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBS3JDLENBQUM7UUFHTCxVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBQ2xCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUd6QixtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUU1QixtQkFBYyxHQUFXLGtCQUFrQixDQUFDO1FBRTVD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LENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNoRDtJQUNILENBQUM7K0dBNWpCVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw0UENsQnBDLHVtR0FxRkE7OzRGRG5FYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCO3NOQUt0QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBTUUsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEVsZW1lbnRUcmFja2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VsZW1lbnQtdHJhY2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uRnVuY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWdncmVnYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGlkZGVuRmllbGRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGlkZGVuLWZpZWxkLnNlcnZpY2UnO1xudHlwZSBDdXJyZW5jeU1ldGEgPSB7XG4gIGNvZGVzOiBzdHJpbmdbXTtcbiAgc3ltYm9scz86IHN0cmluZ1tdO1xuICBtYWluVW5pdDogc3RyaW5nO1xuICBzdWJVbml0OiBzdHJpbmc7XG4gIGRlY2ltYWxzOiBudW1iZXI7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY3VycmVuY3ktZmllbGRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1cnJlbmN5LWZpZWxkcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N1cnJlbmN5LWZpZWxkcy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDdXJyZW5jeUZpZWxkc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgaW5MaW5lOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGluQ2FyZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzdWJtaXNzaW9uSW5kZXghOiBudW1iZXI7XG4gIEBJbnB1dCgpIGRpc2FibGVFZGl0OiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBhbnN3ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBhbnN3ZXI6IGFueTtcbiAgICBtYXhQb3NzaWJsZVNjb3JlPzogbnVtYmVyO1xuICAgIGFtb3VudEluV29yZHM6IHN0cmluZztcbiAgICBjdXJyZW5jeTogc3RyaW5nO1xuICB9PigpO1xuICBASW5wdXQoKSByb3dJZDogYW55O1xuXG4gIGNvdW50OiBudW1iZXIgPSAwO1xuICByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBoaW50OiBzdHJpbmcgPSAnJztcbiAgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBtaW4hOiBudW1iZXI7XG4gIG1heCE6IG51bWJlcjtcbiAgY3VycmVuY3lTeW1ib2w6IHN0cmluZyA9ICcnO1xuICBkZWNpbWFsUHJlY2lzaW9uITogbnVtYmVyO1xuICBzeW1ib2xQb3NpdGlvbjogc3RyaW5nID0gJ0JlZm9yZSB0aGUgdmFsdWUnO1xuICB0aG91c2FuZFNlcGFyYXRvciE6IGJvb2xlYW47XG4gIHNob3dBbW91bnRJbldvcmRzOiBib29sZWFuID0gZmFsc2U7XG4gIGVudGVyZWRBbW91bnQhOiBzdHJpbmc7XG4gIHZhbGlkYXRpb25GYWlsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGVsZW1lbnRJZDogc3RyaW5nID0gJyc7XG4gIGFtb3VudEluV29yZHNUZXh0OiBzdHJpbmcgPSAnJztcbiAgZGVmYXVsdEN1cnJlbmN5OnN0cmluZz0nJztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFja2VyOiBFbGVtZW50VHJhY2tlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhZ2dyZWdhdGVTZXJ2aWNlOiBBZ2dyZWdhdGlvbkZ1bmN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGhpZGRlbkZpZWxkU2VydmljZTpIaWRkZW5GaWVsZFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudmFsdWVBc3NpZ25lZCgpO1xuICB9XG5cbiAgdmFsdWVBc3NpZ25lZCgpIHtcbiAgICB0aGlzLmNvdW50ID0gdGhpcy5xdWVzdGlvbi5jb3VudDtcbiAgICB0aGlzLnJlcXVpcmVkID0gdGhpcy5xdWVzdGlvbi5yZXF1aXJlZDtcbiAgICB0aGlzLmhpbnQgPSB0aGlzLnF1ZXN0aW9uLmhpbnQ7XG4gICAgdGhpcy5kZWZhdWx0Q3VycmVuY3k9dGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudD8uYXBwZWFyYW5jZT8uZGVmYXVsdEN1cnJlbmN5IHx8ICcnO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Py5hcHBlYXJhbmNlPy5wbGFjZWhvbGRlciB8fCAnJztcbiAgICB0aGlzLmN1cnJlbmN5U3ltYm9sID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudD8uYXBwZWFyYW5jZT8uY3VycmVuY3lTeW1ib2w7XG4gICAgdGhpcy5kZWNpbWFsUHJlY2lzaW9uID1cbiAgICAgIHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQ/LmFwcGVhcmFuY2U/LmRlY2ltYWxQcmVjaXNpb24gfHwgMjtcbiAgICB0aGlzLnN5bWJvbFBvc2l0aW9uID1cbiAgICAgIHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQ/LmFwcGVhcmFuY2U/LnN5bWJvbFBvc2l0aW9uIHx8XG4gICAgICAnQmVmb3JlIHRoZSB2YWx1ZSc7XG4gICAgdGhpcy50aG91c2FuZFNlcGFyYXRvciA9XG4gICAgICB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Py5hcHBlYXJhbmNlPy50aG91c2FuZFNlcGFyYXRvcjtcbiAgICB0aGlzLm1pbiA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQudmFsaWRhdGlvbi5taW47XG4gICAgdGhpcy5tYXggPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWF4O1xuICAgIHRoaXMuc2hvd0Ftb3VudEluV29yZHMgPVxuICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudD8uYXBwZWFyYW5jZT8uc2hvd0Ftb3VudEluV29yZHM7XG4gICAgaWYgKHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQ/LmFwcGVhcmFuY2U/LmN1cnJlbmN5KSB7XG4gICAgICBsZXQgdXNlckxvY2FsZUN1cmVlbmN5ID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudD8uYXBwZWFyYW5jZT8uY3VycmVuY3k7XG4gICAgICBpZiAodGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLmN1cnJlbmN5T3B0aW9uKSB7XG4gICAgICAgIGxldCBjdXJyZW5jeU9wdGlvbiA9XG4gICAgICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLmN1cnJlbmN5T3B0aW9uO1xuICAgICAgICBpZiAoY3VycmVuY3lPcHRpb24gPT0gJ2F1dG8nKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLmxpbWl0Q3VycmVuY3lTeW1ib2wgJiZcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS5saW1pdEN1cnJlbmN5U3ltYm9sLmxlbmd0aCA+IDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lTeW1ib2wgPVxuICAgICAgICAgICAgICB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2UubGltaXRDdXJyZW5jeVN5bWJvbC5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICB1c2VyTG9jYWxlQ3VyZWVuY3lcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgID8gdXNlckxvY2FsZUN1cmVlbmN5XG4gICAgICAgICAgICAgICAgOiB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Py5hcHBlYXJhbmNlPy5jdXJyZW5jeVN5bWJvbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeVN5bWJvbCA9IHVzZXJMb2NhbGVDdXJlZW5jeTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVuY3lPcHRpb24gPT0gJ3NwZWNpZmljJykge1xuICAgICAgICAgIHRoaXMuY3VycmVuY3lTeW1ib2wgPVxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudD8uYXBwZWFyYW5jZT8uc3BlY2lmaWNDdXJyZW5jeVN5bWJvbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICAhdGhpcy5jdXJyZW5jeVN5bWJvbCAmJlxuICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudD8uYXBwZWFyYW5jZT8uY3VycmVuY3lTeW1ib2xcbiAgICApIHtcbiAgICAgIHRoaXMuY3VycmVuY3lTeW1ib2wgPVxuICAgICAgICB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Py5hcHBlYXJhbmNlPy5jdXJyZW5jeVN5bWJvbDtcbiAgICB9XG4gICAgaWYodGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudD8uYXBwZWFyYW5jZT8uZGVmYXVsdEN1cnJlbmN5KXtcbiAgICAgIHRoaXMuY3VycmVuY3lTeW1ib2wgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Py5hcHBlYXJhbmNlPy5kZWZhdWx0Q3VycmVuY3k7XG4gICAgfVxuICAgIGlmKHRoaXMucXVlc3Rpb24uYW5zd2VyQ3VycmVuY3kpe1xuICAgICAgdGhpcy5jdXJyZW5jeVN5bWJvbD10aGlzLnF1ZXN0aW9uLmFuc3dlckN1cnJlbmN5O1xuICAgIH1cblxuXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uYW5zd2VyKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVBbnN3ZXIoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd0Ftb3VudEluV29yZHMpIHtcbiAgICAgIHRoaXMuYW1vdW50SW5Xb3Jkc1RleHQgPSB0aGlzLnF1ZXN0aW9uLmFtb3VudEluV29yZHM7XG4gICAgfVxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLmNoaWxkTG9naWNzICYmIHRoaXMucXVlc3Rpb24uYW5zd2VyKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNoaWxkTG9naWNzKHRoaXMucXVlc3Rpb24pO1xuICAgIH1cbiAgICB0aGlzLmFnZ3JlZ2F0ZVNlcnZpY2Uuc2V0TnVtYmVyRmllbGQoXG4gICAgICB0aGlzLnJvd0lkLFxuICAgICAgdGhpcy5xdWVzdGlvbi5pZCxcbiAgICAgIHRoaXMucXVlc3Rpb24uYW5zd2VyXG4gICAgKTtcbiAgfVxuXG4gIGluaXRpYWxpemVBbnN3ZXIoKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5xdWVzdGlvbj8uYW5zd2VyO1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcbiAgICAvLyBjaGVjayBpZiBudW1lcmljXG4gICAgaWYgKCFpc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgICAgaWYgKHRoaXMudGhvdXNhbmRTZXBhcmF0b3IpIHtcbiAgICAgICAgY29uc3QgcGFydHMgPSB2YWx1ZS5zcGxpdCgnLicpO1xuICAgICAgICBwYXJ0c1swXSA9IE51bWJlcihwYXJ0c1swXSkudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJyk7IC8vIGFkZHMgcHJvcGVyIHRob3VzYW5kIHNlcGFyYXRvclxuICAgICAgICB2YWx1ZSA9IHBhcnRzLmpvaW4oJy4nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5lbnRlcmVkQW1vdW50ID0gdmFsdWU7XG4gIH1cblxuICBwcmV2ZW50TnVtYmVyU2Nyb2xsKGV2ZW50OiBXaGVlbEV2ZW50KSB7XG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGV2ZW50LnRhcmdldCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZU51bWJlcigpIHtcbiAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmNsZWFySW52YWxpZCh0aGlzLmJ1aWxkRWxlbWVudElkKCkpO1xuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcbiAgICBsZXQgZW50ZXJlZEFtb3VudCA9IHRoaXMucGFyc2VDdXJyZW5jeVRvTnVtYmVyKHRoaXMuZW50ZXJlZEFtb3VudCk7XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIWVudGVyZWRBbW91bnQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IHRydWU7XG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbGlkIGFtb3VudGA7XG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb25NZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbGlkIGFtb3VudGA7XG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgKHRoaXMubWluICE9PSB1bmRlZmluZWQgJiYgZW50ZXJlZEFtb3VudCA8IHRoaXMubWluKSB8fFxuICAgICAgKHRoaXMubWF4ICE9PSB1bmRlZmluZWQgJiYgZW50ZXJlZEFtb3VudCA+IHRoaXMubWF4KVxuICAgICkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcblxuICAgICAgLy8gQ29uc3RydWN0IGFwcHJvcHJpYXRlIHZhbGlkYXRpb24gbWVzc2FnZSBiYXNlZCBvbiB3aGV0aGVyIG1pbiwgbWF4LCBvciBib3RoIGFyZSBwcm92aWRlZFxuICAgICAgaWYgKHRoaXMubWluICE9PSB1bmRlZmluZWQgJiYgdGhpcy5tYXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbGlkIGFtb3VudCBiZXR3ZWVuICR7dGhpcy5taW59IGFuZCAke3RoaXMubWF4fWA7XG4gICAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbk1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsaWQgYW1vdW50IGJldHdlZW4gJHt0aGlzLm1pbn0gYW5kICR7dGhpcy5tYXh9YDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5taW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIGFtb3VudCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHt0aGlzLm1pbn1gO1xuICAgICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb25NZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIGFtb3VudCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHt0aGlzLm1pbn1gO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm1heCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgYW1vdW50IGxlc3MgdGhhbiBvciBlcXVhbCB0byAke3RoaXMubWF4fWA7XG4gICAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbk1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgYW1vdW50IGxlc3MgdGhhbiBvciBlcXVhbCB0byAke3RoaXMubWF4fWA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5xdWVzdGlvbi5jaGlsZExvZ2ljcykge1xuICAgICAgdGhpcy51cGRhdGVDaGlsZExvZ2ljcyh0aGlzLnF1ZXN0aW9uKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUlucHV0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmNsZWFySW52YWxpZCh0aGlzLmJ1aWxkRWxlbWVudElkKCkpO1xuXG4gICAgLy8gcmVtb3ZlIGV4aXN0aW5nIGNvbW1hcyAmIGN1cnJlbmN5IHN5bWJvbFxuICAgIGxldCByYXdWYWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldC52YWx1ZSB8fCAnJylcbiAgICAgIC5yZXBsYWNlKC8sL2csICcnKVxuICAgICAgLnJlcGxhY2UodGhpcy5jdXJyZW5jeVN5bWJvbCB8fCAnJywgJycpO1xuXG4gICAgLy8gcmVtb3ZlIGFueSBjaGFyYWN0ZXJzIGV4Y2VwdCBkaWdpdHMgYW5kIGRvdFxuICAgIHJhd1ZhbHVlID0gcmF3VmFsdWUucmVwbGFjZSgvW15cXGQuXS9nLCAnJyk7XG5cbiAgICAvLyBrZWVwIG9ubHkgdGhlIGZpcnN0IGRvdCAocmVtb3ZlIGFueSBhZGRpdGlvbmFsIGRvdHMpXG4gICAgY29uc3QgZmlyc3REb3QgPSByYXdWYWx1ZS5pbmRleE9mKCcuJyk7XG4gICAgaWYgKGZpcnN0RG90ICE9PSAtMSkge1xuICAgICAgLy8gc3BsaXQgaW50byBiZWZvcmUtZmlyc3QtZG90IGFuZCByZXN0LCByZW1vdmUgYWRkaXRpb25hbCBkb3RzIGZyb20gcmVzdFxuICAgICAgY29uc3QgYmVmb3JlID0gcmF3VmFsdWUuc2xpY2UoMCwgZmlyc3REb3QpO1xuICAgICAgY29uc3QgYWZ0ZXIgPSByYXdWYWx1ZS5zbGljZShmaXJzdERvdCArIDEpLnJlcGxhY2UoL1xcLi9nLCAnJyk7XG4gICAgICByYXdWYWx1ZSA9IGAke2JlZm9yZX0uJHthZnRlcn1gO1xuICAgIH1cblxuICAgIC8vIGRldGVybWluZSBkZWNpbWFsIHByZWNpc2lvbiB0byBlbmZvcmNlIChkZWZhdWx0IHRvIDIpXG4gICAgY29uc3QgZHAgPVxuICAgICAgdHlwZW9mIHRoaXMuZGVjaW1hbFByZWNpc2lvbiA9PT0gJ251bWJlcicgJiYgdGhpcy5kZWNpbWFsUHJlY2lzaW9uID49IDBcbiAgICAgICAgPyB0aGlzLmRlY2ltYWxQcmVjaXNpb25cbiAgICAgICAgOiAyO1xuXG4gICAgLy8gaWYgdGhlcmUncyBhIGRlY2ltYWwgcGFydCwgdHJpbSBpdCB0byBhbGxvd2VkIGxlbmd0aFxuICAgIGlmIChyYXdWYWx1ZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICBjb25zdCBbaW50UGFydCwgZGVjaW1hbFBhcnQgPSAnJ10gPSByYXdWYWx1ZS5zcGxpdCgnLicpO1xuICAgICAgY29uc3QgdHJpbW1lZERlY2ltYWwgPSBkZWNpbWFsUGFydC5zbGljZSgwLCBkcCk7XG4gICAgICByYXdWYWx1ZSA9IHRyaW1tZWREZWNpbWFsXG4gICAgICAgID8gYCR7aW50UGFydH0uJHt0cmltbWVkRGVjaW1hbH1gXG4gICAgICAgIDogaW50UGFydCArICcuJztcbiAgICB9XG5cbiAgICAvLyBmb3JtYXQgd2l0aCB0aG91c2FuZCBzZXBhcmF0b3IgZm9yIGRpc3BsYXlcbiAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSByYXdWYWx1ZTtcbiAgICBpZiAodGhpcy50aG91c2FuZFNlcGFyYXRvciAmJiByYXdWYWx1ZSkge1xuICAgICAgY29uc3QgcGFydHMgPSByYXdWYWx1ZS5zcGxpdCgnLicpO1xuICAgICAgLy8gaGFuZGxlIGNhc2Ugd2hlcmUgdXNlciB0eXBlcyBcIi4xMlwiIC0+IHBhcnRzWzBdID09PSAnJ1xuICAgICAgY29uc3QgaW50UGFydEZvckZvcm1hdCA9IHBhcnRzWzBdID09PSAnJyA/ICcwJyA6IHBhcnRzWzBdO1xuICAgICAgcGFydHNbMF0gPSBOdW1iZXIoaW50UGFydEZvckZvcm1hdCkudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJyk7XG4gICAgICBmb3JtYXR0ZWRWYWx1ZSA9IHBhcnRzLmpvaW4oJy4nKTtcbiAgICAgIC8vIGlmIG9yaWdpbmFsIGhhZCBsZWFkaW5nICcuJyAodXNlciB0eXBlZCBcIi4xMlwiKSwgcmVzdG9yZSBpdCB2aXN1YWxseSBhcyBcIi4xMlwiXG4gICAgICBpZiAocmF3VmFsdWUuc3RhcnRzV2l0aCgnLicpICYmICFmb3JtYXR0ZWRWYWx1ZS5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZS5yZXBsYWNlKC9eMC8sICcnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBrZWVwIG51bWVyaWMgdmVyc2lvbiBmb3IgYmFja2VuZC9jYWxjdWxhdGlvbnNcbiAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9IHJhd1ZhbHVlO1xuICAgIHRoaXMucXVlc3Rpb24uY3VycmVuY3lTeW1ib2wgPSB0aGlzLmN1cnJlbmN5U3ltYm9sO1xuXG4gICAgLy8gdXBkYXRlIGZpZWxkIGRpc3BsYXlcbiAgICBldmVudC50YXJnZXQudmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcblxuICAgIHRoaXMuYWdncmVnYXRlU2VydmljZS5zZXROdW1iZXJGaWVsZChcbiAgICAgIHRoaXMucm93SWQsXG4gICAgICB0aGlzLnF1ZXN0aW9uLmlkLFxuICAgICAgcmF3VmFsdWUgPyBwYXJzZUZsb2F0KHJhd1ZhbHVlKSA6IDBcbiAgICApO1xuXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uY2hpbGRMb2dpY3MpIHtcbiAgICAgIHRoaXMudXBkYXRlQ2hpbGRMb2dpY3ModGhpcy5xdWVzdGlvbik7XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dBbW91bnRJbldvcmRzKSB7XG4gICAgICB0aGlzLmFtb3VudEluV29yZHNUZXh0ID0gdGhpcy5jb252ZXJ0QW1vdW50VG9Xb3JkcyhyYXdWYWx1ZSk7XG4gICAgICB0aGlzLnF1ZXN0aW9uLmFtb3VudEluV29yZHMgPSB0aGlzLmFtb3VudEluV29yZHNUZXh0O1xuICAgIH1cblxuICAgIHRoaXMuYW5zd2VyQ2hhbmdlLmVtaXQoe1xuICAgICAgYW5zd2VyOiB0aGlzLnF1ZXN0aW9uLmFuc3dlcixcbiAgICAgIG1heFBvc3NpYmxlU2NvcmU6IDAsXG4gICAgICBhbW91bnRJbldvcmRzOiB0aGlzLnF1ZXN0aW9uLmFtb3VudEluV29yZHMsXG4gICAgICBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeVN5bWJvbFxuICAgIH0pO1xuICAgIHRoaXMudmFsaWRhdGVOdW1iZXIoKTtcbiAgICB0aGlzLmhpZGRlbkZpZWxkU2VydmljZS51cGRhdGVIaWRkZW5GaWVsZHNPbkNoYW5nZSgpO1xuICB9XG5cbiAgLy8gMikgdHlwZWQgY3VycmVuY3kgbWFwXG4gIHByaXZhdGUgY3VycmVuY3lNYXA6IFJlY29yZDxzdHJpbmcsIEN1cnJlbmN5TWV0YT4gPSB7XG4gICAgVVNEOiB7XG4gICAgICBjb2RlczogWydVU0QnXSxcbiAgICAgIHN5bWJvbHM6IFsnJCcsICdVUyQnXSxcbiAgICAgIG1haW5Vbml0OiAnRG9sbGFycycsXG4gICAgICBzdWJVbml0OiAnQ2VudHMnLFxuICAgICAgZGVjaW1hbHM6IDIsXG4gICAgfSxcbiAgICBJTlI6IHtcbiAgICAgIGNvZGVzOiBbJ0lOUiddLFxuICAgICAgc3ltYm9sczogWyfigrknLCAnUnMnLCAn4oKoJ10sXG4gICAgICBtYWluVW5pdDogJ1J1cGVlcycsXG4gICAgICBzdWJVbml0OiAnUGFpc2EnLFxuICAgICAgZGVjaW1hbHM6IDIsXG4gICAgfSxcbiAgICBFVVI6IHtcbiAgICAgIGNvZGVzOiBbJ0VVUiddLFxuICAgICAgc3ltYm9sczogWyfigqwnXSxcbiAgICAgIG1haW5Vbml0OiAnRXVyb3MnLFxuICAgICAgc3ViVW5pdDogJ0NlbnRzJyxcbiAgICAgIGRlY2ltYWxzOiAyLFxuICAgIH0sXG4gICAgQUVEOiB7XG4gICAgICBjb2RlczogWydBRUQnXSxcbiAgICAgIHN5bWJvbHM6IFsnQUVEJywgJ9ivLtilJ10sXG4gICAgICBtYWluVW5pdDogJ0RpcmhhbXMnLFxuICAgICAgc3ViVW5pdDogJ0ZpbHMnLFxuICAgICAgZGVjaW1hbHM6IDIsXG4gICAgfSxcbiAgICBHQlA6IHtcbiAgICAgIGNvZGVzOiBbJ0dCUCddLFxuICAgICAgc3ltYm9sczogWyfCoyddLFxuICAgICAgbWFpblVuaXQ6ICdQb3VuZHMnLFxuICAgICAgc3ViVW5pdDogJ1BlbmNlJyxcbiAgICAgIGRlY2ltYWxzOiAyLFxuICAgIH0sXG4gICAgSlBZOiB7XG4gICAgICBjb2RlczogWydKUFknXSxcbiAgICAgIHN5bWJvbHM6IFsnwqUnXSxcbiAgICAgIG1haW5Vbml0OiAnWWVuJyxcbiAgICAgIHN1YlVuaXQ6ICcnLFxuICAgICAgZGVjaW1hbHM6IDAsXG4gICAgfSxcbiAgICAvLyBhZGQgbW9yZSBlbnRyaWVzIGFzIG5lZWRlZFxuICB9O1xuXG4gIC8vIDMpIGNvbnZlcnRBbW91bnRUb1dvcmRzIHVzaW5nIEN1cnJlbmN5TWV0YSB0eXBpbmdcbiAgY29udmVydEFtb3VudFRvV29yZHModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuXG4gICAgLy8gcHJlZmVyIGN1cnJlbmN5Q29kZSAoSVNPKSBpZiBhdmFpbGFibGU7IGZhbGwgYmFjayB0byBzeW1ib2xcbiAgICBjb25zdCBjdXJyZW5jeUNvZGUgPSB0aGlzLnF1ZXN0aW9uPy5jdXJyZW5jeUNvZGUgfHwgbnVsbDtcbiAgICBjb25zdCBjdXJyZW5jeVN5bWJvbCA9XG4gICAgICB0aGlzLnF1ZXN0aW9uPy5jdXJyZW5jeVN5bWJvbCB8fCB0aGlzLmN1cnJlbmN5U3ltYm9sIHx8IG51bGw7XG5cbiAgICAvLyBmaW5kIGN1cnJlbmN5IG1ldGFkYXRhIGZyb20gbWFwOlxuICAgIGxldCBtZXRhOiBDdXJyZW5jeU1ldGEgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoY3VycmVuY3lDb2RlKSB7XG4gICAgICBtZXRhID0gdGhpcy5jdXJyZW5jeU1hcFtjdXJyZW5jeUNvZGVdO1xuICAgIH1cblxuICAgIGlmICghbWV0YSAmJiBjdXJyZW5jeVN5bWJvbCkge1xuICAgICAgbWV0YSA9IE9iamVjdC52YWx1ZXModGhpcy5jdXJyZW5jeU1hcCkuZmluZChcbiAgICAgICAgKG0pID0+IEFycmF5LmlzQXJyYXkobS5zeW1ib2xzKSAmJiBtLnN5bWJvbHMuaW5jbHVkZXMoY3VycmVuY3lTeW1ib2wpXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIHVzZSBmYWxsYmFjayBpZiBub3QgZm91bmQg4oCUIHR5cGVkIGFzIEN1cnJlbmN5TWV0YVxuICAgIGlmICghbWV0YSkge1xuICAgICAgY29uc3QgZmFsbGJhY2tOYW1lID0gKFxuICAgICAgICBjdXJyZW5jeUNvZGUgfHxcbiAgICAgICAgY3VycmVuY3lTeW1ib2wgfHxcbiAgICAgICAgJ0N1cnJlbmN5J1xuICAgICAgKS50b1N0cmluZygpO1xuICAgICAgbWV0YSA9IHtcbiAgICAgICAgY29kZXM6IFtjdXJyZW5jeUNvZGUgfHwgZmFsbGJhY2tOYW1lXSxcbiAgICAgICAgc3ltYm9sczogY3VycmVuY3lTeW1ib2wgPyBbY3VycmVuY3lTeW1ib2xdIDogW10sXG4gICAgICAgIG1haW5Vbml0OiBmYWxsYmFja05hbWUsXG4gICAgICAgIHN1YlVuaXQ6ICcnLFxuICAgICAgICBkZWNpbWFsczogMixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gbm9ybWFsaXplIG51bWVyaWMgcGFydHNcbiAgICBjb25zdCBub3JtYWxpemVkID0gKHZhbHVlIHx8ICcnKS50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJycpO1xuICAgIGNvbnN0IFtpbnRQYXJ0U3RyID0gJzAnLCBkZWNpbWFsUGFydFN0ciA9ICcnXSA9IG5vcm1hbGl6ZWQuc3BsaXQoJy4nKTtcblxuICAgIGNvbnN0IGludFBhcnROdW0gPSBOdW1iZXIoaW50UGFydFN0cikgfHwgMDtcblxuICAgIC8vIGNhbGN1bGF0ZSBzdWJ1bml0IG51bWJlciByb2J1c3RseTpcbiAgICBjb25zdCBkcCA9XG4gICAgICB0eXBlb2YgbWV0YS5kZWNpbWFscyA9PT0gJ251bWJlcicgJiYgbWV0YS5kZWNpbWFscyA+PSAwXG4gICAgICAgID8gbWV0YS5kZWNpbWFsc1xuICAgICAgICA6IDI7XG4gICAgbGV0IHN1YlVuaXROdW1iZXIgPSAwO1xuXG4gICAgaWYgKGRwID4gMCAmJiBkZWNpbWFsUGFydFN0cikge1xuICAgICAgY29uc3Qgc2NhbGUgPSBNYXRoLnBvdygxMCwgZHApO1xuICAgICAgY29uc3QgZGVjRGlnaXRzID0gZGVjaW1hbFBhcnRTdHIucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICAgIC8vIGlmIHNob3J0ZXIgdGhhbiBkcCwgbXVsdGlwbHk7IGlmIGxvbmdlciwgdHJpbSB0byBkcFxuICAgICAgY29uc3QgdHJpbW1lZCA9IGRlY0RpZ2l0cy5zbGljZSgwLCBkcCk7XG4gICAgICBzdWJVbml0TnVtYmVyID0gTnVtYmVyKHRyaW1tZWQpICogTWF0aC5wb3coMTAsIGRwIC0gdHJpbW1lZC5sZW5ndGgpO1xuICAgICAgLy8gZ3VhcmQgZm9yIHJvdW5kaW5nIG92ZXJmbG93IChlLmcuLCAuOTk5IC0+IDEuMDApXG4gICAgICBpZiAoc3ViVW5pdE51bWJlciA+PSBzY2FsZSkge1xuICAgICAgICAvLyBpbmNyZW1lbnQgaW50ZWdlciBwYXJ0XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkRmluYWxQaHJhc2UoaW50UGFydE51bSArIDEsIDAsIG1ldGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmJ1aWxkRmluYWxQaHJhc2UoaW50UGFydE51bSwgc3ViVW5pdE51bWJlciwgbWV0YSk7XG4gIH1cblxuICAvLyA0KSBidWlsZEZpbmFsUGhyYXNlIGFjY2VwdHMgQ3VycmVuY3lNZXRhIChvciBzYW1lIHNoYXBlKSDigJQgdHlwZWQgYWNjb3JkaW5nbHlcbiAgcHJpdmF0ZSBidWlsZEZpbmFsUGhyYXNlKFxuICAgIGludE51bTogbnVtYmVyLFxuICAgIHN1Yk51bTogbnVtYmVyLFxuICAgIG1ldGE6IHsgbWFpblVuaXQ6IHN0cmluZzsgc3ViVW5pdDogc3RyaW5nOyBkZWNpbWFsczogbnVtYmVyIH1cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYWluV29yZHMgPSB0aGlzLm51bWJlclRvV29yZHMoaW50TnVtKSB8fCAnWmVybyc7XG5cbiAgICBpZiAobWV0YS5kZWNpbWFscyA9PT0gMCB8fCAhbWV0YS5zdWJVbml0KSB7XG4gICAgICByZXR1cm4gYCR7bWFpbldvcmRzfSAke21ldGEubWFpblVuaXR9IE9ubHlgO1xuICAgIH1cblxuICAgIGlmICghc3ViTnVtKSB7XG4gICAgICByZXR1cm4gYCR7bWFpbldvcmRzfSAke21ldGEubWFpblVuaXR9IE9ubHlgO1xuICAgIH1cblxuICAgIGNvbnN0IHN1YldvcmRzID0gdGhpcy5udW1iZXJUb1dvcmRzKHN1Yk51bSk7XG4gICAgcmV0dXJuIGAke21haW5Xb3Jkc30gJHttZXRhLm1haW5Vbml0fSBhbmQgJHtzdWJXb3Jkc30gJHttZXRhLnN1YlVuaXR9IE9ubHlgO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBOVU1CRVIg4oaSIFdPUkRTIChVcCB0byBDcm9yZXMpXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgbnVtYmVyVG9Xb3JkcyhudW06IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKG51bSA9PT0gMCkgcmV0dXJuICdaZXJvJztcblxuICAgIGNvbnN0IGEgPSBbXG4gICAgICAnJyxcbiAgICAgICdPbmUnLFxuICAgICAgJ1R3bycsXG4gICAgICAnVGhyZWUnLFxuICAgICAgJ0ZvdXInLFxuICAgICAgJ0ZpdmUnLFxuICAgICAgJ1NpeCcsXG4gICAgICAnU2V2ZW4nLFxuICAgICAgJ0VpZ2h0JyxcbiAgICAgICdOaW5lJyxcbiAgICAgICdUZW4nLFxuICAgICAgJ0VsZXZlbicsXG4gICAgICAnVHdlbHZlJyxcbiAgICAgICdUaGlydGVlbicsXG4gICAgICAnRm91cnRlZW4nLFxuICAgICAgJ0ZpZnRlZW4nLFxuICAgICAgJ1NpeHRlZW4nLFxuICAgICAgJ1NldmVudGVlbicsXG4gICAgICAnRWlnaHRlZW4nLFxuICAgICAgJ05pbmV0ZWVuJyxcbiAgICBdO1xuICAgIGNvbnN0IGIgPSBbXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJ1R3ZW50eScsXG4gICAgICAnVGhpcnR5JyxcbiAgICAgICdGb3J0eScsXG4gICAgICAnRmlmdHknLFxuICAgICAgJ1NpeHR5JyxcbiAgICAgICdTZXZlbnR5JyxcbiAgICAgICdFaWdodHknLFxuICAgICAgJ05pbmV0eScsXG4gICAgXTtcblxuICAgIGNvbnN0IHRvV29yZHMgPSAobjogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgICAgIGlmIChuIDwgMjApIHJldHVybiBhW25dO1xuICAgICAgaWYgKG4gPCAxMDApIHJldHVybiBgJHtiW01hdGguZmxvb3IobiAvIDEwKV19ICR7YVtuICUgMTBdfWAudHJpbSgpO1xuICAgICAgaWYgKG4gPCAxMDAwKVxuICAgICAgICByZXR1cm4gYCR7YVtNYXRoLmZsb29yKG4gLyAxMDApXX0gSHVuZHJlZCAke3RvV29yZHMobiAlIDEwMCl9YC50cmltKCk7XG4gICAgICBpZiAobiA8IDEwMDAwMClcbiAgICAgICAgcmV0dXJuIGAke3RvV29yZHMoTWF0aC5mbG9vcihuIC8gMTAwMCkpfSBUaG91c2FuZCAke3RvV29yZHMoXG4gICAgICAgICAgbiAlIDEwMDBcbiAgICAgICAgKX1gLnRyaW0oKTtcbiAgICAgIGlmIChuIDwgMTAwMDAwMDApXG4gICAgICAgIHJldHVybiBgJHt0b1dvcmRzKE1hdGguZmxvb3IobiAvIDEwMDAwMCkpfSBMYWtoICR7dG9Xb3JkcyhcbiAgICAgICAgICBuICUgMTAwMDAwXG4gICAgICAgICl9YC50cmltKCk7XG4gICAgICByZXR1cm4gYCR7dG9Xb3JkcyhNYXRoLmZsb29yKG4gLyAxMDAwMDAwMCkpfSBDcm9yZSAke3RvV29yZHMoXG4gICAgICAgIG4gJSAxMDAwMDAwMFxuICAgICAgKX1gLnRyaW0oKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRvV29yZHMobnVtKTtcbiAgfVxuXG4gIHVwZGF0ZUNoaWxkTG9naWNzKHF1ZXN0aW9uOiBhbnkpIHtcbiAgICBpZiAocXVlc3Rpb24uY2hpbGRMb2dpY3MgJiYgQXJyYXkuaXNBcnJheShxdWVzdGlvbi5jaGlsZExvZ2ljcykpIHtcbiAgICAgIHF1ZXN0aW9uLmNoaWxkTG9naWNzLmZvckVhY2goKGNoaWxkTG9naWM6IGFueSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbihcbiAgICAgICAgICAgIHF1ZXN0aW9uLmFuc3dlcixcbiAgICAgICAgICAgIGNoaWxkTG9naWMuY29uZGl0aW9uLFxuICAgICAgICAgICAgY2hpbGRMb2dpYy5pbnB1dFZhbHVlXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICBjaGlsZExvZ2ljLnNob3dMb2dpYyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2hpbGRMb2dpYy5zaG93TG9naWMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNsZWFyQW5zd2Vyc1JlY3Vyc2l2ZWx5KGNoaWxkTG9naWMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwYXJzZUN1cnJlbmN5VG9OdW1iZXIodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIDA7XG5cbiAgICAvLyBSZW1vdmUgY3VycmVuY3kgc3ltYm9sLCBjb21tYXMsIHNwYWNlc1xuICAgIGNvbnN0IG51bWVyaWNTdHJpbmcgPSB2YWx1ZVxuICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCR7dGhpcy5jdXJyZW5jeVN5bWJvbH1gLCAnZycpLCAnJykgLy8gcmVtb3ZlIHN5bWJvbFxuICAgICAgLnJlcGxhY2UoLywvZywgJycpIC8vIHJlbW92ZSB0aG91c2FuZCBzZXBhcmF0b3JzXG4gICAgICAudHJpbSgpO1xuXG4gICAgLy8gQ29udmVydCB0byBudW1iZXJcbiAgICBjb25zdCBudW0gPSBwYXJzZUZsb2F0KG51bWVyaWNTdHJpbmcpO1xuICAgIHJldHVybiBpc05hTihudW0pID8gMCA6IG51bTtcbiAgfVxuXG4gIGNsZWFyQW5zd2Vyc1JlY3Vyc2l2ZWx5KGxvZ2ljOiBhbnkpIHtcbiAgICBpZiAoIWxvZ2ljIHx8ICFsb2dpYy5yb3dzKSByZXR1cm47XG5cbiAgICBsb2dpYy5yb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XG4gICAgICByb3cuZ3JpZC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGl0ZW0uZWxlbWVudDtcblxuICAgICAgICBpZiAoaXRlbS5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nICYmIGVsZW1lbnQpIHtcbiAgICAgICAgICAvLyBDbGVhciBhbnN3ZXIgaWYgcHJlc2VudFxuICAgICAgICAgIGlmICgnYW5zd2VyJyBpbiBlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LmFuc3dlciA9ICcnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNsZWFyIGNoaWxkTG9naWNzIGlmIGFueVxuICAgICAgICAgIGlmIChlbGVtZW50LmNoaWxkTG9naWNzICYmIGVsZW1lbnQuY2hpbGRMb2dpY3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZWxlbWVudC5jaGlsZExvZ2ljcy5mb3JFYWNoKChjaGlsZExvZ2ljOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhckFuc3dlcnNSZWN1cnNpdmVseShjaGlsZExvZ2ljKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJiBlbGVtZW50ICYmIGVsZW1lbnQucm93cykge1xuICAgICAgICAgIC8vIFNVQkZPUk0gY29udGFpbnMgaXRzIG93biByb3dzIHN0cnVjdHVyZSBsaWtlIGEgZm9ybVxuICAgICAgICAgIHRoaXMuY2xlYXJBbnN3ZXJzUmVjdXJzaXZlbHkoeyByb3dzOiBlbGVtZW50LnJvd3MgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZXZhbHVhdGVDb25kaXRpb24oYW5zd2VyOiBhbnksIGNvbmRpdGlvbjogYW55LCBpbnB1dFZhbHVlOiBhbnkpIHtcbiAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuICAgICAgY2FzZSAnPic6XG4gICAgICAgIHJldHVybiBhbnN3ZXIgPiBOdW1iZXIoaW5wdXRWYWx1ZSk7XG4gICAgICBjYXNlICc8JzpcbiAgICAgICAgcmV0dXJuIGFuc3dlciA8IE51bWJlcihpbnB1dFZhbHVlKTtcbiAgICAgIGNhc2UgJz49JzpcbiAgICAgICAgcmV0dXJuIGFuc3dlciA+PSBOdW1iZXIoaW5wdXRWYWx1ZSk7XG4gICAgICBjYXNlICc8PSc6XG4gICAgICAgIHJldHVybiBhbnN3ZXIgPD0gTnVtYmVyKGlucHV0VmFsdWUpO1xuICAgICAgY2FzZSAnPSc6XG4gICAgICAgIHJldHVybiBhbnN3ZXIgPT0gaW5wdXRWYWx1ZTtcbiAgICAgIGNhc2UgJyE9JzpcbiAgICAgICAgcmV0dXJuIGFuc3dlciAhPSBpbnB1dFZhbHVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVZhbGlkYXRpb24oXG4gICAgaXNWYWxpZDogYm9vbGVhbixcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCdcbiAgKSB7XG4gICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuY2xlYXJJbnZhbGlkKHRoaXMuYnVpbGRFbGVtZW50SWQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2V0SW52YWxpZCh0aGlzLnF1ZXN0aW9uLmlkLCBtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRWxlbWVudElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5MaW5lIHx8IHRoaXMuaW5DYXJkXG4gICAgICA/IGAke3RoaXMuc3VibWlzc2lvbkluZGV4fS0ke3RoaXMucXVlc3Rpb24uaWR9YFxuICAgICAgOiBgJHt0aGlzLnF1ZXN0aW9uLmlkfWA7XG4gIH1cblxuICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKHRoaXMuYnVpbGRFbGVtZW50SWQoKSk7XG4gIH1cblxuICBnZXQgZXJyb3JNZXNzYWdlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldEVycm9yTWVzc2FnZSh0aGlzLmJ1aWxkRWxlbWVudElkKCkpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmluTGluZSB8fCB0aGlzLmluQ2FyZCkge1xuICAgICAgdGhpcy5lbGVtZW50SWQgPSBgcXVlc3Rpb24tJHt0aGlzLnN1Ym1pc3Npb25JbmRleH0tJHt0aGlzLnF1ZXN0aW9uLmlkfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWxlbWVudElkID0gYHF1ZXN0aW9uLSR7dGhpcy5xdWVzdGlvbi5pZH1gO1xuICAgIH1cblxuICAgIHRoaXMudHJhY2tlci5yZWdpc3RlckVsZW1lbnQodGhpcy5lbGVtZW50SWQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZWxlbWVudElkKSB7XG4gICAgICB0aGlzLnRyYWNrZXIudW5yZWdpc3RlckVsZW1lbnQodGhpcy5lbGVtZW50SWQpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBbbmdDbGFzc109XCJ7ICdtYi00JzogIWluTGluZSB9XCJcbiAgY2xhc3M9XCJweC0zXCJcbiAgW2lkXT1cIihpbkxpbmUgfHwgaW5DYXJkKSA/ICdxdWVzdGlvbi0nICsgc3VibWlzc2lvbkluZGV4ICsgJy0nICsgcXVlc3Rpb24uaWQgOiAncXVlc3Rpb24tJyArIHF1ZXN0aW9uLmlkXCJcbiAgW2F0dHIubmFtZV09XCJxdWVzdGlvbi50ZXN0RWxlbWVudE5hbWVcIlxuPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlciBtYi0yXCIgKm5nSWY9XCIhaW5MaW5lXCI+XG4gICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uTnVtYmVyXCIgW2lubmVySFRNTF09XCJxdWVzdGlvbi5xdWVzdGlvbk51bWJlclwiPjwvZGl2PlxuICAgIDxzcGFuICpuZ0lmPVwicXVlc3Rpb24ucXVlc3Rpb25OdW1iZXJcIiBjbGFzcz1cInNwYWNlXCI+PC9zcGFuPlxuICAgIDxsYWJlbD57eyBxdWVzdGlvbi5xdWVzdGlvbiB9fTwvbGFiZWxcbiAgICA+Jm5ic3A7XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwicXVlc3Rpb24/LnJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInN2Zy13cmFwcGVyIG1iLTIgaGludEljb25cIlxuICAgICAgW2F0dHIuZGF0YS10aXRsZV09XCJoaW50XCJcbiAgICAgICpuZ0lmPVwiaGludFwiXG4gICAgPlxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cImhpbnRTdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDMwIDMwXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xNSAyNi4yNVYyNi4yNUM4Ljc4NjI1IDI2LjI1IDMuNzUgMjEuMjEzOCAzLjc1IDE1VjE1QzMuNzUgOC43ODYyNSA4Ljc4NjI1IDMuNzUgMTUgMy43NVYzLjc1QzIxLjIxMzggMy43NSAyNi4yNSA4Ljc4NjI1IDI2LjI1IDE1VjE1QzI2LjI1IDIxLjIxMzggMjEuMjEzOCAyNi4yNSAxNSAyNi4yNVpcIlxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTUgMTYuNTYyM1YxNi4yNDk4QzE1IDE1LjIyODUgMTUuNjMxMiAxNC42NzQ4IDE2LjI2MzcgMTQuMjQ5OEMxNi44ODEyIDEzLjgzMzUgMTcuNSAxMy4yOTEgMTcuNSAxMi4yOTFDMTcuNSAxMC45MDk4IDE2LjM4MTMgOS43OTEwMiAxNSA5Ljc5MTAyQzEzLjYxODcgOS43OTEwMiAxMi41IDEwLjkwOTggMTIuNSAxMi4yOTFcIlxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTQuOTk4OCAyMEMxNC44MjYzIDIwIDE0LjY4NjMgMjAuMTQgMTQuNjg3NSAyMC4zMTI1QzE0LjY4NzUgMjAuNDg1IDE0LjgyNzUgMjAuNjI1IDE1IDIwLjYyNUMxNS4xNzI1IDIwLjYyNSAxNS4zMTI1IDIwLjQ4NSAxNS4zMTI1IDIwLjMxMjVDMTUuMzEyNSAyMC4xNCAxNS4xNzI1IDIwIDE0Ljk5ODggMjBcIlxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjdXJyZW5jeS1pbnB1dCBpbnNpZGVcIj5cbiAgICA8c3BhbiAqbmdJZj1cInN5bWJvbFBvc2l0aW9uID09PSAnQmVmb3JlIHRoZSB2YWx1ZSdcIiBjbGFzcz1cImN1cnJlbmN5LXN5bWJvbCBsZWZ0XCI+XG4gICAgICB7eyBjdXJyZW5jeVN5bWJvbCB9fVxuICAgIDwvc3Bhbj5cblxuICAgIDxpbnB1dFxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBjbGFzcz1cImZvcm0tY29udHJvbCBtYi0yIGhlaWdodFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbY2xhc3MuaGlkZS1zcGluLWJ1dHRvbnNdPVwidHJ1ZVwiXG4gICAgKGJsdXIpPVwidmFsaWRhdGVOdW1iZXIoKVwiXG4gICAgWyhuZ01vZGVsKV09XCJlbnRlcmVkQW1vdW50XCJcbiAgICBbY2xhc3MuaW52YWxpZF09XCJ2YWxpZGF0aW9uRmFpbGVkXCJcbiAgICBbY2xhc3MuaW52YWxpZC1xdWVzdGlvbl09XCJpc0ludmFsaWQgJiYgKCFpbkxpbmUgfHwgIWVudGVyZWRBbW91bnQpXCJcbiAgICAoaW5wdXQpPVwidmFsaWRhdGVJbnB1dCgkZXZlbnQpXCJcbiAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICBbYXR0ci5tYXhdPVwibWF4XCJcbiAgICAod2hlZWwpPVwicHJldmVudE51bWJlclNjcm9sbCgkZXZlbnQpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUVkaXRcIlxuICAgIC8+XG5cbiAgICA8c3BhbiAqbmdJZj1cInN5bWJvbFBvc2l0aW9uID09PSAnQWZ0ZXIgdGhlIHZhbHVlJ1wiIGNsYXNzPVwiY3VycmVuY3ktc3ltYm9sIHJpZ2h0XCI+XG4gICAgICAgIHt7IGN1cnJlbmN5U3ltYm9sIH19XG4gICAgPC9zcGFuPlxuXG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2hvd0Ftb3VudEluV29yZHMgJiYgYW1vdW50SW5Xb3Jkc1RleHRcIiBjbGFzcz1cImFtb3VudC1pbi13b3Jkc1wiPlxuICAgIHt7IGFtb3VudEluV29yZHNUZXh0IH19XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaXNJbnZhbGlkICYmICghaW5MaW5lIHx8ICFlbnRlcmVkQW1vdW50KVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgIHt7IGVycm9yTWVzc2FnZSB9fVxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInZhbGlkYXRpb25GYWlsZWQgJiYgIWlzSW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgZXJyb3ItbWVzc2FnZVwiPlxuICAgIHt7IHZhbGlkYXRpb25NZXNzYWdlIH19XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|