@muziehdesign/forms 0.0.640-alpha → 0.0.645-alpha

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.
@@ -0,0 +1,18 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class FieldErrorsComponent {
5
+ get errorMessage() {
6
+ const errorKeys = Object.keys(this.field?.errors || {});
7
+ return errorKeys.length > 0 ? this.field?.errors[errorKeys[0]] : '';
8
+ }
9
+ }
10
+ FieldErrorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FieldErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ FieldErrorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: FieldErrorsComponent, selector: "mz-field-errors", inputs: { field: "field" }, ngImport: i0, template: "<div class=\"field-error\" *ngIf=\"errorMessage\">{{ errorMessage }}</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FieldErrorsComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'mz-field-errors', template: "<div class=\"field-error\" *ngIf=\"errorMessage\">{{ errorMessage }}</div>\n" }]
15
+ }], propDecorators: { field: [{
16
+ type: Input
17
+ }] } });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZXJyb3JzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvbGliL2ZpZWxkLWVycm9ycy9maWVsZC1lcnJvcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvZmllbGQtZXJyb3JzL2ZpZWxkLWVycm9ycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBUXpELE1BQU0sT0FBTyxvQkFBb0I7SUFHL0IsSUFBSSxZQUFZO1FBQ2QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RCxPQUFPLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQTJCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1RixDQUFDOztpSEFOVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixtRkNSakMsOEVBQ0E7MkZET2Esb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGlCQUFpQjs4QkFLbEIsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ216LWZpZWxkLWVycm9ycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWVsZC1lcnJvcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWVsZC1lcnJvcnMuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZEVycm9yc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGZpZWxkPzogTmdDb250cm9sO1xuXG4gIGdldCBlcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICBjb25zdCBlcnJvcktleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZpZWxkPy5lcnJvcnMgfHwge30pO1xuICAgIHJldHVybiBlcnJvcktleXMubGVuZ3RoID4gMCA/ICh0aGlzLmZpZWxkPy5lcnJvcnMgYXMgVmFsaWRhdGlvbkVycm9ycylbZXJyb3JLZXlzWzBdXSA6ICcnO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmllbGQtZXJyb3JcIiAqbmdJZj1cImVycm9yTWVzc2FnZVwiPnt7IGVycm9yTWVzc2FnZSB9fTwvZGl2PlxuIl19
@@ -3,13 +3,13 @@ import { NgModule } from '@angular/core';
3
3
  import { FieldErrorsComponent } from './field-errors/field-errors.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export class FormsModule {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.2", ngImport: i0, type: FormsModule, declarations: [FieldErrorsComponent], imports: [CommonModule // TODO: can remove once done with temp error displaying
8
- ], exports: [FieldErrorsComponent] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: FormsModule, imports: [CommonModule // TODO: can remove once done with temp error displaying
10
- ] }); }
11
6
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: FormsModule, decorators: [{
7
+ FormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, declarations: [FieldErrorsComponent], imports: [CommonModule // TODO: can remove once done with temp error displaying
9
+ ], exports: [FieldErrorsComponent] });
10
+ FormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, imports: [CommonModule // TODO: can remove once done with temp error displaying
11
+ ] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  providers: [],
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
24
24
  ]
25
25
  }]
