ng-tailwind 4.4.35 → 4.4.36

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.
@@ -383,7 +383,7 @@ export class NgtMultiSelectComponent extends NgtBaseNgModel {
383
383
  NgtMultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtMultiSelectComponent, deps: [{ token: i1.NgtHttpService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i2.NgtFormComponent, optional: true, skipSelf: true }, { token: i3.NgtSectionComponent, optional: true, skipSelf: true }, { token: i4.NgtModalComponent, optional: true, skipSelf: true }, { token: i5.NgtStylizableDirective, optional: true, self: true }, { token: i6.ControlContainer, host: true, optional: true }, { token: i7.NgtTranslateService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
384
384
  NgtMultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtMultiSelectComponent, selector: "ngt-multi-select", inputs: { customOptionTemplate: "customOptionTemplate", customHeaderTemplate: "customHeaderTemplate", label: "label", helpTitle: "helpTitle", helpText: "helpText", helpTextColor: "helpTextColor", helperReverseYPosition: "helperReverseYPosition", helperAutoXReverse: "helperAutoXReverse", shining: "shining", loading: "loading", bindLabel: "bindLabel", bindSearch: "bindSearch", itemsPerPage: "itemsPerPage", name: "name", remoteResource: "remoteResource", items: "items", searchable: "searchable", isRequired: "isRequired", isDisabled: "isDisabled" }, outputs: { onDataChange: "onDataChange" }, host: { listeners: { "scroll": "onScroll($event)" } }, providers: [
385
385
  NgtMakeProvider(NgtMultiSelectComponent)
386
- ], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true }, { propertyName: "inputSearch", first: true, predicate: ["inputSearch"], descendants: true }, { propertyName: "elementCheckboxTemplate", first: true, predicate: ["elementCheckboxTemplate"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"label && !shining\" class=\"flex text-sm\" [class.mb-2]='!hasValidationErrors()'>\n {{ label }}:\n\n <span *ngIf=\"isRequired\" class=\"text-red-500 font-bold text-md ml-1\">*</span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\n [helperReverseYPosition]=\"helperReverseYPosition\" [autoXReverse]=\"helperAutoXReverse\" class=\"ml-1\">\n {{ helpText }}\n </ngt-helper>\n</label>\n\n<ngt-validation [hidden]='shining' class=\"block mb-1\" [control]='formControl' [container]='formContainer'>\n</ngt-validation>\n\n<div class=\"{{ shining ? 'hidden' : 'flex flex-col' }} border w-full rounded {{ ngtStyle.compile(['h']) }}\"\n style=\"min-height: 16rem;\" [class.border-red-500]='hasValidationErrors()' [class.disabled-background]='disabled()'>\n <div class=\"flex items-center w-full p-2 border-b\">\n <ngt-checkbox class=\"flex\" title=\"Selecionar todos\" [label]=\"!searchable ? 'Selecionar todos' : ''\"\n [(ngModel)]=\"selectAllCheckbox\" [name]=\"selectAllCheckboxName\" [isClickDisabled]='true'\n [isDisabled]='loading || disabled()' h='h-5' w='w-5' (click)='selectAll()' ngt-stylizable>\n </ngt-checkbox>\n\n <ngt-input *ngIf=\"searchable\" class=\"block w-full pl-2\" [name]='searchInputName' [(ngModel)]='searchTerm'\n placeholder='Buscar...' [allowClear]='true' [jit]='true' h='h-10' (ngModelChange)='search($event)'\n [loading]='loading' [isDisabled]='disabled()' ngt-stylizable #inputSearch>\n </ngt-input>\n </div>\n\n <div *ngIf=\"loading\" class=\"flex flex-col gap-3 px-3 h-full w-full cursor-wait\">\n <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n </div>\n\n <div class=\"w-full overflow-y-auto text-sm {{ loading ? 'hidden' : 'flex flex-col' }}\" (scroll)='onScroll($event)'\n #containerRef>\n <ng-container *ngIf=\"customHeaderTemplate\" [ngTemplateOutlet]=\"customHeaderTemplate\">\n </ng-container>\n\n <ng-container *ngFor=\"let element of getSelectableElements(); let i = index\">\n <div class=\"flex w-full items-center hover:bg-gray-200 {{ disabled() ? 'cursor-not-allowed' : 'cursor-pointer' }}\"\n [class.p-2]='!customOptionTemplate' (click)='toggleItem(element, $event)'>\n <ng-template let-element #elementCheckboxTemplate>\n <ngt-checkbox class=\"flex pr-2\" [name]='element.uuid' [(ngModel)]=\"element.isSelected\"\n (ngModelChange)='onNativeChange(element)' [isClickDisabled]='true' [isDisabled]='disabled()'\n h='h-5' w='w-5' (click)='toggleItem(element, $event)' ngt-stylizable>\n </ngt-checkbox>\n </ng-template>\n\n <ng-template let-element #defaultOptionTemplate>\n {{ getSelectableElementValue(element) }}\n </ng-template>\n\n <ng-container *ngIf=\"!customOptionTemplate\" [ngTemplateOutlet]=\"elementCheckboxTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: element }\">\n </ng-container>\n\n <ng-container [ngTemplateOutlet]=\"customOptionTemplate || defaultOptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: element, index: i }\">\n </ng-container>\n </div>\n </ng-container>\n\n <p *ngIf=\"!getSelectableElements()?.length\" class=\"text-center mt-4\">\n {{ ngtTranslateService.ngtMultiSelectNoDataFound }}\n </p>\n </div>\n</div>\n\n<div class=\"{{ shining ? 'hidden' : 'flex' }} w-full items-center mt-2\">\n <span class=\"text-sm mr-4\">\n {{ selectedElements?.length || 0 }} / {{ itemsTotal || 0 }}\n </span>\n\n <ngt-checkbox class=\"flex\" label=\"Visualizar selecionados\" [name]='displayOnlySelectedName'\n [(ngModel)]=\"displayOnlySelected\" [isDisabled]='loading' h='h-5' w='w-5' ngt-stylizable>\n </ngt-checkbox>\n</div>\n\n<ngt-shining *ngIf='shining' class=\"block w-full {{ ngtStyle.compile(['h']) }}\" style=\"min-height: 16rem;\"\n rounded='rounded' ngt-stylizable>\n</ngt-shining>\n\n<input *ngIf='componentReady' type='hidden' [ngModel]='value' [name]='name' [value]='value'>", styles: [".disabled-background{border:solid #cbd5e0 1px!important;background-color:#fafafa!important;border-radius:.25rem!important;padding:1px!important}.div-loader{width:4rem;height:4rem;border:3px solid #a0aec038;border-top-color:#a0aec0;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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"] }, { kind: "component", type: i9.NgtValidationComponent, selector: "ngt-validation", inputs: ["control", "container", "minValue", "minLength"] }, { kind: "component", type: i10.NgtShiningComponent, selector: "ngt-shining", inputs: ["shiningWidth"] }, { kind: "component", type: i11.NgtHelperComponent, selector: "ngt-helper", inputs: ["helpTextColor", "helpText", "helpTitle", "icon", "iconSize", "iconColor", "iconTitle", "tooltipSize", "autoXReverse", "helperReverseYPosition"] }, { kind: "component", type: i12.NgtInputComponent, selector: "ngt-input", inputs: ["label", "placeholder", "shining", "loading", "helpTitle", "helpTextColor", "helpText", "innerLeftIcon", "innerLeftIconColor", "innerRightIcon", "innerRightIconColor", "decimalMaskPrecision", "showCharactersLength", "uppercase", "isDisabled", "isReadonly", "showRoundedIcon", "type", "name", "mask", "focus", "allowClear", "jit", "findExistingResource", "allowPhoneValidation", "validatePassword", "passwordableId", "passwordPolicyId", "isRequired", "uniqueResource", "minValue", "maxValue", "maxLength", "minLength", "match", "multipleOf", "validateMinValueOnMask", "externalServerDependency", "helperReverseYPosition", "helperAutoXReverse"], outputs: ["onClickLeftIcon", "onClickRightIcon", "validatePhoneResult"] }, { kind: "component", type: i13.NgtCheckboxComponent, selector: "ngt-checkbox", inputs: ["label", "shining", "isDisabled", "isClickDisabled", "name", "mode", "helpTitle", "helpTextColor", "helpText", "helperAutoXReverse"] }, { kind: "directive", type: i5.NgtStylizableDirective, selector: "[ngt-stylizable]", inputs: ["color", "color.text", "color.bg", "color.border", "h", "w", "p", "px", "py", "pt", "pr", "pb", "pl", "m", "mx", "my", "mt", "mr", "mb", "ml", "border", "shadow", "rounded", "font", "text", "breakWords", "overflow", "position", "justifyContent", "cursor", "fontCase"] }], viewProviders: [
386
+ ], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true }, { propertyName: "inputSearch", first: true, predicate: ["inputSearch"], descendants: true }, { propertyName: "elementCheckboxTemplate", first: true, predicate: ["elementCheckboxTemplate"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"label && !shining\" class=\"flex text-sm\" [class.mb-2]='!hasValidationErrors()'>\n {{ label }}:\n\n <span *ngIf=\"isRequired\" class=\"text-red-500 font-bold text-md ml-1\">*</span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\n [helperReverseYPosition]=\"helperReverseYPosition\" [autoXReverse]=\"helperAutoXReverse\" class=\"ml-1\">\n {{ helpText }}\n </ngt-helper>\n</label>\n\n<ngt-validation [hidden]='shining' class=\"block mb-1\" [control]='formControl' [container]='formContainer'>\n</ngt-validation>\n\n<div class=\"{{ shining ? 'hidden' : 'flex flex-col' }} border w-full rounded {{ ngtStyle.compile(['h']) }}\"\n style=\"min-height: 16rem;\" [class.border-red-500]='hasValidationErrors()' [class.disabled-background]='disabled()'>\n <div class=\"flex items-center w-full p-2 border-b\">\n <ngt-checkbox class=\"flex\" title=\"Selecionar todos\" [label]=\"!searchable ? 'Selecionar todos' : ''\"\n [(ngModel)]=\"selectAllCheckbox\" [name]=\"selectAllCheckboxName\" [isClickDisabled]='true'\n [isDisabled]='loading || disabled()' h='h-5' w='w-5' (click)='selectAll()' ngt-stylizable>\n </ngt-checkbox>\n\n <ngt-input *ngIf=\"searchable\" class=\"block w-full pl-2\" [name]='searchInputName' [(ngModel)]='searchTerm'\n placeholder='Buscar...' [allowClear]='true' [jit]='true' h='h-10' (ngModelChange)='search($event)'\n [loading]='loading' [isDisabled]='disabled()' ngt-stylizable #inputSearch>\n </ngt-input>\n </div>\n\n <div *ngIf=\"loading\" class=\"flex flex-col gap-3 px-3 h-full w-full cursor-wait\">\n <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n </div>\n\n <div class=\"w-full overflow-y-auto text-sm {{ loading ? 'hidden' : 'flex flex-col' }}\" (scroll)='onScroll($event)'\n #containerRef>\n <ng-container *ngIf=\"customHeaderTemplate\" [ngTemplateOutlet]=\"customHeaderTemplate\">\n </ng-container>\n\n <ng-container *ngFor=\"let element of getSelectableElements(); let i = index\">\n <div class=\"flex w-full items-center hover:bg-gray-200 {{ disabled() ? 'cursor-not-allowed' : 'cursor-pointer' }}\"\n [class.p-2]='!customOptionTemplate' (click)='toggleItem(element, $event)'>\n <ng-template let-element #elementCheckboxTemplate>\n <ngt-checkbox class=\"flex pr-2\" [name]='element.uuid' [(ngModel)]=\"element.isSelected\"\n (ngModelChange)='onNativeChange(element)' [isClickDisabled]='true' [isDisabled]='disabled()'\n h='h-5' w='w-5' (click)='toggleItem(element, $event)' ngt-stylizable>\n </ngt-checkbox>\n </ng-template>\n\n <ng-template let-element #defaultOptionTemplate>\n {{ getSelectableElementValue(element) }}\n </ng-template>\n\n <ng-container *ngIf=\"!customOptionTemplate\" [ngTemplateOutlet]=\"elementCheckboxTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: element }\">\n </ng-container>\n\n <ng-container [ngTemplateOutlet]=\"customOptionTemplate || defaultOptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: element, index: i }\">\n </ng-container>\n </div>\n </ng-container>\n\n <p *ngIf=\"!getSelectableElements()?.length\" class=\"text-center mt-4\">\n {{ ngtTranslateService.ngtMultiSelectNoDataFound }}\n </p>\n </div>\n</div>\n\n<div class=\"{{ shining ? 'hidden' : 'flex' }} w-full items-center mt-2\">\n <span class=\"text-sm mr-4\">\n {{ selectedElements?.length || 0 }} / {{ itemsTotal || 0 }}\n </span>\n\n <ngt-checkbox class=\"flex\" label=\"Visualizar selecionados\" [name]='displayOnlySelectedName'\n [(ngModel)]=\"displayOnlySelected\" [isDisabled]='loading' h='h-5' w='w-5' ngt-stylizable>\n </ngt-checkbox>\n</div>\n\n<ngt-shining *ngIf='shining' class=\"block w-full {{ ngtStyle.compile(['h']) }}\" style=\"min-height: 16rem;\"\n rounded='rounded' ngt-stylizable>\n</ngt-shining>\n\n<input *ngIf='componentReady' type='hidden' [ngModel]='value' [name]='name' [value]='value'>", styles: [".disabled-background{border:solid #cbd5e0 1px!important;background-color:#fafafa!important;border-radius:.25rem!important;padding:1px!important}.div-loader{width:4rem;height:4rem;border:3px solid #a0aec038;border-top-color:#a0aec0;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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"] }, { kind: "component", type: i9.NgtValidationComponent, selector: "ngt-validation", inputs: ["control", "container", "minValue", "minLength"] }, { kind: "component", type: i10.NgtShiningComponent, selector: "ngt-shining", inputs: ["shiningWidth"] }, { kind: "component", type: i11.NgtHelperComponent, selector: "ngt-helper", inputs: ["helpTextColor", "helpText", "helpTitle", "icon", "iconSize", "iconColor", "iconTitle", "tooltipSize", "autoXReverse", "helperReverseYPosition"] }, { kind: "component", type: i12.NgtInputComponent, selector: "ngt-input", inputs: ["label", "placeholder", "shining", "loading", "helpTitle", "helpTextColor", "helpText", "innerLeftIcon", "innerLeftIconColor", "innerRightIcon", "innerRightIconColor", "decimalMaskPrecision", "showCharactersLength", "uppercase", "customInnerContentTemplate", "isDisabled", "isReadonly", "showRoundedIcon", "type", "name", "mask", "focus", "allowClear", "jit", "findExistingResource", "allowPhoneValidation", "validatePassword", "passwordableId", "passwordPolicyId", "isRequired", "uniqueResource", "minValue", "maxValue", "maxLength", "minLength", "match", "multipleOf", "validateMinValueOnMask", "externalServerDependency", "helperReverseYPosition", "helperAutoXReverse"], outputs: ["onClickLeftIcon", "onClickRightIcon", "validatePhoneResult"] }, { kind: "component", type: i13.NgtCheckboxComponent, selector: "ngt-checkbox", inputs: ["label", "shining", "isDisabled", "isClickDisabled", "name", "mode", "helpTitle", "helpTextColor", "helpText", "helperAutoXReverse"] }, { kind: "directive", type: i5.NgtStylizableDirective, selector: "[ngt-stylizable]", inputs: ["color", "color.text", "color.bg", "color.border", "h", "w", "p", "px", "py", "pt", "pr", "pb", "pl", "m", "mx", "my", "mt", "mr", "mb", "ml", "border", "shadow", "rounded", "font", "text", "breakWords", "overflow", "position", "justifyContent", "cursor", "fontCase"] }], viewProviders: [
387
387
  { provide: ControlContainer, useExisting: NgForm }
388
388
  ], encapsulation: i0.ViewEncapsulation.None });
