@forestadmin/datasource-customizer 1.65.1 → 1.66.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/dist/datasource-customizer.js +5 -17
- package/dist/decorators/decorators-stack-base.d.ts +21 -0
- package/dist/decorators/decorators-stack-base.js +64 -4
- package/dist/decorators/publication/datasource.d.ts +4 -2
- package/dist/decorators/publication/datasource.js +16 -2
- package/package.json +1 -1
|
@@ -48,7 +48,7 @@ class DataSourceCustomizer {
|
|
|
48
48
|
this.stack.queueCustomization(async (logger) => {
|
|
49
49
|
let dataSource = await factory(logger, restartAgentFunction);
|
|
50
50
|
if (options?.include || options?.exclude) {
|
|
51
|
-
const publicationDecorator = new datasource_1.default(dataSource);
|
|
51
|
+
const publicationDecorator = new datasource_1.default(dataSource, logger);
|
|
52
52
|
publicationDecorator.keepCollectionsMatching(options.include, options.exclude);
|
|
53
53
|
dataSource = publicationDecorator;
|
|
54
54
|
}
|
|
@@ -138,21 +138,9 @@ class DataSourceCustomizer {
|
|
|
138
138
|
return this;
|
|
139
139
|
}
|
|
140
140
|
async getDataSource(logger) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
await this.stack.applyQueuedCustomizations(logger, this.compositeDataSource);
|
|
145
|
-
datasource = this.stack.dataSource;
|
|
146
|
-
}
|
|
147
|
-
catch (error) {
|
|
148
|
-
if (!datasource) {
|
|
149
|
-
throw error;
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
logger('Error', `Agent failed to restart with the new configuration. Retaining the previous one.\n ${error}`);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
return datasource;
|
|
141
|
+
this.compositeDataSource = new composite_datasource_1.default();
|
|
142
|
+
await this.stack.applyQueuedCustomizations(logger, this.compositeDataSource);
|
|
143
|
+
return this.stack.dataSource;
|
|
156
144
|
}
|
|
157
145
|
getFactory() {
|
|
158
146
|
return async (logger) => this.getDataSource(logger);
|
|
@@ -163,4 +151,4 @@ class DataSourceCustomizer {
|
|
|
163
151
|
}
|
|
164
152
|
}
|
|
165
153
|
exports.default = DataSourceCustomizer;
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS1jdXN0b21pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RhdGFzb3VyY2UtY3VzdG9taXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVFBLG9GQUEyRDtBQUUzRCw2RkFBb0U7QUFDcEUscUZBQTREO0FBQzVELHFHQUEwRTtBQUMxRSxxRkFBaUY7QUFDakYsMkZBQTRGO0FBRzVGLDBFQUFpRDtBQU9qRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFxQixvQkFBb0I7SUFJdkM7O09BRUc7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDL0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBMEIsQ0FBQyxDQUNqRCxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksT0FBaUI7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJO1lBQ2YsTUFBTSxFQUFFLGtDQUFxQjtZQUM3QixNQUFNLEVBQUUsMEJBQWU7U0FDeEIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUNYLE9BQTBCLEVBQzFCLE9BQTJCLEVBQzNCLG9CQUEwQztRQUUxQyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBQyxNQUFNLEVBQUMsRUFBRTtZQUMzQyxJQUFJLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUU3RCxJQUFJLE9BQU8sRUFBRSxPQUFPLElBQUks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
|
|
@@ -42,6 +42,27 @@ export default abstract class DecoratorsStackBase {
|
|
|
42
42
|
override: DataSourceDecorator<OverrideCollectionDecorator>;
|
|
43
43
|
constructor(options: Options);
|
|
44
44
|
abstract buildStack(dataSource: DataSource): void;
|
|
45
|
+
backupStack(): {
|
|
46
|
+
action: DataSourceDecorator<ActionCollectionDecorator>;
|
|
47
|
+
binary: DataSourceDecorator<BinaryCollectionDecorator>;
|
|
48
|
+
chart: ChartDataSourceDecorator;
|
|
49
|
+
earlyComputed: DataSourceDecorator<ComputedCollectionDecorator>;
|
|
50
|
+
earlyOpEmulate: DataSourceDecorator<OperatorsEmulateCollectionDecorator>;
|
|
51
|
+
hook: DataSourceDecorator<HookCollectionDecorator>;
|
|
52
|
+
lateComputed: DataSourceDecorator<ComputedCollectionDecorator>;
|
|
53
|
+
lateOpEmulate: DataSourceDecorator<OperatorsEmulateCollectionDecorator>;
|
|
54
|
+
publication: PublicationDataSourceDecorator;
|
|
55
|
+
relation: DataSourceDecorator<RelationCollectionDecorator>;
|
|
56
|
+
renameField: DataSourceDecorator<RenameFieldCollectionDecorator>;
|
|
57
|
+
schema: DataSourceDecorator<SchemaCollectionDecorator>;
|
|
58
|
+
search: DataSourceDecorator<SearchCollectionDecorator>;
|
|
59
|
+
segment: DataSourceDecorator<SegmentCollectionDecorator>;
|
|
60
|
+
sortEmulate: DataSourceDecorator<SortEmulateCollectionDecorator>;
|
|
61
|
+
validation: DataSourceDecorator<ValidationCollectionDecorator>;
|
|
62
|
+
write: WriteDataSourceDecorator;
|
|
63
|
+
override: DataSourceDecorator<OverrideCollectionDecorator>;
|
|
64
|
+
};
|
|
65
|
+
restoreStack(stack: any): void;
|
|
45
66
|
queueCustomization(customization: (logger: Logger) => Promise<void>): void;
|
|
46
67
|
/**
|
|
47
68
|
* Apply all customizations
|
|
@@ -9,6 +9,48 @@ class DecoratorsStackBase {
|
|
|
9
9
|
...(options || {}),
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
+
backupStack() {
|
|
13
|
+
return {
|
|
14
|
+
action: this.action,
|
|
15
|
+
binary: this.binary,
|
|
16
|
+
chart: this.chart,
|
|
17
|
+
earlyComputed: this.earlyComputed,
|
|
18
|
+
earlyOpEmulate: this.earlyOpEmulate,
|
|
19
|
+
hook: this.hook,
|
|
20
|
+
lateComputed: this.lateComputed,
|
|
21
|
+
lateOpEmulate: this.lateOpEmulate,
|
|
22
|
+
publication: this.publication,
|
|
23
|
+
relation: this.relation,
|
|
24
|
+
renameField: this.renameField,
|
|
25
|
+
schema: this.schema,
|
|
26
|
+
search: this.search,
|
|
27
|
+
segment: this.segment,
|
|
28
|
+
sortEmulate: this.sortEmulate,
|
|
29
|
+
validation: this.validation,
|
|
30
|
+
write: this.write,
|
|
31
|
+
override: this.override,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
restoreStack(stack) {
|
|
35
|
+
this.action = stack.action;
|
|
36
|
+
this.binary = stack.binary;
|
|
37
|
+
this.chart = stack.chart;
|
|
38
|
+
this.earlyComputed = stack.earlyComputed;
|
|
39
|
+
this.earlyOpEmulate = stack.earlyOpEmulate;
|
|
40
|
+
this.hook = stack.hook;
|
|
41
|
+
this.lateComputed = stack.lateComputed;
|
|
42
|
+
this.lateOpEmulate = stack.lateOpEmulate;
|
|
43
|
+
this.publication = stack.publication;
|
|
44
|
+
this.relation = stack.relation;
|
|
45
|
+
this.renameField = stack.renameField;
|
|
46
|
+
this.schema = stack.schema;
|
|
47
|
+
this.search = stack.search;
|
|
48
|
+
this.segment = stack.segment;
|
|
49
|
+
this.sortEmulate = stack.sortEmulate;
|
|
50
|
+
this.validation = stack.validation;
|
|
51
|
+
this.write = stack.write;
|
|
52
|
+
this.override = stack.override;
|
|
53
|
+
}
|
|
12
54
|
queueCustomization(customization) {
|
|
13
55
|
this.customizations.push(customization);
|
|
14
56
|
}
|
|
@@ -20,10 +62,28 @@ class DecoratorsStackBase {
|
|
|
20
62
|
* that all customizations are applied in the right order.
|
|
21
63
|
*/
|
|
22
64
|
async applyQueuedCustomizations(logger, dataSource) {
|
|
65
|
+
const isFirstStack = !!this.dataSource;
|
|
66
|
+
// backup customization, stack and last datasource
|
|
67
|
+
const customizationsBackup = Array.from(this.customizations);
|
|
68
|
+
const stackBackup = this.backupStack();
|
|
69
|
+
const dataSourceBackup = this.dataSource;
|
|
23
70
|
this.buildStack(dataSource);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
71
|
+
try {
|
|
72
|
+
await this._applyQueuedCustomizations(logger);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (!isFirstStack) {
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
this.restoreStack(stackBackup);
|
|
80
|
+
this.dataSource = dataSourceBackup;
|
|
81
|
+
logger('Error', `Agent failed to restart with the new configuration. Retaining the previous one.\n ${error}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
this.customizations = customizationsBackup;
|
|
86
|
+
}
|
|
27
87
|
}
|
|
28
88
|
async _applyQueuedCustomizations(logger) {
|
|
29
89
|
const queuedCustomizations = this.customizations.slice();
|
|
@@ -47,4 +107,4 @@ class DecoratorsStackBase {
|
|
|
47
107
|
}
|
|
48
108
|
}
|
|
49
109
|
exports.default = DecoratorsStackBase;
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy1zdGFjay1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlY29yYXRvcnMvZGVjb3JhdG9ycy1zdGFjay1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0VBS3lDO0FBdUJ6QyxNQUE4QixtQkFBbUI7SUF5Qi9DLFlBQVksT0FBZ0I7UUF4QmxCLG1CQUFjLEdBQTZDLEVBQUUsQ0FBQztRQXlCdEUsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLGdDQUFnQyxFQUFFLEtBQUs7WUFDdkMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7U0FDbkIsQ0FBQztJQUNKLENBQUM7SUFJRCxXQUFXO1FBQ1QsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixRQUFRLEVBQUUsSUFBSSxD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
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { DataSource, DataSourceDecorator } from '@forestadmin/datasource-toolkit';
|
|
1
|
+
import { DataSource, DataSourceDecorator, Logger } from '@forestadmin/datasource-toolkit';
|
|
2
2
|
import PublicationCollectionDecorator from './collection';
|
|
3
3
|
export default class PublicationDataSourceDecorator extends DataSourceDecorator<PublicationCollectionDecorator> {
|
|
4
4
|
blacklist: Set<string>;
|
|
5
|
-
|
|
5
|
+
logger: Logger | null;
|
|
6
|
+
constructor(childDataSource: DataSource, logger?: Logger);
|
|
6
7
|
get collections(): PublicationCollectionDecorator[];
|
|
7
8
|
getCollection(name: string): PublicationCollectionDecorator;
|
|
8
9
|
keepCollectionsMatching(include?: string[], exclude?: string[]): void;
|
|
9
10
|
removeCollection(collectionName: string): void;
|
|
10
11
|
private validateCollectionNames;
|
|
12
|
+
private warnCollectionWhitelist;
|
|
11
13
|
isPublished(collectionName: string): boolean;
|
|
12
14
|
}
|
|
13
15
|
//# sourceMappingURL=datasource.d.ts.map
|
|
@@ -6,9 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
7
7
|
const collection_1 = __importDefault(require("./collection"));
|
|
8
8
|
class PublicationDataSourceDecorator extends datasource_toolkit_1.DataSourceDecorator {
|
|
9
|
-
constructor(childDataSource) {
|
|
9
|
+
constructor(childDataSource, logger) {
|
|
10
10
|
super(childDataSource, collection_1.default);
|
|
11
11
|
this.blacklist = new Set();
|
|
12
|
+
this.logger = logger;
|
|
12
13
|
}
|
|
13
14
|
get collections() {
|
|
14
15
|
return this.childDataSource.collections
|
|
@@ -22,12 +23,20 @@ class PublicationDataSourceDecorator extends datasource_toolkit_1.DataSourceDeco
|
|
|
22
23
|
}
|
|
23
24
|
keepCollectionsMatching(include, exclude) {
|
|
24
25
|
this.validateCollectionNames([...(include ?? []), ...(exclude ?? [])]);
|
|
26
|
+
const excluded = [];
|
|
27
|
+
const kept = [];
|
|
25
28
|
// List collection we're keeping from the white/black list.
|
|
26
29
|
for (const { name } of this.collections) {
|
|
27
30
|
if ((include && !include.includes(name)) || exclude?.includes(name)) {
|
|
28
31
|
this.removeCollection(name);
|
|
32
|
+
excluded.push(name);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
kept.push(name);
|
|
29
36
|
}
|
|
30
37
|
}
|
|
38
|
+
if (include)
|
|
39
|
+
this.warnCollectionWhitelist(excluded, kept);
|
|
31
40
|
}
|
|
32
41
|
removeCollection(collectionName) {
|
|
33
42
|
this.validateCollectionNames([collectionName]);
|
|
@@ -43,9 +52,14 @@ class PublicationDataSourceDecorator extends datasource_toolkit_1.DataSourceDeco
|
|
|
43
52
|
for (const name of names)
|
|
44
53
|
this.getCollection(name);
|
|
45
54
|
}
|
|
55
|
+
warnCollectionWhitelist(excluded, kept) {
|
|
56
|
+
if (excluded.length && this.childDataSource.constructor.name === 'MongooseDatasource') {
|
|
57
|
+
this.logger?.('Warn', `Using include whitelist for MongooseDatasource may omit virtual collections that define relationships between included collections. See https://docs.forestadmin.com/developer-guide-agents-nodejs/data-sources/provided-data-sources/mongoose#understanding-flattenmode. Removed collections: '${excluded.join("', '")}', kept collections: '${kept.join("', '")}'`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
46
60
|
isPublished(collectionName) {
|
|
47
61
|
return !this.blacklist.has(collectionName);
|
|
48
62
|
}
|
|
49
63
|
}
|
|
50
64
|
exports.default = PublicationDataSourceDecorator;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNvcmF0b3JzL3B1YmxpY2F0aW9uL2RhdGFzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFBMEY7QUFFMUYsOERBQTBEO0FBRTFELE1BQXFCLDhCQUErQixTQUFRLHdDQUFtRDtJQUk3RyxZQUFZLGVBQTJCLEVBQUUsTUFBZTtRQUN0RCxLQUFLLENBQUMsZUFBZSxFQUFFLG9CQUE4QixDQUFDLENBQUM7UUFKekQsY0FBUyxHQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBS2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLFdBQVc7UUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVc7YUFDcEMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMvQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVRLGFBQWEsQ0FBQyxJQUFZO1FBQ2pDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksZ0JBQWdCLENBQUMsQ0FBQztRQUVuRixPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELHVCQUF1QixDQUFDLE9BQWtCLEVBQUUsT0FBa0I7UUFDNUQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RSxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWhCLDJEQUEyRDtRQUMzRCxLQUFLLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUU1QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakI7U0FDRjtRQUVELElBQUksT0FBTztZQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGdCQUFnQixDQUFDLGNBQXNCO1FBQ3JDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFFL0Msd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRW5DLG1GQUFtRjtRQUNuRiwwRUFBMEU7UUFDMUUsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3pDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVPLHVCQUF1QixDQUFDLEtBQWU7UUFDN0MsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsUUFBa0IsRUFBRSxJQUFjO1FBQ2hFLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssb0JBQW9CLEVBQUU7WUFDckYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUNYLE1BQU0sRUFDTixtU0FBbVMsUUFBUSxDQUFDLElBQUksQ0FDOVMsTUFBTSxDQUNQLHlCQUF5QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQy9DLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsY0FBc0I7UUFDaEMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQXZFRCxpREF1RUMifQ==
|