@ajsf/material 14.0.0 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/material-design-framework.component.mjs +102 -0
- package/{esm2020 → esm2022}/lib/material-design-framework.module.mjs +21 -21
- package/{esm2020 → esm2022}/lib/material-design.framework.mjs +4 -4
- package/esm2022/lib/widgets/flex-layout-root.component.mjs +98 -0
- package/esm2022/lib/widgets/flex-layout-section.component.mjs +357 -0
- package/{esm2020 → esm2022}/lib/widgets/material-add-reference.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/widgets/material-button-group.component.mjs +7 -7
- package/esm2022/lib/widgets/material-button.component.mjs +76 -0
- package/{esm2020 → esm2022}/lib/widgets/material-checkbox.component.mjs +7 -7
- package/esm2022/lib/widgets/material-checkboxes.component.mjs +129 -0
- package/{esm2020 → esm2022}/lib/widgets/material-chip-list.component.mjs +5 -5
- package/esm2022/lib/widgets/material-datepicker.component.mjs +141 -0
- package/{esm2020 → esm2022}/lib/widgets/material-file.component.mjs +5 -5
- package/esm2022/lib/widgets/material-input.component.mjs +149 -0
- package/esm2022/lib/widgets/material-number.component.mjs +145 -0
- package/{esm2020 → esm2022}/lib/widgets/material-one-of.component.mjs +5 -5
- package/esm2022/lib/widgets/material-radios.component.mjs +122 -0
- package/esm2022/lib/widgets/material-select.component.mjs +186 -0
- package/esm2022/lib/widgets/material-slider.component.mjs +77 -0
- package/{esm2020 → esm2022}/lib/widgets/material-stepper.component.mjs +5 -5
- package/esm2022/lib/widgets/material-tabs.component.mjs +96 -0
- package/esm2022/lib/widgets/material-textarea.component.mjs +134 -0
- package/{fesm2020 → fesm2022}/ajsf-material.mjs +204 -200
- package/fesm2022/ajsf-material.mjs.map +1 -0
- package/lib/material-design-framework.component.d.ts +1 -1
- package/lib/material-design-framework.module.d.ts +2 -2
- package/lib/widgets/flex-layout-root.component.d.ts +1 -1
- package/lib/widgets/flex-layout-section.component.d.ts +1 -1
- package/lib/widgets/material-add-reference.component.d.ts +1 -1
- package/lib/widgets/material-button-group.component.d.ts +1 -1
- package/lib/widgets/material-button.component.d.ts +1 -1
- package/lib/widgets/material-checkbox.component.d.ts +1 -1
- package/lib/widgets/material-checkboxes.component.d.ts +1 -1
- package/lib/widgets/material-chip-list.component.d.ts +1 -1
- package/lib/widgets/material-datepicker.component.d.ts +1 -1
- package/lib/widgets/material-file.component.d.ts +1 -1
- package/lib/widgets/material-input.component.d.ts +1 -1
- package/lib/widgets/material-number.component.d.ts +1 -1
- package/lib/widgets/material-one-of.component.d.ts +1 -1
- package/lib/widgets/material-radios.component.d.ts +1 -1
- package/lib/widgets/material-select.component.d.ts +1 -1
- package/lib/widgets/material-slider.component.d.ts +1 -1
- package/lib/widgets/material-stepper.component.d.ts +1 -1
- package/lib/widgets/material-tabs.component.d.ts +1 -1
- package/lib/widgets/material-textarea.component.d.ts +1 -1
- package/package.json +11 -17
- package/esm2020/lib/material-design-framework.component.mjs +0 -102
- package/esm2020/lib/widgets/flex-layout-root.component.mjs +0 -98
- package/esm2020/lib/widgets/flex-layout-section.component.mjs +0 -357
- package/esm2020/lib/widgets/material-button.component.mjs +0 -76
- package/esm2020/lib/widgets/material-checkboxes.component.mjs +0 -129
- package/esm2020/lib/widgets/material-datepicker.component.mjs +0 -141
- package/esm2020/lib/widgets/material-input.component.mjs +0 -149
- package/esm2020/lib/widgets/material-number.component.mjs +0 -145
- package/esm2020/lib/widgets/material-radios.component.mjs +0 -122
- package/esm2020/lib/widgets/material-select.component.mjs +0 -186
- package/esm2020/lib/widgets/material-slider.component.mjs +0 -83
- package/esm2020/lib/widgets/material-tabs.component.mjs +0 -86
- package/esm2020/lib/widgets/material-textarea.component.mjs +0 -134
- package/fesm2015/ajsf-material.mjs +0 -2332
- package/fesm2015/ajsf-material.mjs.map +0 -1
- package/fesm2020/ajsf-material.mjs.map +0 -1
- /package/{esm2020 → esm2022}/ajsf-material.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/widgets/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { Component, Inject, Input, Optional } from '@angular/core';
|
|
2
|
-
import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@ajsf/core";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "@angular/forms";
|
|
7
|
-
import * as i4 from "@angular/material/form-field";
|
|
8
|
-
import * as i5 from "@angular/material/input";
|
|
9
|
-
export class MaterialTextareaComponent {
|
|
10
|
-
constructor(matFormFieldDefaultOptions, jsf) {
|
|
11
|
-
this.matFormFieldDefaultOptions = matFormFieldDefaultOptions;
|
|
12
|
-
this.jsf = jsf;
|
|
13
|
-
this.controlDisabled = false;
|
|
14
|
-
this.boundControl = false;
|
|
15
|
-
}
|
|
16
|
-
ngOnInit() {
|
|
17
|
-
this.options = this.layoutNode.options || {};
|
|
18
|
-
this.jsf.initializeControl(this);
|
|
19
|
-
if (!this.options.notitle && !this.options.description && this.options.placeholder) {
|
|
20
|
-
this.options.description = this.options.placeholder;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
updateValue(event) {
|
|
24
|
-
this.jsf.updateValue(this, event.target.value);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
MaterialTextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MaterialTextareaComponent, deps: [{ token: MAT_FORM_FIELD_DEFAULT_OPTIONS, optional: true }, { token: i1.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
-
MaterialTextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: MaterialTextareaComponent, selector: "material-textarea-widget", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: `
|
|
29
|
-
<mat-form-field [appearance]="options?.appearance || matFormFieldDefaultOptions?.appearance || 'standard'"
|
|
30
|
-
[class]="options?.htmlClass || ''"
|
|
31
|
-
[floatLabel]="options?.floatLabel || matFormFieldDefaultOptions?.floatLabel || (options?.notitle ? 'never' : 'auto')"
|
|
32
|
-
[hideRequiredMarker]="options?.hideRequired ? 'true' : 'false'"
|
|
33
|
-
[style.width]="'100%'">
|
|
34
|
-
<mat-label *ngIf="!options?.notitle">{{options?.title}}</mat-label>
|
|
35
|
-
<span matPrefix *ngIf="options?.prefix || options?.fieldAddonLeft"
|
|
36
|
-
[innerHTML]="options?.prefix || options?.fieldAddonLeft"></span>
|
|
37
|
-
<textarea matInput *ngIf="boundControl"
|
|
38
|
-
[formControl]="formControl"
|
|
39
|
-
[attr.aria-describedby]="'control' + layoutNode?._id + 'Status'"
|
|
40
|
-
[attr.list]="'control' + layoutNode?._id + 'Autocomplete'"
|
|
41
|
-
[attr.maxlength]="options?.maxLength"
|
|
42
|
-
[attr.minlength]="options?.minLength"
|
|
43
|
-
[attr.pattern]="options?.pattern"
|
|
44
|
-
[required]="options?.required"
|
|
45
|
-
[id]="'control' + layoutNode?._id"
|
|
46
|
-
[name]="controlName"
|
|
47
|
-
[placeholder]="options?.notitle ? options?.placeholder : options?.title"
|
|
48
|
-
[readonly]="options?.readonly ? 'readonly' : null"
|
|
49
|
-
[style.width]="'100%'"
|
|
50
|
-
(blur)="options.showErrors = true"></textarea>
|
|
51
|
-
<textarea matInput *ngIf="!boundControl"
|
|
52
|
-
[attr.aria-describedby]="'control' + layoutNode?._id + 'Status'"
|
|
53
|
-
[attr.list]="'control' + layoutNode?._id + 'Autocomplete'"
|
|
54
|
-
[attr.maxlength]="options?.maxLength"
|
|
55
|
-
[attr.minlength]="options?.minLength"
|
|
56
|
-
[attr.pattern]="options?.pattern"
|
|
57
|
-
[required]="options?.required"
|
|
58
|
-
[disabled]="controlDisabled"
|
|
59
|
-
[id]="'control' + layoutNode?._id"
|
|
60
|
-
[name]="controlName"
|
|
61
|
-
[placeholder]="options?.notitle ? options?.placeholder : options?.title"
|
|
62
|
-
[readonly]="options?.readonly ? 'readonly' : null"
|
|
63
|
-
[style.width]="'100%'"
|
|
64
|
-
[value]="controlValue"
|
|
65
|
-
(input)="updateValue($event)"
|
|
66
|
-
(blur)="options.showErrors = true"></textarea>
|
|
67
|
-
<span matSuffix *ngIf="options?.suffix || options?.fieldAddonRight"
|
|
68
|
-
[innerHTML]="options?.suffix || options?.fieldAddonRight"></span>
|
|
69
|
-
<mat-hint *ngIf="options?.description && (!options?.showErrors || !options?.errorMessage)"
|
|
70
|
-
align="end" [innerHTML]="options?.description"></mat-hint>
|
|
71
|
-
</mat-form-field>
|
|
72
|
-
<mat-error *ngIf="options?.showErrors && options?.errorMessage"
|
|
73
|
-
[innerHTML]="options?.errorMessage"></mat-error>`, isInline: true, styles: ["mat-error{font-size:75%;margin-top:-1rem;margin-bottom:.5rem}::ng-deep json-schema-form mat-form-field .mat-form-field-wrapper .mat-form-field-flex .mat-form-field-infix{width:auto;width:initial}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix]" }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] });
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MaterialTextareaComponent, decorators: [{
|
|
75
|
-
type: Component,
|
|
76
|
-
args: [{ selector: 'material-textarea-widget', template: `
|
|
77
|
-
<mat-form-field [appearance]="options?.appearance || matFormFieldDefaultOptions?.appearance || 'standard'"
|
|
78
|
-
[class]="options?.htmlClass || ''"
|
|
79
|
-
[floatLabel]="options?.floatLabel || matFormFieldDefaultOptions?.floatLabel || (options?.notitle ? 'never' : 'auto')"
|
|
80
|
-
[hideRequiredMarker]="options?.hideRequired ? 'true' : 'false'"
|
|
81
|
-
[style.width]="'100%'">
|
|
82
|
-
<mat-label *ngIf="!options?.notitle">{{options?.title}}</mat-label>
|
|
83
|
-
<span matPrefix *ngIf="options?.prefix || options?.fieldAddonLeft"
|
|
84
|
-
[innerHTML]="options?.prefix || options?.fieldAddonLeft"></span>
|
|
85
|
-
<textarea matInput *ngIf="boundControl"
|
|
86
|
-
[formControl]="formControl"
|
|
87
|
-
[attr.aria-describedby]="'control' + layoutNode?._id + 'Status'"
|
|
88
|
-
[attr.list]="'control' + layoutNode?._id + 'Autocomplete'"
|
|
89
|
-
[attr.maxlength]="options?.maxLength"
|
|
90
|
-
[attr.minlength]="options?.minLength"
|
|
91
|
-
[attr.pattern]="options?.pattern"
|
|
92
|
-
[required]="options?.required"
|
|
93
|
-
[id]="'control' + layoutNode?._id"
|
|
94
|
-
[name]="controlName"
|
|
95
|
-
[placeholder]="options?.notitle ? options?.placeholder : options?.title"
|
|
96
|
-
[readonly]="options?.readonly ? 'readonly' : null"
|
|
97
|
-
[style.width]="'100%'"
|
|
98
|
-
(blur)="options.showErrors = true"></textarea>
|
|
99
|
-
<textarea matInput *ngIf="!boundControl"
|
|
100
|
-
[attr.aria-describedby]="'control' + layoutNode?._id + 'Status'"
|
|
101
|
-
[attr.list]="'control' + layoutNode?._id + 'Autocomplete'"
|
|
102
|
-
[attr.maxlength]="options?.maxLength"
|
|
103
|
-
[attr.minlength]="options?.minLength"
|
|
104
|
-
[attr.pattern]="options?.pattern"
|
|
105
|
-
[required]="options?.required"
|
|
106
|
-
[disabled]="controlDisabled"
|
|
107
|
-
[id]="'control' + layoutNode?._id"
|
|
108
|
-
[name]="controlName"
|
|
109
|
-
[placeholder]="options?.notitle ? options?.placeholder : options?.title"
|
|
110
|
-
[readonly]="options?.readonly ? 'readonly' : null"
|
|
111
|
-
[style.width]="'100%'"
|
|
112
|
-
[value]="controlValue"
|
|
113
|
-
(input)="updateValue($event)"
|
|
114
|
-
(blur)="options.showErrors = true"></textarea>
|
|
115
|
-
<span matSuffix *ngIf="options?.suffix || options?.fieldAddonRight"
|
|
116
|
-
[innerHTML]="options?.suffix || options?.fieldAddonRight"></span>
|
|
117
|
-
<mat-hint *ngIf="options?.description && (!options?.showErrors || !options?.errorMessage)"
|
|
118
|
-
align="end" [innerHTML]="options?.description"></mat-hint>
|
|
119
|
-
</mat-form-field>
|
|
120
|
-
<mat-error *ngIf="options?.showErrors && options?.errorMessage"
|
|
121
|
-
[innerHTML]="options?.errorMessage"></mat-error>`, styles: ["mat-error{font-size:75%;margin-top:-1rem;margin-bottom:.5rem}::ng-deep json-schema-form mat-form-field .mat-form-field-wrapper .mat-form-field-flex .mat-form-field-infix{width:auto;width:initial}\n"] }]
|
|
122
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
123
|
-
type: Inject,
|
|
124
|
-
args: [MAT_FORM_FIELD_DEFAULT_OPTIONS]
|
|
125
|
-
}, {
|
|
126
|
-
type: Optional
|
|
127
|
-
}] }, { type: i1.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
|
|
128
|
-
type: Input
|
|
129
|
-
}], layoutIndex: [{
|
|
130
|
-
type: Input
|
|
131
|
-
}], dataIndex: [{
|
|
132
|
-
type: Input
|
|
133
|
-
}] } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtdGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWpzZi1tYXRlcmlhbC9zcmMvbGliL3dpZGdldHMvbWF0ZXJpYWwtdGV4dGFyZWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7QUF5RDlFLE1BQU0sT0FBTyx5QkFBeUI7SUFXcEMsWUFDNkQsMEJBQTBCLEVBQzdFLEdBQTBCO1FBRHlCLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBQTtRQUM3RSxRQUFHLEdBQUgsR0FBRyxDQUF1QjtRQVRwQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztJQVNqQixDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDbEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7U0FDckQ7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDOztzSEExQlUseUJBQXlCLGtCQVkxQiw4QkFBOEI7MEdBWjdCLHlCQUF5QiwwSkFwRDFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dURBNkMyQzsyRkFPMUMseUJBQXlCO2tCQXZEckMsU0FBUzsrQkFFRSwwQkFBMEIsWUFDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1REE2QzJDOzswQkFtQmxELE1BQU07MkJBQUMsOEJBQThCOzswQkFBRyxRQUFRO2dGQUwxQyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpzb25TY2hlbWFGb3JtU2VydmljZSB9IGZyb20gJ0BhanNmL2NvcmUnO1xuaW1wb3J0IHsgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbkBDb21wb25lbnQoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbWF0ZXJpYWwtdGV4dGFyZWEtd2lkZ2V0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwib3B0aW9ucz8uYXBwZWFyYW5jZSB8fCBtYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucz8uYXBwZWFyYW5jZSB8fCAnc3RhbmRhcmQnXCJcbiAgICAgIFtjbGFzc109XCJvcHRpb25zPy5odG1sQ2xhc3MgfHwgJydcIlxuICAgICAgW2Zsb2F0TGFiZWxdPVwib3B0aW9ucz8uZmxvYXRMYWJlbCB8fCBtYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucz8uZmxvYXRMYWJlbCB8fCAob3B0aW9ucz8ubm90aXRsZSA/ICduZXZlcicgOiAnYXV0bycpXCJcbiAgICAgIFtoaWRlUmVxdWlyZWRNYXJrZXJdPVwib3B0aW9ucz8uaGlkZVJlcXVpcmVkID8gJ3RydWUnIDogJ2ZhbHNlJ1wiXG4gICAgICBbc3R5bGUud2lkdGhdPVwiJzEwMCUnXCI+XG4gICAgICA8bWF0LWxhYmVsICpuZ0lmPVwiIW9wdGlvbnM/Lm5vdGl0bGVcIj57e29wdGlvbnM/LnRpdGxlfX08L21hdC1sYWJlbD5cbiAgICAgIDxzcGFuIG1hdFByZWZpeCAqbmdJZj1cIm9wdGlvbnM/LnByZWZpeCB8fCBvcHRpb25zPy5maWVsZEFkZG9uTGVmdFwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwib3B0aW9ucz8ucHJlZml4IHx8IG9wdGlvbnM/LmZpZWxkQWRkb25MZWZ0XCI+PC9zcGFuPlxuICAgICAgPHRleHRhcmVhIG1hdElucHV0ICpuZ0lmPVwiYm91bmRDb250cm9sXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInY29udHJvbCcgKyBsYXlvdXROb2RlPy5faWQgKyAnU3RhdHVzJ1wiXG4gICAgICAgIFthdHRyLmxpc3RdPVwiJ2NvbnRyb2wnICsgbGF5b3V0Tm9kZT8uX2lkICsgJ0F1dG9jb21wbGV0ZSdcIlxuICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwib3B0aW9ucz8ubWF4TGVuZ3RoXCJcbiAgICAgICAgW2F0dHIubWlubGVuZ3RoXT1cIm9wdGlvbnM/Lm1pbkxlbmd0aFwiXG4gICAgICAgIFthdHRyLnBhdHRlcm5dPVwib3B0aW9ucz8ucGF0dGVyblwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJvcHRpb25zPy5yZXF1aXJlZFwiXG4gICAgICAgIFtpZF09XCInY29udHJvbCcgKyBsYXlvdXROb2RlPy5faWRcIlxuICAgICAgICBbbmFtZV09XCJjb250cm9sTmFtZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJvcHRpb25zPy5ub3RpdGxlID8gb3B0aW9ucz8ucGxhY2Vob2xkZXIgOiBvcHRpb25zPy50aXRsZVwiXG4gICAgICAgIFtyZWFkb25seV09XCJvcHRpb25zPy5yZWFkb25seSA/ICdyZWFkb25seScgOiBudWxsXCJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cIicxMDAlJ1wiXG4gICAgICAgIChibHVyKT1cIm9wdGlvbnMuc2hvd0Vycm9ycyA9IHRydWVcIj48L3RleHRhcmVhPlxuICAgICAgPHRleHRhcmVhIG1hdElucHV0ICpuZ0lmPVwiIWJvdW5kQ29udHJvbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2NvbnRyb2wnICsgbGF5b3V0Tm9kZT8uX2lkICsgJ1N0YXR1cydcIlxuICAgICAgICBbYXR0ci5saXN0XT1cIidjb250cm9sJyArIGxheW91dE5vZGU/Ll9pZCArICdBdXRvY29tcGxldGUnXCJcbiAgICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cIm9wdGlvbnM/Lm1heExlbmd0aFwiXG4gICAgICAgIFthdHRyLm1pbmxlbmd0aF09XCJvcHRpb25zPy5taW5MZW5ndGhcIlxuICAgICAgICBbYXR0ci5wYXR0ZXJuXT1cIm9wdGlvbnM/LnBhdHRlcm5cIlxuICAgICAgICBbcmVxdWlyZWRdPVwib3B0aW9ucz8ucmVxdWlyZWRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY29udHJvbERpc2FibGVkXCJcbiAgICAgICAgW2lkXT1cIidjb250cm9sJyArIGxheW91dE5vZGU/Ll9pZFwiXG4gICAgICAgIFtuYW1lXT1cImNvbnRyb2xOYW1lXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm9wdGlvbnM/Lm5vdGl0bGUgPyBvcHRpb25zPy5wbGFjZWhvbGRlciA6IG9wdGlvbnM/LnRpdGxlXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cIm9wdGlvbnM/LnJlYWRvbmx5ID8gJ3JlYWRvbmx5JyA6IG51bGxcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiJzEwMCUnXCJcbiAgICAgICAgW3ZhbHVlXT1cImNvbnRyb2xWYWx1ZVwiXG4gICAgICAgIChpbnB1dCk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib3B0aW9ucy5zaG93RXJyb3JzID0gdHJ1ZVwiPjwvdGV4dGFyZWE+XG4gICAgICA8c3BhbiBtYXRTdWZmaXggKm5nSWY9XCJvcHRpb25zPy5zdWZmaXggfHwgb3B0aW9ucz8uZmllbGRBZGRvblJpZ2h0XCJcbiAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25zPy5zdWZmaXggfHwgb3B0aW9ucz8uZmllbGRBZGRvblJpZ2h0XCI+PC9zcGFuPlxuICAgICAgPG1hdC1oaW50ICpuZ0lmPVwib3B0aW9ucz8uZGVzY3JpcHRpb24gJiYgKCFvcHRpb25zPy5zaG93RXJyb3JzIHx8ICFvcHRpb25zPy5lcnJvck1lc3NhZ2UpXCJcbiAgICAgICAgYWxpZ249XCJlbmRcIiBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmRlc2NyaXB0aW9uXCI+PC9tYXQtaGludD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJvcHRpb25zPy5zaG93RXJyb3JzICYmIG9wdGlvbnM/LmVycm9yTWVzc2FnZVwiXG4gICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmVycm9yTWVzc2FnZVwiPjwvbWF0LWVycm9yPmAsXG4gIHN0eWxlczogW2BcbiAgICBtYXQtZXJyb3IgeyBmb250LXNpemU6IDc1JTsgbWFyZ2luLXRvcDogLTFyZW07IG1hcmdpbi1ib3R0b206IDAuNXJlbTsgfVxuICAgIDo6bmctZGVlcCBqc29uLXNjaGVtYS1mb3JtIG1hdC1mb3JtLWZpZWxkIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1mbGV4XG4gICAgICAubWF0LWZvcm0tZmllbGQtaW5maXggeyB3aWR0aDogaW5pdGlhbDsgfVxuICBgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxUZXh0YXJlYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG4gIGNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIGNvbnRyb2xWYWx1ZTogYW55O1xuICBjb250cm9sRGlzYWJsZWQgPSBmYWxzZTtcbiAgYm91bmRDb250cm9sID0gZmFsc2U7XG4gIG9wdGlvbnM6IGFueTtcbiAgQElucHV0KCkgbGF5b3V0Tm9kZTogYW55O1xuICBASW5wdXQoKSBsYXlvdXRJbmRleDogbnVtYmVyW107XG4gIEBJbnB1dCgpIGRhdGFJbmRleDogbnVtYmVyW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMpIEBPcHRpb25hbCgpIHB1YmxpYyBtYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucyxcbiAgICBwcml2YXRlIGpzZjogSnNvblNjaGVtYUZvcm1TZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5sYXlvdXROb2RlLm9wdGlvbnMgfHwge307XG4gICAgdGhpcy5qc2YuaW5pdGlhbGl6ZUNvbnRyb2wodGhpcyk7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMubm90aXRsZSAmJiAhdGhpcy5vcHRpb25zLmRlc2NyaXB0aW9uICYmIHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlcikge1xuICAgICAgdGhpcy5vcHRpb25zLmRlc2NyaXB0aW9uID0gdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZhbHVlKGV2ZW50KSB7XG4gICAgdGhpcy5qc2YudXBkYXRlVmFsdWUodGhpcywgZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfVxufVxuIl19
|