389
389
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtMultiSelectComponent, decorators: [{
@@ -468,4 +468,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
468
468
  type: HostListener,
469
469
  args: ['scroll', ['$event']]
470
470
  }] } });
471
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LW11bHRpLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvY29tcG9uZW50cy9uZ3QtbXVsdGktc2VsZWN0L25ndC1tdWx0aS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LW11bHRpLXNlbGVjdC9uZ3QtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLElBQUksRUFDSixZQUFZLEVBRVosS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUVKLFFBQVEsRUFFUixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWtCNUYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGNBQWM7SUFvRXZELFlBQ1ksY0FBOEIsRUFDOUIsUUFBa0IsRUFDbEIsY0FBaUMsRUFHakMsT0FBeUIsRUFHekIsVUFBK0IsRUFHL0IsUUFBMkIsRUFHM0Isc0JBQThDLEVBRy9DLGFBQStCLEVBRy9CLG1CQUF3QztRQUUvQyxLQUFLLEVBQUUsQ0FBQztRQXRCQSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixtQkFBYyxHQUFk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LEtBQUs7Z0JBR1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUVXLFlBQVk7c0JBQTVCLE1BQU07Z0JBbUZBLFFBQVE7c0JBRGQsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0LFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFNraXBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3RCYXNlTmdNb2RlbCwgTmd0TWFrZVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vYmFzZS9uZ3QtYmFzZS1uZy1tb2RlbCc7XG5pbXBvcnQgeyBOZ3RTdHlsaXphYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvdXVpZCc7XG5pbXBvcnQgeyBOZ3RIdHRwUGFnaW5hdGlvbiwgTmd0SHR0cFJlc3BvbnNlLCBOZ3RIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAvbmd0LWh0dHAuc2VydmljZSc7XG5pbXBvcnQgeyBOZ3RUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHR0cC9uZ3QtdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmd0U3R5bGl6YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5ndEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9uZ3QtZm9ybS9uZ3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9uZ3QtaW5wdXQvbmd0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3RTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbmd0LXNlY3Rpb24vbmd0LXNlY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5ndE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbmd0LW1vZGFsL25ndC1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1tdWx0aS1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZ3QtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL25ndC1tdWx0aS1zZWxlY3QuY29tcG9uZW50LmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBOZ3RNYWtlUHJvdmlkZXIoTmd0TXVsdGlTZWxlY3RDb21wb25lbnQpXG4gICAgXSxcbiAgICB2aWV3UHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3RNdWx0aVNlbGVjdENvbXBvbmVudCBleHRlbmRzIE5ndEJhc2VOZ01vZGVsIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyUmVmJykgcHVibGljIGNvbnRhaW5lclJlZjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdpbnB1dFNlYXJjaCcpIHB1YmxpYyBpbnB1dFNlYXJjaDogTmd0SW5wdXRDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnZWxlbWVudENoZWNrYm94VGVtcGxhdGUnKSBwdWJsaWMgZWxlbWVudENoZWNrYm94VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogVmlzdWFsICovXG4gICAgQElucHV0KCkgcHVibGljIGN1c3RvbU9wdGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21IZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscFRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBUZXh0OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBUZXh0Q29sb3I6IHN0cmluZyA9ICd0ZXh0LWdyZWVuLTUwMCc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBlclJldmVyc2VZUG9zaXRpb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBlckF1dG9YUmV2ZXJzZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIHNoaW5pbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEJlaGF2aW9yICovXG4gICAgQElucHV0KCkgcHVibGljIGJpbmRMYWJlbDogc3RyaW5nIHwgRnVuY3Rpb24gPSAnbmFtZSc7XG4gICAgQElucHV0KCkgcHVibGljIGJpbmRTZWFyY2g6IHN0cmluZyA9ICduYW1lJztcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbXNQZXJQYWdlOiBudW1iZXIgPSAxNTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyByZW1vdGVSZXNvdXJjZTogYW55O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtczogQXJyYXk8YW55PiA9IFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBWYWxpZGF0aW9uICovXG4gICAgQElucHV0KCkgcHVibGljIGlzUmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIG9uRGF0YUNoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PE5ndFNlbGVjdENvbnRhaW5lclNlbGVjdGFibGVFbGVtZW50SW50ZXJmYWNlPj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgc2VhcmNoVGVybTogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIHNlYXJjaElucHV0TmFtZTogc3RyaW5nID0gdXVpZCgpO1xuXG4gICAgcHVibGljIHNlbGVjdEFsbENoZWNrYm94TmFtZTogc3RyaW5nID0gdXVpZCgpO1xuICAgIHB1YmxpYyBkaXNwbGF5T25seVNlbGVjdGVkTmFtZTogc3RyaW5nID0gdXVpZCgpO1xuXG4gICAgcHVibGljIHNlbGVjdGVkRWxlbWVudHM6IEFycmF5PE5ndFNlbGVjdENvbnRhaW5lclNlbGVjdGFibGVFbGVtZW50SW50ZXJmYWNlPiA9IFtdO1xuICAgIHB1YmxpYyBpdGVtc1RvdGFsOiBudW1iZXI7XG4gICAgcHVibGljIHNlbGVjdEFsbENoZWNrYm94OiBib29sZWFuO1xuICAgIHB1YmxpYyBkaXNwbGF5T25seVNlbGVjdGVkOiBib29sZWFuO1xuXG4gICAgcHVibGljIG5hdGl2ZU5hbWU6IHN0cmluZyA9IHV1aWQoKTtcbiAgICBwdWJsaWMgbmF0aXZlVmFsdWU6IGFueTtcblxuICAgIHB1YmxpYyBuZ3RTdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XG4gICAgcHVibGljIHNlbGVjdGFibGVFbGVtZW50czogQXJyYXk8Tmd0U2VsZWN0Q29udGFpbmVyU2VsZWN0YWJsZUVsZW1lbnRJbnRlcmZhY2U+ID0gW107XG4gICAgcHVibGljIHNlbGVjdGFibGVFbGVtZW50c09uU2VhcmNoOiBBcnJheTxOZ3RTZWxlY3RDb250YWluZXJTZWxlY3RhYmxlRWxlbWVudEludGVyZmFjZT4gPSBbXTtcbiAgICBwdWJsaWMgY29tcG9uZW50UmVhZHk6IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIHBhZ2luYXRpb246IE5ndEh0dHBQYWdpbmF0aW9uID0ge1xuICAgICAgICBjb3VudDogbnVsbCxcbiAgICAgICAgcGFnZTogMSxcbiAgICAgICAgcGFnZXM6IG51bGwsXG4gICAgICAgIHRvdGFsOiBudWxsLFxuICAgICAgICBmcm9tOiBudWxsLFxuICAgICAgICB0bzogbnVsbCxcbiAgICAgICAgcGVyX3BhZ2U6IG51bGxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG4gICAgcHJpdmF0ZSBpblNlYXJjaDogYm9vbGVhbjtcbiAgICBwcml2YXRlIHNlYXJjaFRpbWVvdXQ6IGFueTtcbiAgICBwcml2YXRlIHByZXZpb3VzU2VhcmNoVGVybTogc3RyaW5nID0gJyc7XG4gICAgcHJpdmF0ZSBiZWNhbWVWaXNpYmxlOiBib29sZWFuO1xuICAgIHByaXZhdGUgc2VsZWN0YWJsZVJlc291cmNlc0NvdW50OiBudW1iZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgbmd0SHR0cFNlcnZpY2U6IE5ndEh0dHBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG5cbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKClcbiAgICAgICAgcHJpdmF0ZSBuZ3RGb3JtOiBOZ3RGb3JtQ29tcG9uZW50LFxuXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpXG4gICAgICAgIHByaXZhdGUgbmd0U2VjdGlvbjogTmd0U2VjdGlvbkNvbXBvbmVudCxcblxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKVxuICAgICAgICBwcml2YXRlIG5ndE1vZGFsOiBOZ3RNb2RhbENvbXBvbmVudCxcblxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpXG4gICAgICAgIHByaXZhdGUgbmd0U3R5bGl6YWJsZURpcmVjdGl2ZTogTmd0U3R5bGl6YWJsZURpcmVjdGl2ZSxcblxuICAgICAgICBAT3B0aW9uYWwoKSBASG9zdCgpXG4gICAgICAgIHB1YmxpYyBmb3JtQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIHB1YmxpYyBuZ3RUcmFuc2xhdGVTZXJ2aWNlOiBOZ3RUcmFuc2xhdGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmd0Rm9ybSkge1xuICAgICAgICAgICAgdGhpcy5zaGluaW5nID0gdGhpcy5uZ3RGb3JtLmlzU2hpbmluZygpO1xuXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLm5ndEZvcm0ub25TaGluaW5nQ2hhbmdlLnN1YnNjcmliZSgoc2hpbmluZzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoaW5pbmcgPSBzaGluaW5nO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmd0U3R5bGl6YWJsZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5uZ3RTdHlsZSA9IHRoaXMubmd0U3R5bGl6YWJsZURpcmVjdGl2ZS5nZXROZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uZ3RTdHlsZSA9IG5ldyBOZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZ3RTdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdOZ3RNdWx0aVNlbGVjdCcsIHsgaDogJ2gtNjQnIH0pO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3Njcm9sbCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uU2Nyb2xsKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNTY3JvbGxFbmQgPSBldmVudC50YXJnZXQuc2Nyb2xsVG9wICYmIGV2ZW50LnRhcmdldC5vZmZzZXRIZWlnaHQgKyBldmVudC50YXJnZXQuc2Nyb2xsVG9wID49IChldmVudC50YXJnZXQuc2Nyb2xsSGVpZ2h0IC0gMzApO1xuXG4gICAgICAgIGlmIChpc1Njcm9sbEVuZCAmJiAhdGhpcy5sb2FkaW5nICYmICF0aGlzLmRpc3BsYXlPbmx5U2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3RhYmxlRWxlbWVudHM/Lmxlbmd0aFxuICAgICAgICAgICAgJiYgdGhpcy5wYWdpbmF0aW9uLnBlcl9wYWdlIDwgdGhpcy5wYWdpbmF0aW9uLnRvdGFsKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UGVyUGFnZSA9IHR5cGVvZiB0aGlzLnBhZ2luYXRpb24ucGVyX3BhZ2UgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBOdW1iZXIucGFyc2VJbnQodGhpcy5wYWdpbmF0aW9uLnBlcl9wYWdlKVxuICAgICAgICAgICAgICAgIDogdGhpcy5wYWdpbmF0aW9uLnBlcl9wYWdlO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubG9hZERhdGEoY3VycmVudFBlclBhZ2UgKyB0aGlzLml0ZW1zUGVyUGFnZSwgdGhpcy5zZWFyY2hUZXJtKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlIGVsZW1lbnQgbXVzdCBiZSBpbnNpZGUgYSA8Zm9ybSAjZm9ybT0nbmdGb3JtJz4gdGFnIVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlIGVsZW1lbnQgbXVzdCBjb250YWluIGEgbmFtZSBhdHRyaWJ1dGUhXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmJlY2FtZVZpc2libGUgJiYgIXRoaXMuaXNIaWRkZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5iZWNhbWVWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSgpLnRoZW4oKCkgPT4gdGhpcy5pbml0Q29tcG9uZW50VmFsaWRhdGlvbigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmlzUmVxdWlyZWQgJiYgdGhpcy5jb21wb25lbnRSZWFkeSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWxpZGF0aW9ucygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5T25seVNlbGVjdGVkID0gdGhpcy5kaXNhYmxlZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuaXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZFNlbGVjdGFibGVFbGVtZW50cyhjaGFuZ2VzLml0ZW1zLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLnJlbW90ZVJlc291cmNlICYmIHRoaXMuYmVjYW1lVmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSgpLnRoZW4oKCkgPT4gdGhpcy5pbml0Q29tcG9uZW50VmFsaWRhdGlvbigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLml0ZW1zUGVyUGFnZSkge1xuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnBlcl9wYWdlID0gY2hhbmdlcy5pdGVtc1BlclBhZ2UuY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTdWJzY3JpcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEZvY3VzKCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5wdXRTZWFyY2guc2V0Rm9jdXMoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlZnJlc2goaXRlbXNQZXJQYWdlPzogbnVtYmVyLCBzZWFyY2hUZXJtPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gaXRlbXNQZXJQYWdlICE9PSB1bmRlZmluZWQgPyBpdGVtc1BlclBhZ2UgOiB0aGlzLml0ZW1zUGVyUGFnZTtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gc2VhcmNoVGVybSAhPT0gdW5kZWZpbmVkID8gc2VhcmNoVGVybSA6IHRoaXMuc2VhcmNoVGVybTtcblxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkRGF0YSh0aGlzLml0ZW1zUGVyUGFnZSwgdGhpcy5zZWFyY2hUZXJtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRpbmcgJiYgIXRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxDaGVja2JveCA9ICF0aGlzLnNlbGVjdEFsbENoZWNrYm94O1xuXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gW107XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gW107XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBbXTtcblxuICAgICAgICAgICAgY29uc3QgcGVycGFnZSA9IHRoaXMuc2VsZWN0QWxsQ2hlY2tib3ggPyB0aGlzLnBhZ2luYXRpb24udG90YWwgOiB0aGlzLml0ZW1zUGVyUGFnZTtcblxuICAgICAgICAgICAgdGhpcy5sb2FkRGF0YShwZXJwYWdlLCB0aGlzLnNlYXJjaFRlcm0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lclJlZj8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG8oeyB0b3A6IDAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiBlbGVtZW50LmlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdEFsbENoZWNrYm94KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RBbGxDaGVja2JveCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gdGhpcy5zZWxlY3RhYmxlRWxlbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RFbGVtZW50cyhlbGVtZW50czogQXJyYXk8YW55Pik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudElkcyA9IHRoaXMuaXNDb2xvcXVlbnRSZXNvdXJjZXMoKSA/IGVsZW1lbnRzLm1hcChlbGVtZW50ID0+IGVsZW1lbnQuZ2V0QXBpSWQoKSkgOiBlbGVtZW50cztcblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRWxlbWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAoc2VsZWN0YWJsZUVsZW1lbnQ6IE5ndFNlbGVjdENvbnRhaW5lclNlbGVjdGFibGVFbGVtZW50SW50ZXJmYWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2VsZWN0YWJsZUVsZW1lbnQudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGFibGVFbGVtZW50LmlzU2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pc0NvbG9xdWVudFJlc291cmNlcygpICYmIGVsZW1lbnRJZHMuaW5jbHVkZXModmFsdWUuZ2V0QXBpSWQoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZWxlbWVudElkcy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYmxlRWxlbWVudC5pc1NlbGVjdGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFbGVtZW50U2VsZWN0aW9uKHNlbGVjdGFibGVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlSXRlbShzZWxlY3RhYmxlRWxlbWVudDogTmd0U2VsZWN0Q29udGFpbmVyU2VsZWN0YWJsZUVsZW1lbnRJbnRlcmZhY2UsIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQ/LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICAgICAgICBzZWxlY3RhYmxlRWxlbWVudC5pc1NlbGVjdGVkID0gIXNlbGVjdGFibGVFbGVtZW50LmlzU2VsZWN0ZWQ7XG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRWxlbWVudFNlbGVjdGlvbihzZWxlY3RhYmxlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25OYXRpdmVDaGFuZ2Uoc2VsZWN0YWJsZUVsZW1lbnQ6IE5ndFNlbGVjdENvbnRhaW5lclNlbGVjdGFibGVFbGVtZW50SW50ZXJmYWNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlYWR5KSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUVsZW1lbnRTZWxlY3Rpb24oc2VsZWN0YWJsZUVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNDaGFuZ2VzQmV0d2VlbkJpbmRpbmdzKHRoaXMudmFsdWUsIHRoaXMuc2VsZWN0ZWRFbGVtZW50cykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRzLm1hcChlID0+IGUudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZShzZWxlY3RlZEVsZW1lbnRzOiBBcnJheTxhbnk+KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoYW5nZXNCZXR3ZWVuQmluZGluZ3Moc2VsZWN0ZWRFbGVtZW50cywgdGhpcy5zZWxlY3RlZEVsZW1lbnRzKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRTZWxlY3RlZEVsZW1lbnRzKHNlbGVjdGVkRWxlbWVudHMpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRWxlbWVudHMuZmlsdGVyKGVsZW1lbnQgPT4gdGhpcy5pc1NlbGVjdGVkRWxlbWVudChlbGVtZW50KSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZWxlbWVudCA9PiBlbGVtZW50LmlzU2VsZWN0ZWQgPSB0cnVlKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzT25TZWFyY2guZmlsdGVyKGVsZW1lbnQgPT4gdGhpcy5pc1NlbGVjdGVkRWxlbWVudChlbGVtZW50KSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZWxlbWVudCA9PiBlbGVtZW50LmlzU2VsZWN0ZWQgPSB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gc2VsZWN0ZWRFbGVtZW50cz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0+ICh7IHV1aWQ6IHV1aWQoKSwgaXNTZWxlY3RlZDogdHJ1ZSwgdmFsdWU6IGVsZW1lbnQgfSlcbiAgICAgICAgICAgICAgICApID8/IFtdO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghc2VsZWN0ZWRFbGVtZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNlYXJjaCh0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlYWR5IHx8IHRlcm0gPT09IHVuZGVmaW5lZCB8fCB0ZXJtID09PSBudWxsIHx8IHRlcm0gPT09IHRoaXMucHJldmlvdXNTZWFyY2hUZXJtIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNTZWFyY2hUZXJtID0gdGVybTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3ggPSB0aGlzLnNlbGVjdGVkRWxlbWVudHM/Lmxlbmd0aCA9PSB0aGlzLnNlbGVjdGFibGVSZXNvdXJjZXNDb3VudDtcblxuICAgICAgICAgICAgaWYgKCF0ZXJtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pblNlYXJjaCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmluU2VhcmNoID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzT25TZWFyY2ggPSB0aGlzLnNlbGVjdGFibGVFbGVtZW50cy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPT4gdGhpcy5nZXRTZWxlY3RhYmxlRWxlbWVudFZhbHVlKGl0ZW0pLmluY2x1ZGVzKHRlcm0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSh0aGlzLml0ZW1zUGVyUGFnZSwgdGVybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDUwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNlbGVjdGFibGVFbGVtZW50cygpOiBBcnJheTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5TZWFyY2ggJiYgdGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlRWxlbWVudHNPblNlYXJjaDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRpc3BsYXlPbmx5U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRWxlbWVudHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlRWxlbWVudHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNlbGVjdGFibGVFbGVtZW50VmFsdWUoc2VsZWN0YWJsZUl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5iaW5kTGFiZWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJpbmRMYWJlbChzZWxlY3RhYmxlSXRlbS52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlbGVjdGFibGVJdGVtLnZhbHVlWydnZXRBdHRyaWJ1dGUnXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGFibGVJdGVtLnZhbHVlLmdldEF0dHJpYnV0ZSh0aGlzLmJpbmRMYWJlbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0YWJsZUl0ZW0udmFsdWVbdGhpcy5iaW5kTGFiZWxdO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNWYWxpZGF0aW9uRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbD8uZXJyb3JzICYmIChcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZGlydHkgfHwgKHRoaXMuZm9ybUNvbnRhaW5lciAmJiB0aGlzLmZvcm1Db250YWluZXJbJ3N1Ym1pdHRlZCddKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNEaXNhYmxlZCB8fCB0aGlzLmlzRGlzYWJsZWRCeVBhcmVudCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRWxlbWVudFNlbGVjdGlvbihzZWxlY3RhYmxlRWxlbWVudDogTmd0U2VsZWN0Q29udGFpbmVyU2VsZWN0YWJsZUVsZW1lbnRJbnRlcmZhY2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNlbGVjdGFibGVFbGVtZW50LmlzU2VsZWN0ZWQgJiYgIXRoaXMuaXNTZWxlY3RlZEVsZW1lbnQoc2VsZWN0YWJsZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMucHVzaChzZWxlY3RhYmxlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXNlbGVjdGFibGVFbGVtZW50LmlzU2VsZWN0ZWQgJiYgdGhpcy5pc1NlbGVjdGVkRWxlbWVudChzZWxlY3RhYmxlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50ID0+IHNlbGVjdGVkRWxlbWVudC51dWlkICE9PSBzZWxlY3RhYmxlRWxlbWVudC51dWlkXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLm9uTmF0aXZlQ2hhbmdlKHNlbGVjdGFibGVFbGVtZW50KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGlzcGxheU9ubHlTZWxlY3RlZCAmJiAhdGhpcy5zZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU9ubHlTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkRGF0YShwZXJwYWdlOiBudW1iZXIgPSB0aGlzLml0ZW1zUGVyUGFnZSwgc2VhcmNoVGVybT86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVtb3RlUmVzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHBlcnBhZ2UgPT0gdGhpcy5pdGVtc1BlclBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbFRvKHsgdG9wOiAwIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IHBlcnBhZ2U7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwYWdpbmF0aW9uOiBOZ3RIdHRwUGFnaW5hdGlvbiA9IHsgLi4udGhpcy5wYWdpbmF0aW9uLCAuLi57IHBlcl9wYWdlOiBwZXJwYWdlIH0gfTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gc2VhcmNoVGVybSA/IHsgW3RoaXMuYmluZFNlYXJjaF06IHNlYXJjaFRlcm0gfSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ3RIdHRwU2VydmljZS5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZVJlc291cmNlLCBmaWx0ZXJzLCBwYWdpbmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlOiBOZ3RIdHRwUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmRTZWxlY3RhYmxlRWxlbWVudHMocmVzcG9uc2UuZGF0YSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24gPSByZXNwb25zZS5tZXRhLnBhZ2luYXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtc1RvdGFsID0gdGhpcy5wYWdpbmF0aW9uLnRvdGFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGFibGVSZXNvdXJjZXNDb3VudCAmJiAhc2VhcmNoVGVybSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVSZXNvdXJjZXNDb3VudCA9IHRoaXMucGFnaW5hdGlvbi50b3RhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5kaXNwbGF5T25seVNlbGVjdGVkID0gdGhpcy5kaXNhYmxlZCgpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGhlIHByb3BlcnR5IFtyZW1vdGVSZXNvdXJjZV0gbmVlZHMgdG8gYmUgcHJlc2VudCB0byBiZSBhYmxlIHRvIG1ha2UgcmVtb3RlIHNlYXJjaCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRTZWxlY3RhYmxlRWxlbWVudHMoZGF0YTogQXJyYXk8YW55Pik6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRFbGVtZW50czogQXJyYXk8Tmd0U2VsZWN0Q29udGFpbmVyU2VsZWN0YWJsZUVsZW1lbnRJbnRlcmZhY2U+ID0gW107XG5cbiAgICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgYWxyZWFkeVNlbGVjdGVkID0gdGhpcy5maW5kU2VsZWN0ZWRFbGVtZW50KGl0ZW0pO1xuXG4gICAgICAgICAgICBpZiAoYWxyZWFkeVNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkRWxlbWVudHMucHVzaChhbHJlYWR5U2VsZWN0ZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRFbGVtZW50cy5wdXNoKHsgdXVpZDogdXVpZCgpLCBpc1NlbGVjdGVkOiBmYWxzZSwgdmFsdWU6IGl0ZW0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzID0gZm9ybWF0dGVkRWxlbWVudHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kU2VsZWN0ZWRFbGVtZW50cyhzZWxlY3RlZEVsZW1lbnRzOiBBcnJheTxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzLmZvckVhY2goc2VsZWN0YWJsZUVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkQmVTZWxlY3RlZDogYm9vbGVhbiA9ICEhc2VsZWN0ZWRFbGVtZW50cz8uZmluZChcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQgPT4gdGhpcy5jb21wYXJlV2l0aChzZWxlY3RlZEVsZW1lbnQsIHNlbGVjdGFibGVFbGVtZW50LnZhbHVlKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKHNob3VsZEJlU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RhYmxlRWxlbWVudC5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVsZW1lbnRTZWxlY3Rpb24oc2VsZWN0YWJsZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRDb21wb25lbnRWYWxpZGF0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb3JtQ29udGFpbmVyPy5jb250cm9sICYmICh0aGlzLmZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udGFpbmVyLmNvbnRyb2wuZ2V0KHRoaXMubmFtZSkpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udGFpbmVyLmNvbnRyb2wuZ2V0KHRoaXMubmFtZSk7XG4gICAgICAgICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb25zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZhbGlkYXRpb25zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzeW5jVmFsaWRhdG9ycyA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzUmVxdWlyZWQpIHtcbiAgICAgICAgICAgIHN5bmNWYWxpZGF0b3JzLnB1c2godGhpcy5pc1JlcXVpcmVkVmFsaWRhdG9yKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbGlkYXRvcnMoc3luY1ZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNSZXF1aXJlZFZhbGlkYXRvcigpOiBhbnkge1xuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7ICdyZXF1aXJlZCc6IHRydWUgfTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRTZWxlY3RlZEVsZW1lbnQoaXRlbTogYW55KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5maW5kKHNlbGVjdGVkRWxlbWVudCA9PiB0aGlzLmNvbXBhcmVXaXRoKHNlbGVjdGVkRWxlbWVudC52YWx1ZSwgaXRlbSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcGFyZVdpdGgoYTogYW55LCBiOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhWydnZXRBcGlJZCddID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBiWydnZXRBcGlJZCddID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5nZXRBcGlJZCgpID09IGIuZ2V0QXBpSWQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmlkICYmIGIuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBhLmlkID09IGIuaWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQ2hhbmdlc0JldHdlZW5CaW5kaW5ncyh2YWx1ZTogQXJyYXk8YW55PiwgbmF0aXZlVmFsdWU6IEFycmF5PGFueT4pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHZhbHVlPy5sZW5ndGggJiYgIXZhbHVlWzBdLnV1aWQpIHtcbiAgICAgICAgICAgIG5hdGl2ZVZhbHVlID0gbmF0aXZlVmFsdWUubWFwKGVsZW1lbnQgPT4gZWxlbWVudC52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShuYXRpdmVWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1NlbGVjdGVkRWxlbWVudChzZWxlY3RhYmxlRWxlbWVudDogTmd0U2VsZWN0Q29udGFpbmVyU2VsZWN0YWJsZUVsZW1lbnRJbnRlcmZhY2UpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZEVsZW1lbnRzLmZpbmQoc2VsZWN0ZWRFbGVtZW50ID0+IHNlbGVjdGVkRWxlbWVudC51dWlkID09PSBzZWxlY3RhYmxlRWxlbWVudC51dWlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuY29udGFpbmVyUmVmPy5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQ29sb3F1ZW50UmVzb3VyY2VzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlRWxlbWVudHM/Lmxlbmd0aCAmJiB0eXBlb2YgdGhpcy5zZWxlY3RhYmxlRWxlbWVudHNbMF0udmFsdWVbJ2dldEFwaUlkJ10gPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0Rpc2FibGVkQnlQYXJlbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5ndEZvcm0/LmlzRGlzYWJsZWRcbiAgICAgICAgICAgIHx8IHRoaXMubmd0U2VjdGlvbj8uaXNEaXNhYmxlZFxuICAgICAgICAgICAgfHwgdGhpcy5uZ3RNb2RhbD8uaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0U2VsZWN0Q29udGFpbmVyU2VsZWN0YWJsZUVsZW1lbnRJbnRlcmZhY2Uge1xuICAgIHV1aWQ6IHN0cmluZztcbiAgICBpc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIHZhbHVlOiBhbnk7XG59XG4iLCI8bGFiZWwgKm5nSWY9XCJsYWJlbCAmJiAhc2hpbmluZ1wiIGNsYXNzPVwiZmxleCB0ZXh0LXNtXCIgW2NsYXNzLm1iLTJdPSchaGFzVmFsaWRhdGlvbkVycm9ycygpJz5cbiAgICB7eyBsYWJlbCB9fTpcblxuICAgIDxzcGFuICpuZ0lmPVwiaXNSZXF1aXJlZFwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIGZvbnQtYm9sZCB0ZXh0LW1kIG1sLTFcIj4qPC9zcGFuPlxuXG4gICAgPG5ndC1oZWxwZXIgKm5nSWY9XCJoZWxwVGV4dFwiIFtoZWxwVGl0bGVdPVwiaGVscFRpdGxlXCIgW2ljb25Db2xvcl09XCJoZWxwVGV4dENvbG9yXCJcbiAgICAgICAgW2hlbHBlclJldmVyc2VZUG9zaXRpb25dPVwiaGVscGVyUmV2ZXJzZVlQb3NpdGlvblwiIFthdXRvWFJldmVyc2VdPVwiaGVscGVyQXV0b1hSZXZlcnNlXCIgY2xhc3M9XCJtbC0xXCI+XG4gICAgICAgIHt7IGhlbHBUZXh0IH19XG4gICAgPC9uZ3QtaGVscGVyPlxuPC9sYWJlbD5cblxuPG5ndC12YWxpZGF0aW9uIFtoaWRkZW5dPSdzaGluaW5nJyBjbGFzcz1cImJsb2NrIG1iLTFcIiBbY29udHJvbF09J2Zvcm1Db250cm9sJyBbY29udGFpbmVyXT0nZm9ybUNvbnRhaW5lcic+XG48L25ndC12YWxpZGF0aW9uPlxuXG48ZGl2IGNsYXNzPVwie3sgc2hpbmluZyA/ICdoaWRkZW4nIDogJ2ZsZXggZmxleC1jb2wnIH19IGJvcmRlciB3LWZ1bGwgcm91bmRlZCB7eyBuZ3RTdHlsZS5jb21waWxlKFsnaCddKSB9fVwiXG4gICAgc3R5bGU9XCJtaW4taGVpZ2h0OiAxNnJlbTtcIiBbY2xhc3MuYm9yZGVyLXJlZC01MDBdPSdoYXNWYWxpZGF0aW9uRXJyb3JzKCknIFtjbGFzcy5kaXNhYmxlZC1iYWNrZ3JvdW5kXT0nZGlzYWJsZWQoKSc+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHctZnVsbCBwLTIgYm9yZGVyLWJcIj5cbiAgICAgICAgPG5ndC1jaGVja2JveCBjbGFzcz1cImZsZXhcIiB0aXRsZT1cIlNlbGVjaW9uYXIgdG9kb3NcIiBbbGFiZWxdPVwiIXNlYXJjaGFibGUgPyAnU2VsZWNpb25hciB0b2RvcycgOiAnJ1wiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdEFsbENoZWNrYm94XCIgW25hbWVdPVwic2VsZWN0QWxsQ2hlY2tib3hOYW1lXCIgW2lzQ2xpY2tEaXNhYmxlZF09J3RydWUnXG4gICAgICAgICAgICBbaXNEaXNhYmxlZF09J2xvYWRpbmcgfHwgZGlzYWJsZWQoKScgaD0naC01JyB3PSd3LTUnIChjbGljayk9J3NlbGVjdEFsbCgpJyBuZ3Qtc3R5bGl6YWJsZT5cbiAgICAgICAgPC9uZ3QtY2hlY2tib3g+XG5cbiAgICAgICAgPG5ndC1pbnB1dCAqbmdJZj1cInNlYXJjaGFibGVcIiBjbGFzcz1cImJsb2NrIHctZnVsbCBwbC0yXCIgW25hbWVdPSdzZWFyY2hJbnB1dE5hbWUnIFsobmdNb2RlbCldPSdzZWFyY2hUZXJtJ1xuICAgICAgICAgICAgcGxhY2Vob2xkZXI9J0J1c2Nhci4uLicgW2FsbG93Q2xlYXJdPSd0cnVlJyBbaml0XT0ndHJ1ZScgaD0naC0xMCcgKG5nTW9kZWxDaGFuZ2UpPSdzZWFyY2goJGV2ZW50KSdcbiAgICAgICAgICAgIFtsb2FkaW5nXT0nbG9hZGluZycgW2lzRGlzYWJsZWRdPSdkaXNhYmxlZCgpJyBuZ3Qtc3R5bGl6YWJsZSAjaW5wdXRTZWFyY2g+XG4gICAgICAgIDwvbmd0LWlucHV0PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTMgcHgtMyBoLWZ1bGwgdy1mdWxsIGN1cnNvci13YWl0XCI+XG4gICAgICAgIDxuZ3Qtc2hpbmluZyBjbGFzcz1cImgtMTAgdy1mdWxsXCI+PC9uZ3Qtc2hpbmluZz5cbiAgICAgICAgPG5ndC1zaGluaW5nIGNsYXNzPVwiaC0xMCB3LWZ1bGxcIj48L25ndC1zaGluaW5nPlxuICAgICAgICA8bmd0LXNoaW5pbmcgY2xhc3M9XCJoLTEwIHctZnVsbFwiPjwvbmd0LXNoaW5pbmc+XG4gICAgICAgIDxuZ3Qtc2hpbmluZyBjbGFzcz1cImgtMTAgdy1mdWxsXCI+PC9uZ3Qtc2hpbmluZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgb3ZlcmZsb3cteS1hdXRvIHRleHQtc20ge3sgbG9hZGluZyA/ICdoaWRkZW4nIDogJ2ZsZXggZmxleC1jb2wnIH19XCIgKHNjcm9sbCk9J29uU2Nyb2xsKCRldmVudCknXG4gICAgICAgICNjb250YWluZXJSZWY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21IZWFkZXJUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgZ2V0U2VsZWN0YWJsZUVsZW1lbnRzKCk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIgaG92ZXI6YmctZ3JheS0yMDAge3sgZGlzYWJsZWQoKSA/ICdjdXJzb3Itbm90LWFsbG93ZWQnIDogJ2N1cnNvci1wb2ludGVyJyB9fVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnAtMl09JyFjdXN0b21PcHRpb25UZW1wbGF0ZScgKGNsaWNrKT0ndG9nZ2xlSXRlbShlbGVtZW50LCAkZXZlbnQpJz5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWVsZW1lbnQgI2VsZW1lbnRDaGVja2JveFRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmd0LWNoZWNrYm94IGNsYXNzPVwiZmxleCBwci0yXCIgW25hbWVdPSdlbGVtZW50LnV1aWQnIFsobmdNb2RlbCldPVwiZWxlbWVudC5pc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT0nb25OYXRpdmVDaGFuZ2UoZWxlbWVudCknIFtpc0NsaWNrRGlzYWJsZWRdPSd0cnVlJyBbaXNEaXNhYmxlZF09J2Rpc2FibGVkKCknXG4gICAgICAgICAgICAgICAgICAgICAgICBoPSdoLTUnIHc9J3ctNScgKGNsaWNrKT0ndG9nZ2xlSXRlbShlbGVtZW50LCAkZXZlbnQpJyBuZ3Qtc3R5bGl6YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZ3QtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZWxlbWVudCAjZGVmYXVsdE9wdGlvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB7eyBnZXRTZWxlY3RhYmxlRWxlbWVudFZhbHVlKGVsZW1lbnQpIH19XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VzdG9tT3B0aW9uVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJlbGVtZW50Q2hlY2tib3hUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZWxlbWVudCB9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU9wdGlvblRlbXBsYXRlIHx8IGRlZmF1bHRPcHRpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZWxlbWVudCwgaW5kZXg6IGkgfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxwICpuZ0lmPVwiIWdldFNlbGVjdGFibGVFbGVtZW50cygpPy5sZW5ndGhcIiBjbGFzcz1cInRleHQtY2VudGVyIG10LTRcIj5cbiAgICAgICAgICAgIHt7IG5ndFRyYW5zbGF0ZVNlcnZpY2Uubmd0TXVsdGlTZWxlY3ROb0RhdGFGb3VuZCB9fVxuICAgICAgICA8L3A+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInt7IHNoaW5pbmcgPyAnaGlkZGVuJyA6ICdmbGV4JyB9fSB3LWZ1bGwgaXRlbXMtY2VudGVyIG10LTJcIj5cbiAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gbXItNFwiPlxuICAgICAgICB7eyBzZWxlY3RlZEVsZW1lbnRzPy5sZW5ndGggfHwgMCB9fSAvIHt7IGl0ZW1zVG90YWwgfHwgMCB9fVxuICAgIDwvc3Bhbj5cblxuICAgIDxuZ3QtY2hlY2tib3ggY2xhc3M9XCJmbGV4XCIgbGFiZWw9XCJWaXN1YWxpemFyIHNlbGVjaW9uYWRvc1wiIFtuYW1lXT0nZGlzcGxheU9ubHlTZWxlY3RlZE5hbWUnXG4gICAgICAgIFsobmdNb2RlbCldPVwiZGlzcGxheU9ubHlTZWxlY3RlZFwiIFtpc0Rpc2FibGVkXT0nbG9hZGluZycgaD0naC01JyB3PSd3LTUnIG5ndC1zdHlsaXphYmxlPlxuICAgIDwvbmd0LWNoZWNrYm94PlxuPC9kaXY+XG5cbjxuZ3Qtc2hpbmluZyAqbmdJZj0nc2hpbmluZycgY2xhc3M9XCJibG9jayB3LWZ1bGwge3sgbmd0U3R5bGUuY29tcGlsZShbJ2gnXSkgfX1cIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDE2cmVtO1wiXG4gICAgcm91bmRlZD0ncm91bmRlZCcgbmd0LXN0eWxpemFibGU+XG48L25ndC1zaGluaW5nPlxuXG48aW5wdXQgKm5nSWY9J2NvbXBvbmVudFJlYWR5JyB0eXBlPSdoaWRkZW4nIFtuZ01vZGVsXT0ndmFsdWUnIFtuYW1lXT0nbmFtZScgW3ZhbHVlXT0ndmFsdWUnPiJdfQ==
471
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LW11bHRpLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvY29tcG9uZW50cy9uZ3QtbXVsdGktc2VsZWN0L25ndC1tdWx0aS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LW11bHRpLXNlbGVjdC9uZ3QtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLElBQUksRUFDSixZQUFZLEVBRVosS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUVKLFFBQVEsRUFFUixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWtCNUYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGNBQWM7SUFvRXZELFlBQ1ksY0FBOEIsRUFDOUIsUUFBa0IsRUFDbEIsY0FBaUMsRUFHakMsT0FBeUIsRUFHekIsVUFBK0IsRUFHL0IsUUFBMkIsRUFHM0Isc0JBQThDLEVBRy9DLGFBQStCLEVBRy9CLG1CQUF3QztRQUUvQyxLQUFLLEVBQUUsQ0FBQztRQXRCQSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixtQkFBYyxHQUFk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LEtBQUs7Z0JBR1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUVXLFlBQVk7c0JBQTVCLE1BQU07Z0JBbUZBLFFBQVE7c0JBRGQsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0LFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFNraXBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3RCYXNlTmdNb2RlbCwgTmd0TWFrZVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vYmFzZS9uZ3QtYmFzZS1uZy1tb2RlbCc7XG5pbXBvcnQgeyBOZ3RTdHlsaXphYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvdXVpZCc7XG5pbXBvcnQgeyBOZ3RIdHRwUGFnaW5hdGlvbiwgTmd0SHR0cFJlc3BvbnNlLCBOZ3RIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAvbmd0LWh0dHAuc2VydmljZSc7XG5pbXBvcnQgeyBOZ3RUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHR0cC9uZ3QtdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmd0U3R5bGl6YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5ndEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9uZ3QtZm9ybS9uZ3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9uZ3QtaW5wdXQvbmd0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3RTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbmd0LXNlY3Rpb24vbmd0LXNlY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5ndE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbmd0LW1vZGFsL25ndC1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1tdWx0aS1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZ3QtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL25ndC1tdWx0aS1zZWxlY3QuY29tcG9uZW50LmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBOZ3RNYWtlUHJvdmlkZXIoTmd0TXVsdGlTZWxlY3RDb21wb25lbnQpXG4gICAgXSxcbiAgICB2aWV3UHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3RNdWx0aVNlbGVjdENvbXBvbmVudCBleHRlbmRzIE5ndEJhc2VOZ01vZGVsIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyUmVmJykgcHVibGljIGNvbnRhaW5lclJlZjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdpbnB1dFNlYXJjaCcpIHB1YmxpYyBpbnB1dFNlYXJjaDogTmd0SW5wdXRDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnZWxlbWVudENoZWNrYm94VGVtcGxhdGUnKSBwdWJsaWMgZWxlbWVudENoZWNrYm94VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogVmlzdWFsICovXG4gICAgQElucHV0KCkgcHVibGljIGN1c3RvbU9wdGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21IZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscFRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBUZXh0OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBUZXh0Q29sb3I6IHN0cmluZyA9ICd0ZXh0LWdyZWVuLTUwMCc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBlclJldmVyc2VZUG9zaXRpb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBlckF1dG9YUmV2ZXJzZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIHNoaW5pbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEJlaGF2aW9yICovXG4gICAgQElucHV0KCkgcHVibGljIGJpbmRMYWJlbDogc3RyaW5nIHwgRnVuY3Rpb24gPSAnbmFtZSc7XG4gICAgQElucHV0KCkgcHVibGljIGJpbmRTZWFyY2g6IHN0cmluZyA9ICduYW1lJztcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbXNQZXJQYWdlOiBudW1iZXIgPSAxNTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyByZW1vdGVSZXNvdXJjZTogYW55O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtczogQXJyYXk8YW55PiA9IFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBWYWxpZGF0aW9uICovXG4gICAgQElucHV0KCkgcHVibGljIGlzUmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIG9uRGF0YUNoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PE5ndFNlbGVjdENvbnRhaW5lclNlbGVjdGFibGVFbGVtZW50SW50ZXJmYWNlPj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgc2VhcmNoVGVybTogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIHNlYXJjaElucHV0TmFtZTogc3RyaW5nID0gdXVpZCgpO1xuXG4gICAgcHVibGljIHNlbGVjdEFsbENoZWNrYm94TmFtZTogc3RyaW5nID0gdXVpZCgpO1xuICAgIHB1YmxpYyBkaXNwbGF5T25seVNlbGVjdGVkTmFtZTogc3RyaW5nID0gdXVpZCgpO1xuXG4gICAgcHVibGljIHNlbGVjdGVkRWxlbWVudHM6IEFycmF5PE5ndFNlbGVjdENvbnRhaW5lclNlbGVjdGFibGVFbGVtZW50SW50ZXJmYWNlPiA9IFtdO1xuICAgIHB1YmxpYyBpdGVtc1RvdGFsOiBudW1iZXI7XG4gICAgcHVibGljIHNlbGVjdEFsbENoZWNrYm94OiBib29sZWFuO1xuICAgIHB1YmxpYyBkaXNwbGF5T25seVNlbGVjdGVkOiBib29sZWFuO1xuXG4gICAgcHVibGljIG5hdGl2ZU5hbWU6IHN0cmluZyA9IHV1aWQoKTtcbiAgICBwdWJsaWMgbmF0aXZlVmFsdWU6IGFueTtcblxuICAgIHB1YmxpYyBuZ3RTdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XG4gICAgcHVibGljIHNlbGVjdGFibGVFbGVtZW50czogQXJyYXk8Tmd0U2VsZWN0Q29udGFpbmVyU2VsZWN0YWJsZUVsZW1lbnRJbnRlcmZhY2U+ID0gW107XG4gICAgcHVibGljIHNlbGVjdGFibGVFbGVtZW50c09uU2VhcmNoOiBBcnJheTxOZ3RTZWxlY3RDb250YWluZXJTZWxlY3RhYmxlRWxlbWVudEludGVyZmFjZT4gPSBbXTtcbiAgICBwdWJsaWMgY29tcG9uZW50UmVhZHk6IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIHBhZ2luYXRpb246IE5ndEh0dHBQYWdpbmF0aW9uID0ge1xuICAgICAgICBjb3VudDogbnVsbCxcbiAgICAgICAgcGFnZTogMSxcbiAgICAgICAgcGFnZXM6IG51bGwsXG4gICAgICAgIHRvdGFsOiBudWxsLFxuICAgICAgICBmcm9tOiBudWxsLFxuICAgICAgICB0bzogbnVsbCxcbiAgICAgICAgcGVyX3BhZ2U6IG51bGxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG4gICAgcHJpdmF0ZSBpblNlYXJjaDogYm9vbGVhbjtcbiAgICBwcml2YXRlIHNlYXJjaFRpbWVvdXQ6IGFueTtcbiAgICBwcml2YXRlIHByZXZpb3VzU2VhcmNoVGVybTogc3RyaW5nID0gJyc7XG4gICAgcHJpdmF0ZSBiZWNhbWVWaXNpYmxlOiBib29sZWFuO1xuICAgIHByaXZhdGUgc2VsZWN0YWJsZVJlc291cmNlc0NvdW50OiBudW1iZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgbmd0SHR0cFNlcnZpY2U6IE5ndEh0dHBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG5cbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKClcbiAgICAgICAgcHJpdmF0ZSBuZ3RGb3JtOiBOZ3RGb3JtQ29tcG9uZW50LFxuXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpXG4gICAgICAgIHByaXZhdGUgbmd0U2VjdGlvbjogTmd0U2VjdGlvbkNvbXBvbmVudCxcblxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKVxuICAgICAgICBwcml2YXRlIG5ndE1vZGFsOiBOZ3RNb2RhbENvbXBvbmVudCxcblxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpXG4gICAgICAgIHByaXZhdGUgbmd0U3R5bGl6YWJsZURpcmVjdGl2ZTogTmd0U3R5bGl6YWJsZURpcmVjdGl2ZSxcblxuICAgICAgICBAT3B0aW9uYWwoKSBASG9zdCgpXG4gICAgICAgIHB1YmxpYyBmb3JtQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIHB1YmxpYyBuZ3RUcmFuc2xhdGVTZXJ2aWNlOiBOZ3RUcmFuc2xhdGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmd0Rm9ybSkge1xuICAgICAgICAgICAgdGhpcy5zaGluaW5nID0gdGhpcy5uZ3RGb3JtLmlzU2hpbmluZygpO1xuXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLm5ndEZvcm0ub25TaGluaW5nQ2hhbmdlLnN1YnNjcmliZSgoc2hpbmluZzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoaW5pbmcgPSBzaGluaW5nO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmd0U3R5bGl6YWJsZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5uZ3RTdHlsZSA9IHRoaXMubmd0U3R5bGl6YWJsZURpcmVjdGl2ZS5nZXROZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uZ3RTdHlsZSA9IG5ldyBOZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZ3RTdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdOZ3RNdWx0aVNlbGVjdCcsIHsgaDogJ2gtNjQnIH0pO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3Njcm9sbCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uU2Nyb2xsKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNTY3JvbGxFbmQgPSBldmVudC50YXJnZXQuc2Nyb2xsVG9wICYmIGV2ZW50LnRhcmdldC5vZmZzZXRIZWlnaHQgKyBldmVudC50YXJnZXQuc2Nyb2xsVG9wID49IChldmVudC50YXJnZXQuc2Nyb2xsSGVpZ2h0IC0gMzApO1xuXG4gICAgICAgIGlmIChpc1Njcm9sbEVuZCAmJiAhdGhpcy5sb2FkaW5nICYmICF0aGlzLmRpc3BsYXlPbmx5U2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3RhYmxlRWxlbWVudHM/Lmxlbmd0aFxuICAgICAgICAgICAgJiYgdGhpcy5wYWdpbmF0aW9uLnBlcl9wYWdlIDwgdGhpcy5wYWdpbmF0aW9uLnRvdGFsKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UGVyUGFnZSA9IHR5cGVvZiB0aGlzLnBhZ2luYXRpb24ucGVyX3BhZ2UgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBOdW1iZXIucGFyc2VJbnQodGhpcy5wYWdpbmF0aW9uLnBlcl9wYWdlKVxuICAgICAgICAgICAgICAgIDogdGhpcy5wYWdpbmF0aW9uLnBlcl9wYWdlO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubG9hZERhdGEoY3VycmVudFBlclBhZ2UgKyB0aGlzLml0ZW1zUGVyUGFnZSwgdGhpcy5zZWFyY2hUZXJtKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlIGVsZW1lbnQgbXVzdCBiZSBpbnNpZGUgYSA8Zm9ybSAjZm9ybT0nbmdGb3JtJz4gdGFnIVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlIGVsZW1lbnQgbXVzdCBjb250YWluIGEgbmFtZSBhdHRyaWJ1dGUhXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmJlY2FtZVZpc2libGUgJiYgIXRoaXMuaXNIaWRkZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5iZWNhbWVWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSgpLnRoZW4oKCkgPT4gdGhpcy5pbml0Q29tcG9uZW50VmFsaWRhdGlvbigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmlzUmVxdWlyZWQgJiYgdGhpcy5jb21wb25lbnRSZWFkeSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWxpZGF0aW9ucygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5T25seVNlbGVjdGVkID0gdGhpcy5kaXNhYmxlZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuaXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZFNlbGVjdGFibGVFbGVtZW50cyhjaGFuZ2VzLml0ZW1zLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLnJlbW90ZVJlc291cmNlICYmIHRoaXMuYmVjYW1lVmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSgpLnRoZW4oKCkgPT4gdGhpcy5pbml0Q29tcG9uZW50VmFsaWRhdGlvbigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLml0ZW1zUGVyUGFnZSkge1xuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnBlcl9wYWdlID0gY2hhbmdlcy5pdGVtc1BlclBhZ2UuY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTdWJzY3JpcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEZvY3VzKCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5wdXRTZWFyY2guc2V0Rm9jdXMoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlZnJlc2goaXRlbXNQZXJQYWdlPzogbnVtYmVyLCBzZWFyY2hUZXJtPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gaXRlbXNQZXJQYWdlICE9PSB1bmRlZmluZWQgPyBpdGVtc1BlclBhZ2UgOiB0aGlzLml0ZW1zUGVyUGFnZTtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gc2VhcmNoVGVybSAhPT0gdW5kZWZpbmVkID8gc2VhcmNoVGVybSA6IHRoaXMuc2VhcmNoVGVybTtcblxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkRGF0YSh0aGlzLml0ZW1zUGVyUGFnZSwgdGhpcy5zZWFyY2hUZXJtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRpbmcgJiYgIXRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxDaGVja2JveCA9ICF0aGlzLnNlbGVjdEFsbENoZWNrYm94O1xuXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gW107XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gW107XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBbXTtcblxuICAgICAgICAgICAgY29uc3QgcGVycGFnZSA9IHRoaXMuc2VsZWN0QWxsQ2hlY2tib3ggPyB0aGlzLnBhZ2luYXRpb24udG90YWwgOiB0aGlzLml0ZW1zUGVyUGFnZTtcblxuICAgICAgICAgICAgdGhpcy5sb2FkRGF0YShwZXJwYWdlLCB0aGlzLnNlYXJjaFRlcm0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lclJlZj8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG8oeyB0b3A6IDAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiBlbGVtZW50LmlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdEFsbENoZWNrYm94KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RBbGxDaGVja2JveCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gdGhpcy5zZWxlY3RhYmxlRWxlbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RFbGVtZW50cyhlbGVtZW50czogQXJyYXk8YW55Pik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudElkcyA9IHRoaXMuaXNDb2xvcXVlbnRSZXNvdXJjZXMoKSA/IGVsZW1lbnRzLm1hcChlbGVtZW50ID0+IGVsZW1lbnQuZ2V0QXBpSWQoKSkgOiBlbGVtZW50cztcblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRWxlbWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAoc2VsZWN0YWJsZUVsZW1lbnQ6IE5ndFNlbGVjdENvbnRhaW5lclNlbGVjdGFibGVFbGVtZW50SW50ZXJmYWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2VsZWN0YWJsZUVsZW1lbnQudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGFibGVFbGVtZW50LmlzU2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pc0NvbG9xdWVudFJlc291cmNlcygpICYmIGVsZW1lbnRJZHMuaW5jbHVkZXModmFsdWUuZ2V0QXBpSWQoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZWxlbWVudElkcy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYmxlRWxlbWVudC5pc1NlbGVjdGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFbGVtZW50U2VsZWN0aW9uKHNlbGVjdGFibGVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlSXRlbShzZWxlY3RhYmxlRWxlbWVudDogTmd0U2VsZWN0Q29udGFpbmVyU2VsZWN0YWJsZUVsZW1lbnRJbnRlcmZhY2UsIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQ/LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICAgICAgICBzZWxlY3RhYmxlRWxlbWVudC5pc1NlbGVjdGVkID0gIXNlbGVjdGFibGVFbGVtZW50LmlzU2VsZWN0ZWQ7XG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRWxlbWVudFNlbGVjdGlvbihzZWxlY3RhYmxlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25OYXRpdmVDaGFuZ2Uoc2VsZWN0YWJsZUVsZW1lbnQ6IE5ndFNlbGVjdENvbnRhaW5lclNlbGVjdGFibGVFbGVtZW50SW50ZXJmYWNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlYWR5KSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUVsZW1lbnRTZWxlY3Rpb24oc2VsZWN0YWJsZUVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNDaGFuZ2VzQmV0d2VlbkJpbmRpbmdzKHRoaXMudmFsdWUsIHRoaXMuc2VsZWN0ZWRFbGVtZW50cykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRzLm1hcChlID0+IGUudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZShzZWxlY3RlZEVsZW1lbnRzOiBBcnJheTxhbnk+KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoYW5nZXNCZXR3ZWVuQmluZGluZ3Moc2VsZWN0ZWRFbGVtZW50cywgdGhpcy5zZWxlY3RlZEVsZW1lbnRzKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRTZWxlY3RlZEVsZW1lbnRzKHNlbGVjdGVkRWxlbWVudHMpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRWxlbWVudHMuZmlsdGVyKGVsZW1lbnQgPT4gdGhpcy5pc1NlbGVjdGVkRWxlbWVudChlbGVtZW50KSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZWxlbWVudCA9PiBlbGVtZW50LmlzU2VsZWN0ZWQgPSB0cnVlKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzT25TZWFyY2guZmlsdGVyKGVsZW1lbnQgPT4gdGhpcy5pc1NlbGVjdGVkRWxlbWVudChlbGVtZW50KSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZWxlbWVudCA9PiBlbGVtZW50LmlzU2VsZWN0ZWQgPSB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gc2VsZWN0ZWRFbGVtZW50cz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0+ICh7IHV1aWQ6IHV1aWQoKSwgaXNTZWxlY3RlZDogdHJ1ZSwgdmFsdWU6IGVsZW1lbnQgfSlcbiAgICAgICAgICAgICAgICApID8/IFtdO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghc2VsZWN0ZWRFbGVtZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNlYXJjaCh0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlYWR5IHx8IHRlcm0gPT09IHVuZGVmaW5lZCB8fCB0ZXJtID09PSBudWxsIHx8IHRlcm0gPT09IHRoaXMucHJldmlvdXNTZWFyY2hUZXJtIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNTZWFyY2hUZXJtID0gdGVybTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3ggPSB0aGlzLnNlbGVjdGVkRWxlbWVudHM/Lmxlbmd0aCA9PSB0aGlzLnNlbGVjdGFibGVSZXNvdXJjZXNDb3VudDtcblxuICAgICAgICAgICAgaWYgKCF0ZXJtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pblNlYXJjaCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmluU2VhcmNoID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzT25TZWFyY2ggPSB0aGlzLnNlbGVjdGFibGVFbGVtZW50cy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPT4gdGhpcy5nZXRTZWxlY3RhYmxlRWxlbWVudFZhbHVlKGl0ZW0pLmluY2x1ZGVzKHRlcm0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSh0aGlzLml0ZW1zUGVyUGFnZSwgdGVybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDUwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNlbGVjdGFibGVFbGVtZW50cygpOiBBcnJheTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5TZWFyY2ggJiYgdGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlRWxlbWVudHNPblNlYXJjaDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRpc3BsYXlPbmx5U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRWxlbWVudHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlRWxlbWVudHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNlbGVjdGFibGVFbGVtZW50VmFsdWUoc2VsZWN0YWJsZUl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5iaW5kTGFiZWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJpbmRMYWJlbChzZWxlY3RhYmxlSXRlbS52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlbGVjdGFibGVJdGVtLnZhbHVlWydnZXRBdHRyaWJ1dGUnXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGFibGVJdGVtLnZhbHVlLmdldEF0dHJpYnV0ZSh0aGlzLmJpbmRMYWJlbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0YWJsZUl0ZW0udmFsdWVbdGhpcy5iaW5kTGFiZWxdO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNWYWxpZGF0aW9uRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbD8uZXJyb3JzICYmIChcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZGlydHkgfHwgKHRoaXMuZm9ybUNvbnRhaW5lciAmJiB0aGlzLmZvcm1Db250YWluZXJbJ3N1Ym1pdHRlZCddKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNEaXNhYmxlZCB8fCB0aGlzLmlzRGlzYWJsZWRCeVBhcmVudCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRWxlbWVudFNlbGVjdGlvbihzZWxlY3RhYmxlRWxlbWVudDogTmd0U2VsZWN0Q29udGFpbmVyU2VsZWN0YWJsZUVsZW1lbnRJbnRlcmZhY2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNlbGVjdGFibGVFbGVtZW50LmlzU2VsZWN0ZWQgJiYgIXRoaXMuaXNTZWxlY3RlZEVsZW1lbnQoc2VsZWN0YWJsZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMucHVzaChzZWxlY3RhYmxlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXNlbGVjdGFibGVFbGVtZW50LmlzU2VsZWN0ZWQgJiYgdGhpcy5pc1NlbGVjdGVkRWxlbWVudChzZWxlY3RhYmxlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50ID0+IHNlbGVjdGVkRWxlbWVudC51dWlkICE9PSBzZWxlY3RhYmxlRWxlbWVudC51dWlkXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLm9uTmF0aXZlQ2hhbmdlKHNlbGVjdGFibGVFbGVtZW50KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGlzcGxheU9ubHlTZWxlY3RlZCAmJiAhdGhpcy5zZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU9ubHlTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkRGF0YShwZXJwYWdlOiBudW1iZXIgPSB0aGlzLml0ZW1zUGVyUGFnZSwgc2VhcmNoVGVybT86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVtb3RlUmVzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHBlcnBhZ2UgPT0gdGhpcy5pdGVtc1BlclBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbFRvKHsgdG9wOiAwIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IHBlcnBhZ2U7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwYWdpbmF0aW9uOiBOZ3RIdHRwUGFnaW5hdGlvbiA9IHsgLi4udGhpcy5wYWdpbmF0aW9uLCAuLi57IHBlcl9wYWdlOiBwZXJwYWdlIH0gfTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gc2VhcmNoVGVybSA/IHsgW3RoaXMuYmluZFNlYXJjaF06IHNlYXJjaFRlcm0gfSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ3RIdHRwU2VydmljZS5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZVJlc291cmNlLCBmaWx0ZXJzLCBwYWdpbmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlOiBOZ3RIdHRwUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmRTZWxlY3RhYmxlRWxlbWVudHMocmVzcG9uc2UuZGF0YSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24gPSByZXNwb25zZS5tZXRhLnBhZ2luYXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtc1RvdGFsID0gdGhpcy5wYWdpbmF0aW9uLnRvdGFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGFibGVSZXNvdXJjZXNDb3VudCAmJiAhc2VhcmNoVGVybSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVSZXNvdXJjZXNDb3VudCA9IHRoaXMucGFnaW5hdGlvbi50b3RhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5kaXNwbGF5T25seVNlbGVjdGVkID0gdGhpcy5kaXNhYmxlZCgpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGhlIHByb3BlcnR5IFtyZW1vdGVSZXNvdXJjZV0gbmVlZHMgdG8gYmUgcHJlc2VudCB0byBiZSBhYmxlIHRvIG1ha2UgcmVtb3RlIHNlYXJjaCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRTZWxlY3RhYmxlRWxlbWVudHMoZGF0YTogQXJyYXk8YW55Pik6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRFbGVtZW50czogQXJyYXk8Tmd0U2VsZWN0Q29udGFpbmVyU2VsZWN0YWJsZUVsZW1lbnRJbnRlcmZhY2U+ID0gW107XG5cbiAgICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgYWxyZWFkeVNlbGVjdGVkID0gdGhpcy5maW5kU2VsZWN0ZWRFbGVtZW50KGl0ZW0pO1xuXG4gICAgICAgICAgICBpZiAoYWxyZWFkeVNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkRWxlbWVudHMucHVzaChhbHJlYWR5U2VsZWN0ZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRFbGVtZW50cy5wdXNoKHsgdXVpZDogdXVpZCgpLCBpc1NlbGVjdGVkOiBmYWxzZSwgdmFsdWU6IGl0ZW0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzID0gZm9ybWF0dGVkRWxlbWVudHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kU2VsZWN0ZWRFbGVtZW50cyhzZWxlY3RlZEVsZW1lbnRzOiBBcnJheTxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZUVsZW1lbnRzLmZvckVhY2goc2VsZWN0YWJsZUVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkQmVTZWxlY3RlZDogYm9vbGVhbiA9ICEhc2VsZWN0ZWRFbGVtZW50cz8uZmluZChcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQgPT4gdGhpcy5jb21wYXJlV2l0aChzZWxlY3RlZEVsZW1lbnQsIHNlbGVjdGFibGVFbGVtZW50LnZhbHVlKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKHNob3VsZEJlU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RhYmxlRWxlbWVudC5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVsZW1lbnRTZWxlY3Rpb24oc2VsZWN0YWJsZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRDb21wb25lbnRWYWxpZGF0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb3JtQ29udGFpbmVyPy5jb250cm9sICYmICh0aGlzLmZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udGFpbmVyLmNvbnRyb2wuZ2V0KHRoaXMubmFtZSkpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udGFpbmVyLmNvbnRyb2wuZ2V0KHRoaXMubmFtZSk7XG4gICAgICAgICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb25zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZhbGlkYXRpb25zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzeW5jVmFsaWRhdG9ycyA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzUmVxdWlyZWQpIHtcbiAgICAgICAgICAgIHN5bmNWYWxpZGF0b3JzLnB1c2godGhpcy5pc1JlcXVpcmVkVmFsaWRhdG9yKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbGlkYXRvcnMoc3luY1ZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNSZXF1aXJlZFZhbGlkYXRvcigpOiBhbnkge1xuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7ICdyZXF1aXJlZCc6IHRydWUgfTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRTZWxlY3RlZEVsZW1lbnQoaXRlbTogYW55KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5maW5kKHNlbGVjdGVkRWxlbWVudCA9PiB0aGlzLmNvbXBhcmVXaXRoKHNlbGVjdGVkRWxlbWVudC52YWx1ZSwgaXRlbSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcGFyZVdpdGgoYTogYW55LCBiOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhWydnZXRBcGlJZCddID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBiWydnZXRBcGlJZCddID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5nZXRBcGlJZCgpID09IGIuZ2V0QXBpSWQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmlkICYmIGIuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBhLmlkID09IGIuaWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQ2hhbmdlc0JldHdlZW5CaW5kaW5ncyh2YWx1ZTogQXJyYXk8YW55PiwgbmF0aXZlVmFsdWU6IEFycmF5PGFueT4pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHZhbHVlPy5sZW5ndGggJiYgIXZhbHVlWzBdLnV1aWQpIHtcbiAgICAgICAgICAgIG5hdGl2ZVZhbHVlID0gbmF0aXZlVmFsdWUubWFwKGVsZW1lbnQgPT4gZWxlbWVudC52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShuYXRpdmVWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1NlbGVjdGVkRWxlbWVudChzZWxlY3RhYmxlRWxlbWVudDogTmd0U2VsZWN0Q29udGFpbmVyU2VsZWN0YWJsZUVsZW1lbnRJbnRlcmZhY2UpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZEVsZW1lbnRzLmZpbmQoc2VsZWN0ZWRFbGVtZW50ID0+IHNlbGVjdGVkRWxlbWVudC51dWlkID09PSBzZWxlY3RhYmxlRWxlbWVudC51dWlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuY29udGFpbmVyUmVmPy5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQ29sb3F1ZW50UmVzb3VyY2VzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlRWxlbWVudHM/Lmxlbmd0aCAmJiB0eXBlb2YgdGhpcy5zZWxlY3RhYmxlRWxlbWVudHNbMF0udmFsdWVbJ2dldEFwaUlkJ10gPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0Rpc2FibGVkQnlQYXJlbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5ndEZvcm0/LmlzRGlzYWJsZWRcbiAgICAgICAgICAgIHx8IHRoaXMubmd0U2VjdGlvbj8uaXNEaXNhYmxlZFxuICAgICAgICAgICAgfHwgdGhpcy5uZ3RNb2RhbD8uaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0U2VsZWN0Q29udGFpbmVyU2VsZWN0YWJsZUVsZW1lbnRJbnRlcmZhY2Uge1xuICAgIHV1aWQ6IHN0cmluZztcbiAgICBpc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIHZhbHVlOiBhbnk7XG59XG4iLCI8bGFiZWwgKm5nSWY9XCJsYWJlbCAmJiAhc2hpbmluZ1wiIGNsYXNzPVwiZmxleCB0ZXh0LXNtXCIgW2NsYXNzLm1iLTJdPSchaGFzVmFsaWRhdGlvbkVycm9ycygpJz5cbiAgICB7eyBsYWJlbCB9fTpcblxuICAgIDxzcGFuICpuZ0lmPVwiaXNSZXF1aXJlZFwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIGZvbnQtYm9sZCB0ZXh0LW1kIG1sLTFcIj4qPC9zcGFuPlxuXG4gICAgPG5ndC1oZWxwZXIgKm5nSWY9XCJoZWxwVGV4dFwiIFtoZWxwVGl0bGVdPVwiaGVscFRpdGxlXCIgW2ljb25Db2xvcl09XCJoZWxwVGV4dENvbG9yXCJcbiAgICAgICAgW2hlbHBlclJldmVyc2VZUG9zaXRpb25dPVwiaGVscGVyUmV2ZXJzZVlQb3NpdGlvblwiIFthdXRvWFJldmVyc2VdPVwiaGVscGVyQXV0b1hSZXZlcnNlXCIgY2xhc3M9XCJtbC0xXCI+XG4gICAgICAgIHt7IGhlbHBUZXh0IH19XG4gICAgPC9uZ3QtaGVscGVyPlxuPC9sYWJlbD5cblxuPG5ndC12YWxpZGF0aW9uIFtoaWRkZW5dPSdzaGluaW5nJyBjbGFzcz1cImJsb2NrIG1iLTFcIiBbY29udHJvbF09J2Zvcm1Db250cm9sJyBbY29udGFpbmVyXT0nZm9ybUNvbnRhaW5lcic+XG48L25ndC12YWxpZGF0aW9uPlxuXG48ZGl2IGNsYXNzPVwie3sgc2hpbmluZyA/ICdoaWRkZW4nIDogJ2ZsZXggZmxleC1jb2wnIH19IGJvcmRlciB3LWZ1bGwgcm91bmRlZCB7eyBuZ3RTdHlsZS5jb21waWxlKFsnaCddKSB9fVwiXG4gICAgc3R5bGU9XCJtaW4taGVpZ2h0OiAxNnJlbTtcIiBbY2xhc3MuYm9yZGVyLXJlZC01MDBdPSdoYXNWYWxpZGF0aW9uRXJyb3JzKCknIFtjbGFzcy5kaXNhYmxlZC1iYWNrZ3JvdW5kXT0nZGlzYWJsZWQoKSc+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHctZnVsbCBwLTIgYm9yZGVyLWJcIj5cbiAgICAgICAgPG5ndC1jaGVja2JveCBjbGFzcz1cImZsZXhcIiB0aXRsZT1cIlNlbGVjaW9uYXIgdG9kb3NcIiBbbGFiZWxdPVwiIXNlYXJjaGFibGUgPyAnU2VsZWNpb25hciB0b2RvcycgOiAnJ1wiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdEFsbENoZWNrYm94XCIgW25hbWVdPVwic2VsZWN0QWxsQ2hlY2tib3hOYW1lXCIgW2lzQ2xpY2tEaXNhYmxlZF09J3RydWUnXG4gICAgICAgICAgICBbaXNEaXNhYmxlZF09J2xvYWRpbmcgfHwgZGlzYWJsZWQoKScgaD0naC01JyB3PSd3LTUnIChjbGljayk9J3NlbGVjdEFsbCgpJyBuZ3Qtc3R5bGl6YWJsZT5cbiAgICAgICAgPC9uZ3QtY2hlY2tib3g+XG5cbiAgICAgICAgPG5ndC1pbnB1dCAqbmdJZj1cInNlYXJjaGFibGVcIiBjbGFzcz1cImJsb2NrIHctZnVsbCBwbC0yXCIgW25hbWVdPSdzZWFyY2hJbnB1dE5hbWUnIFsobmdNb2RlbCldPSdzZWFyY2hUZXJtJ1xuICAgICAgICAgICAgcGxhY2Vob2xkZXI9J0J1c2Nhci4uLicgW2FsbG93Q2xlYXJdPSd0cnVlJyBbaml0XT0ndHJ1ZScgaD0naC0xMCcgKG5nTW9kZWxDaGFuZ2UpPSdzZWFyY2goJGV2ZW50KSdcbiAgICAgICAgICAgIFtsb2FkaW5nXT0nbG9hZGluZycgW2lzRGlzYWJsZWRdPSdkaXNhYmxlZCgpJyBuZ3Qtc3R5bGl6YWJsZSAjaW5wdXRTZWFyY2g+XG4gICAgICAgIDwvbmd0LWlucHV0PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTMgcHgtMyBoLWZ1bGwgdy1mdWxsIGN1cnNvci13YWl0XCI+XG4gICAgICAgIDxuZ3Qtc2hpbmluZyBjbGFzcz1cImgtMTAgdy1mdWxsXCI+PC9uZ3Qtc2hpbmluZz5cbiAgICAgICAgPG5ndC1zaGluaW5nIGNsYXNzPVwiaC0xMCB3LWZ1bGxcIj48L25ndC1zaGluaW5nPlxuICAgICAgICA8bmd0LXNoaW5pbmcgY2xhc3M9XCJoLTEwIHctZnVsbFwiPjwvbmd0LXNoaW5pbmc+XG4gICAgICAgIDxuZ3Qtc2hpbmluZyBjbGFzcz1cImgtMTAgdy1mdWxsXCI+PC9uZ3Qtc2hpbmluZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgb3ZlcmZsb3cteS1hdXRvIHRleHQtc20ge3sgbG9hZGluZyA/ICdoaWRkZW4nIDogJ2ZsZXggZmxleC1jb2wnIH19XCIgKHNjcm9sbCk9J29uU2Nyb2xsKCRldmVudCknXG4gICAgICAgICNjb250YWluZXJSZWY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21IZWFkZXJUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgZ2V0U2VsZWN0YWJsZUVsZW1lbnRzKCk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIgaG92ZXI6YmctZ3JheS0yMDAge3sgZGlzYWJsZWQoKSA/ICdjdXJzb3Itbm90LWFsbG93ZWQnIDogJ2N1cnNvci1wb2ludGVyJyB9fVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnAtMl09JyFjdXN0b21PcHRpb25UZW1wbGF0ZScgKGNsaWNrKT0ndG9nZ2xlSXRlbShlbGVtZW50LCAkZXZlbnQpJz5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWVsZW1lbnQgI2VsZW1lbnRDaGVja2JveFRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmd0LWNoZWNrYm94IGNsYXNzPVwiZmxleCBwci0yXCIgW25hbWVdPSdlbGVtZW50LnV1aWQnIFsobmdNb2RlbCldPVwiZWxlbWVudC5pc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT0nb25OYXRpdmVDaGFuZ2UoZWxlbWVudCknIFtpc0NsaWNrRGlzYWJsZWRdPSd0cnVlJyBbaXNEaXNhYmxlZF09J2Rpc2FibGVkKCknXG4gICAgICAgICAgICAgICAgICAgICAgICBoPSdoLTUnIHc9J3ctNScgKGNsaWNrKT0ndG9nZ2xlSXRlbShlbGVtZW50LCAkZXZlbnQpJyBuZ3Qtc3R5bGl6YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZ3QtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZWxlbWVudCAjZGVmYXVsdE9wdGlvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB7eyBnZXRTZWxlY3RhYmxlRWxlbWVudFZhbHVlKGVsZW1lbnQpIH19XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VzdG9tT3B0aW9uVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJlbGVtZW50Q2hlY2tib3hUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZWxlbWVudCB9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU9wdGlvblRlbXBsYXRlIHx8IGRlZmF1bHRPcHRpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZWxlbWVudCwgaW5kZXg6IGkgfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxwICpuZ0lmPVwiIWdldFNlbGVjdGFibGVFbGVtZW50cygpPy5sZW5ndGhcIiBjbGFzcz1cInRleHQtY2VudGVyIG10LTRcIj5cbiAgICAgICAgICAgIHt7IG5ndFRyYW5zbGF0ZVNlcnZpY2Uubmd0TXVsdGlTZWxlY3ROb0RhdGFGb3VuZCB9fVxuICAgICAgICA8L3A+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInt7IHNoaW5pbmcgPyAnaGlkZGVuJyA6ICdmbGV4JyB9fSB3LWZ1bGwgaXRlbXMtY2VudGVyIG10LTJcIj5cbiAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gbXItNFwiPlxuICAgICAgICB7eyBzZWxlY3RlZEVsZW1lbnRzPy5sZW5ndGggfHwgMCB9fSAvIHt7IGl0ZW1zVG90YWwgfHwgMCB9fVxuICAgIDwvc3Bhbj5cblxuICAgIDxuZ3QtY2hlY2tib3ggY2xhc3M9XCJmbGV4XCIgbGFiZWw9XCJWaXN1YWxpemFyIHNlbGVjaW9uYWRvc1wiIFtuYW1lXT0nZGlzcGxheU9ubHlTZWxlY3RlZE5hbWUnXG4gICAgICAgIFsobmdNb2RlbCldPVwiZGlzcGxheU9ubHlTZWxlY3RlZFwiIFtpc0Rpc2FibGVkXT0nbG9hZGluZycgaD0naC01JyB3PSd3LTUnIG5ndC1zdHlsaXphYmxlPlxuICAgIDwvbmd0LWNoZWNrYm94PlxuPC9kaXY+XG5cbjxuZ3Qtc2hpbmluZyAqbmdJZj0nc2hpbmluZycgY2xhc3M9XCJibG9jayB3LWZ1bGwge3sgbmd0U3R5bGUuY29tcGlsZShbJ2gnXSkgfX1cIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDE2cmVtO1wiXG4gICAgcm91bmRlZD0ncm91bmRlZCcgbmd0LXN0eWxpemFibGU+XG48L25ndC1zaGluaW5nPlxuXG48aW5wdXQgKm5nSWY9J2NvbXBvbmVudFJlYWR5JyB0eXBlPSdoaWRkZW4nIFtuZ01vZGVsXT0ndmFsdWUnIFtuYW1lXT0nbmFtZScgW3ZhbHVlXT0ndmFsdWUnPiJdfQ==
@@ -3,6 +3,8 @@ export var InputMaskEnum;
3
3
  (function (InputMaskEnum) {
4
4
  InputMaskEnum["CPF"] = "cpf";
5
5
  InputMaskEnum["CNPJ"] = "cnpj";
6
+ InputMaskEnum["CUIT"] = "cuit";
7
+ InputMaskEnum["RUT"] = "rut";
6
8
  InputMaskEnum["CPF_CNPJ"] = "cnpj-cpf";
7
9
  InputMaskEnum["CPF_CNPJ_RUT"] = "cnpj-cpf-rut";
8
10
  InputMaskEnum["DECIMAL"] = "decimal";
@@ -21,4 +23,4 @@ export function applyInputMask(element, mask, parameters) {
21
23
  export function removeInputMask(element) {
22
24
  Inputmask.remove(element);
23
25
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWFzay5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvaGVscGVycy9pbnB1dC1tYXNrL2lucHV0LW1hc2suaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sU0FBUyxNQUFNLGlDQUFpQyxDQUFDO0FBRXhELE1BQU0sQ0FBTixJQUFZLGFBY1g7QUFkRCxXQUFZLGFBQWE7SUFDckIsNEJBQVcsQ0FBQTtJQUNYLDhCQUFhLENBQUE7SUFDYixzQ0FBcUIsQ0FBQTtJQUNyQiw4Q0FBNkIsQ0FBQTtJQUM3QixvQ0FBbUIsQ0FBQTtJQUNuQix3Q0FBdUIsQ0FBQTtJQUN2QixnQ0FBZSxDQUFBO0lBQ2YsNEJBQVcsQ0FBQTtJQUNYLG9DQUFtQixDQUFBO0lBQ25CLGtEQUFpQyxDQUFBO0lBQ2pDLDhCQUFhLENBQUE7SUFDYiw0REFBMkMsQ0FBQTtJQUMzQyw4QkFBYSxDQUFBO0FBQ2pCLENBQUMsRUFkVyxhQUFhLEtBQWIsYUFBYSxRQWN4QjtBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBbUIsRUFBRSxJQUFtQixFQUFFLFVBQWdCO0lBQ3JGLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQW1CO0lBQy9DLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBJbnB1dG1hc2sgZnJvbSAnaW5wdXRtYXNrL2Rpc3QvaW5wdXRtYXNrLmVzNi5qcyc7XG5cbmV4cG9ydCBlbnVtIElucHV0TWFza0VudW0ge1xuICAgIENQRiA9ICdjcGYnLFxuICAgIENOUEogPSAnY25waicsXG4gICAgQ1BGX0NOUEogPSAnY25wai1jcGYnLFxuICAgIENQRl9DTlBKX1JVVCA9ICdjbnBqLWNwZi1ydXQnLFxuICAgIERFQ0lNQUwgPSAnZGVjaW1hbCcsXG4gICAgQ0VMTFBIT05FID0gJ2NlbGxwaG9uZScsXG4gICAgUExBVEUgPSAncGxhdGUnLFxuICAgIENFUCA9ICdjZXAnLFxuICAgIElOVEVHRVIgPSAnaW50ZWdlcicsXG4gICAgTlVNRVJJQ19TVFJJTkcgPSAnbnVtZXJpYy1zdHJpbmcnLFxuICAgIFRJTUUgPSAndGltZScsXG4gICAgSU5URVJOQVRJT05BTF9QSE9ORSA9ICdpbnRlcm5hdGlvbmFsLXBob25lJyxcbiAgICBEQVRFID0gJ2RhdGUnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUlucHV0TWFzayhlbGVtZW50OiBFbGVtZW50UmVmLCBtYXNrOiBJbnB1dE1hc2tFbnVtLCBwYXJhbWV0ZXJzPzogYW55KTogdm9pZCB7XG4gICAgSW5wdXRtYXNrKG1hc2ssIHBhcmFtZXRlcnMpLm1hc2soZWxlbWVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVJbnB1dE1hc2soZWxlbWVudDogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIElucHV0bWFzay5yZW1vdmUoZWxlbWVudCk7XG59XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWFzay5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvaGVscGVycy9pbnB1dC1tYXNrL2lucHV0LW1hc2suaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sU0FBUyxNQUFNLGlDQUFpQyxDQUFDO0FBRXhELE1BQU0sQ0FBTixJQUFZLGFBZ0JYO0FBaEJELFdBQVksYUFBYTtJQUNyQiw0QkFBVyxDQUFBO0lBQ1gsOEJBQWEsQ0FBQTtJQUNiLDhCQUFhLENBQUE7SUFDYiw0QkFBVyxDQUFBO0lBQ1gsc0NBQXFCLENBQUE7SUFDckIsOENBQTZCLENBQUE7SUFDN0Isb0NBQW1CLENBQUE7SUFDbkIsd0NBQXVCLENBQUE7SUFDdkIsZ0NBQWUsQ0FBQTtJQUNmLDRCQUFXLENBQUE7SUFDWCxvQ0FBbUIsQ0FBQTtJQUNuQixrREFBaUMsQ0FBQTtJQUNqQyw4QkFBYSxDQUFBO0lBQ2IsNERBQTJDLENBQUE7SUFDM0MsOEJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBaEJXLGFBQWEsS0FBYixhQUFhLFFBZ0J4QjtBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBbUIsRUFBRSxJQUFtQixFQUFFLFVBQWdCO0lBQ3JGLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQW1CO0lBQy9DLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBJbnB1dG1hc2sgZnJvbSAnaW5wdXRtYXNrL2Rpc3QvaW5wdXRtYXNrLmVzNi5qcyc7XG5cbmV4cG9ydCBlbnVtIElucHV0TWFza0VudW0ge1xuICAgIENQRiA9ICdjcGYnLFxuICAgIENOUEogPSAnY25waicsXG4gICAgQ1VJVCA9ICdjdWl0JyxcbiAgICBSVVQgPSAncnV0JyxcbiAgICBDUEZfQ05QSiA9ICdjbnBqLWNwZicsXG4gICAgQ1BGX0NOUEpfUlVUID0gJ2NucGotY3BmLXJ1dCcsXG4gICAgREVDSU1BTCA9ICdkZWNpbWFsJyxcbiAgICBDRUxMUEhPTkUgPSAnY2VsbHBob25lJyxcbiAgICBQTEFURSA9ICdwbGF0ZScsXG4gICAgQ0VQID0gJ2NlcCcsXG4gICAgSU5URUdFUiA9ICdpbnRlZ2VyJyxcbiAgICBOVU1FUklDX1NUUklORyA9ICdudW1lcmljLXN0cmluZycsXG4gICAgVElNRSA9ICd0aW1lJyxcbiAgICBJTlRFUk5BVElPTkFMX1BIT05FID0gJ2ludGVybmF0aW9uYWwtcGhvbmUnLFxuICAgIERBVEUgPSAnZGF0ZSdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5SW5wdXRNYXNrKGVsZW1lbnQ6IEVsZW1lbnRSZWYsIG1hc2s6IElucHV0TWFza0VudW0sIHBhcmFtZXRlcnM/OiBhbnkpOiB2b2lkIHtcbiAgICBJbnB1dG1hc2sobWFzaywgcGFyYW1ldGVycykubWFzayhlbGVtZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUlucHV0TWFzayhlbGVtZW50OiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgSW5wdXRtYXNrLnJlbW92ZShlbGVtZW50KTtcbn1cbiJdfQ==