26
26
  }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvZm9ybXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQWdCN0UsTUFBTSxPQUFPLFdBQVc7OEdBQVgsV0FBVzsrR0FBWCxXQUFXLGlCQVRwQixvQkFBb0IsYUFNcEIsWUFBWSxDQUFDLHdEQUF3RDtxQkFIckUsb0JBQW9COytHQU1YLFdBQVcsWUFIcEIsWUFBWSxDQUFDLHdEQUF3RDs7OzJGQUc1RCxXQUFXO2tCQVp2QixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRSxFQUFFO29CQUNiLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZLENBQUMsd0RBQXdEO3FCQUN0RTtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRFcnJvcnNDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkLWVycm9ycy9maWVsZC1lcnJvcnMuY29tcG9uZW50JztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW10sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEZpZWxkRXJyb3JzQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGaWVsZEVycm9yc0NvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlIC8vIFRPRE86IGNhbiByZW1vdmUgb25jZSBkb25lIHdpdGggdGVtcCBlcnJvciBkaXNwbGF5aW5nXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9ybXNNb2R1bGUgeyB9XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvZm9ybXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQWdCN0UsTUFBTSxPQUFPLFdBQVc7O3dHQUFYLFdBQVc7eUdBQVgsV0FBVyxpQkFUcEIsb0JBQW9CLGFBTXBCLFlBQVksQ0FBQyx3REFBd0Q7aUJBSHJFLG9CQUFvQjt5R0FNWCxXQUFXLFlBSHBCLFlBQVksQ0FBQyx3REFBd0Q7OzJGQUc1RCxXQUFXO2tCQVp2QixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRSxFQUFFO29CQUNiLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZLENBQUMsd0RBQXdEO3FCQUN0RTtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRFcnJvcnNDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkLWVycm9ycy9maWVsZC1lcnJvcnMuY29tcG9uZW50JztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW10sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEZpZWxkRXJyb3JzQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGaWVsZEVycm9yc0NvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlIC8vIFRPRE86IGNhbiByZW1vdmUgb25jZSBkb25lIHdpdGggdGVtcCBlcnJvciBkaXNwbGF5aW5nXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9ybXNNb2R1bGUgeyB9XG4iXX0=
