@provoly/dashboard 1.2.7 → 1.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/admin.module.d.ts +16 -15
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +5 -16
- package/admin/components/admin-dataset/{shared/admin-form-dataset → admin-form-dataset}/admin-form-dataset.component.d.ts +8 -7
- package/admin/components/admin-dataset/store/admin-dataset.actions.d.ts +23 -18
- package/admin/components/admin-dataset/store/admin-dataset.effects.d.ts +9 -6
- package/admin/components/admin-dataset/store/admin-dataset.service.d.ts +2 -1
- package/admin/components/shared/add-category-modal/add-category-modal.component.d.ts +39 -0
- package/admin/i18n/en.translations.d.ts +23 -8
- package/admin/i18n/fr.translations.d.ts +23 -8
- package/dataset/components/dataset.component.d.ts +6 -2
- package/dataset/dataset.module.d.ts +1 -1
- package/dataset/i18n/en.translations.d.ts +8 -0
- package/dataset/i18n/fr.translations.d.ts +8 -0
- package/dataset/style/_o-pry-dataset-card.scss +19 -11
- package/dataset/style/_o-pry-dataset.scss +43 -11
- package/esm2022/admin/admin.module.mjs +7 -4
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +22 -53
- package/esm2022/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.mjs +1 -1
- package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs +115 -0
- package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs +1 -1
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +3 -3
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.actions.mjs +11 -10
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.effects.mjs +2 -1
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.service.mjs +10 -4
- package/esm2022/admin/components/shared/add-category-modal/add-category-modal.component.mjs +73 -0
- package/esm2022/admin/i18n/en.translations.mjs +25 -10
- package/esm2022/admin/i18n/fr.translations.mjs +26 -11
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +6 -6
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -3
- package/esm2022/dataset/components/dataset.component.mjs +16 -6
- package/esm2022/dataset/dataset.module.mjs +8 -5
- package/esm2022/dataset/i18n/en.translations.mjs +9 -1
- package/esm2022/dataset/i18n/fr.translations.mjs +10 -2
- package/esm2022/dataset/style/css.component.mjs +2 -2
- package/esm2022/lib/core/components/share/access-rights-share/access-rights-share.component.mjs +1 -3
- package/esm2022/lib/core/components/share/access-rights-share-modal/access-rights-share-modal.component.mjs +11 -9
- package/esm2022/lib/core/components/share/share.utils.mjs +7 -4
- package/esm2022/lib/core/store/data-source/data-source.actions.mjs +4 -2
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +4 -1
- package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
- package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +6 -2
- package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +4 -2
- package/esm2022/lib/core/store/data-source/data-source.service.mjs +6 -1
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +3 -3
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +7 -1
- package/esm2022/toolbox/shared/presentation-form/presentation-form.component.mjs +3 -3
- package/fesm2022/provoly-dashboard-admin.mjs +194 -105
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +45 -16
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +2 -2
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +8 -2
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +50 -16
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/components/share/share.utils.d.ts +1 -1
- package/lib/core/store/data-source/data-source.actions.d.ts +7 -0
- package/lib/core/store/data-source/data-source.effects.d.ts +3 -0
- package/lib/core/store/data-source/data-source.model.d.ts +3 -0
- package/lib/core/store/data-source/data-source.reducer.d.ts +2 -0
- package/lib/core/store/data-source/data-source.selectors.d.ts +1 -0
- package/lib/core/store/data-source/data-source.service.d.ts +2 -0
- package/package.json +48 -48
- package/styles/base/_typography.scss +4 -0
- package/styles/base/_utils.scss +27 -1
- package/styles/components/_a-btn.scss +4 -0
- package/styles/components/_a-chip.scss +1 -0
- package/styles/components/_o-modal.scss +0 -42
- package/styles/layout/_o-base-layout.scss +1 -7
- package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +0 -99
|
@@ -78,11 +78,11 @@ export class PresentationFormComponent extends SubscriptionnerDirective {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PresentationFormComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
81
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PresentationFormComponent, selector: "pry-presentation-form", inputs: { mode: "mode", themePrefix: "themePrefix", selectedPresentation: "selectedPresentation" }, outputs: { formValue: "formValue", isFormValid: "isFormValid" }, usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n @if (name.touched && name.errors?.['required']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.required' | i18n }}\n </label>\n }\n @if (name.touched && name.errors?.['maxlength']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '50' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{ '@pry.presentation.form.description' | i18n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n @if (description.touched && description.errors?.['maxlength']) {\n <label for=\"presentation_description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n [i18nPrefix]=\"themePrefix\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "component", type: i4.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i5.PryTextEditorComponent, selector: "pry-text-editor", inputs: ["tabView"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
81
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PresentationFormComponent, selector: "pry-presentation-form", inputs: { mode: "mode", themePrefix: "themePrefix", selectedPresentation: "selectedPresentation" }, outputs: { formValue: "formValue", isFormValid: "isFormValid" }, usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n @if (name.touched && name.errors?.['required']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.required' | i18n }}\n </label>\n }\n @if (name.touched && name.errors?.['maxlength']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '50' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{ '@pry.presentation.form.description' | i18n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n @if (description.touched && description.errors?.['maxlength']) {\n <label for=\"presentation_description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n [i18nPrefix]=\"themePrefix\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.toolbox.about' | i18n }}</label>\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "component", type: i4.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i5.PryTextEditorComponent, selector: "pry-text-editor", inputs: ["tabView"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
82
82
|
}
|
|
83
83
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PresentationFormComponent, decorators: [{
|
|
84
84
|
type: Component,
|
|
85
|
-
args: [{ selector: 'pry-presentation-form', template: "<form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n @if (name.touched && name.errors?.['required']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.required' | i18n }}\n </label>\n }\n @if (name.touched && name.errors?.['maxlength']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '50' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{ '@pry.presentation.form.description' | i18n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n @if (description.touched && description.errors?.['maxlength']) {\n <label for=\"presentation_description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n [i18nPrefix]=\"themePrefix\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n</form>\n" }]
|
|
85
|
+
args: [{ selector: 'pry-presentation-form', template: "<form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n @if (name.touched && name.errors?.['required']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.required' | i18n }}\n </label>\n }\n @if (name.touched && name.errors?.['maxlength']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '50' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{ '@pry.presentation.form.description' | i18n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n @if (description.touched && description.errors?.['maxlength']) {\n <label for=\"presentation_description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n [i18nPrefix]=\"themePrefix\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.toolbox.about' | i18n }}</label>\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n</form>\n" }]
|
|
86
86
|
}], ctorParameters: () => [{ type: i1.Store }], propDecorators: { mode: [{
|
|
87
87
|
type: Input
|
|
88
88
|
}], themePrefix: [{
|
|
@@ -94,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
94
94
|
}], isFormValid: [{
|
|
95
95
|
type: Output
|
|
96
96
|
}] } });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvdG9vbGJveC9zaGFyZWQvcHJlc2VudGF0aW9uLWZvcm0vcHJlc2VudGF0aW9uLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvdG9vbGJveC9zaGFyZWQvcHJlc2VudGF0aW9uLWZvcm0vcHJlc2VudGF0aW9uLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsWUFBWSxFQUVaLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBaUIsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7QUFzQm5HLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFtQnJFLElBQWEsb0JBQW9CLENBQUMsWUFBNkM7UUFDN0UsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBS0QsWUFBc0IsS0FBWTtRQUNoQyxLQUFLLEVBQUUsQ0FBQztRQURZLFVBQUssR0FBTCxLQUFLLENBQU87UUF6QmxDLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBbUI7WUFDckMsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRTtnQkFD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Z0JBR08sb0JBQW9CO3NCQUFoQyxLQUFLO2dCQUlJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIERFRkFVTFRfREFTSEJPQVJEX0lDT05fVVJMLFxuICBMaWJyYXJ5VHlwZXMsXG4gIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZVxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWV0YWRhdGFBY3Rpb25zLCBNZXRhZGF0YVNlbGVjdG9ycyB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL21ldGFkYXRhLWVkaXRvcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25Gb3JtIHtcbiAgbmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbiAgZGVzY3JpcHRpb246IEZvcm1Db250cm9sPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+O1xuICB0aGVtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD47XG4gIGFkZGl0aW9uYWxJbmZvcm1hdGlvbjogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uRm9ybVZhbHVlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdGhlbWU/OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxJbmZvcm1hdGlvbj86IHN0cmluZztcbiAgaW1hZ2U6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXByZXNlbnRhdGlvbi1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXNlbnRhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcmVzZW50YXRpb25Gb3JtQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXA8UHJlc2VudGF0aW9uRm9ybT4oe1xuICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbCh1bmRlZmluZWQsIHtcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldLFxuICAgICAgbm9uTnVsbGFibGU6IHRydWVcbiAgICB9KSxcbiAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKHVuZGVmaW5lZCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwMCldKSxcbiAgICB0aGVtZTogbmV3IEZvcm1Db250cm9sKHVuZGVmaW5lZCksXG4gICAgYWRkaXRpb25hbEluZm9ybWF0aW9uOiBuZXcgRm9ybUNvbnRyb2wodW5kZWZpbmVkKVxuICB9KTtcblxuICBpbWFnZTogc3RyaW5nID0gREVGQVVMVF9EQVNIQk9BUkRfSUNPTl9VUkw7XG4gIHR5cGU6IExpYnJhcnlUeXBlcyA9IExpYnJhcnlUeXBlcy5JTExVU1RSQVRJT047XG4gIHBvc3NpYmxlVGhlbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIG1vZGU6ICd0aGVtZScgfCAnbWV0YScgPSAnbWV0YSc7XG4gIEBJbnB1dCgpIHRoZW1lUHJlZml4OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBzZWxlY3RlZFByZXNlbnRhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZFByZXNlbnRhdGlvbihwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gIH1cblxuICBAT3V0cHV0KCkgZm9ybVZhbHVlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJ0aWFsPFByZXNlbnRhdGlvbkZvcm1WYWx1ZT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIEBPdXRwdXQoKSBpc0Zvcm1WYWxpZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWV0YWRhdGFBY3Rpb25zLmxvYWRNZXRhZGF0YSgpKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChNZXRhZGF0YVNlbGVjdG9ycy5tZXRhZGF0YSkuc3Vic2NyaWJlKChtZXRhZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnBvc3NpYmxlVGhlbWVzID0gbWV0YWRhdGE/LmZpbmQoKG1ldGEpID0+IG1ldGEubmFtZSA9PT0gJ190aGVtZScpPy5hbGxvd2VkVmFsdWVzID8/IFtdO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0Zvcm1WYWxpZC5uZXh0KHRoaXMuZm9ybS52YWxpZCk7XG4gICAgICAgIHRoaXMuZm9ybVZhbHVlLm5leHQodGhpcy5nZXRGb3JtVmFsdWUoKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmltYWdlID0gdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmltYWdlID8/IERFRkFVTFRfREFTSEJPQVJEX0lDT05fVVJMO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5zdWJzY3JpYmUoKHByZXNlbnRhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0aGVtZSA9IHByZXNlbnRhdGlvbj8ubWV0YWRhdGE/LmZpbmQoKG1ldGFkYXRhKSA9PiBtZXRhZGF0YS5tZXRhZGF0YURlZi5uYW1lID09PSAnX3RoZW1lJyk/LnZhbHVlO1xuICAgICAgICBpZiAoISF0aGVtZSkgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyB0aGVtZSB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZSkgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogQWJzdHJhY3RDb250cm9sPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ25hbWUnXTtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ2Rlc2NyaXB0aW9uJ107XG4gIH1cblxuICBnZXQgdGhlbWUoKTogQWJzdHJhY3RDb250cm9sPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzWyd0aGVtZSddO1xuICB9XG5cbiAgZ2V0IGFkZGl0aW9uYWxJbmZvcm1hdGlvbigpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ2FkZGl0aW9uYWxJbmZvcm1hdGlvbiddO1xuICB9XG5cbiAgZ2V0Rm9ybVZhbHVlKCk6IFBhcnRpYWw8UHJlc2VudGF0aW9uRm9ybVZhbHVlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZS52YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLnZhbHVlID09PSBudWxsID8gdW5kZWZpbmVkIDogdGhpcy5kZXNjcmlwdGlvbi52YWx1ZSxcbiAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLnZhbHVlID09PSBudWxsID8gdW5kZWZpbmVkIDogdGhpcy50aGVtZS52YWx1ZSxcbiAgICAgIGFkZGl0aW9uYWxJbmZvcm1hdGlvbjogdGhpcy5hZGRpdGlvbmFsSW5mb3JtYXRpb24udmFsdWUgPT09IG51bGwgPyB1bmRlZmluZWQgOiB0aGlzLmFkZGl0aW9uYWxJbmZvcm1hdGlvbi52YWx1ZSxcbiAgICAgIGltYWdlOiB0aGlzLmltYWdlXG4gICAgfTtcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJvLXByZXNlbnRhdGlvbi1mb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5uYW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgaWQ9XCJwcmVzZW50YXRpb25fbmFtZVwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0ubmFtZScgfCBpMThuIH19XCJcbiAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgIG1heGxlbmd0aD1cIjUwXCJcbiAgICAgIHJlcXVpcmVkXG4gICAgLz5cbiAgICBAaWYgKG5hbWUudG91Y2hlZCAmJiBuYW1lLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICA8bGFiZWwgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLnJlcXVpcmVkJyB8IGkxOG4gfX1cbiAgICAgIDwvbGFiZWw+XG4gICAgfVxuICAgIEBpZiAobmFtZS50b3VjaGVkICYmIG5hbWUuZXJyb3JzPy5bJ21heGxlbmd0aCddKSB7XG4gICAgICA8bGFiZWwgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLm1heExlbmd0aCcgfCBpMThuOiB7IGxlbjogJzUwJyB9IH19XG4gICAgICA8L2xhYmVsPlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX2Rlc2NyaXB0aW9uXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0uZGVzY3JpcHRpb24nIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgPHRleHRhcmVhXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICBpZD1cInByZXNlbnRhdGlvbl9kZXNjcmlwdGlvblwiXG4gICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgY29scz1cIjMwXCJcbiAgICAgIHJvd3M9XCI1XCJcbiAgICAgIG1heGxlbmd0aD1cIjIwMFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmRlc2NyaXB0aW9uJyB8IGkxOG4gfX1cIlxuICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgID48L3RleHRhcmVhPlxuICAgIEBpZiAoZGVzY3JpcHRpb24udG91Y2hlZCAmJiBkZXNjcmlwdGlvbi5lcnJvcnM/LlsnbWF4bGVuZ3RoJ10pIHtcbiAgICAgIDxsYWJlbCBmb3I9XCJwcmVzZW50YXRpb25fZGVzY3JpcHRpb25cIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLm1heExlbmd0aCcgfCBpMThuOiB7IGxlbjogJzIwMCcgfSB9fVxuICAgICAgPC9sYWJlbD5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1mdWxsXCIgKm5nSWY9XCJtb2RlID09PSAndGhlbWUnXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInByZXNlbnRhdGlvbl90aGVtZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLnRoZW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxwcnktc2VsZWN0XG4gICAgICBpZD1cInByZXNlbnRhdGlvbl90aGVtZVwiXG4gICAgICBbaXRlbXNdPVwicG9zc2libGVUaGVtZXNcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGhlbWVcIlxuICAgICAgW2NsZWFyYWJsZV09XCJ0cnVlXCJcbiAgICAgIFtpMThuUHJlZml4XT1cInRoZW1lUHJlZml4XCJcbiAgICA+PC9wcnktc2VsZWN0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJwcmVzZW50YXRpb25faW1hZ2VcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5pbWFnZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiby1maWxlLWlucHV0XCI+XG4gICAgICA8cHJ5LXNlbGVjdC1pbWFnZVxuICAgICAgICBpZD1cInByZXNlbnRhdGlvbl9pbWFnZVwiXG4gICAgICAgIChjaGFuZ2VkKT1cImltYWdlID0gJGV2ZW50XCJcbiAgICAgICAgW2ljb25VcmxdPVwiaW1hZ2VcIlxuICAgICAgICBbbW9kZV09XCJ0eXBlXCJcbiAgICAgID48L3ByeS1zZWxlY3QtaW1hZ2U+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1mdWxsXCI+XG4gICAgPHByeS10ZXh0LWVkaXRvciBmb3JtQ29udHJvbE5hbWU9XCJhZGRpdGlvbmFsSW5mb3JtYXRpb25cIj48L3ByeS10ZXh0LWVkaXRvcj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvdG9vbGJveC9zaGFyZWQvcHJlc2VudGF0aW9uLWZvcm0vcHJlc2VudGF0aW9uLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvdG9vbGJveC9zaGFyZWQvcHJlc2VudGF0aW9uLWZvcm0vcHJlc2VudGF0aW9uLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsWUFBWSxFQUVaLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBaUIsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7QUFzQm5HLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFtQnJFLElBQWEsb0JBQW9CLENBQUMsWUFBNkM7UUFDN0UsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBS0QsWUFBc0IsS0FBWTtRQUNoQyxLQUFLLEVBQUUsQ0FBQztRQURZLFVBQUssR0FBTCxLQUFLLENBQU87UUF6QmxDLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBbUI7WUFDckMsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRTtnQkFD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Z0JBR08sb0JBQW9CO3NCQUFoQyxLQUFLO2dCQUlJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIERFRkFVTFRfREFTSEJPQVJEX0lDT05fVVJMLFxuICBMaWJyYXJ5VHlwZXMsXG4gIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZVxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWV0YWRhdGFBY3Rpb25zLCBNZXRhZGF0YVNlbGVjdG9ycyB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL21ldGFkYXRhLWVkaXRvcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25Gb3JtIHtcbiAgbmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbiAgZGVzY3JpcHRpb246IEZvcm1Db250cm9sPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+O1xuICB0aGVtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD47XG4gIGFkZGl0aW9uYWxJbmZvcm1hdGlvbjogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uRm9ybVZhbHVlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdGhlbWU/OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxJbmZvcm1hdGlvbj86IHN0cmluZztcbiAgaW1hZ2U6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXByZXNlbnRhdGlvbi1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXNlbnRhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcmVzZW50YXRpb25Gb3JtQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXA8UHJlc2VudGF0aW9uRm9ybT4oe1xuICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbCh1bmRlZmluZWQsIHtcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldLFxuICAgICAgbm9uTnVsbGFibGU6IHRydWVcbiAgICB9KSxcbiAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKHVuZGVmaW5lZCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwMCldKSxcbiAgICB0aGVtZTogbmV3IEZvcm1Db250cm9sKHVuZGVmaW5lZCksXG4gICAgYWRkaXRpb25hbEluZm9ybWF0aW9uOiBuZXcgRm9ybUNvbnRyb2wodW5kZWZpbmVkKVxuICB9KTtcblxuICBpbWFnZTogc3RyaW5nID0gREVGQVVMVF9EQVNIQk9BUkRfSUNPTl9VUkw7XG4gIHR5cGU6IExpYnJhcnlUeXBlcyA9IExpYnJhcnlUeXBlcy5JTExVU1RSQVRJT047XG4gIHBvc3NpYmxlVGhlbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIG1vZGU6ICd0aGVtZScgfCAnbWV0YScgPSAnbWV0YSc7XG4gIEBJbnB1dCgpIHRoZW1lUHJlZml4OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBzZWxlY3RlZFByZXNlbnRhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZFByZXNlbnRhdGlvbihwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gIH1cblxuICBAT3V0cHV0KCkgZm9ybVZhbHVlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJ0aWFsPFByZXNlbnRhdGlvbkZvcm1WYWx1ZT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIEBPdXRwdXQoKSBpc0Zvcm1WYWxpZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWV0YWRhdGFBY3Rpb25zLmxvYWRNZXRhZGF0YSgpKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChNZXRhZGF0YVNlbGVjdG9ycy5tZXRhZGF0YSkuc3Vic2NyaWJlKChtZXRhZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnBvc3NpYmxlVGhlbWVzID0gbWV0YWRhdGE/LmZpbmQoKG1ldGEpID0+IG1ldGEubmFtZSA9PT0gJ190aGVtZScpPy5hbGxvd2VkVmFsdWVzID8/IFtdO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0Zvcm1WYWxpZC5uZXh0KHRoaXMuZm9ybS52YWxpZCk7XG4gICAgICAgIHRoaXMuZm9ybVZhbHVlLm5leHQodGhpcy5nZXRGb3JtVmFsdWUoKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmltYWdlID0gdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmltYWdlID8/IERFRkFVTFRfREFTSEJPQVJEX0lDT05fVVJMO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5zdWJzY3JpYmUoKHByZXNlbnRhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0aGVtZSA9IHByZXNlbnRhdGlvbj8ubWV0YWRhdGE/LmZpbmQoKG1ldGFkYXRhKSA9PiBtZXRhZGF0YS5tZXRhZGF0YURlZi5uYW1lID09PSAnX3RoZW1lJyk/LnZhbHVlO1xuICAgICAgICBpZiAoISF0aGVtZSkgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyB0aGVtZSB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZSkgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogQWJzdHJhY3RDb250cm9sPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ25hbWUnXTtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ2Rlc2NyaXB0aW9uJ107XG4gIH1cblxuICBnZXQgdGhlbWUoKTogQWJzdHJhY3RDb250cm9sPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzWyd0aGVtZSddO1xuICB9XG5cbiAgZ2V0IGFkZGl0aW9uYWxJbmZvcm1hdGlvbigpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ2FkZGl0aW9uYWxJbmZvcm1hdGlvbiddO1xuICB9XG5cbiAgZ2V0Rm9ybVZhbHVlKCk6IFBhcnRpYWw8UHJlc2VudGF0aW9uRm9ybVZhbHVlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZS52YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLnZhbHVlID09PSBudWxsID8gdW5kZWZpbmVkIDogdGhpcy5kZXNjcmlwdGlvbi52YWx1ZSxcbiAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLnZhbHVlID09PSBudWxsID8gdW5kZWZpbmVkIDogdGhpcy50aGVtZS52YWx1ZSxcbiAgICAgIGFkZGl0aW9uYWxJbmZvcm1hdGlvbjogdGhpcy5hZGRpdGlvbmFsSW5mb3JtYXRpb24udmFsdWUgPT09IG51bGwgPyB1bmRlZmluZWQgOiB0aGlzLmFkZGl0aW9uYWxJbmZvcm1hdGlvbi52YWx1ZSxcbiAgICAgIGltYWdlOiB0aGlzLmltYWdlXG4gICAgfTtcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJvLXByZXNlbnRhdGlvbi1mb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5uYW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgaWQ9XCJwcmVzZW50YXRpb25fbmFtZVwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0ubmFtZScgfCBpMThuIH19XCJcbiAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgIG1heGxlbmd0aD1cIjUwXCJcbiAgICAgIHJlcXVpcmVkXG4gICAgLz5cbiAgICBAaWYgKG5hbWUudG91Y2hlZCAmJiBuYW1lLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICA8bGFiZWwgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLnJlcXVpcmVkJyB8IGkxOG4gfX1cbiAgICAgIDwvbGFiZWw+XG4gICAgfVxuICAgIEBpZiAobmFtZS50b3VjaGVkICYmIG5hbWUuZXJyb3JzPy5bJ21heGxlbmd0aCddKSB7XG4gICAgICA8bGFiZWwgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLm1heExlbmd0aCcgfCBpMThuOiB7IGxlbjogJzUwJyB9IH19XG4gICAgICA8L2xhYmVsPlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX2Rlc2NyaXB0aW9uXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0uZGVzY3JpcHRpb24nIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgPHRleHRhcmVhXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICBpZD1cInByZXNlbnRhdGlvbl9kZXNjcmlwdGlvblwiXG4gICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgY29scz1cIjMwXCJcbiAgICAgIHJvd3M9XCI1XCJcbiAgICAgIG1heGxlbmd0aD1cIjIwMFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmRlc2NyaXB0aW9uJyB8IGkxOG4gfX1cIlxuICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgID48L3RleHRhcmVhPlxuICAgIEBpZiAoZGVzY3JpcHRpb24udG91Y2hlZCAmJiBkZXNjcmlwdGlvbi5lcnJvcnM/LlsnbWF4bGVuZ3RoJ10pIHtcbiAgICAgIDxsYWJlbCBmb3I9XCJwcmVzZW50YXRpb25fZGVzY3JpcHRpb25cIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLm1heExlbmd0aCcgfCBpMThuOiB7IGxlbjogJzIwMCcgfSB9fVxuICAgICAgPC9sYWJlbD5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1mdWxsXCIgKm5nSWY9XCJtb2RlID09PSAndGhlbWUnXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInByZXNlbnRhdGlvbl90aGVtZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLnRoZW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxwcnktc2VsZWN0XG4gICAgICBpZD1cInByZXNlbnRhdGlvbl90aGVtZVwiXG4gICAgICBbaXRlbXNdPVwicG9zc2libGVUaGVtZXNcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGhlbWVcIlxuICAgICAgW2NsZWFyYWJsZV09XCJ0cnVlXCJcbiAgICAgIFtpMThuUHJlZml4XT1cInRoZW1lUHJlZml4XCJcbiAgICA+PC9wcnktc2VsZWN0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJwcmVzZW50YXRpb25faW1hZ2VcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5pbWFnZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiby1maWxlLWlucHV0XCI+XG4gICAgICA8cHJ5LXNlbGVjdC1pbWFnZVxuICAgICAgICBpZD1cInByZXNlbnRhdGlvbl9pbWFnZVwiXG4gICAgICAgIChjaGFuZ2VkKT1cImltYWdlID0gJGV2ZW50XCJcbiAgICAgICAgW2ljb25VcmxdPVwiaW1hZ2VcIlxuICAgICAgICBbbW9kZV09XCJ0eXBlXCJcbiAgICAgID48L3ByeS1zZWxlY3QtaW1hZ2U+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1mdWxsXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInByZXNlbnRhdGlvbl9pbWFnZVwiPnt7ICdAcHJ5LnRvb2xib3guYWJvdXQnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgPHByeS10ZXh0LWVkaXRvciBmb3JtQ29udHJvbE5hbWU9XCJhZGRpdGlvbmFsSW5mb3JtYXRpb25cIj48L3ByeS10ZXh0LWVkaXRvcj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|