tango-app-ui-manage-settings 3.7.3 → 3.7.4
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/esm2022/lib/components/configurations/zone-configuration/create-single-zone/create-single-zone.component.mjs +3 -3
- package/esm2022/lib/components/configurations/zone-configuration/create-single-zone-group/create-single-zone-group.component.mjs +83 -7
- package/fesm2022/tango-app-ui-manage-settings.mjs +84 -8
- package/fesm2022/tango-app-ui-manage-settings.mjs.map +1 -1
- package/lib/components/activity-logs/activity-logs.component.d.ts +1 -1
- package/lib/components/configurations/zone-configuration/create-single-zone-group/create-single-zone-group.component.d.ts +19 -3
- package/lib/components/contact-directory/contact-directory.component.d.ts +1 -1
- package/lib/components/payments-subscription/billing/billing-group-form/billing-group-form.component.d.ts +1 -1
- package/lib/components/payments-subscription/billing/billing.component.d.ts +1 -1
- package/lib/components/payments-subscription/invoice-credits/invoice-credits.component.d.ts +2 -2
- package/lib/components/tango-manage-settings/tango-manage-settings.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -236,10 +236,10 @@ export class CreateSingleZoneComponent {
|
|
|
236
236
|
return { rgbColor, rgbBorderColor };
|
|
237
237
|
}
|
|
238
238
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateSingleZoneComponent, deps: [{ token: i1.FormBuilder }, { token: i2.NgbActiveModal }, { token: i3.ClientApiService }, { token: i4.ToastService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
239
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateSingleZoneComponent, selector: "lib-create-single-zone", ngImport: i0, template: "<div class=\"create-zone-modal\">\r\n <form [formGroup]=\"createZoneForm\" autocomplete=\"off\">\r\n <!-- Header -->\r\n <div class=\"modal-header-custom mb-4\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"header-icon me-3\">\r\n <svg *ngIf=\"!isEditMode\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"#00A3FF\" />\r\n <path d=\"M12 8V16M8 12H16\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"isEditMode\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\"/>\r\n <path d=\"M27 20.0002H20C19.4696 20.0002 18.9609 20.2109 18.5858 20.586C18.2107 20.9611 18 21.4698 18 22.0002V36.0002C18 36.5307 18.2107 37.0394 18.5858 37.4144C18.9609 37.7895 19.4696 38.0002 20 38.0002H34C34.5304 38.0002 35.0391 37.7895 35.4142 37.4144C35.7893 37.0394 36 36.5307 36 36.0002V29.0002M34.5 18.5002C34.8978 18.1024 35.4374 17.8789 36 17.8789C36.5626 17.8789 37.1022 18.1024 37.5 18.5002C37.8978 18.8981 38.1213 19.4376 38.1213 20.0002C38.1213 20.5628 37.8978 21.1024 37.5 21.5002L28 31.0002L24 32.0002L25 28.0002L34.5 18.5002Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <h4 class=\"modal-title mb-0\">{{ isEditMode ? 'Edit' : 'Create' }}</h4>\r\n </div>\r\n </div>\r\n\r\n <!-- Zone Name Input -->\r\n <div class=\"form-group mb-4\">\r\n <!-- <span class=\"text-danger\">*</span> -->\r\n <label for=\"zoneName\" class=\"form-label\">Zone Name</label>\r\n <input \r\n type=\"text\" \r\n class=\"form-control\" \r\n id=\"zoneName\"\r\n formControlName=\"zoneName\"\r\n placeholder=\"Enter zone name\"\r\n autocomplete=\"off\"\r\n [class.is-invalid]=\"createZoneForm.get('zoneName')?.invalid && createZoneForm.get('zoneName')?.touched && !createZoneForm.get('zoneName')?.pristine\">\r\n <div class=\"invalid-feedback\" *ngIf=\"createZoneForm.get('zoneName')?.invalid && createZoneForm.get('zoneName')?.touched && !createZoneForm.get('zoneName')?.pristine\">\r\n <span *ngIf=\"createZoneForm.get('zoneName')?.errors?.['required']\">Zone name is required</span>\r\n <span *ngIf=\"createZoneForm.get('zoneName')?.errors?.['minlength']\">Zone name must be at least 1 character</span>\r\n <span *ngIf=\"createZoneForm.get('zoneName')?.errors?.['pattern']\">\r\n
|
|
239
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateSingleZoneComponent, selector: "lib-create-single-zone", ngImport: i0, template: "<div class=\"create-zone-modal\">\r\n <form [formGroup]=\"createZoneForm\" autocomplete=\"off\">\r\n <!-- Header -->\r\n <div class=\"modal-header-custom mb-4\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"header-icon me-3\">\r\n <svg *ngIf=\"!isEditMode\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"#00A3FF\" />\r\n <path d=\"M12 8V16M8 12H16\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"isEditMode\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\"/>\r\n <path d=\"M27 20.0002H20C19.4696 20.0002 18.9609 20.2109 18.5858 20.586C18.2107 20.9611 18 21.4698 18 22.0002V36.0002C18 36.5307 18.2107 37.0394 18.5858 37.4144C18.9609 37.7895 19.4696 38.0002 20 38.0002H34C34.5304 38.0002 35.0391 37.7895 35.4142 37.4144C35.7893 37.0394 36 36.5307 36 36.0002V29.0002M34.5 18.5002C34.8978 18.1024 35.4374 17.8789 36 17.8789C36.5626 17.8789 37.1022 18.1024 37.5 18.5002C37.8978 18.8981 38.1213 19.4376 38.1213 20.0002C38.1213 20.5628 37.8978 21.1024 37.5 21.5002L28 31.0002L24 32.0002L25 28.0002L34.5 18.5002Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <h4 class=\"modal-title mb-0\">{{ isEditMode ? 'Edit' : 'Create' }}</h4>\r\n </div>\r\n </div>\r\n\r\n <!-- Zone Name Input -->\r\n <div class=\"form-group mb-4\">\r\n <!-- <span class=\"text-danger\">*</span> -->\r\n <label for=\"zoneName\" class=\"form-label\">Zone Name</label>\r\n <input \r\n type=\"text\" \r\n class=\"form-control\" \r\n id=\"zoneName\"\r\n formControlName=\"zoneName\"\r\n placeholder=\"Enter zone name\"\r\n autocomplete=\"off\"\r\n [class.is-invalid]=\"createZoneForm.get('zoneName')?.invalid && createZoneForm.get('zoneName')?.touched && !createZoneForm.get('zoneName')?.pristine\">\r\n <div class=\"invalid-feedback\" *ngIf=\"createZoneForm.get('zoneName')?.invalid && createZoneForm.get('zoneName')?.touched && !createZoneForm.get('zoneName')?.pristine\">\r\n <span *ngIf=\"createZoneForm.get('zoneName')?.errors?.['required']\">Zone name is required</span>\r\n <span *ngIf=\"createZoneForm.get('zoneName')?.errors?.['minlength']\">Zone name must be at least 1 character</span>\r\n <span *ngIf=\"createZoneForm.get('zoneName')?.errors?.['pattern']\">\r\n Special characters are not allowed\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Add to Group Dropdown -->\r\n <div class=\"form-group mb-4\">\r\n <label for=\"selectedGroup\" class=\"form-label\">Add to Group (Optional)</label>\r\n <select \r\n class=\"form-select\" \r\n id=\"selectedGroup\"\r\n formControlName=\"selectedGroup\">\r\n <option value=\"\">Select</option>\r\n <option value=\"addNew\" *ngIf=\"!isEditMode\">+ Add New</option>\r\n <option *ngFor=\"let group of groupList\" [value]=\"group.groupName\">\r\n {{ group.groupName }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <!-- Enter Group Name Input (shown when Add New is selected) -->\r\n <div class=\"form-group mb-4\" *ngIf=\"showGroupNameInput\">\r\n <!-- <span class=\"text-danger\">*</span> -->\r\n <label for=\"groupName\" class=\"form-label\">Enter Group Name</label>\r\n <input \r\n type=\"text\" \r\n class=\"form-control\" \r\n id=\"groupName\"\r\n formControlName=\"groupName\"\r\n placeholder=\"Enter group name\"\r\n autocomplete=\"off\"\r\n [class.is-invalid]=\"createZoneForm.get('groupName')?.invalid && createZoneForm.get('groupName')?.touched && !createZoneForm.get('groupName')?.pristine\">\r\n <div class=\"invalid-feedback\" *ngIf=\"createZoneForm.get('groupName')?.invalid && createZoneForm.get('groupName')?.touched && !createZoneForm.get('groupName')?.pristine\">\r\n <span *ngIf=\"createZoneForm.get('groupName')?.errors?.['required']\">Group name is required</span>\r\n <span *ngIf=\"createZoneForm.get('groupName')?.errors?.['minlength']\">Group name must be at least 3 characters</span>\r\n <span *ngIf=\"createZoneForm.get('groupName')?.errors?.['pattern']\">\r\n Special characters are not allowed\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Action Buttons -->\r\n <div class=\"modal-footer-custom mt-4\">\r\n <div class=\"d-flex gap-3 justify-content-end\">\r\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button \r\n type=\"button\" \r\n class=\"btn btn-primary\" \r\n (click)=\"onSave()\"\r\n [disabled]=\"createZoneForm.invalid\">\r\n {{ isEditMode ? 'Update' : 'Create' }}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n</div>\r\n\r\n", styles: [".create-zone-modal{padding:24px}.modal-header-custom .header-icon{width:40px;height:40px;border-radius:50%;background-color:#daf1ff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.modal-header-custom .modal-title{font-size:18px;font-weight:600;color:#101828;line-height:28px}.form-group .form-label{font-size:14px;font-weight:500;color:#344054;margin-bottom:8px;display:block}.form-group .form-label .text-danger{color:#f04438;margin-left:2px}.form-group .form-control,.form-group .form-select{border:1px solid #D0D5DD;border-radius:8px;padding:10px 14px;font-size:14px;color:#344054;height:44px;transition:all .2s ease}.form-group .form-control:focus,.form-group .form-select:focus{border-color:#009bf3;box-shadow:0 0 0 3px #009bf31a;outline:none}.form-group .form-control.is-invalid,.form-group .form-select.is-invalid{border-color:#f04438}.form-group .form-control.is-invalid:focus,.form-group .form-select.is-invalid:focus{border-color:#f04438;box-shadow:0 0 0 3px #f044381a}.form-group .form-control::placeholder,.form-group .form-select::placeholder{color:#98a2b3}.form-group .form-select{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\");background-repeat:no-repeat;background-position:right 12px center;background-size:16px 12px;padding-right:40px;appearance:none;cursor:pointer}.form-group .invalid-feedback{display:block;width:100%;margin-top:6px;font-size:12px;color:#f04438}.modal-footer-custom{padding-top:16px;border-top:1px solid #EAECF0}.modal-footer-custom .btn{min-width:100px;height:44px;font-size:14px;font-weight:500;border-radius:8px;padding:10px 18px;transition:all .2s ease}.modal-footer-custom .btn.btn-outline{border:1px solid #D0D5DD;background-color:#fff;color:#344054}.modal-footer-custom .btn.btn-outline:hover{background-color:#f9fafb;border-color:#d0d5dd}.modal-footer-custom .btn.btn-primary{background-color:#009bf3;border-color:#009bf3;color:#fff}.modal-footer-custom .btn.btn-primary:hover:not(:disabled){background-color:#0085d1;border-color:#0085d1}.modal-footer-custom .btn.btn-primary:disabled{opacity:.6;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
240
240
|
}
|
|
241
241
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateSingleZoneComponent, decorators: [{
|
|
242
242
|
type: Component,
|
|
243
|
-
args: [{ selector: 'lib-create-single-zone', template: "<div class=\"create-zone-modal\">\r\n <form [formGroup]=\"createZoneForm\" autocomplete=\"off\">\r\n <!-- Header -->\r\n <div class=\"modal-header-custom mb-4\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"header-icon me-3\">\r\n <svg *ngIf=\"!isEditMode\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"#00A3FF\" />\r\n <path d=\"M12 8V16M8 12H16\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"isEditMode\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\"/>\r\n <path d=\"M27 20.0002H20C19.4696 20.0002 18.9609 20.2109 18.5858 20.586C18.2107 20.9611 18 21.4698 18 22.0002V36.0002C18 36.5307 18.2107 37.0394 18.5858 37.4144C18.9609 37.7895 19.4696 38.0002 20 38.0002H34C34.5304 38.0002 35.0391 37.7895 35.4142 37.4144C35.7893 37.0394 36 36.5307 36 36.0002V29.0002M34.5 18.5002C34.8978 18.1024 35.4374 17.8789 36 17.8789C36.5626 17.8789 37.1022 18.1024 37.5 18.5002C37.8978 18.8981 38.1213 19.4376 38.1213 20.0002C38.1213 20.5628 37.8978 21.1024 37.5 21.5002L28 31.0002L24 32.0002L25 28.0002L34.5 18.5002Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <h4 class=\"modal-title mb-0\">{{ isEditMode ? 'Edit' : 'Create' }}</h4>\r\n </div>\r\n </div>\r\n\r\n <!-- Zone Name Input -->\r\n <div class=\"form-group mb-4\">\r\n <!-- <span class=\"text-danger\">*</span> -->\r\n <label for=\"zoneName\" class=\"form-label\">Zone Name</label>\r\n <input \r\n type=\"text\" \r\n class=\"form-control\" \r\n id=\"zoneName\"\r\n formControlName=\"zoneName\"\r\n placeholder=\"Enter zone name\"\r\n autocomplete=\"off\"\r\n [class.is-invalid]=\"createZoneForm.get('zoneName')?.invalid && createZoneForm.get('zoneName')?.touched && !createZoneForm.get('zoneName')?.pristine\">\r\n <div class=\"invalid-feedback\" *ngIf=\"createZoneForm.get('zoneName')?.invalid && createZoneForm.get('zoneName')?.touched && !createZoneForm.get('zoneName')?.pristine\">\r\n <span *ngIf=\"createZoneForm.get('zoneName')?.errors?.['required']\">Zone name is required</span>\r\n <span *ngIf=\"createZoneForm.get('zoneName')?.errors?.['minlength']\">Zone name must be at least 1 character</span>\r\n <span *ngIf=\"createZoneForm.get('zoneName')?.errors?.['pattern']\">\r\n
|
|
243
|
+
args: [{ selector: 'lib-create-single-zone', template: "<div class=\"create-zone-modal\">\r\n <form [formGroup]=\"createZoneForm\" autocomplete=\"off\">\r\n <!-- Header -->\r\n <div class=\"modal-header-custom mb-4\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"header-icon me-3\">\r\n <svg *ngIf=\"!isEditMode\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"#00A3FF\" />\r\n <path d=\"M12 8V16M8 12H16\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"isEditMode\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\"/>\r\n <path d=\"M27 20.0002H20C19.4696 20.0002 18.9609 20.2109 18.5858 20.586C18.2107 20.9611 18 21.4698 18 22.0002V36.0002C18 36.5307 18.2107 37.0394 18.5858 37.4144C18.9609 37.7895 19.4696 38.0002 20 38.0002H34C34.5304 38.0002 35.0391 37.7895 35.4142 37.4144C35.7893 37.0394 36 36.5307 36 36.0002V29.0002M34.5 18.5002C34.8978 18.1024 35.4374 17.8789 36 17.8789C36.5626 17.8789 37.1022 18.1024 37.5 18.5002C37.8978 18.8981 38.1213 19.4376 38.1213 20.0002C38.1213 20.5628 37.8978 21.1024 37.5 21.5002L28 31.0002L24 32.0002L25 28.0002L34.5 18.5002Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <h4 class=\"modal-title mb-0\">{{ isEditMode ? 'Edit' : 'Create' }}</h4>\r\n </div>\r\n </div>\r\n\r\n <!-- Zone Name Input -->\r\n <div class=\"form-group mb-4\">\r\n <!-- <span class=\"text-danger\">*</span> -->\r\n <label for=\"zoneName\" class=\"form-label\">Zone Name</label>\r\n <input \r\n type=\"text\" \r\n class=\"form-control\" \r\n id=\"zoneName\"\r\n formControlName=\"zoneName\"\r\n placeholder=\"Enter zone name\"\r\n autocomplete=\"off\"\r\n [class.is-invalid]=\"createZoneForm.get('zoneName')?.invalid && createZoneForm.get('zoneName')?.touched && !createZoneForm.get('zoneName')?.pristine\">\r\n <div class=\"invalid-feedback\" *ngIf=\"createZoneForm.get('zoneName')?.invalid && createZoneForm.get('zoneName')?.touched && !createZoneForm.get('zoneName')?.pristine\">\r\n <span *ngIf=\"createZoneForm.get('zoneName')?.errors?.['required']\">Zone name is required</span>\r\n <span *ngIf=\"createZoneForm.get('zoneName')?.errors?.['minlength']\">Zone name must be at least 1 character</span>\r\n <span *ngIf=\"createZoneForm.get('zoneName')?.errors?.['pattern']\">\r\n Special characters are not allowed\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Add to Group Dropdown -->\r\n <div class=\"form-group mb-4\">\r\n <label for=\"selectedGroup\" class=\"form-label\">Add to Group (Optional)</label>\r\n <select \r\n class=\"form-select\" \r\n id=\"selectedGroup\"\r\n formControlName=\"selectedGroup\">\r\n <option value=\"\">Select</option>\r\n <option value=\"addNew\" *ngIf=\"!isEditMode\">+ Add New</option>\r\n <option *ngFor=\"let group of groupList\" [value]=\"group.groupName\">\r\n {{ group.groupName }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <!-- Enter Group Name Input (shown when Add New is selected) -->\r\n <div class=\"form-group mb-4\" *ngIf=\"showGroupNameInput\">\r\n <!-- <span class=\"text-danger\">*</span> -->\r\n <label for=\"groupName\" class=\"form-label\">Enter Group Name</label>\r\n <input \r\n type=\"text\" \r\n class=\"form-control\" \r\n id=\"groupName\"\r\n formControlName=\"groupName\"\r\n placeholder=\"Enter group name\"\r\n autocomplete=\"off\"\r\n [class.is-invalid]=\"createZoneForm.get('groupName')?.invalid && createZoneForm.get('groupName')?.touched && !createZoneForm.get('groupName')?.pristine\">\r\n <div class=\"invalid-feedback\" *ngIf=\"createZoneForm.get('groupName')?.invalid && createZoneForm.get('groupName')?.touched && !createZoneForm.get('groupName')?.pristine\">\r\n <span *ngIf=\"createZoneForm.get('groupName')?.errors?.['required']\">Group name is required</span>\r\n <span *ngIf=\"createZoneForm.get('groupName')?.errors?.['minlength']\">Group name must be at least 3 characters</span>\r\n <span *ngIf=\"createZoneForm.get('groupName')?.errors?.['pattern']\">\r\n Special characters are not allowed\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Action Buttons -->\r\n <div class=\"modal-footer-custom mt-4\">\r\n <div class=\"d-flex gap-3 justify-content-end\">\r\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button \r\n type=\"button\" \r\n class=\"btn btn-primary\" \r\n (click)=\"onSave()\"\r\n [disabled]=\"createZoneForm.invalid\">\r\n {{ isEditMode ? 'Update' : 'Create' }}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n</div>\r\n\r\n", styles: [".create-zone-modal{padding:24px}.modal-header-custom .header-icon{width:40px;height:40px;border-radius:50%;background-color:#daf1ff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.modal-header-custom .modal-title{font-size:18px;font-weight:600;color:#101828;line-height:28px}.form-group .form-label{font-size:14px;font-weight:500;color:#344054;margin-bottom:8px;display:block}.form-group .form-label .text-danger{color:#f04438;margin-left:2px}.form-group .form-control,.form-group .form-select{border:1px solid #D0D5DD;border-radius:8px;padding:10px 14px;font-size:14px;color:#344054;height:44px;transition:all .2s ease}.form-group .form-control:focus,.form-group .form-select:focus{border-color:#009bf3;box-shadow:0 0 0 3px #009bf31a;outline:none}.form-group .form-control.is-invalid,.form-group .form-select.is-invalid{border-color:#f04438}.form-group .form-control.is-invalid:focus,.form-group .form-select.is-invalid:focus{border-color:#f04438;box-shadow:0 0 0 3px #f044381a}.form-group .form-control::placeholder,.form-group .form-select::placeholder{color:#98a2b3}.form-group .form-select{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\");background-repeat:no-repeat;background-position:right 12px center;background-size:16px 12px;padding-right:40px;appearance:none;cursor:pointer}.form-group .invalid-feedback{display:block;width:100%;margin-top:6px;font-size:12px;color:#f04438}.modal-footer-custom{padding-top:16px;border-top:1px solid #EAECF0}.modal-footer-custom .btn{min-width:100px;height:44px;font-size:14px;font-weight:500;border-radius:8px;padding:10px 18px;transition:all .2s ease}.modal-footer-custom .btn.btn-outline{border:1px solid #D0D5DD;background-color:#fff;color:#344054}.modal-footer-custom .btn.btn-outline:hover{background-color:#f9fafb;border-color:#d0d5dd}.modal-footer-custom .btn.btn-primary{background-color:#009bf3;border-color:#009bf3;color:#fff}.modal-footer-custom .btn.btn-primary:hover:not(:disabled){background-color:#0085d1;border-color:#0085d1}.modal-footer-custom .btn.btn-primary:disabled{opacity:.6;cursor:not-allowed}\n"] }]
|
|
244
244
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.NgbActiveModal }, { type: i3.ClientApiService }, { type: i4.ToastService }, { type: i0.ChangeDetectorRef }] });
|
|
245
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXNpbmdsZS16b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvY29uZmlndXJhdGlvbnMvem9uZS1jb25maWd1cmF0aW9uL2NyZWF0ZS1zaW5nbGUtem9uZS9jcmVhdGUtc2luZ2xlLXpvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXNldHRpbmdzL3NyYy9saWIvY29tcG9uZW50cy9jb25maWd1cmF0aW9ucy96b25lLWNvbmZpZ3VyYXRpb24vY3JlYXRlLXNpbmdsZS16b25lL2NyZWF0ZS1zaW5nbGUtem9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVExQyxNQUFNLE9BQU8seUJBQXlCO0lBVzFCO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFkVixjQUFjLENBQVk7SUFDMUIsZUFBZSxHQUFVLEVBQUUsQ0FBQztJQUM1QixTQUFTLEdBQVUsRUFBRSxDQUFDO0lBQ3RCLGtCQUFrQixHQUFZLEtBQUssQ0FBQztJQUNwQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFDNUIsUUFBUSxHQUFRLElBQUksQ0FBQztJQUNKLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTFDLFlBQ1UsRUFBZSxFQUNoQixXQUEyQixFQUMxQixnQkFBa0MsRUFDbEMsWUFBMEIsRUFDMUIsR0FBc0I7UUFKdEIs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R0FBRyxRQUFRLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxRQUFRLENBQUM7UUFDeEQsTUFBTSxjQUFjLEdBQUcsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ3JHLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUE7SUFDckMsQ0FBQzt3R0FyUFUseUJBQXlCOzRGQUF6Qix5QkFBeUIsOERDWnRDLDZ2S0E2RkE7OzRGRGpGYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IENsaWVudEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jcmVhdGUtc2luZ2xlLXpvbmUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtc2luZ2xlLXpvbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jcmVhdGUtc2luZ2xlLXpvbmUuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVTaW5nbGVab25lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGNyZWF0ZVpvbmVGb3JtOiBGb3JtR3JvdXA7XHJcbiAgem9uZVRhZ2dpbmdMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGdyb3VwTGlzdDogYW55W10gPSBbXTtcclxuICBzaG93R3JvdXBOYW1lSW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjbGllbnRJZDogc3RyaW5nID0gJyc7XHJcbiAgaXNFZGl0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHpvbmVEYXRhOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCxcclxuICAgIHByaXZhdGUgY2xpZW50QXBpU2VydmljZTogQ2xpZW50QXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIHRoaXMuY3JlYXRlWm9uZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgem9uZU5hbWU6IFsnJywgW1xyXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksXHJcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKD8hXFxzKiQpW2EtekEtWjAtOVxcc1xcL10qJC8pXHJcbiAgICAgIF1dLFxyXG4gICAgICBzZWxlY3RlZEdyb3VwOiBbJyddLFxyXG4gICAgICBncm91cE5hbWU6IFsnJywgW1xyXG4gICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxyXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybigvXig/IVxccyokKVthLXpBLVowLTlcXHNcXC9dKiQvKVxyXG4gICAgICBdXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIEluaXRpYWxpemUgLSBncm91cCBuYW1lIGZpZWxkIHNob3VsZCBiZSBoaWRkZW4gaW5pdGlhbGx5XHJcbiAgICB0aGlzLnNob3dHcm91cE5hbWVJbnB1dCA9IGZhbHNlO1xyXG4gICAgLy8gRW5zdXJlIGZvcm0gY29udHJvbHMgYXJlIG1hcmtlZCBhcyB1bnRvdWNoZWQgd2hlbiBtb2RhbCBvcGVuc1xyXG4gICAgdGhpcy5jcmVhdGVab25lRm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIHRoaXMuY3JlYXRlWm9uZUZvcm0uZ2V0KCd6b25lTmFtZScpPy5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIHRoaXMuY3JlYXRlWm9uZUZvcm0uZ2V0KCdzZWxlY3RlZEdyb3VwJyk/Lm1hcmtBc1VudG91Y2hlZCgpO1xyXG4gICAgdGhpcy5jcmVhdGVab25lRm9ybS5nZXQoJ2dyb3VwTmFtZScpPy5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIC8vIEdldCBjbGllbnQgSURcclxuICAgIHRoaXMuY2xpZW50QXBpU2VydmljZS5jbGllbnREYXRhLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgaWYgKGUpIHtcclxuICAgICAgICB0aGlzLmNsaWVudElkID0gZS5jbGllbnRJZDtcclxuICAgICAgICB0aGlzLmxvYWRHcm91cHMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIGdyb3VwIHNlbGVjdGlvbiBjaGFuZ2VzXHJcbiAgICB0aGlzLmNyZWF0ZVpvbmVGb3JtLmdldCgnc2VsZWN0ZWRHcm91cCcpPy52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICApLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgLy8gXCJhZGROZXdcIiBpcyBhIGRlZmF1bHQgb3B0aW9uLCBub3QgZnJvbSBncm91cExpc3RcclxuICAgICAgY29uc3QgZ3JvdXBOYW1lQ3RybCA9IHRoaXMuY3JlYXRlWm9uZUZvcm0uZ2V0KCdncm91cE5hbWUnKTtcclxuXHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ2FkZE5ldycpIHtcclxuICAgICAgICB0aGlzLnNob3dHcm91cE5hbWVJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgZ3JvdXBOYW1lQ3RybD8uc2V0VmFsaWRhdG9ycyhbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL14oPyFcXHMqJClbYS16QS1aMC05XFxzXFwvXSokLylcclxuICAgICAgICBdKTtcclxuICAgICAgICBncm91cE5hbWVDdHJsPy5yZXNldCgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd0dyb3VwTmFtZUlucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgZ3JvdXBOYW1lQ3RybD8uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgZ3JvdXBOYW1lQ3RybD8ucmVzZXQoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgICBncm91cE5hbWVDdHJsPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBNZXRob2QgdG8gaW5pdGlhbGl6ZSBjb21wb25lbnQgaW4gZWRpdCBtb2RlXHJcbiAgc2V0Wm9uZURhdGFGb3JFZGl0KHpvbmU6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ3NldFpvbmVEYXRhRm9yRWRpdCA6Jywgem9uZSk7XHJcbiAgICB0aGlzLmlzRWRpdE1vZGUgPSB0cnVlO1xyXG4gICAgdGhpcy56b25lRGF0YSA9IHpvbmU7XHJcbiAgICAvLyBFbnN1cmUgZm9ybSBjb250cm9scyBhcmUgbWFya2VkIGFzIHVudG91Y2hlZCBiZWZvcmUgc2V0dGluZyB2YWx1ZXNcclxuICAgIHRoaXMuY3JlYXRlWm9uZUZvcm0ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICB0aGlzLmNyZWF0ZVpvbmVGb3JtLmdldCgnem9uZU5hbWUnKT8ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICB0aGlzLmNyZWF0ZVpvbmVGb3JtLmdldCgnc2VsZWN0ZWRHcm91cCcpPy5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIHRoaXMuY3JlYXRlWm9uZUZvcm0uZ2V0KCdncm91cE5hbWUnKT8ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICBjb25zdCBncm91cE5hbWVDdHJsID0gdGhpcy5jcmVhdGVab25lRm9ybS5nZXQoJ2dyb3VwTmFtZScpO1xyXG5cclxuICAgIC8vIFJlc2V0IGZvcm0gY2xlYW5seVxyXG4gICAgdGhpcy5jcmVhdGVab25lRm9ybS5yZXNldCh7XHJcbiAgICAgIHpvbmVOYW1lOiB6b25lLnRhZ05hbWUgfHwgJycsXHJcbiAgICAgIHNlbGVjdGVkR3JvdXA6IHpvbmUuZ3JvdXBOYW1lIHx8ICcnLFxyXG4gICAgICBncm91cE5hbWU6ICcnXHJcbiAgICB9LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG4gICAgLy8gRWRpdCBtb2RlIOKGkiBoaWRlIGdyb3VwIG5hbWUgaW5wdXQgaW5pdGlhbGx5XHJcbiAgICB0aGlzLnNob3dHcm91cE5hbWVJbnB1dCA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFJlbW92ZSB2YWxpZGF0aW9uIGluaXRpYWxseVxyXG4gICAgZ3JvdXBOYW1lQ3RybD8uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICBncm91cE5hbWVDdHJsPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHJcbiAgICAvLyBPcHRpb25hbDogbWFyayB1bnRvdWNoZWQgKGdvb2QgVVgpXHJcbiAgICB0aGlzLmNyZWF0ZVpvbmVGb3JtLm1hcmtBc1VudG91Y2hlZCgpO1xyXG5cclxuICAgIC8vIEZvcmNlIFVJIHVwZGF0ZVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gdG8gbG9hZCBncm91cHMgZm9yIGRyb3Bkb3duXHJcbiAgbG9hZEdyb3VwcygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jbGllbnRJZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0geyBjbGllbnRJZDogdGhpcy5jbGllbnRJZCB9O1xyXG4gICAgdGhpcy5jbGllbnRBcGlTZXJ2aWNlLmdldFpvbmVHcm91cERldGFpbHMocGF5bG9hZCkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICApLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5ncm91cExpc3QgPSByZXM/LmRhdGE/LnJlc3VsdC5maWx0ZXIoKGdycDogYW55KSA9PiBncnAuZ3JvdXBOYW1lICE9PSBudWxsICYmIGdycC5ncm91cE5hbWUgIT09IHVuZGVmaW5lZCkgfHwgW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2hpbGUgbG9hZEdyb3Vwczo6JywgZXJyKTtcclxuICAgICAgICAvLyBTZXQgZW1wdHkgYXJyYXkgb24gZXJyb3Igc28gZHJvcGRvd24gc3RpbGwgd29ya3NcclxuICAgICAgICB0aGlzLmdyb3VwTGlzdCA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgLy8gUmVzZXQgZm9ybSBzdGF0ZSB3aGVuIGNhbmNlbGluZ1xyXG4gICAgdGhpcy5jcmVhdGVab25lRm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5jcmVhdGVab25lRm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNyZWF0ZVpvbmVGb3JtLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5jcmVhdGVab25lRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmNyZWF0ZVpvbmVGb3JtLnZhbHVlO1xyXG4gICAgXHJcbiAgICAvLyBWYWxpZGF0ZSB6b25lTmFtZSAmIGdyb3VwIHBhdHRlcm5cclxuICAgIGxldCBwYXR0ZXJuID0gL15bYS16QS1aMC05XFxzXFwvXSokLztcclxuICAgIGlmICghZm9ybVZhbHVlLnpvbmVOYW1lLm1hdGNoKHBhdHRlcm4pIHx8IFxyXG4gICAgKGZvcm1WYWx1ZS5zZWxlY3RlZEdyb3VwID09PSAnYWRkTmV3JyAmJiAhZm9ybVZhbHVlLmdyb3VwTmFtZS5tYXRjaChwYXR0ZXJuKSkpIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnU3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBub3QgYWxsb3dlZCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgcHJvZHVjdE5hbWU6ICd0YW5nb1pvbmUnXHJcbiAgICB9O1xyXG4gICAgY29uc29sZS5sb2coJ3BheWxvYWQgYmVmb3JlIGVkaXQgY2hlY2sgOicsIHBheWxvYWQpO1xyXG4gICAgaWYgKHRoaXMuaXNFZGl0TW9kZSAmJiB0aGlzLnpvbmVEYXRhPy50YWdOYW1lKSB7XHJcbiAgICAgIGlmICh0aGlzLnpvbmVEYXRhLnRhZ05hbWUgIT09IGZvcm1WYWx1ZS56b25lTmFtZSkge1xyXG4gICAgICAgIHBheWxvYWQub2xkVGFnID0gdGhpcy56b25lRGF0YS50YWdOYW1lO1xyXG4gICAgICAgIHBheWxvYWQudGFnTmFtZSA9IGZvcm1WYWx1ZS56b25lTmFtZS50cmltKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gVGFnIG5hbWUgdW5jaGFuZ2VkXHJcbiAgICAgICAgcGF5bG9hZC50YWdOYW1lID0gdGhpcy56b25lRGF0YS50YWdOYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHBheWxvYWQuX2lkID0gdGhpcy56b25lRGF0YT8uX2lkXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBjb2xvcnMgPSB0aGlzLmdlbmVyYXRlUmFuZG9tQ29sb3IoKTtcclxuICAgICAgcGF5bG9hZC50YWdOYW1lID0gZm9ybVZhbHVlLnpvbmVOYW1lLnRyaW0oKTsgXHJcbiAgICAgIHBheWxvYWQucmdiQ29sb3IgPSBjb2xvcnMucmdiQ29sb3I7XHJcbiAgICAgIHBheWxvYWQucmdiQm9yZGVyQ29sb3IgPSBjb2xvcnMucmdiQm9yZGVyQ29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgYSBncm91cCBpcyBzZWxlY3RlZCAobm90IFwiQWRkIE5ld1wiKVxyXG4gICAgaWYgKGZvcm1WYWx1ZS5zZWxlY3RlZEdyb3VwICYmIGZvcm1WYWx1ZS5zZWxlY3RlZEdyb3VwICE9PSAnYWRkTmV3Jykge1xyXG4gICAgICBwYXlsb2FkLmdyb3VwTmFtZSA9IGZvcm1WYWx1ZS5zZWxlY3RlZEdyb3VwO1xyXG4gICAgICBwYXlsb2FkLmlzRXhpc3RpbmdHcm91cCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgXCJBZGQgTmV3XCIgaXMgc2VsZWN0ZWQsIGluY2x1ZGUgdGhlIG5ldyBncm91cCBuYW1lXHJcbiAgICBpZiAoZm9ybVZhbHVlLnNlbGVjdGVkR3JvdXAgPT09ICdhZGROZXcnICYmIGZvcm1WYWx1ZS5ncm91cE5hbWUpIHtcclxuICAgICAgcGF5bG9hZC5ncm91cE5hbWUgPSBmb3JtVmFsdWUuZ3JvdXBOYW1lLnRyaW0oKTtcclxuICAgICAgcGF5bG9hZC5pc0V4aXN0aW5nR3JvdXAgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdvblNhdmUgcGF5bG9hZCA6JywgcGF5bG9hZCk7XHJcbiAgICBpZiAoIXRoaXMuaXNFZGl0TW9kZSkge1xyXG4gICAgICB0aGlzLmNsaWVudEFwaVNlcnZpY2UuYWRkWm9uZUNvbmZpZ0N1c3RvbVRhZyhwYXlsb2FkKS5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG4gICAgICApLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdab25lIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5JztcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKHtcclxuICAgICAgICAgICAgICB0eXBlOiAnY3JlYXRlZCcsXHJcbiAgICAgICAgICAgICAgZGF0YTogcmVzLmRhdGFcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBlcnJvck1zZyA9ICdGYWlsZWQgdG8gY3JlYXRlIHpvbmUnO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KHJlcy5tZXNzYWdlIHx8IGVycm9yTXNnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVycm9yTXNnID0gJ0ZhaWxlZCB0byBjcmVhdGUgem9uZSc7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvcj8uZXJyb3IgfHwgZXJyb3JNc2cpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNFZGl0TW9kZSAmJiB0aGlzLnpvbmVEYXRhKSB7XHJcbiAgICAgIHRoaXMuY2xpZW50QXBpU2VydmljZS51cGRhdGVab25lQ29uZmlnQ3VzdG9tVGFnKHBheWxvYWQpLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICAgICkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ1pvbmUgdXBkYXRlZCBzdWNjZXNzZnVsbHknO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRTdWNjZXNzVG9hc3QobWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2Uoe1xyXG4gICAgICAgICAgICAgIHR5cGU6ICd1cGRhdGVkJyxcclxuICAgICAgICAgICAgICBkYXRhOiByZXMuZGF0YVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5pc0VkaXRNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBlcnJvck1zZyA9ICdGYWlsZWQgdG8gdXBkYXRlIHpvbmUnO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KHJlcy5tZXNzYWdlIHx8IGVycm9yTXNnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVycm9yTXNnID0gJ0ZhaWxlZCB0byB1cGRhdGUgem9uZSc7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvcj8uZXJyb3IgfHwgZXJyb3JNc2cpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLy8gQWxpYXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcclxuICBvbkNyZWF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMub25TYXZlKCk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVJhbmRvbUNvbG9yKCkge1xyXG4gICAgY29uc3QgcmVkOiBhbnkgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpO1xyXG4gICAgY29uc3QgZ3JlZW46IGFueSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDI1Nik7XHJcbiAgICBjb25zdCBibHVlOiBhbnkgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpO1xyXG4gICAgY29uc3QgcmdiQ29sb3IgPSBgcmdiYSgke3JlZH0sICR7Z3JlZW59LCAke2JsdWV9LCAwLjUpYDtcclxuICAgIGNvbnN0IHJnYkJvcmRlckNvbG9yID0gYHJnYigke3BhcnNlSW50KHJlZCkgKyAxMH0sICR7cGFyc2VJbnQoZ3JlZW4pICsgMTB9LCAke3BhcnNlSW50KGJsdWUpICsgMTB9KWA7XHJcbiAgICByZXR1cm4geyByZ2JDb2xvciwgcmdiQm9yZGVyQ29sb3IgfVxyXG4gIH1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImNyZWF0ZS16b25lLW1vZGFsXCI+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjcmVhdGVab25lRm9ybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgPCEtLSBIZWFkZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyLWN1c3RvbSBtYi00XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1pY29uIG1lLTNcIj5cclxuICAgICAgICAgIDxzdmcgKm5nSWY9XCIhaXNFZGl0TW9kZVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4VjE2TTggMTJIMTZcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNFZGl0TW9kZVwiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiLz5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0yNyAyMC4wMDAySDIwQzE5LjQ2OTYgMjAuMDAwMiAxOC45NjA5IDIwLjIxMDkgMTguNTg1OCAyMC41ODZDMTguMjEwNyAyMC45NjExIDE4IDIxLjQ2OTggMTggMjIuMDAwMlYzNi4wMDAyQzE4IDM2LjUzMDcgMTguMjEwNyAzNy4wMzk0IDE4LjU4NTggMzcuNDE0NEMxOC45NjA5IDM3Ljc4OTUgMTkuNDY5NiAzOC4wMDAyIDIwIDM4LjAwMDJIMzRDMzQuNTMwNCAzOC4wMDAyIDM1LjAzOTEgMzcuNzg5NSAzNS40MTQyIDM3LjQxNDRDMzUuNzg5MyAzNy4wMzk0IDM2IDM2LjUzMDcgMzYgMzYuMDAwMlYyOS4wMDAyTTM0LjUgMTguNTAwMkMzNC44OTc4IDE4LjEwMjQgMzUuNDM3NCAxNy44Nzg5IDM2IDE3Ljg3ODlDMzYuNTYyNiAxNy44Nzg5IDM3LjEwMjIgMTguMTAyNCAzNy41IDE4LjUwMDJDMzcuODk3OCAxOC44OTgxIDM4LjEyMTMgMTkuNDM3NiAzOC4xMjEzIDIwLjAwMDJDMzguMTIxMyAyMC41NjI4IDM3Ljg5NzggMjEuMTAyNCAzNy41IDIxLjUwMDJMMjggMzEuMDAwMkwyNCAzMi4wMDAyTDI1IDI4LjAwMDJMMzQuNSAxOC41MDAyWlwiIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8L3N2Zz4gXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGUgbWItMFwiPnt7IGlzRWRpdE1vZGUgPyAnRWRpdCcgOiAnQ3JlYXRlJyB9fTwvaDQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBab25lIE5hbWUgSW5wdXQgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi00XCI+XHJcbiAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+IC0tPlxyXG4gICAgICA8bGFiZWwgZm9yPVwiem9uZU5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5ab25lIE5hbWU8L2xhYmVsPlxyXG4gICAgICA8aW5wdXQgXHJcbiAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIFxyXG4gICAgICAgIGlkPVwiem9uZU5hbWVcIlxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInpvbmVOYW1lXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHpvbmUgbmFtZVwiXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJjcmVhdGVab25lRm9ybS5nZXQoJ3pvbmVOYW1lJyk/LmludmFsaWQgJiYgY3JlYXRlWm9uZUZvcm0uZ2V0KCd6b25lTmFtZScpPy50b3VjaGVkICYmICFjcmVhdGVab25lRm9ybS5nZXQoJ3pvbmVOYW1lJyk/LnByaXN0aW5lXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJjcmVhdGVab25lRm9ybS5nZXQoJ3pvbmVOYW1lJyk/LmludmFsaWQgJiYgY3JlYXRlWm9uZUZvcm0uZ2V0KCd6b25lTmFtZScpPy50b3VjaGVkICYmICFjcmVhdGVab25lRm9ybS5nZXQoJ3pvbmVOYW1lJyk/LnByaXN0aW5lXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjcmVhdGVab25lRm9ybS5nZXQoJ3pvbmVOYW1lJyk/LmVycm9ycz8uWydyZXF1aXJlZCddXCI+Wm9uZSBuYW1lIGlzIHJlcXVpcmVkPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY3JlYXRlWm9uZUZvcm0uZ2V0KCd6b25lTmFtZScpPy5lcnJvcnM/LlsnbWlubGVuZ3RoJ11cIj5ab25lIG5hbWUgbXVzdCBiZSBhdCBsZWFzdCAxIGNoYXJhY3Rlcjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImNyZWF0ZVpvbmVGb3JtLmdldCgnem9uZU5hbWUnKT8uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPlxyXG4gICAgICAgICAgWm9uZSBuYW1lIGNhbm5vdCBiZSBvbmx5IHNwYWNlc1xyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFkZCB0byBHcm91cCBEcm9wZG93biAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTRcIj5cclxuICAgICAgPGxhYmVsIGZvcj1cInNlbGVjdGVkR3JvdXBcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BZGQgdG8gR3JvdXAgKE9wdGlvbmFsKTwvbGFiZWw+XHJcbiAgICAgIDxzZWxlY3QgXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIFxyXG4gICAgICAgIGlkPVwic2VsZWN0ZWRHcm91cFwiXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0ZWRHcm91cFwiPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3Q8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWRkTmV3XCIgKm5nSWY9XCIhaXNFZGl0TW9kZVwiPisgQWRkIE5ldzwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwTGlzdFwiIFt2YWx1ZV09XCJncm91cC5ncm91cE5hbWVcIj5cclxuICAgICAgICAgIHt7IGdyb3VwLmdyb3VwTmFtZSB9fVxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRW50ZXIgR3JvdXAgTmFtZSBJbnB1dCAoc2hvd24gd2hlbiBBZGQgTmV3IGlzIHNlbGVjdGVkKSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTRcIiAqbmdJZj1cInNob3dHcm91cE5hbWVJbnB1dFwiPlxyXG4gICAgICA8IS0tIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPiAtLT5cclxuICAgICAgPGxhYmVsIGZvcj1cImdyb3VwTmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkVudGVyIEdyb3VwIE5hbWU8L2xhYmVsPlxyXG4gICAgICA8aW5wdXQgXHJcbiAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIFxyXG4gICAgICAgIGlkPVwiZ3JvdXBOYW1lXCJcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJncm91cE5hbWVcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgZ3JvdXAgbmFtZVwiXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJjcmVhdGVab25lRm9ybS5nZXQoJ2dyb3VwTmFtZScpPy5pbnZhbGlkICYmIGNyZWF0ZVpvbmVGb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnRvdWNoZWQgJiYgIWNyZWF0ZVpvbmVGb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnByaXN0aW5lXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJjcmVhdGVab25lRm9ybS5nZXQoJ2dyb3VwTmFtZScpPy5pbnZhbGlkICYmIGNyZWF0ZVpvbmVGb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnRvdWNoZWQgJiYgIWNyZWF0ZVpvbmVGb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnByaXN0aW5lXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjcmVhdGVab25lRm9ybS5nZXQoJ2dyb3VwTmFtZScpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPkdyb3VwIG5hbWUgaXMgcmVxdWlyZWQ8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjcmVhdGVab25lRm9ybS5nZXQoJ2dyb3VwTmFtZScpPy5lcnJvcnM/LlsnbWlubGVuZ3RoJ11cIj5Hcm91cCBuYW1lIG11c3QgYmUgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY3JlYXRlWm9uZUZvcm0uZ2V0KCdncm91cE5hbWUnKT8uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPlxyXG4gICAgICAgICAgR3JvdXBOYW1lIGNhbm5vdCBiZSBvbmx5IHNwYWNlc1xyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFjdGlvbiBCdXR0b25zIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3Rlci1jdXN0b20gbXQtNFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgXHJcbiAgICAgICAgICAoY2xpY2spPVwib25TYXZlKClcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImNyZWF0ZVpvbmVGb3JtLmludmFsaWRcIj5cclxuICAgICAgICAgIHt7IGlzRWRpdE1vZGUgPyAnVXBkYXRlJyA6ICdDcmVhdGUnIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9mb3JtPlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXNpbmdsZS16b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvY29uZmlndXJhdGlvbnMvem9uZS1jb25maWd1cmF0aW9uL2NyZWF0ZS1zaW5nbGUtem9uZS9jcmVhdGUtc2luZ2xlLXpvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXNldHRpbmdzL3NyYy9saWIvY29tcG9uZW50cy9jb25maWd1cmF0aW9ucy96b25lLWNvbmZpZ3VyYXRpb24vY3JlYXRlLXNpbmdsZS16b25lL2NyZWF0ZS1zaW5nbGUtem9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVExQyxNQUFNLE9BQU8seUJBQXlCO0lBVzFCO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFkVixjQUFjLENBQVk7SUFDMUIsZUFBZSxHQUFVLEVBQUUsQ0FBQztJQUM1QixTQUFTLEdBQVUsRUFBRSxDQUFDO0lBQ3RCLGtCQUFrQixHQUFZLEtBQUssQ0FBQztJQUNwQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFDNUIsUUFBUSxHQUFRLElBQUksQ0FBQztJQUNKLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTFDLFlBQ1UsRUFBZSxFQUNoQixXQUEyQixFQUMxQixnQkFBa0MsRUFDbEMsWUFBMEIsRUFDMUIsR0FBc0I7UUFKdEIs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R0FBRyxRQUFRLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxRQUFRLENBQUM7UUFDeEQsTUFBTSxjQUFjLEdBQUcsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ3JHLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUE7SUFDckMsQ0FBQzt3R0FyUFUseUJBQXlCOzRGQUF6Qix5QkFBeUIsOERDWnRDLG13S0E2RkE7OzRGRGpGYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IENsaWVudEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jcmVhdGUtc2luZ2xlLXpvbmUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtc2luZ2xlLXpvbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jcmVhdGUtc2luZ2xlLXpvbmUuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVTaW5nbGVab25lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGNyZWF0ZVpvbmVGb3JtOiBGb3JtR3JvdXA7XHJcbiAgem9uZVRhZ2dpbmdMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGdyb3VwTGlzdDogYW55W10gPSBbXTtcclxuICBzaG93R3JvdXBOYW1lSW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjbGllbnRJZDogc3RyaW5nID0gJyc7XHJcbiAgaXNFZGl0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHpvbmVEYXRhOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCxcclxuICAgIHByaXZhdGUgY2xpZW50QXBpU2VydmljZTogQ2xpZW50QXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIHRoaXMuY3JlYXRlWm9uZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgem9uZU5hbWU6IFsnJywgW1xyXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksXHJcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKD8hXFxzKiQpW2EtekEtWjAtOVxcc1xcL10qJC8pXHJcbiAgICAgIF1dLFxyXG4gICAgICBzZWxlY3RlZEdyb3VwOiBbJyddLFxyXG4gICAgICBncm91cE5hbWU6IFsnJywgW1xyXG4gICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxyXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybigvXig/IVxccyokKVthLXpBLVowLTlcXHNcXC9dKiQvKVxyXG4gICAgICBdXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIEluaXRpYWxpemUgLSBncm91cCBuYW1lIGZpZWxkIHNob3VsZCBiZSBoaWRkZW4gaW5pdGlhbGx5XHJcbiAgICB0aGlzLnNob3dHcm91cE5hbWVJbnB1dCA9IGZhbHNlO1xyXG4gICAgLy8gRW5zdXJlIGZvcm0gY29udHJvbHMgYXJlIG1hcmtlZCBhcyB1bnRvdWNoZWQgd2hlbiBtb2RhbCBvcGVuc1xyXG4gICAgdGhpcy5jcmVhdGVab25lRm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIHRoaXMuY3JlYXRlWm9uZUZvcm0uZ2V0KCd6b25lTmFtZScpPy5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIHRoaXMuY3JlYXRlWm9uZUZvcm0uZ2V0KCdzZWxlY3RlZEdyb3VwJyk/Lm1hcmtBc1VudG91Y2hlZCgpO1xyXG4gICAgdGhpcy5jcmVhdGVab25lRm9ybS5nZXQoJ2dyb3VwTmFtZScpPy5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIC8vIEdldCBjbGllbnQgSURcclxuICAgIHRoaXMuY2xpZW50QXBpU2VydmljZS5jbGllbnREYXRhLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgaWYgKGUpIHtcclxuICAgICAgICB0aGlzLmNsaWVudElkID0gZS5jbGllbnRJZDtcclxuICAgICAgICB0aGlzLmxvYWRHcm91cHMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIGdyb3VwIHNlbGVjdGlvbiBjaGFuZ2VzXHJcbiAgICB0aGlzLmNyZWF0ZVpvbmVGb3JtLmdldCgnc2VsZWN0ZWRHcm91cCcpPy52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICApLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgLy8gXCJhZGROZXdcIiBpcyBhIGRlZmF1bHQgb3B0aW9uLCBub3QgZnJvbSBncm91cExpc3RcclxuICAgICAgY29uc3QgZ3JvdXBOYW1lQ3RybCA9IHRoaXMuY3JlYXRlWm9uZUZvcm0uZ2V0KCdncm91cE5hbWUnKTtcclxuXHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ2FkZE5ldycpIHtcclxuICAgICAgICB0aGlzLnNob3dHcm91cE5hbWVJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgZ3JvdXBOYW1lQ3RybD8uc2V0VmFsaWRhdG9ycyhbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL14oPyFcXHMqJClbYS16QS1aMC05XFxzXFwvXSokLylcclxuICAgICAgICBdKTtcclxuICAgICAgICBncm91cE5hbWVDdHJsPy5yZXNldCgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd0dyb3VwTmFtZUlucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgZ3JvdXBOYW1lQ3RybD8uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgZ3JvdXBOYW1lQ3RybD8ucmVzZXQoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgICBncm91cE5hbWVDdHJsPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBNZXRob2QgdG8gaW5pdGlhbGl6ZSBjb21wb25lbnQgaW4gZWRpdCBtb2RlXHJcbiAgc2V0Wm9uZURhdGFGb3JFZGl0KHpvbmU6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ3NldFpvbmVEYXRhRm9yRWRpdCA6Jywgem9uZSk7XHJcbiAgICB0aGlzLmlzRWRpdE1vZGUgPSB0cnVlO1xyXG4gICAgdGhpcy56b25lRGF0YSA9IHpvbmU7XHJcbiAgICAvLyBFbnN1cmUgZm9ybSBjb250cm9scyBhcmUgbWFya2VkIGFzIHVudG91Y2hlZCBiZWZvcmUgc2V0dGluZyB2YWx1ZXNcclxuICAgIHRoaXMuY3JlYXRlWm9uZUZvcm0ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICB0aGlzLmNyZWF0ZVpvbmVGb3JtLmdldCgnem9uZU5hbWUnKT8ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICB0aGlzLmNyZWF0ZVpvbmVGb3JtLmdldCgnc2VsZWN0ZWRHcm91cCcpPy5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIHRoaXMuY3JlYXRlWm9uZUZvcm0uZ2V0KCdncm91cE5hbWUnKT8ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICBjb25zdCBncm91cE5hbWVDdHJsID0gdGhpcy5jcmVhdGVab25lRm9ybS5nZXQoJ2dyb3VwTmFtZScpO1xyXG5cclxuICAgIC8vIFJlc2V0IGZvcm0gY2xlYW5seVxyXG4gICAgdGhpcy5jcmVhdGVab25lRm9ybS5yZXNldCh7XHJcbiAgICAgIHpvbmVOYW1lOiB6b25lLnRhZ05hbWUgfHwgJycsXHJcbiAgICAgIHNlbGVjdGVkR3JvdXA6IHpvbmUuZ3JvdXBOYW1lIHx8ICcnLFxyXG4gICAgICBncm91cE5hbWU6ICcnXHJcbiAgICB9LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG4gICAgLy8gRWRpdCBtb2RlIOKGkiBoaWRlIGdyb3VwIG5hbWUgaW5wdXQgaW5pdGlhbGx5XHJcbiAgICB0aGlzLnNob3dHcm91cE5hbWVJbnB1dCA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFJlbW92ZSB2YWxpZGF0aW9uIGluaXRpYWxseVxyXG4gICAgZ3JvdXBOYW1lQ3RybD8uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICBncm91cE5hbWVDdHJsPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHJcbiAgICAvLyBPcHRpb25hbDogbWFyayB1bnRvdWNoZWQgKGdvb2QgVVgpXHJcbiAgICB0aGlzLmNyZWF0ZVpvbmVGb3JtLm1hcmtBc1VudG91Y2hlZCgpO1xyXG5cclxuICAgIC8vIEZvcmNlIFVJIHVwZGF0ZVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gdG8gbG9hZCBncm91cHMgZm9yIGRyb3Bkb3duXHJcbiAgbG9hZEdyb3VwcygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jbGllbnRJZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0geyBjbGllbnRJZDogdGhpcy5jbGllbnRJZCB9O1xyXG4gICAgdGhpcy5jbGllbnRBcGlTZXJ2aWNlLmdldFpvbmVHcm91cERldGFpbHMocGF5bG9hZCkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICApLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5ncm91cExpc3QgPSByZXM/LmRhdGE/LnJlc3VsdC5maWx0ZXIoKGdycDogYW55KSA9PiBncnAuZ3JvdXBOYW1lICE9PSBudWxsICYmIGdycC5ncm91cE5hbWUgIT09IHVuZGVmaW5lZCkgfHwgW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2hpbGUgbG9hZEdyb3Vwczo6JywgZXJyKTtcclxuICAgICAgICAvLyBTZXQgZW1wdHkgYXJyYXkgb24gZXJyb3Igc28gZHJvcGRvd24gc3RpbGwgd29ya3NcclxuICAgICAgICB0aGlzLmdyb3VwTGlzdCA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgLy8gUmVzZXQgZm9ybSBzdGF0ZSB3aGVuIGNhbmNlbGluZ1xyXG4gICAgdGhpcy5jcmVhdGVab25lRm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5jcmVhdGVab25lRm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNyZWF0ZVpvbmVGb3JtLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5jcmVhdGVab25lRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmNyZWF0ZVpvbmVGb3JtLnZhbHVlO1xyXG4gICAgXHJcbiAgICAvLyBWYWxpZGF0ZSB6b25lTmFtZSAmIGdyb3VwIHBhdHRlcm5cclxuICAgIGxldCBwYXR0ZXJuID0gL15bYS16QS1aMC05XFxzXFwvXSokLztcclxuICAgIGlmICghZm9ybVZhbHVlLnpvbmVOYW1lLm1hdGNoKHBhdHRlcm4pIHx8IFxyXG4gICAgKGZvcm1WYWx1ZS5zZWxlY3RlZEdyb3VwID09PSAnYWRkTmV3JyAmJiAhZm9ybVZhbHVlLmdyb3VwTmFtZS5tYXRjaChwYXR0ZXJuKSkpIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnU3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBub3QgYWxsb3dlZCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgcHJvZHVjdE5hbWU6ICd0YW5nb1pvbmUnXHJcbiAgICB9O1xyXG4gICAgY29uc29sZS5sb2coJ3BheWxvYWQgYmVmb3JlIGVkaXQgY2hlY2sgOicsIHBheWxvYWQpO1xyXG4gICAgaWYgKHRoaXMuaXNFZGl0TW9kZSAmJiB0aGlzLnpvbmVEYXRhPy50YWdOYW1lKSB7XHJcbiAgICAgIGlmICh0aGlzLnpvbmVEYXRhLnRhZ05hbWUgIT09IGZvcm1WYWx1ZS56b25lTmFtZSkge1xyXG4gICAgICAgIHBheWxvYWQub2xkVGFnID0gdGhpcy56b25lRGF0YS50YWdOYW1lO1xyXG4gICAgICAgIHBheWxvYWQudGFnTmFtZSA9IGZvcm1WYWx1ZS56b25lTmFtZS50cmltKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gVGFnIG5hbWUgdW5jaGFuZ2VkXHJcbiAgICAgICAgcGF5bG9hZC50YWdOYW1lID0gdGhpcy56b25lRGF0YS50YWdOYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHBheWxvYWQuX2lkID0gdGhpcy56b25lRGF0YT8uX2lkXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBjb2xvcnMgPSB0aGlzLmdlbmVyYXRlUmFuZG9tQ29sb3IoKTtcclxuICAgICAgcGF5bG9hZC50YWdOYW1lID0gZm9ybVZhbHVlLnpvbmVOYW1lLnRyaW0oKTsgXHJcbiAgICAgIHBheWxvYWQucmdiQ29sb3IgPSBjb2xvcnMucmdiQ29sb3I7XHJcbiAgICAgIHBheWxvYWQucmdiQm9yZGVyQ29sb3IgPSBjb2xvcnMucmdiQm9yZGVyQ29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgYSBncm91cCBpcyBzZWxlY3RlZCAobm90IFwiQWRkIE5ld1wiKVxyXG4gICAgaWYgKGZvcm1WYWx1ZS5zZWxlY3RlZEdyb3VwICYmIGZvcm1WYWx1ZS5zZWxlY3RlZEdyb3VwICE9PSAnYWRkTmV3Jykge1xyXG4gICAgICBwYXlsb2FkLmdyb3VwTmFtZSA9IGZvcm1WYWx1ZS5zZWxlY3RlZEdyb3VwO1xyXG4gICAgICBwYXlsb2FkLmlzRXhpc3RpbmdHcm91cCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgXCJBZGQgTmV3XCIgaXMgc2VsZWN0ZWQsIGluY2x1ZGUgdGhlIG5ldyBncm91cCBuYW1lXHJcbiAgICBpZiAoZm9ybVZhbHVlLnNlbGVjdGVkR3JvdXAgPT09ICdhZGROZXcnICYmIGZvcm1WYWx1ZS5ncm91cE5hbWUpIHtcclxuICAgICAgcGF5bG9hZC5ncm91cE5hbWUgPSBmb3JtVmFsdWUuZ3JvdXBOYW1lLnRyaW0oKTtcclxuICAgICAgcGF5bG9hZC5pc0V4aXN0aW5nR3JvdXAgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdvblNhdmUgcGF5bG9hZCA6JywgcGF5bG9hZCk7XHJcbiAgICBpZiAoIXRoaXMuaXNFZGl0TW9kZSkge1xyXG4gICAgICB0aGlzLmNsaWVudEFwaVNlcnZpY2UuYWRkWm9uZUNvbmZpZ0N1c3RvbVRhZyhwYXlsb2FkKS5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG4gICAgICApLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdab25lIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5JztcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKHtcclxuICAgICAgICAgICAgICB0eXBlOiAnY3JlYXRlZCcsXHJcbiAgICAgICAgICAgICAgZGF0YTogcmVzLmRhdGFcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBlcnJvck1zZyA9ICdGYWlsZWQgdG8gY3JlYXRlIHpvbmUnO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KHJlcy5tZXNzYWdlIHx8IGVycm9yTXNnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVycm9yTXNnID0gJ0ZhaWxlZCB0byBjcmVhdGUgem9uZSc7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvcj8uZXJyb3IgfHwgZXJyb3JNc2cpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNFZGl0TW9kZSAmJiB0aGlzLnpvbmVEYXRhKSB7XHJcbiAgICAgIHRoaXMuY2xpZW50QXBpU2VydmljZS51cGRhdGVab25lQ29uZmlnQ3VzdG9tVGFnKHBheWxvYWQpLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICAgICkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ1pvbmUgdXBkYXRlZCBzdWNjZXNzZnVsbHknO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRTdWNjZXNzVG9hc3QobWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2Uoe1xyXG4gICAgICAgICAgICAgIHR5cGU6ICd1cGRhdGVkJyxcclxuICAgICAgICAgICAgICBkYXRhOiByZXMuZGF0YVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5pc0VkaXRNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBlcnJvck1zZyA9ICdGYWlsZWQgdG8gdXBkYXRlIHpvbmUnO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KHJlcy5tZXNzYWdlIHx8IGVycm9yTXNnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVycm9yTXNnID0gJ0ZhaWxlZCB0byB1cGRhdGUgem9uZSc7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvcj8uZXJyb3IgfHwgZXJyb3JNc2cpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLy8gQWxpYXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcclxuICBvbkNyZWF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMub25TYXZlKCk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVJhbmRvbUNvbG9yKCkge1xyXG4gICAgY29uc3QgcmVkOiBhbnkgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpO1xyXG4gICAgY29uc3QgZ3JlZW46IGFueSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDI1Nik7XHJcbiAgICBjb25zdCBibHVlOiBhbnkgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpO1xyXG4gICAgY29uc3QgcmdiQ29sb3IgPSBgcmdiYSgke3JlZH0sICR7Z3JlZW59LCAke2JsdWV9LCAwLjUpYDtcclxuICAgIGNvbnN0IHJnYkJvcmRlckNvbG9yID0gYHJnYigke3BhcnNlSW50KHJlZCkgKyAxMH0sICR7cGFyc2VJbnQoZ3JlZW4pICsgMTB9LCAke3BhcnNlSW50KGJsdWUpICsgMTB9KWA7XHJcbiAgICByZXR1cm4geyByZ2JDb2xvciwgcmdiQm9yZGVyQ29sb3IgfVxyXG4gIH1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImNyZWF0ZS16b25lLW1vZGFsXCI+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjcmVhdGVab25lRm9ybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgPCEtLSBIZWFkZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyLWN1c3RvbSBtYi00XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1pY29uIG1lLTNcIj5cclxuICAgICAgICAgIDxzdmcgKm5nSWY9XCIhaXNFZGl0TW9kZVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4VjE2TTggMTJIMTZcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNFZGl0TW9kZVwiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiLz5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0yNyAyMC4wMDAySDIwQzE5LjQ2OTYgMjAuMDAwMiAxOC45NjA5IDIwLjIxMDkgMTguNTg1OCAyMC41ODZDMTguMjEwNyAyMC45NjExIDE4IDIxLjQ2OTggMTggMjIuMDAwMlYzNi4wMDAyQzE4IDM2LjUzMDcgMTguMjEwNyAzNy4wMzk0IDE4LjU4NTggMzcuNDE0NEMxOC45NjA5IDM3Ljc4OTUgMTkuNDY5NiAzOC4wMDAyIDIwIDM4LjAwMDJIMzRDMzQuNTMwNCAzOC4wMDAyIDM1LjAzOTEgMzcuNzg5NSAzNS40MTQyIDM3LjQxNDRDMzUuNzg5MyAzNy4wMzk0IDM2IDM2LjUzMDcgMzYgMzYuMDAwMlYyOS4wMDAyTTM0LjUgMTguNTAwMkMzNC44OTc4IDE4LjEwMjQgMzUuNDM3NCAxNy44Nzg5IDM2IDE3Ljg3ODlDMzYuNTYyNiAxNy44Nzg5IDM3LjEwMjIgMTguMTAyNCAzNy41IDE4LjUwMDJDMzcuODk3OCAxOC44OTgxIDM4LjEyMTMgMTkuNDM3NiAzOC4xMjEzIDIwLjAwMDJDMzguMTIxMyAyMC41NjI4IDM3Ljg5NzggMjEuMTAyNCAzNy41IDIxLjUwMDJMMjggMzEuMDAwMkwyNCAzMi4wMDAyTDI1IDI4LjAwMDJMMzQuNSAxOC41MDAyWlwiIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8L3N2Zz4gXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGUgbWItMFwiPnt7IGlzRWRpdE1vZGUgPyAnRWRpdCcgOiAnQ3JlYXRlJyB9fTwvaDQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBab25lIE5hbWUgSW5wdXQgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi00XCI+XHJcbiAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+IC0tPlxyXG4gICAgICA8bGFiZWwgZm9yPVwiem9uZU5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5ab25lIE5hbWU8L2xhYmVsPlxyXG4gICAgICA8aW5wdXQgXHJcbiAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIFxyXG4gICAgICAgIGlkPVwiem9uZU5hbWVcIlxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInpvbmVOYW1lXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHpvbmUgbmFtZVwiXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJjcmVhdGVab25lRm9ybS5nZXQoJ3pvbmVOYW1lJyk/LmludmFsaWQgJiYgY3JlYXRlWm9uZUZvcm0uZ2V0KCd6b25lTmFtZScpPy50b3VjaGVkICYmICFjcmVhdGVab25lRm9ybS5nZXQoJ3pvbmVOYW1lJyk/LnByaXN0aW5lXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJjcmVhdGVab25lRm9ybS5nZXQoJ3pvbmVOYW1lJyk/LmludmFsaWQgJiYgY3JlYXRlWm9uZUZvcm0uZ2V0KCd6b25lTmFtZScpPy50b3VjaGVkICYmICFjcmVhdGVab25lRm9ybS5nZXQoJ3pvbmVOYW1lJyk/LnByaXN0aW5lXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjcmVhdGVab25lRm9ybS5nZXQoJ3pvbmVOYW1lJyk/LmVycm9ycz8uWydyZXF1aXJlZCddXCI+Wm9uZSBuYW1lIGlzIHJlcXVpcmVkPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY3JlYXRlWm9uZUZvcm0uZ2V0KCd6b25lTmFtZScpPy5lcnJvcnM/LlsnbWlubGVuZ3RoJ11cIj5ab25lIG5hbWUgbXVzdCBiZSBhdCBsZWFzdCAxIGNoYXJhY3Rlcjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImNyZWF0ZVpvbmVGb3JtLmdldCgnem9uZU5hbWUnKT8uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPlxyXG4gICAgICAgICAgU3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBub3QgYWxsb3dlZFxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFkZCB0byBHcm91cCBEcm9wZG93biAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTRcIj5cclxuICAgICAgPGxhYmVsIGZvcj1cInNlbGVjdGVkR3JvdXBcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BZGQgdG8gR3JvdXAgKE9wdGlvbmFsKTwvbGFiZWw+XHJcbiAgICAgIDxzZWxlY3QgXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIFxyXG4gICAgICAgIGlkPVwic2VsZWN0ZWRHcm91cFwiXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0ZWRHcm91cFwiPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3Q8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWRkTmV3XCIgKm5nSWY9XCIhaXNFZGl0TW9kZVwiPisgQWRkIE5ldzwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwTGlzdFwiIFt2YWx1ZV09XCJncm91cC5ncm91cE5hbWVcIj5cclxuICAgICAgICAgIHt7IGdyb3VwLmdyb3VwTmFtZSB9fVxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRW50ZXIgR3JvdXAgTmFtZSBJbnB1dCAoc2hvd24gd2hlbiBBZGQgTmV3IGlzIHNlbGVjdGVkKSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTRcIiAqbmdJZj1cInNob3dHcm91cE5hbWVJbnB1dFwiPlxyXG4gICAgICA8IS0tIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPiAtLT5cclxuICAgICAgPGxhYmVsIGZvcj1cImdyb3VwTmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkVudGVyIEdyb3VwIE5hbWU8L2xhYmVsPlxyXG4gICAgICA8aW5wdXQgXHJcbiAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIFxyXG4gICAgICAgIGlkPVwiZ3JvdXBOYW1lXCJcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJncm91cE5hbWVcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgZ3JvdXAgbmFtZVwiXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJjcmVhdGVab25lRm9ybS5nZXQoJ2dyb3VwTmFtZScpPy5pbnZhbGlkICYmIGNyZWF0ZVpvbmVGb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnRvdWNoZWQgJiYgIWNyZWF0ZVpvbmVGb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnByaXN0aW5lXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJjcmVhdGVab25lRm9ybS5nZXQoJ2dyb3VwTmFtZScpPy5pbnZhbGlkICYmIGNyZWF0ZVpvbmVGb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnRvdWNoZWQgJiYgIWNyZWF0ZVpvbmVGb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnByaXN0aW5lXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjcmVhdGVab25lRm9ybS5nZXQoJ2dyb3VwTmFtZScpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPkdyb3VwIG5hbWUgaXMgcmVxdWlyZWQ8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjcmVhdGVab25lRm9ybS5nZXQoJ2dyb3VwTmFtZScpPy5lcnJvcnM/LlsnbWlubGVuZ3RoJ11cIj5Hcm91cCBuYW1lIG11c3QgYmUgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY3JlYXRlWm9uZUZvcm0uZ2V0KCdncm91cE5hbWUnKT8uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPlxyXG4gICAgICAgICAgU3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBub3QgYWxsb3dlZFxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFjdGlvbiBCdXR0b25zIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3Rlci1jdXN0b20gbXQtNFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgXHJcbiAgICAgICAgICAoY2xpY2spPVwib25TYXZlKClcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImNyZWF0ZVpvbmVGb3JtLmludmFsaWRcIj5cclxuICAgICAgICAgIHt7IGlzRWRpdE1vZGUgPyAnVXBkYXRlJyA6ICdDcmVhdGUnIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9mb3JtPlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|