@@ -0,0 +1,158 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { object } from 'yup';
3
+ import { ModelValidator } from './model-validator';
4
+ import { SCHEMA_METADATA_NAMESPACE } from './constants';
5
+ import { ConstraintType, } from './type-annotations';
6
+ import * as Yup from 'yup';
7
+ import * as i0 from "@angular/core";
8
+ /*
9
+ Schema rules need to be built in the order they need to be evaluated in.
10
+ For example,
11
+ ```
12
+ schema.required().max(...).matches(...);
13
+ ```
14
+ evaluates the 3 rules in this order
15
+ - required
16
+ - max
17
+ - matches
18
+ */
19
+ export class ModelSchemaFactory {
20
+ constructor() { }
21
+ build(model) {
22
+ const schema = this.buildObjectSchema(model);
23
+ return new ModelValidator(schema);
24
+ }
25
+ buildObjectSchema(model) {
26
+ const metadata = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);
27
+ let shape = {};
28
+ metadata.forEach((value, key) => {
29
+ if (value.constraintType == ConstraintType.string) {
30
+ shape[key] = this.buildStringSchema(value);
31
+ }
32
+ else if (value.constraintType == ConstraintType.boolean) {
33
+ shape[key] = this.buildBooleanSchema(value);
34
+ }
35
+ else if (value.constraintType == ConstraintType.date) {
36
+ shape[key] = this.buildDateSchema(value);
37
+ }
38
+ else if (value.constraintType == ConstraintType.object) {
39
+ shape[key] = this.buildNestedObjectSchema(value);
40
+ }
41
+ else if (value.constraintType == ConstraintType.number) {
42
+ shape[key] = this.buildNumberSchema(value);
43
+ }
44
+ else if (value.constraintType == ConstraintType.array) {
45
+ shape[key] = this.buildArraySchema(value);
46
+ }
47
+ else if (value.constraintType == ConstraintType.file) {
48
+ shape[key] = this.buildFileSchema(value);
49
+ }
50
+ });
51
+ return object(shape);
52
+ }
53
+ buildStringSchema(options) {
54
+ let schema = Yup.string();
55
+ if (options.required) {
56
+ schema = schema.required(options.required.message);
57
+ }
58
+ if (options.length) {
59
+ schema = schema.length(options.length.length, options.length.message);
60
+ }
61
+ if (options.maxLength) {
62
+ schema = schema.max(options.maxLength.maxLength, options.maxLength.message);
63
+ }
64
+ if (options.minLength) {
65
+ schema = schema.min(options.minLength.minLength, options.minLength.message);
66
+ }
67
+ if (options.pattern) {
68
+ schema = schema.matches(options.pattern.pattern, { message: options.pattern.message, excludeEmptyString: true });
69
+ }
70
+ return schema;
71
+ }
72
+ buildBooleanSchema(options) {
73
+ let schema = Yup.boolean();
74
+ if (options.required) {
75
+ schema = schema.required(options.required.message);
76
+ }
77
+ if (options.equals) {
78
+ if (options.equals.equals) {
79
+ schema = schema.isTrue(options.equals.message);
80
+ }
81
+ else {
82
+ schema = schema.isFalse(options.equals.message);
83
+ }
84
+ }
85
+ return schema;
86
+ }
87
+ buildDateSchema(options) {
88
+ let schema = Yup.date();
89
+ if (options.required) {
90
+ schema = schema.required(options.required.message);
91
+ }
92
+ if (options.min) {
93
+ schema = schema.min(options.min.min, options.min.message);
94
+ }
95
+ if (options.max) {
96
+ schema = schema.max(options.max.max, options.max.message);
97
+ }
98
+ if (options.test) {
99
+ schema = schema.test({
100
+ name: options.test.name,
101
+ message: options.test.message,
102
+ test: (d, context) => {
103
+ return options.test.test(d);
104
+ },
105
+ });
106
+ }
107
+ return schema;
108
+ }
109
+ buildNumberSchema(options) {
110
+ let schema = Yup.number();
111
+ if (options.required) {
112
+ schema = schema.required(options.required.message);
113
+ }
114
+ if (options.min) {
115
+ schema = schema.min(options.min.min, options.min.message);
116
+ }
117
+ if (options.max) {
118
+ schema = schema.max(options.max.max, options.max.message);
119
+ }
120
+ return schema;
121
+ }
122
+ buildArraySchema(options) {
123
+ let schema = Yup.array();
124
+ if (options.min) {
125
+ schema = schema.min(options.min.min, options.min.message);
126
+ }
127
+ if (options.max) {
128
+ schema = schema.max(options.max.max, options.max.message);
129
+ }
130
+ return schema;
131
+ }
132
+ buildNestedObjectSchema(options) {
133
+ let nestedSchema = this.buildObjectSchema(options.getInstance());
134
+ if (options.required) {
135
+ nestedSchema = nestedSchema.required();
136
+ }
137
+ else {
138
+ nestedSchema = nestedSchema.notRequired().default(undefined);
139
+ }
140
+ return nestedSchema;
141
+ }
142
+ buildFileSchema(options) {
143
+ let schema = Yup.mixed().nullable().optional();
144
+ if (options.required) {
145
+ schema = schema.required(options.required.message);
146
+ }
147
+ return schema;
148
+ }
149
+ }
150
+ ModelSchemaFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ModelSchemaFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
151
+ ModelSchemaFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ModelSchemaFactory, providedIn: 'root' });
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ModelSchemaFactory, decorators: [{
153
+ type: Injectable,
154
+ args: [{
155
+ providedIn: 'root',
156
+ }]
157
+ }], ctorParameters: function () { return []; } });
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtc2NoZW1hLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tdXppZWhkZXNpZ24vZm9ybXMvc3JjL2xpYi9tb2RlbC1zY2hlbWEuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQVksTUFBTSxLQUFLLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RCxPQUFPLEVBR0wsY0FBYyxHQU9mLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxLQUFLLEdBQUcsTUFBTSxLQUFLLENBQUM7O0FBRTNCOzs7Ozs7Ozs7O0VBVUU7QUFLRixNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLGdCQUFlLENBQUM7SUFFaEIsS0FBSyxDQUFJLEtBQVE7UUFDZixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8saUJBQWlCLENBQUksS0FBUTtRQUNuQyxNQUFNLFFBQVEsR0FBdUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRyxJQUFJLEtBQUssR0FBZ0IsRUFBRSxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDOUIsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2pELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBOEIsQ0FBQyxDQUFDO2FBQ3JFO2lCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsT0FBTyxFQUFFO2dCQUN6RCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQStCLENBQUMsQ0FBQzthQUN2RTtpQkFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksY0FBYyxDQUFDLElBQUksRUFBRTtnQkFDdEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBNEIsQ0FBQyxDQUFDO2FBQ2pFO2lCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFO2dCQUN4RCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQThCLENBQUMsQ0FBQzthQUMzRTtpQkFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRTtnQkFDeEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUE4QixDQUFDLENBQUM7YUFDckU7aUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBNkIsQ0FBQyxDQUFDO2FBQ25FO2lCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFO2dCQUN0RCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUE0QixDQUFDLENBQUM7YUFDakU7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBZ0IsQ0FBQztJQUN0QyxDQUFDO0lBRU8saUJBQWlCLENBQUMsT0FBOEI7UUFDdEQsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNwQixNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdkU7UUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDckIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3RTtRQUVELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNyQixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdFO1FBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25CLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbEg7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sa0JBQWtCLENBQUMsT0FBK0I7UUFDeEQsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNwQixNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ3pCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDaEQ7aUJBQU07Z0JBQ0wsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNqRDtTQUNGO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxPQUE0QjtRQUNsRCxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEIsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3BCLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDcEQ7UUFDRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDZixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ2YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzRDtRQUNELElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtZQUNoQixNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDbkIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSTtnQkFDdkIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDN0IsSUFBSSxFQUFFLENBQUMsQ0FBUSxFQUFFLE9BQWEsRUFBRSxFQUFFO29CQUNoQyxPQUFPLE9BQU8sQ0FBQyxJQUFLLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8saUJBQWlCLENBQUMsT0FBOEI7UUFDdEQsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNwQixNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ2YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzRDtRQUNELElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUNmLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0Q7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FBNkI7UUFDcEQsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXpCLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUNmLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDZixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNEO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLHVCQUF1QixDQUFDLE9BQThCO1FBQzVELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDcEIsWUFBWSxHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN4QzthQUFNO1lBQ0wsWUFBWSxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDOUQ7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQTRCO1FBQ2xELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDcEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwRDtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OytHQS9JVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBvYmplY3QsIFNjaGVtYU9mIH0gZnJvbSAneXVwJztcbmltcG9ydCB7IE1vZGVsVmFsaWRhdG9yIH0gZnJvbSAnLi9tb2RlbC12YWxpZGF0b3InO1xuaW1wb3J0IHsgU0NIRU1BX01FVEFEQVRBX05BTUVTUEFDRSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9iamVjdFNoYXBlIH0gZnJvbSAneXVwL2xpYi9vYmplY3QnO1xuaW1wb3J0IHtcbiAgQm9vbGVhblR5cGVBbm5vdGF0aW9ucyxcbiAgQ29uc3RyYWludEFubm90YXRpb25zLFxuICBDb25zdHJhaW50VHlwZSxcbiAgRGF0ZVR5cGVBbm5vdGF0aW9ucyxcbiAgT2JqZWN0VHlwZUFubm90YXRpb25zLFxuICBOdW1iZXJUeXBlQW5ub3RhdGlvbnMsXG4gIFN0cmluZ1R5cGVBbm5vdGF0aW9ucyxcbiAgQXJyYXlUeXBlQW5ub3RhdGlvbnMsXG4gIEZpbGVUeXBlQW5ub3RhdGlvbnMsXG59IGZyb20gJy4vdHlwZS1hbm5vdGF0aW9ucyc7XG5pbXBvcnQgKiBhcyBZdXAgZnJvbSAneXVwJztcblxuLypcblNjaGVtYSBydWxlcyBuZWVkIHRvIGJlIGJ1aWx0IGluIHRoZSBvcmRlciB0aGV5IG5lZWQgdG8gYmUgZXZhbHVhdGVkIGluLlxuRm9yIGV4YW1wbGUsXG4gIGBgYFxuICAgIHNjaGVtYS5yZXF1aXJlZCgpLm1heCguLi4pLm1hdGNoZXMoLi4uKTtcbiAgYGBgXG5ldmFsdWF0ZXMgdGhlIDMgcnVsZXMgaW4gdGhpcyBvcmRlclxuICAtIHJlcXVpcmVkXG4gIC0gbWF4XG4gIC0gbWF0Y2hlc1xuKi9cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsU2NoZW1hRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBidWlsZDxUPihtb2RlbDogVCk6IE1vZGVsVmFsaWRhdG9yPFQ+IHtcbiAgICBjb25zdCBzY2hlbWEgPSB0aGlzLmJ1aWxkT2JqZWN0U2NoZW1hKG1vZGVsKTtcbiAgICByZXR1cm4gbmV3IE1vZGVsVmFsaWRhdG9yKHNjaGVtYSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkT2JqZWN0U2NoZW1hPFQ+KG1vZGVsOiBUKSB7XG4gICAgY29uc3QgbWV0YWRhdGE6IE1hcDxzdHJpbmcsIENvbnN0cmFpbnRBbm5vdGF0aW9ucz4gPSBSZWZsZWN0LmdldE1ldGFkYXRhKFNDSEVNQV9NRVRBREFUQV9OQU1FU1BBQ0UsIG1vZGVsKTtcbiAgICBsZXQgc2hhcGU6IE9iamVjdFNoYXBlID0ge307XG4gICAgbWV0YWRhdGEuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKHZhbHVlLmNvbnN0cmFpbnRUeXBlID09IENvbnN0cmFpbnRUeXBlLnN0cmluZykge1xuICAgICAgICBzaGFwZVtrZXldID0gdGhpcy5idWlsZFN0cmluZ1NjaGVtYSh2YWx1ZSBhcyBTdHJpbmdUeXBlQW5ub3RhdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJhaW50VHlwZSA9PSBDb25zdHJhaW50VHlwZS5ib29sZWFuKSB7XG4gICAgICAgIHNoYXBlW2tleV0gPSB0aGlzLmJ1aWxkQm9vbGVhblNjaGVtYSh2YWx1ZSBhcyBCb29sZWFuVHlwZUFubm90YXRpb25zKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUuY29uc3RyYWludFR5cGUgPT0gQ29uc3RyYWludFR5cGUuZGF0ZSkge1xuICAgICAgICBzaGFwZVtrZXldID0gdGhpcy5idWlsZERhdGVTY2hlbWEodmFsdWUgYXMgRGF0ZVR5cGVBbm5vdGF0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cmFpbnRUeXBlID09IENvbnN0cmFpbnRUeXBlLm9iamVjdCkge1xuICAgICAgICBzaGFwZVtrZXldID0gdGhpcy5idWlsZE5lc3RlZE9iamVjdFNjaGVtYSh2YWx1ZSBhcyBPYmplY3RUeXBlQW5ub3RhdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJhaW50VHlwZSA9PSBDb25zdHJhaW50VHlwZS5udW1iZXIpIHtcbiAgICAgICAgc2hhcGVba2V5XSA9IHRoaXMuYnVpbGROdW1iZXJTY2hlbWEodmFsdWUgYXMgTnVtYmVyVHlwZUFubm90YXRpb25zKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUuY29uc3RyYWludFR5cGUgPT0gQ29uc3RyYWludFR5cGUuYXJyYXkpIHtcbiAgICAgICAgc2hhcGVba2V5XSA9IHRoaXMuYnVpbGRBcnJheVNjaGVtYSh2YWx1ZSBhcyBBcnJheVR5cGVBbm5vdGF0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cmFpbnRUeXBlID09IENvbnN0cmFpbnRUeXBlLmZpbGUpIHtcbiAgICAgICAgc2hhcGVba2V5XSA9IHRoaXMuYnVpbGRGaWxlU2NoZW1hKHZhbHVlIGFzIEZpbGVUeXBlQW5ub3RhdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iamVjdChzaGFwZSkgYXMgU2NoZW1hT2Y8VD47XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU3RyaW5nU2NoZW1hKG9wdGlvbnM6IFN0cmluZ1R5cGVBbm5vdGF0aW9ucykge1xuICAgIGxldCBzY2hlbWEgPSBZdXAuc3RyaW5nKCk7XG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChvcHRpb25zLnJlcXVpcmVkLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5sZW5ndGgob3B0aW9ucy5sZW5ndGgubGVuZ3RoLCBvcHRpb25zLmxlbmd0aC5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5tYXhMZW5ndGgpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5tYXgob3B0aW9ucy5tYXhMZW5ndGgubWF4TGVuZ3RoLCBvcHRpb25zLm1heExlbmd0aC5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5taW5MZW5ndGgpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5taW4ob3B0aW9ucy5taW5MZW5ndGgubWluTGVuZ3RoLCBvcHRpb25zLm1pbkxlbmd0aC5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wYXR0ZXJuKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWF0Y2hlcyhvcHRpb25zLnBhdHRlcm4ucGF0dGVybiwgeyBtZXNzYWdlOiBvcHRpb25zLnBhdHRlcm4ubWVzc2FnZSwgZXhjbHVkZUVtcHR5U3RyaW5nOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQm9vbGVhblNjaGVtYShvcHRpb25zOiBCb29sZWFuVHlwZUFubm90YXRpb25zKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5ib29sZWFuKCk7XG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChvcHRpb25zLnJlcXVpcmVkLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5lcXVhbHMpIHtcbiAgICAgIGlmIChvcHRpb25zLmVxdWFscy5lcXVhbHMpIHtcbiAgICAgICAgc2NoZW1hID0gc2NoZW1hLmlzVHJ1ZShvcHRpb25zLmVxdWFscy5tZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjaGVtYSA9IHNjaGVtYS5pc0ZhbHNlKG9wdGlvbnMuZXF1YWxzLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRGF0ZVNjaGVtYShvcHRpb25zOiBEYXRlVHlwZUFubm90YXRpb25zKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5kYXRlKCk7XG5cbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKG9wdGlvbnMucmVxdWlyZWQubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1pbikge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1pbihvcHRpb25zLm1pbi5taW4sIG9wdGlvbnMubWluLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5tYXgpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5tYXgob3B0aW9ucy5tYXgubWF4LCBvcHRpb25zLm1heC5tZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudGVzdCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLnRlc3Qoe1xuICAgICAgICBuYW1lOiBvcHRpb25zLnRlc3QubmFtZSxcbiAgICAgICAgbWVzc2FnZTogb3B0aW9ucy50ZXN0Lm1lc3NhZ2UsXG4gICAgICAgIHRlc3Q6IChkPzogRGF0ZSwgY29udGV4dD86IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLnRlc3QhLnRlc3QoZCEpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGROdW1iZXJTY2hlbWEob3B0aW9uczogTnVtYmVyVHlwZUFubm90YXRpb25zKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5udW1iZXIoKTtcbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKG9wdGlvbnMucmVxdWlyZWQubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1pbikge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1pbihvcHRpb25zLm1pbi5taW4sIG9wdGlvbnMubWluLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5tYXgpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5tYXgob3B0aW9ucy5tYXgubWF4LCBvcHRpb25zLm1heC5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEFycmF5U2NoZW1hKG9wdGlvbnM6IEFycmF5VHlwZUFubm90YXRpb25zKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5hcnJheSgpO1xuXG4gICAgaWYgKG9wdGlvbnMubWluKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWluKG9wdGlvbnMubWluLm1pbiwgb3B0aW9ucy5taW4ubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1heCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1heChvcHRpb25zLm1heC5tYXgsIG9wdGlvbnMubWF4Lm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTmVzdGVkT2JqZWN0U2NoZW1hKG9wdGlvbnM6IE9iamVjdFR5cGVBbm5vdGF0aW9ucykge1xuICAgIGxldCBuZXN0ZWRTY2hlbWEgPSB0aGlzLmJ1aWxkT2JqZWN0U2NoZW1hKG9wdGlvbnMuZ2V0SW5zdGFuY2UoKSk7XG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIG5lc3RlZFNjaGVtYSA9IG5lc3RlZFNjaGVtYS5yZXF1aXJlZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXN0ZWRTY2hlbWEgPSBuZXN0ZWRTY2hlbWEubm90UmVxdWlyZWQoKS5kZWZhdWx0KHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5lc3RlZFNjaGVtYTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGaWxlU2NoZW1hKG9wdGlvbnM6IEZpbGVUeXBlQW5ub3RhdGlvbnMpIHtcbiAgICBsZXQgc2NoZW1hID0gWXVwLm1peGVkKCkubnVsbGFibGUoKS5vcHRpb25hbCgpO1xuICAgIGlmIChvcHRpb25zLnJlcXVpcmVkKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQob3B0aW9ucy5yZXF1aXJlZC5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { NgFormModelState } from './ngform-model-state';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./model-schema.factory";
5
+ export class NgFormModelStateFactory {
6
+ constructor(factory) {
7
+ this.factory = factory;
8
+ }
9
+ create(form, model, options) {
10
+ const modelState = new NgFormModelState(form, this.factory.build(model), options);
11
+ return modelState;
12
+ }
13
+ }
14
+ NgFormModelStateFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: NgFormModelStateFactory, deps: [{ token: i1.ModelSchemaFactory }], target: i0.ɵɵFactoryTarget.Injectable });
15
+ NgFormModelStateFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: NgFormModelStateFactory, providedIn: 'root' });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: NgFormModelStateFactory, decorators: [{
17
+ type: Injectable,
18
+ args: [{
19
+ providedIn: 'root',
20
+ }]
21
+ }], ctorParameters: function () { return [{ type: i1.ModelSchemaFactory }]; } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvbmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUt4RCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLFlBQW9CLE9BQTJCO1FBQTNCLFlBQU8sR0FBUCxPQUFPLENBQW9CO0lBQUcsQ0FBQztJQUVuRCxNQUFNLENBQUksSUFBWSxFQUFFLEtBQVEsRUFBRSxPQUEyQjtRQUMzRCxNQUFNLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixDQUFJLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOztvSEFOVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNb2RlbFNjaGVtYUZhY3RvcnkgfSBmcm9tICcuL21vZGVsLXNjaGVtYS5mYWN0b3J5JztcbmltcG9ydCB7IE1vZGVsU3RhdGVPcHRpb25zIH0gZnJvbSAnLi9tb2RlbC1zdGF0ZS1vcHRpb25zJztcbmltcG9ydCB7IE5nRm9ybU1vZGVsU3RhdGUgfSBmcm9tICcuL25nZm9ybS1tb2RlbC1zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBOZ0Zvcm1Nb2RlbFN0YXRlRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmFjdG9yeTogTW9kZWxTY2hlbWFGYWN0b3J5KSB7fVxuXG4gIGNyZWF0ZTxUPihmb3JtOiBOZ0Zvcm0sIG1vZGVsOiBULCBvcHRpb25zPzogTW9kZWxTdGF0ZU9wdGlvbnMpIHtcbiAgICBjb25zdCBtb2RlbFN0YXRlID0gbmV3IE5nRm9ybU1vZGVsU3RhdGU8VD4oZm9ybSwgdGhpcy5mYWN0b3J5LmJ1aWxkKG1vZGVsKSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG1vZGVsU3RhdGU7XG4gIH1cbn1cbiJdfQ==