@techextensor/tab-core-utility 2.2.152 → 2.2.153
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/tab-core-utility/app/constants/error-messages.mjs +2 -2
- package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +14 -3
- package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +4 -3
- package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +17 -7
- package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +6 -0
- package/lib/tab-core-utility/app/models/app-object.model.d.ts +3 -1
- package/lib/tab-core-utility/app/models/data-source-query.model.d.ts +3 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const ServerErrorMessages = {
|
|
2
2
|
DELETE_CONFLICT: 'The DELETE statement conflicted with the REFERENCE constraint',
|
|
3
|
-
UNIQUE_KEY_CONSTRAINT_USER: "Violation of UNIQUE KEY constraint
|
|
3
|
+
UNIQUE_KEY_CONSTRAINT_USER: "Violation of UNIQUE KEY constraint",
|
|
4
4
|
INSUFFICIENT_ACCESS: 'Insufficient Acces',
|
|
5
5
|
CONVERSATION_FAILED_STRING_TO_UNIQUEIDENTIFIER: 'Conversation failed when converting from a character string to uniqueidentifier',
|
|
6
6
|
};
|
|
@@ -10,4 +10,4 @@ export const UserFriendlyMessages = {
|
|
|
10
10
|
[ServerErrorMessages['INSUFFICIENT_ACCESS']]: "You don't have enough permission to perform this action.",
|
|
11
11
|
[ServerErrorMessages['CONVERSATION_FAILED_STRING_TO_UNIQUEIDENTIFIER']]: 'Something went wrong!',
|
|
12
12
|
};
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY29uc3RhbnRzL2Vycm9yLW1lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUU1QjtJQUNGLGVBQWUsRUFDYiwrREFBK0Q7SUFDL0QsMEJBQTBCLEVBQUUsb0NBQW9DO0lBQ2hFLG1CQUFtQixFQUFFLG9CQUFvQjtJQUMzQyw4Q0FBOEMsRUFDNUMsaUZBQWlGO0NBQ3BGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRztJQUNsQyxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFDdEMseUVBQXlFO0lBQzNFLENBQUMsbUJBQW1CLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxFQUNqRCx5QkFBeUI7SUFDM0IsQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQzFDLDBEQUEwRDtJQUM1RCxDQUFDLG1CQUFtQixDQUFDLGdEQUFnRCxDQUFDLENBQUMsRUFDckUsdUJBQXVCO0NBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU2VydmVyRXJyb3JNZXNzYWdlczoge1xyXG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcclxufSA9IHtcclxuICBERUxFVEVfQ09ORkxJQ1Q6XHJcbiAgICAnVGhlIERFTEVURSBzdGF0ZW1lbnQgY29uZmxpY3RlZCB3aXRoIHRoZSBSRUZFUkVOQ0UgY29uc3RyYWludCcsXHJcbiAgICBVTklRVUVfS0VZX0NPTlNUUkFJTlRfVVNFUjogXCJWaW9sYXRpb24gb2YgVU5JUVVFIEtFWSBjb25zdHJhaW50XCIsICAgXHJcbiAgICBJTlNVRkZJQ0lFTlRfQUNDRVNTOiAnSW5zdWZmaWNpZW50IEFjY2VzJyxcclxuICBDT05WRVJTQVRJT05fRkFJTEVEX1NUUklOR19UT19VTklRVUVJREVOVElGSUVSOlxyXG4gICAgJ0NvbnZlcnNhdGlvbiBmYWlsZWQgd2hlbiBjb252ZXJ0aW5nIGZyb20gYSBjaGFyYWN0ZXIgc3RyaW5nIHRvIHVuaXF1ZWlkZW50aWZpZXInLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFVzZXJGcmllbmRseU1lc3NhZ2VzID0ge1xyXG4gIFtTZXJ2ZXJFcnJvck1lc3NhZ2VzWydERUxFVEVfQ09ORkxJQ1QnXV06XHJcbiAgICAnVW5hYmxlIHRvIERlbGV0ZSBSZWNvcmQuIFBsZWFzZSBjaGVjayBhc3NvY2lhdGVkIHJlY29yZHMgYW5kIHRyeSBhZ2Fpbi4nLFxyXG4gIFtTZXJ2ZXJFcnJvck1lc3NhZ2VzWydVTklRVUVfS0VZX0NPTlNUUkFJTlRfVVNFUiddXTpcclxuICAgICdVc2VybmFtZSBhbHJlYWR5IGV4aXN0LicsXHJcbiAgW1NlcnZlckVycm9yTWVzc2FnZXNbJ0lOU1VGRklDSUVOVF9BQ0NFU1MnXV06XHJcbiAgICBcIllvdSBkb24ndCBoYXZlIGVub3VnaCBwZXJtaXNzaW9uIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uXCIsXHJcbiAgW1NlcnZlckVycm9yTWVzc2FnZXNbJ0NPTlZFUlNBVElPTl9GQUlMRURfU1RSSU5HX1RPX1VOSVFVRUlERU5USUZJRVInXV06XHJcbiAgICAnU29tZXRoaW5nIHdlbnQgd3JvbmchJyxcclxufTtcclxuIl19
|
|
@@ -69,7 +69,7 @@ export class MetadataHelper {
|
|
|
69
69
|
* @returns The app object if found, or null if not found.
|
|
70
70
|
*/
|
|
71
71
|
getAppObjectByIdOrName(nameOrId) {
|
|
72
|
-
return this.getFromMapOrCreate(this.appObjectMap, nameOrId, Common.tabJson.AppObjects, obj => obj.ObjectName === nameOrId || obj.ID?.toLowerCase() === nameOrId?.toLowerCase(), obj => new AppObjectModel(obj));
|
|
72
|
+
return this.getFromMapOrCreate(this.appObjectMap, nameOrId, Common.tabJson.AppObjects, obj => obj.ObjectName === nameOrId || obj.ID?.toLowerCase() === nameOrId?.toLowerCase(), obj => new AppObjectModel(obj, this));
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
75
|
* Returns a list of app objects in the metadata.
|
|
@@ -79,7 +79,7 @@ export class MetadataHelper {
|
|
|
79
79
|
*/
|
|
80
80
|
getAllAppObjects(filterFn) {
|
|
81
81
|
// Initialize the list of app objects lazily.
|
|
82
|
-
const list = this.lazyInitList(this.allAppObjects, val => (this.allAppObjects = val), Common.tabJson.AppObjects, this.appObjectMap, (obj) => [obj.ID?.toLowerCase(), obj.ObjectName], obj => new AppObjectModel(obj));
|
|
82
|
+
const list = this.lazyInitList(this.allAppObjects, val => (this.allAppObjects = val), Common.tabJson.AppObjects, this.appObjectMap, (obj) => [obj.ID?.toLowerCase(), obj.ObjectName], obj => new AppObjectModel(obj, this));
|
|
83
83
|
// If a filter function is given, apply it to the list of app objects.
|
|
84
84
|
return filterFn ? list.filter(filterFn) : list;
|
|
85
85
|
}
|
|
@@ -95,6 +95,17 @@ export class MetadataHelper {
|
|
|
95
95
|
// If a filter function is given, apply it to the list of fields.
|
|
96
96
|
return filterFn ? allFields.filter(filterFn) : allFields;
|
|
97
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Finds a field by its ID across all app objects
|
|
100
|
+
* @param fieldId The ID of the field to find
|
|
101
|
+
* @returns The field if found, or null if not found
|
|
102
|
+
*/
|
|
103
|
+
getFieldByIdOrName(nameOrId) {
|
|
104
|
+
if (!nameOrId)
|
|
105
|
+
return null;
|
|
106
|
+
return this.getAllFields(field => field.ID?.toLowerCase() === nameOrId?.toLowerCase() ||
|
|
107
|
+
field.FieldName === nameOrId)[0] || null;
|
|
108
|
+
}
|
|
98
109
|
/**
|
|
99
110
|
* Returns a list of data source queries in the metadata.
|
|
100
111
|
* If a filter function is given, it is applied to each data source query.
|
|
@@ -211,4 +222,4 @@ export class MetadataHelper {
|
|
|
211
222
|
type: Injectable,
|
|
212
223
|
args: [{ providedIn: 'root' }]
|
|
213
224
|
}], null, null); })();
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1kYXRhLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRzFELE1BQU0sT0FBTyxjQUFjO0lBRDNCO1FBRVUsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztRQUN4RCxrQkFBYSxHQUE0QixJQUFJLENBQUM7UUFFOUMsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztRQUN4RCxrQkFBYSxHQUE0QixJQUFJLENBQUM7UUFFOUMsZUFBVSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO1FBQ3BELGdCQUFXLEdBQTBCLElBQUksQ0FBQztLQTZRbkQ7SUEzUUM7Ozs7Ozs7Ozs7T0FVRztJQUNLLGtCQUFrQixDQUN4QixHQUEwQixFQUMxQixHQUFXLEVBQ1gsVUFBZSxFQUNmLE9BQTZCLEVBQzdCLFlBQTRCO1FBRTVCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdEIsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENB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QUUsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQzlFLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxZQUFZLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxtREFBbUQ7WUFDbkQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUVELElBQUksWUFBWSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUN6RCw0REFBNEQ7WUFDNUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQy9HLENBQUM7UUFFRCxJQUFJLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2pELG9EQUFvRDtZQUNwRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOytFQXBSVSxjQUFjO3VFQUFkLGNBQWMsV0FBZCxjQUFjLG1CQURELE1BQU07O2lGQUNuQixjQUFjO2NBRDFCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gXCIuLi8uLi9jb25zdGFudHMvY29tbW9uXCI7XG5pbXBvcnQgeyBBcHBPYmplY3RNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLW9iamVjdC5tb2RlbFwiO1xuaW1wb3J0IHsgQXBwRmllbGRNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLWZpZWxkLm1vZGVsXCI7XG5pbXBvcnQgeyBEYXRhU291cmNlUXVlcnlNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZGF0YS1zb3VyY2UtcXVlcnkubW9kZWxcIjtcbmltcG9ydCB7IE1ldGFkYXRhRW50aXR5VHlwZSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL3NjaGVtYS5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IEFwcFNjcmVlbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hcHAtc2NyZWVuLm1vZGVsXCI7XG5pbXBvcnQgeyBPcmdJbmZvTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL29yZ0luZm8ubW9kZWxcIjtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNZXRhZGF0YUhlbHBlciB7XG4gIHByaXZhdGUgYXBwT2JqZWN0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFwcE9iamVjdE1vZGVsIHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBhbGxBcHBPYmplY3RzOiBBcHBPYmplY3RNb2RlbFtdIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBhcHBTY3JlZW5NYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwU2NyZWVuTW9kZWwgfCBudWxsPigpO1xuICBwcml2YXRlIGFsbEFwcFNjcmVlbnM6IEFwcFNjcmVlbk1vZGVsW10gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIG9yZ0luZm9NYXAgPSBuZXcgTWFwPHN0cmluZywgT3JnSW5mb01vZGVsIHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBhbGxPcmdJbmZvczogT3JnSW5mb01vZGVsW10gfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXkgZnJvbSB0aGUgZ2l2ZW4gbWFwLlxuICAgKiBJZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAsIGFuZCB0aGUgc291cmNlIGxpc3QgY29udGFpbnMgYW4gaXRlbSB0aGF0IG1hdGNoZXNcbiAgICogdGhlIGdpdmVuIGNvbmRpdGlvbiwgaXQgY3JlYXRlcyBhIG5ldyBtb2RlbCB1c2luZyB0aGUgZ2l2ZW4gbW9kZWwgZmFjdG9yeSBhbmQgYWRkcyBpdCB0byB0aGUgbWFwLlxuICAgKiBAcGFyYW0gbWFwIFRoZSBtYXAgdG8gc2VhcmNoIGluLlxuICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHNvdXJjZUxpc3QgVGhlIGxpc3Qgb2YgaXRlbXMgdG8gc2VhcmNoIGluLlxuICAgKiBAcGFyYW0gbWF0Y2hGbiBUaGUgY29uZGl0aW9uIHRvIG1hdGNoLlxuICAgKiBAcGFyYW0gbW9kZWxGYWN0b3J5IFRoZSBmYWN0b3J5IHRvIGNyZWF0ZSBhIG5ldyBtb2RlbCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXksIG9yIG51bGwgaWYgbm8gbWF0Y2ggaXMgZm91bmQuXG4gICAqL1xuICBwcml2YXRlIGdldEZyb21NYXBPckNyZWF0ZTxUPihcbiAgICBtYXA6IE1hcDxzdHJpbmcsIFQgfCBudWxsPixcbiAgICBrZXk6IHN0cmluZyxcbiAgICBzb3VyY2VMaXN0OiBUW10sXG4gICAgbWF0Y2hGbjogKGl0ZW06IFQpID0+IGJvb2xlYW4sXG4gICAgbW9kZWxGYWN0b3J5OiAoaXRlbTogVCkgPT4gVFxuICApOiBUIHwgbnVsbCB7XG4gICAgaWYgKCFrZXkpIHJldHVybiBudWxsO1xuICAgIGlmIChtYXAuaGFzKGtleSkpIHJldHVybiBtYXAuZ2V0KGtleSkgfHwgbnVsbDtcblxuICAgIGNvbnN0IGl0ZW0gPSBzb3VyY2VMaXN0LmZpbmQobWF0Y2hGbik7XG4gICAgY29uc3QgbW9kZWwgPSBpdGVtID8gbW9kZWxGYWN0b3J5KGl0ZW0pIDogbnVsbDtcbiAgICBtYXAuc2V0KGtleSwgbW9kZWwpO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMYXppbHkgaW5pdGlhbGl6ZXMgYSBsaXN0IG9mIG1vZGVscyBmcm9tIGEgc291cmNlIGxpc3QuXG4gICAqIEl0IGNyZWF0ZXMgYSBuZXcgbW9kZWwgZm9yIGVhY2ggaXRlbSBpbiB0aGUgc291cmNlIGxpc3QgYW5kIGFkZHMgaXQgdG8gdGhlIGdpdmVuIG1hcC5cbiAgICogSXQgYWxzbyBzZXRzIHRoZSBsaXN0IG9mIG1vZGVscyB0byB0aGUgZ2l2ZW4gc2V0dGVyLlxuICAgKiBAcGFyYW0gbGlzdFJlZiBUaGUgcmVmZXJlbmNlIHRvIHRoZSBsaXN0IG9mIG1vZGVscy5cbiAgICogQHBhcmFtIHNldHRlciBUaGUgc2V0dGVyIHRvIHNldCB0aGUgbGlzdCBvZiBtb2RlbHMuXG4gICAqIEBwYXJhbSBzb3VyY2VMaXN0IFRoZSBzb3VyY2UgbGlzdCBvZiBpdGVtcy5cbiAgICogQHBhcmFtIG1hcCBUaGUgbWFwIHRvIHN0b3JlIHRoZSBtb2RlbHMuXG4gICAqIEBwYXJhbSBnZXRLZXlzIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgZm9yIHRoZSBnaXZlbiBpdGVtLlxuICAgKiBAcGFyYW0gbW9kZWxGYWN0b3J5IFRoZSBmYWN0b3J5IHRvIGNyZWF0ZSBhIG5ldyBtb2RlbCBmb3IgdGhlIGdpdmVuIGl0ZW0uXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIG1vZGVscy5cbiAgICovXG4gIHByaXZhdGUgbGF6eUluaXRMaXN0PFQsIE0+KFxuICAgIGxpc3RSZWY6IE1bXSB8IG51bGwsXG4gICAgc2V0dGVyOiAobGlzdDogTVtdKSA9PiB2b2lkLFxuICAgIHNvdXJjZUxpc3Q6IFRbXSxcbiAgICBtYXA6IE1hcDxzdHJpbmcsIE0gfCBudWxsPixcbiAgICBnZXRLZXlzOiAoaXRlbTogVCkgPT4gc3RyaW5nW10sXG4gICAgbW9kZWxGYWN0b3J5OiAoaXRlbTogVCkgPT4gTVxuICApOiBNW10ge1xuICAgIC8vIElmIHRoZSBsaXN0IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJldHVybiBpdC5cbiAgICBpZiAobGlzdFJlZikgcmV0dXJuIGxpc3RSZWY7XG5cbiAgICAvLyBDcmVhdGUgYSBuZXcgbW9kZWwgZm9yIGVhY2ggaXRlbSBpbiB0aGUgc291cmNlIGxpc3QgYW5kIGFkZCBpdCB0byB0aGUgbWFwLlxuICAgIGNvbnN0IG1vZGVscyA9IHNvdXJjZUxpc3QubWFwKChpdGVtOiBUKSA9PiB7XG4gICAgICBjb25zdCBtb2RlbCA9IG1vZGVsRmFjdG9yeShpdGVtKTtcbiAgICAgIGdldEtleXMoaXRlbSkuZm9yRWFjaChrZXkgPT4gbWFwLnNldChrZXksIG1vZGVsKSk7XG4gICAgICByZXR1cm4gbW9kZWw7XG4gICAgfSk7XG5cbiAgICAvLyBTZXQgdGhlIGxpc3Qgb2YgbW9kZWxzIHRvIHRoZSBnaXZlbiBzZXR0ZXIuXG4gICAgc2V0dGVyKG1vZGVscyk7XG5cbiAgICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgbW9kZWxzLlxuICAgIHJldHVybiBtb2RlbHM7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYW4gYXBwIG9iamVjdCBpbiB0aGUgbWFwIGJ5IGl0cyBuYW1lIG9yIGlkLlxuICAgKiBJZiB0aGUgYXBwIG9iamVjdCBpcyBub3QgZm91bmQsIGl0IGNyZWF0ZXMgYSBuZXcgb25lIGFuZCBhZGRzIGl0IHRvIHRoZSBtYXAuXG4gICAqIEBwYXJhbSBuYW1lT3JJZCBUaGUgbmFtZSBvciBpZCBvZiB0aGUgYXBwIG9iamVjdCB0byBmaW5kLlxuICAgKiBAcmV0dXJucyBUaGUgYXBwIG9iamVjdCBpZiBmb3VuZCwgb3IgbnVsbCBpZiBub3QgZm91bmQuXG4gICAqL1xuICBnZXRBcHBPYmplY3RCeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBPYmplY3RNb2RlbCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldEZyb21NYXBPckNyZWF0ZShcbiAgICAgIHRoaXMuYXBwT2JqZWN0TWFwLFxuICAgICAgbmFtZU9ySWQsXG4gICAgICBDb21tb24udGFiSnNvbi5BcHBPYmplY3RzLFxuICAgICAgb2JqID0+IG9iai5PYmplY3ROYW1lID09PSBuYW1lT3JJZCB8fCBvYmouSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpLFxuICAgICAgb2JqID0+IG5ldyBBcHBPYmplY3RNb2RlbChvYmopXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhcHAgb2JqZWN0cyBpbiB0aGUgbWV0YWRhdGEuXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggYXBwIG9iamVjdC5cbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFwcCBvYmplY3RzLlxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBhcHAgb2JqZWN0cy5cbiAgICovXG4gIGdldEFsbEFwcE9iamVjdHMoZmlsdGVyRm4/OiAob2JqOiBBcHBPYmplY3RNb2RlbCkgPT4gYm9vbGVhbik6IEFwcE9iamVjdE1vZGVsW10ge1xuICAgIC8vIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgYXBwIG9iamVjdHMgbGF6aWx5LlxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcbiAgICAgIHRoaXMuYWxsQXBwT2JqZWN0cyxcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxBcHBPYmplY3RzID0gdmFsKSxcbiAgICAgIENvbW1vbi50YWJKc29uLkFwcE9iamVjdHMsXG4gICAgICB0aGlzLmFwcE9iamVjdE1hcCxcbiAgICAgIChvYmo6IGFueSkgPT4gW29iai5JRD8udG9Mb3dlckNhc2UoKSwgb2JqLk9iamVjdE5hbWVdLFxuICAgICAgb2JqID0+IG5ldyBBcHBPYmplY3RNb2RlbChvYmopXG4gICAgKTtcblxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBhcHAgb2JqZWN0cy5cbiAgICByZXR1cm4gZmlsdGVyRm4gPyBsaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBsaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGZpZWxkcyBpbiB0aGUgbWV0YWRhdGEuXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggZmllbGQuXG4gICAqIEBwYXJhbSBmaWx0ZXJGbiBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBmaWVsZHMuXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGZpZWxkcy5cbiAgICovXG4gIGdldEFsbEZpZWxkcyhmaWx0ZXJGbj86IChmaWVsZDogQXBwRmllbGRNb2RlbCkgPT4gYm9vbGVhbik6IEFwcEZpZWxkTW9kZWxbXSB7XG4gICAgLy8gR2V0IGEgbGlzdCBvZiBhbGwgZmllbGRzIGZyb20gYWxsIGFwcCBvYmplY3RzLlxuICAgIGNvbnN0IGFsbEZpZWxkcyA9IHRoaXMuZ2V0QWxsQXBwT2JqZWN0cygpLmZsYXRNYXAob2JqID0+IG9iai5maWVsZHMoKSk7XG5cbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzLlxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGFsbEZpZWxkcy5maWx0ZXIoZmlsdGVyRm4pIDogYWxsRmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGRhdGEgc291cmNlIHF1ZXJpZXMgaW4gdGhlIG1ldGFkYXRhLlxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byBlYWNoIGRhdGEgc291cmNlIHF1ZXJ5LlxuICAgKiBAcGFyYW0gZmlsdGVyRm4gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgZGF0YSBzb3VyY2UgcXVlcmllcy5cbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcy5cbiAgICovXG4gIGdldEFsbERhdGFTb3VyY2VRdWVyaWVzKGZpbHRlckZuPzogKGRzcTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwpID0+IGJvb2xlYW4pOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdIHtcbiAgICAvLyBHZXQgYSBsaXN0IG9mIGFsbCBkYXRhIHNvdXJjZSBxdWVyaWVzIGZyb20gYWxsIGFwcCBvYmplY3RzLlxuICAgIGNvbnN0IGFsbERTUXMgPSB0aGlzLmdldEFsbEFwcE9iamVjdHMoKS5mbGF0TWFwKG9iaiA9PiBvYmouZGF0YVNvdXJjZVF1ZXJpZXMoKSk7XG5cbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcy5cbiAgICByZXR1cm4gZmlsdGVyRm4gPyBhbGxEU1FzLmZpbHRlcihmaWx0ZXJGbikgOiBhbGxEU1FzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGRhdGEgc291cmNlIHF1ZXJ5IGJ5IGl0cyBJRCwgUXVlcnlOYW1lLCBvciBEaXNwbGF5TmFtZS5cbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgZGF0YSBzb3VyY2UgcXVlcmllcyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXG4gICAqIFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZU9ySWQgLSBUaGUgSUQsIFF1ZXJ5TmFtZSwgb3IgRGlzcGxheU5hbWUgb2YgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IHRvIHJldHJpZXZlLlxuICAgKiBAcmV0dXJucyB7RGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfCBudWxsfSAtIFRoZSBkYXRhIHNvdXJjZSBxdWVyeSBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXG4gICAqL1xuICBnZXREYXRhU291cmNlUXVlcnlCeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBEYXRhU291cmNlUXVlcnlNb2RlbCB8IG51bGwge1xuICAgIC8vIFNlYXJjaCBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IGJ5IElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsRGF0YVNvdXJjZVF1ZXJpZXMoKS5maW5kKFxuICAgICAgZHNxID0+IGRzcT8uSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8IGRzcT8uUXVlcnlOYW1lID09PSBuYW1lT3JJZCB8fCBkc3E/LkRpc3BsYXlOYW1lID09PSBuYW1lT3JJZFxuICAgICkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYW4gYXBwIHNjcmVlbiBieSBpdHMgSUQsIE5hbWUsIG9yIERpc3BsYXlOYW1lLlxuICAgKiBTZWFyY2hlcyB0aHJvdWdoIGFsbCBhcHAgc2NyZWVucyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXG4gICAqIFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZU9ySWQgLSBUaGUgSUQsIE5hbWUsIG9yIERpc3BsYXlOYW1lIG9mIHRoZSBhcHAgc2NyZWVuIHRvIHJldHJpZXZlLlxuICAgKiBAcmV0dXJucyB7QXBwU2NyZWVuTW9kZWwgfCBudWxsfSAtIFRoZSBhcHAgc2NyZWVuIG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAgICovXG4gIGdldEFwcFNjcmVlbkJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IEFwcFNjcmVlbk1vZGVsIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxuICAgICAgdGhpcy5hcHBTY3JlZW5NYXAsXG4gICAgICBuYW1lT3JJZCxcbiAgICAgIENvbW1vbi50YWJKc29uLkFwcFNjcmVlbnMsXG4gICAgICBzY3JlZW4gPT4gc2NyZWVuPy5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHwgc2NyZWVuPy5OYW1lID09PSBuYW1lT3JJZCxcbiAgICAgIHNjcmVlbiA9PiBuZXcgQXBwU2NyZWVuTW9kZWwoc2NyZWVuKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgYXBwIHNjcmVlbnMuXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zLlxuICAgKiBcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBhcHAgc2NyZWVucy5cbiAgICogQHJldHVybnMge0FwcFNjcmVlbk1vZGVsW119IC0gVGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMuXG4gICAqL1xuICBnZXRBbGxBcHBTY3JlZW5zKGZpbHRlckZuPzogKHNjcmVlbjogQXBwU2NyZWVuTW9kZWwpID0+IGJvb2xlYW4pOiBBcHBTY3JlZW5Nb2RlbFtdIHtcbiAgICAvLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zIGxhemlseS5cbiAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXp5SW5pdExpc3QoXG4gICAgICB0aGlzLmFsbEFwcFNjcmVlbnMsXG4gICAgICB2YWwgPT4gKHRoaXMuYWxsQXBwU2NyZWVucyA9IHZhbCksXG4gICAgICBDb21tb24udGFiSnNvbi5BcHBTY3JlZW5zLFxuICAgICAgdGhpcy5hcHBTY3JlZW5NYXAsXG4gICAgICAoczogYW55KSA9PiBbcz8uSUQ/LnRvTG93ZXJDYXNlKCksIHM/Lk5hbWVdLFxuICAgICAgcyA9PiBuZXcgQXBwU2NyZWVuTW9kZWwocylcbiAgICApO1xuXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zLlxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGxpc3QuZmlsdGVyKGZpbHRlckZuKSA6IGxpc3Q7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuIG9yZ2FuaXphdGlvbiBpbmZvIGJ5IGl0cyBJRCBvciBUZW5hbnRDb2RlLlxuICAgKiBTZWFyY2hlcyB0aHJvdWdoIGFsbCBvcmdhbml6YXRpb24gaW5mbyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXG4gICAqIFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZU9yVGVuYW50Q29kZSAtIFRoZSBJRCBvciBUZW5hbnRDb2RlIG9mIHRoZSBvcmdhbml6YXRpb24gaW5mbyB0byByZXRyaWV2ZS5cbiAgICogQHJldHVybnMge09yZ0luZm9Nb2RlbCB8IG51bGx9IC0gVGhlIG9yZ2FuaXphdGlvbiBpbmZvIG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAgICovXG4gIGdldE9yZ0luZm9CeUlkT3JUZW5hbnRDb2RlKG5hbWVPclRlbmFudENvZGU6IHN0cmluZyk6IE9yZ0luZm9Nb2RlbCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldEZyb21NYXBPckNyZWF0ZShcbiAgICAgIHRoaXMub3JnSW5mb01hcCxcbiAgICAgIG5hbWVPclRlbmFudENvZGUsXG4gICAgICBDb21tb24udGFiSnNvbi5PcmdJbmZvcyxcbiAgICAgIC8vIFNlYXJjaCBmb3IgdGhlIG9yZ2FuaXphdGlvbiBpbmZvIGJ5IElEIG9yIFRlbmFudENvZGVcbiAgICAgIG9yZyA9PiBvcmcuSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPclRlbmFudENvZGU/LnRvTG93ZXJDYXNlKCkgfHwgb3JnLlRlbmFudENvZGUgPT09IG5hbWVPclRlbmFudENvZGUsXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgT3JnSW5mb01vZGVsIGlmIHRoZSBvcmdhbml6YXRpb24gaW5mbyBpcyBmb3VuZFxuICAgICAgb3JnID0+IG5ldyBPcmdJbmZvTW9kZWwob3JnKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgb3JnYW5pemF0aW9uIGluZm8uXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvLlxuICAgKiBcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBvcmdhbml6YXRpb24gaW5mby5cbiAgICogQHJldHVybnMge09yZ0luZm9Nb2RlbFtdfSAtIFRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvLlxuICAgKi9cbiAgZ2V0QWxsT3JnSW5mb3MoZmlsdGVyRm4/OiAob3JnOiBPcmdJbmZvTW9kZWwpID0+IGJvb2xlYW4pOiBPcmdJbmZvTW9kZWxbXSB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBvcmdhbml6YXRpb24gaW5mbyBsYXppbHkuXG4gICAgY29uc3QgbGlzdCA9IHRoaXMubGF6eUluaXRMaXN0KFxuICAgICAgdGhpcy5hbGxPcmdJbmZvcyxcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxPcmdJbmZvcyA9IHZhbCksXG4gICAgICBDb21tb24udGFiSnNvbi5PcmdJbmZvcyxcbiAgICAgIHRoaXMub3JnSW5mb01hcCxcbiAgICAgIChvcmc6IGFueSkgPT4gW29yZz8uSUQ/LnRvTG93ZXJDYXNlKCksIG9yZz8uVGVuYW50Q29kZV0sXG4gICAgICBvcmcgPT4gbmV3IE9yZ0luZm9Nb2RlbChvcmcpXG4gICAgKTtcblxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBvcmdhbml6YXRpb24gaW5mby5cbiAgICByZXR1cm4gZmlsdGVyRm4gPyBsaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBsaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgZ2xvYmFsIHNlYXJjaCBhY3Jvc3MgYWxsIG1ldGFkYXRhIGZvciBhIGdpdmVuIHNlYXJjaCB0ZXJtLlxuICAgKiBZb3UgY2FuIG5hcnJvdyB0aGUgc2VhcmNoIGJ5IHByb3ZpZGluZyBhIGxpc3Qgb2YgZW50aXR5IHR5cGVzIHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGVybSAtIFRoZSBzZWFyY2ggdGVybSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge01ldGFkYXRhRW50aXR5VHlwZVtdfSBlbnRpdHlUeXBlcyAtIFRoZSBsaXN0IG9mIGVudGl0eSB0eXBlcyB0byBzZWFyY2ggd2l0aGluLiBJZiBvbWl0dGVkLCBhbGwgZW50aXR5IHR5cGVzIGFyZSBzZWFyY2hlZC5cbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueVtdPn0gLSBBIGRpY3Rpb25hcnkgd2l0aCByZXN1bHRzIGdyb3VwZWQgYnkgZW50aXR5IHR5cGUuXG4gICAqL1xuICBzZWFyY2hNZXRhZGF0YSh0ZXJtOiBzdHJpbmcsIGVudGl0eVR5cGVzPzogTWV0YWRhdGFFbnRpdHlUeXBlW10pOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4ge1xuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSB0ZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbiBlbnRpdHkgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gICAgICogQHBhcmFtIHtNZXRhZGF0YUVudGl0eVR5cGV9IHR5cGUgLSBUaGUgZW50aXR5IHR5cGUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGUgZW50aXR5IHR5cGUgc2hvdWxkIGJlIHNlYXJjaGVkLlxuICAgICAqL1xuICAgIGNvbnN0IHNob3VsZFNlYXJjaCA9ICh0eXBlOiBNZXRhZGF0YUVudGl0eVR5cGUpID0+ICFlbnRpdHlUeXBlcyB8fCBlbnRpdHlUeXBlcy5pbmNsdWRlcyh0eXBlKTtcblxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9PQkpFQ1RTKSkge1xuICAgICAgLy8gU2VhcmNoIGZvciBhcHAgb2JqZWN0cyBieSBJRCwgT2JqZWN0TmFtZSwgRGlzcGxheU5hbWUsIG9yIFN5c3RlbURCVGFibGVOYW1lXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9PQkpFQ1RTXSA9IHRoaXMuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT5cbiAgICAgICAgW29iaj8uSUQsIG9iaj8uT2JqZWN0TmFtZSwgb2JqPy5EaXNwbGF5TmFtZSwgb2JqPy5TeXN0ZW1EQlRhYmxlTmFtZV1cbiAgICAgICAgICAuc29tZSh2YWwgPT4gdmFsID09PSBzZWFyY2hUZXJtIHx8IHZhbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuQVBQX0ZJRUxEUykpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIGZpZWxkcyBieSB1c2luZyB0aGUgc2VhcmNoIG1ldGhvZFxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5BUFBfRklFTERTXSA9IHRoaXMuZ2V0QWxsRmllbGRzKGZpZWxkID0+IGZpZWxkLnNlYXJjaChzZWFyY2hUZXJtKSk7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuREFUQV9TT1VSQ0VfUVVFUklFUykpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgZGF0YSBzb3VyY2UgcXVlcmllcyBieSB1c2luZyB0aGUgc2VhcmNoIG1ldGhvZFxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5EQVRBX1NPVVJDRV9RVUVSSUVTXSA9IHRoaXMuZ2V0QWxsRGF0YVNvdXJjZVF1ZXJpZXMoZHNxID0+IGRzcS5zZWFyY2goc2VhcmNoVGVybSkpO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9TQ1JFRU5TKSkge1xuICAgICAgLy8gU2VhcmNoIGZvciBhcHAgc2NyZWVucyBieSB1c2luZyB0aGUgc2VhcmNoIG1ldGhvZFxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5BUFBfU0NSRUVOU10gPSB0aGlzLmdldEFsbEFwcFNjcmVlbnMoc2NyZWVuID0+IHNjcmVlbi5zZWFyY2goc2VhcmNoVGVybSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0iXX0=
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1kYXRhLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRzFELE1BQU0sT0FBTyxjQUFjO0lBRDNCO1FBRVUsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztRQUN4RCxrQkFBYSxHQUE0QixJQUFJLENBQUM7UUFFOUMsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztRQUN4RCxrQkFBYSxHQUE0QixJQUFJLENBQUM7UUFFOUMsZUFBVSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO1FBQ3BELGdCQUFXLEdBQTBCLElBQUksQ0FBQztLQTBSbkQ7SUF4UkM7Ozs7Ozs7Ozs7T0FVRztJQUNLLGtCQUFrQixDQUN4QixHQUEwQixFQUMxQixHQUFXLEVBQ1gsVUFBZSxFQUNmLE9BQTZCLEVBQzdCLFlBQTRCO1FBRTVCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdEIsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENB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QUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDdEcsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7K0VBalNVLGNBQWM7dUVBQWQsY0FBYyxXQUFkLGNBQWMsbUJBREQsTUFBTTs7aUZBQ25CLGNBQWM7Y0FEMUIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9jb21tb25cIjtcbmltcG9ydCB7IEFwcE9iamVjdE1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hcHAtb2JqZWN0Lm1vZGVsXCI7XG5pbXBvcnQgeyBBcHBGaWVsZE1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hcHAtZmllbGQubW9kZWxcIjtcbmltcG9ydCB7IERhdGFTb3VyY2VRdWVyeU1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9kYXRhLXNvdXJjZS1xdWVyeS5tb2RlbFwiO1xuaW1wb3J0IHsgTWV0YWRhdGFFbnRpdHlUeXBlIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvc2NoZW1hLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgQXBwU2NyZWVuTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1zY3JlZW4ubW9kZWxcIjtcbmltcG9ydCB7IE9yZ0luZm9Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvb3JnSW5mby5tb2RlbFwiO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhSGVscGVyIHtcbiAgcHJpdmF0ZSBhcHBPYmplY3RNYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwT2JqZWN0TW9kZWwgfCBudWxsPigpO1xuICBwcml2YXRlIGFsbEFwcE9iamVjdHM6IEFwcE9iamVjdE1vZGVsW10gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIGFwcFNjcmVlbk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcHBTY3JlZW5Nb2RlbCB8IG51bGw+KCk7XG4gIHByaXZhdGUgYWxsQXBwU2NyZWVuczogQXBwU2NyZWVuTW9kZWxbXSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgb3JnSW5mb01hcCA9IG5ldyBNYXA8c3RyaW5nLCBPcmdJbmZvTW9kZWwgfCBudWxsPigpO1xuICBwcml2YXRlIGFsbE9yZ0luZm9zOiBPcmdJbmZvTW9kZWxbXSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGtleSBmcm9tIHRoZSBnaXZlbiBtYXAuXG4gICAqIElmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCwgYW5kIHRoZSBzb3VyY2UgbGlzdCBjb250YWlucyBhbiBpdGVtIHRoYXQgbWF0Y2hlc1xuICAgKiB0aGUgZ2l2ZW4gY29uZGl0aW9uLCBpdCBjcmVhdGVzIGEgbmV3IG1vZGVsIHVzaW5nIHRoZSBnaXZlbiBtb2RlbCBmYWN0b3J5IGFuZCBhZGRzIGl0IHRvIHRoZSBtYXAuXG4gICAqIEBwYXJhbSBtYXAgVGhlIG1hcCB0byBzZWFyY2ggaW4uXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0gc291cmNlTGlzdCBUaGUgbGlzdCBvZiBpdGVtcyB0byBzZWFyY2ggaW4uXG4gICAqIEBwYXJhbSBtYXRjaEZuIFRoZSBjb25kaXRpb24gdG8gbWF0Y2guXG4gICAqIEBwYXJhbSBtb2RlbEZhY3RvcnkgVGhlIGZhY3RvcnkgdG8gY3JlYXRlIGEgbmV3IG1vZGVsIGlmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGtleSwgb3IgbnVsbCBpZiBubyBtYXRjaCBpcyBmb3VuZC5cbiAgICovXG4gIHByaXZhdGUgZ2V0RnJvbU1hcE9yQ3JlYXRlPFQ+KFxuICAgIG1hcDogTWFwPHN0cmluZywgVCB8IG51bGw+LFxuICAgIGtleTogc3RyaW5nLFxuICAgIHNvdXJjZUxpc3Q6IFRbXSxcbiAgICBtYXRjaEZuOiAoaXRlbTogVCkgPT4gYm9vbGVhbixcbiAgICBtb2RlbEZhY3Rvcnk6IChpdGVtOiBUKSA9PiBUXG4gICk6IFQgfCBudWxsIHtcbiAgICBpZiAoIWtleSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKG1hcC5oYXMoa2V5KSkgcmV0dXJuIG1hcC5nZXQoa2V5KSB8fCBudWxsO1xuXG4gICAgY29uc3QgaXRlbSA9IHNvdXJjZUxpc3QuZmluZChtYXRjaEZuKTtcbiAgICBjb25zdCBtb2RlbCA9IGl0ZW0gPyBtb2RlbEZhY3RvcnkoaXRlbSkgOiBudWxsO1xuICAgIG1hcC5zZXQoa2V5LCBtb2RlbCk7XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIExhemlseSBpbml0aWFsaXplcyBhIGxpc3Qgb2YgbW9kZWxzIGZyb20gYSBzb3VyY2UgbGlzdC5cbiAgICogSXQgY3JlYXRlcyBhIG5ldyBtb2RlbCBmb3IgZWFjaCBpdGVtIGluIHRoZSBzb3VyY2UgbGlzdCBhbmQgYWRkcyBpdCB0byB0aGUgZ2l2ZW4gbWFwLlxuICAgKiBJdCBhbHNvIHNldHMgdGhlIGxpc3Qgb2YgbW9kZWxzIHRvIHRoZSBnaXZlbiBzZXR0ZXIuXG4gICAqIEBwYXJhbSBsaXN0UmVmIFRoZSByZWZlcmVuY2UgdG8gdGhlIGxpc3Qgb2YgbW9kZWxzLlxuICAgKiBAcGFyYW0gc2V0dGVyIFRoZSBzZXR0ZXIgdG8gc2V0IHRoZSBsaXN0IG9mIG1vZGVscy5cbiAgICogQHBhcmFtIHNvdXJjZUxpc3QgVGhlIHNvdXJjZSBsaXN0IG9mIGl0ZW1zLlxuICAgKiBAcGFyYW0gbWFwIFRoZSBtYXAgdG8gc3RvcmUgdGhlIG1vZGVscy5cbiAgICogQHBhcmFtIGdldEtleXMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBmb3IgdGhlIGdpdmVuIGl0ZW0uXG4gICAqIEBwYXJhbSBtb2RlbEZhY3RvcnkgVGhlIGZhY3RvcnkgdG8gY3JlYXRlIGEgbmV3IG1vZGVsIGZvciB0aGUgZ2l2ZW4gaXRlbS5cbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgbW9kZWxzLlxuICAgKi9cbiAgcHJpdmF0ZSBsYXp5SW5pdExpc3Q8VCwgTT4oXG4gICAgbGlzdFJlZjogTVtdIHwgbnVsbCxcbiAgICBzZXR0ZXI6IChsaXN0OiBNW10pID0+IHZvaWQsXG4gICAgc291cmNlTGlzdDogVFtdLFxuICAgIG1hcDogTWFwPHN0cmluZywgTSB8IG51bGw+LFxuICAgIGdldEtleXM6IChpdGVtOiBUKSA9PiBzdHJpbmdbXSxcbiAgICBtb2RlbEZhY3Rvcnk6IChpdGVtOiBUKSA9PiBNXG4gICk6IE1bXSB7XG4gICAgLy8gSWYgdGhlIGxpc3QgaXMgYWxyZWFkeSBpbml0aWFsaXplZCwgcmV0dXJuIGl0LlxuICAgIGlmIChsaXN0UmVmKSByZXR1cm4gbGlzdFJlZjtcblxuICAgIC8vIENyZWF0ZSBhIG5ldyBtb2RlbCBmb3IgZWFjaCBpdGVtIGluIHRoZSBzb3VyY2UgbGlzdCBhbmQgYWRkIGl0IHRvIHRoZSBtYXAuXG4gICAgY29uc3QgbW9kZWxzID0gc291cmNlTGlzdC5tYXAoKGl0ZW06IFQpID0+IHtcbiAgICAgIGNvbnN0IG1vZGVsID0gbW9kZWxGYWN0b3J5KGl0ZW0pO1xuICAgICAgZ2V0S2V5cyhpdGVtKS5mb3JFYWNoKGtleSA9PiBtYXAuc2V0KGtleSwgbW9kZWwpKTtcbiAgICAgIHJldHVybiBtb2RlbDtcbiAgICB9KTtcblxuICAgIC8vIFNldCB0aGUgbGlzdCBvZiBtb2RlbHMgdG8gdGhlIGdpdmVuIHNldHRlci5cbiAgICBzZXR0ZXIobW9kZWxzKTtcblxuICAgIC8vIFJldHVybiB0aGUgbGlzdCBvZiBtb2RlbHMuXG4gICAgcmV0dXJuIG1vZGVscztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhbiBhcHAgb2JqZWN0IGluIHRoZSBtYXAgYnkgaXRzIG5hbWUgb3IgaWQuXG4gICAqIElmIHRoZSBhcHAgb2JqZWN0IGlzIG5vdCBmb3VuZCwgaXQgY3JlYXRlcyBhIG5ldyBvbmUgYW5kIGFkZHMgaXQgdG8gdGhlIG1hcC5cbiAgICogQHBhcmFtIG5hbWVPcklkIFRoZSBuYW1lIG9yIGlkIG9mIHRoZSBhcHAgb2JqZWN0IHRvIGZpbmQuXG4gICAqIEByZXR1cm5zIFRoZSBhcHAgb2JqZWN0IGlmIGZvdW5kLCBvciBudWxsIGlmIG5vdCBmb3VuZC5cbiAgICovXG4gIGdldEFwcE9iamVjdEJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IEFwcE9iamVjdE1vZGVsIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxuICAgICAgdGhpcy5hcHBPYmplY3RNYXAsXG4gICAgICBuYW1lT3JJZCxcbiAgICAgIENvbW1vbi50YWJKc29uLkFwcE9iamVjdHMsXG4gICAgICBvYmogPT4gb2JqLk9iamVjdE5hbWUgPT09IG5hbWVPcklkIHx8IG9iai5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCksXG4gICAgICBvYmogPT4gbmV3IEFwcE9iamVjdE1vZGVsKG9iaiwgdGhpcylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGFwcCBvYmplY3RzIGluIHRoZSBtZXRhZGF0YS5cbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gZWFjaCBhcHAgb2JqZWN0LlxuICAgKiBAcGFyYW0gZmlsdGVyRm4gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgYXBwIG9iamVjdHMuXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGFwcCBvYmplY3RzLlxuICAgKi9cbiAgZ2V0QWxsQXBwT2JqZWN0cyhmaWx0ZXJGbj86IChvYmo6IEFwcE9iamVjdE1vZGVsKSA9PiBib29sZWFuKTogQXBwT2JqZWN0TW9kZWxbXSB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBhcHAgb2JqZWN0cyBsYXppbHkuXG4gICAgY29uc3QgbGlzdCA9IHRoaXMubGF6eUluaXRMaXN0KFxuICAgICAgdGhpcy5hbGxBcHBPYmplY3RzLFxuICAgICAgdmFsID0+ICh0aGlzLmFsbEFwcE9iamVjdHMgPSB2YWwpLFxuICAgICAgQ29tbW9uLnRhYkpzb24uQXBwT2JqZWN0cyxcbiAgICAgIHRoaXMuYXBwT2JqZWN0TWFwLFxuICAgICAgKG9iajogYW55KSA9PiBbb2JqLklEPy50b0xvd2VyQ2FzZSgpLCBvYmouT2JqZWN0TmFtZV0sXG4gICAgICBvYmogPT4gbmV3IEFwcE9iamVjdE1vZGVsKG9iaiwgdGhpcylcbiAgICApO1xuXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGFwcCBvYmplY3RzLlxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGxpc3QuZmlsdGVyKGZpbHRlckZuKSA6IGxpc3Q7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZmllbGRzIGluIHRoZSBtZXRhZGF0YS5cbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gZWFjaCBmaWVsZC5cbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGZpZWxkcy5cbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgZmllbGRzLlxuICAgKi9cbiAgZ2V0QWxsRmllbGRzKGZpbHRlckZuPzogKGZpZWxkOiBBcHBGaWVsZE1vZGVsKSA9PiBib29sZWFuKTogQXBwRmllbGRNb2RlbFtdIHtcbiAgICAvLyBHZXQgYSBsaXN0IG9mIGFsbCBmaWVsZHMgZnJvbSBhbGwgYXBwIG9iamVjdHMuXG4gICAgY29uc3QgYWxsRmllbGRzID0gdGhpcy5nZXRBbGxBcHBPYmplY3RzKCkuZmxhdE1hcChvYmogPT4gb2JqLmZpZWxkcygpKTtcblxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBmaWVsZHMuXG4gICAgcmV0dXJuIGZpbHRlckZuID8gYWxsRmllbGRzLmZpbHRlcihmaWx0ZXJGbikgOiBhbGxGaWVsZHM7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYSBmaWVsZCBieSBpdHMgSUQgYWNyb3NzIGFsbCBhcHAgb2JqZWN0c1xuICAgKiBAcGFyYW0gZmllbGRJZCBUaGUgSUQgb2YgdGhlIGZpZWxkIHRvIGZpbmRcbiAgICogQHJldHVybnMgVGhlIGZpZWxkIGlmIGZvdW5kLCBvciBudWxsIGlmIG5vdCBmb3VuZFxuICAgKi9cbiAgZ2V0RmllbGRCeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBGaWVsZE1vZGVsIHwgbnVsbCB7XG4gICAgaWYgKCFuYW1lT3JJZCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsRmllbGRzKGZpZWxkID0+IFxuICAgICAgZmllbGQuSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8IFxuICAgICAgZmllbGQuRmllbGROYW1lID09PSBuYW1lT3JJZFxuICAgIClbMF0gfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBkYXRhIHNvdXJjZSBxdWVyaWVzIGluIHRoZSBtZXRhZGF0YS5cbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gZWFjaCBkYXRhIHNvdXJjZSBxdWVyeS5cbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGRhdGEgc291cmNlIHF1ZXJpZXMuXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGRhdGEgc291cmNlIHF1ZXJpZXMuXG4gICAqL1xuICBnZXRBbGxEYXRhU291cmNlUXVlcmllcyhmaWx0ZXJGbj86IChkc3E6IERhdGFTb3VyY2VRdWVyeU1vZGVsKSA9PiBib29sZWFuKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWxbXSB7XG4gICAgLy8gR2V0IGEgbGlzdCBvZiBhbGwgZGF0YSBzb3VyY2UgcXVlcmllcyBmcm9tIGFsbCBhcHAgb2JqZWN0cy5cbiAgICBjb25zdCBhbGxEU1FzID0gdGhpcy5nZXRBbGxBcHBPYmplY3RzKCkuZmxhdE1hcChvYmogPT4gb2JqLmRhdGFTb3VyY2VRdWVyaWVzKCkpO1xuXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGRhdGEgc291cmNlIHF1ZXJpZXMuXG4gICAgcmV0dXJuIGZpbHRlckZuID8gYWxsRFNRcy5maWx0ZXIoZmlsdGVyRm4pIDogYWxsRFNRcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBkYXRhIHNvdXJjZSBxdWVyeSBieSBpdHMgSUQsIFF1ZXJ5TmFtZSwgb3IgRGlzcGxheU5hbWUuXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMgYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSB0byByZXRyaWV2ZS5cbiAgICogQHJldHVybnMge0RhdGFTb3VyY2VRdWVyeU1vZGVsIHwgbnVsbH0gLSBUaGUgZGF0YSBzb3VyY2UgcXVlcnkgbW9kZWwgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICAgKi9cbiAgZ2V0RGF0YVNvdXJjZVF1ZXJ5QnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfCBudWxsIHtcbiAgICAvLyBTZWFyY2ggZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSBieSBJRCwgUXVlcnlOYW1lLCBvciBEaXNwbGF5TmFtZVxuICAgIHJldHVybiB0aGlzLmdldEFsbERhdGFTb3VyY2VRdWVyaWVzKCkuZmluZChcbiAgICAgIGRzcSA9PiBkc3E/LklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSB8fCBkc3E/LlF1ZXJ5TmFtZSA9PT0gbmFtZU9ySWQgfHwgZHNxPy5EaXNwbGF5TmFtZSA9PT0gbmFtZU9ySWRcbiAgICApIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuIGFwcCBzY3JlZW4gYnkgaXRzIElELCBOYW1lLCBvciBEaXNwbGF5TmFtZS5cbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgYXBwIHNjcmVlbnMgYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElELCBOYW1lLCBvciBEaXNwbGF5TmFtZSBvZiB0aGUgYXBwIHNjcmVlbiB0byByZXRyaWV2ZS5cbiAgICogQHJldHVybnMge0FwcFNjcmVlbk1vZGVsIHwgbnVsbH0gLSBUaGUgYXBwIHNjcmVlbiBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXG4gICAqL1xuICBnZXRBcHBTY3JlZW5CeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBTY3JlZW5Nb2RlbCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldEZyb21NYXBPckNyZWF0ZShcbiAgICAgIHRoaXMuYXBwU2NyZWVuTWFwLFxuICAgICAgbmFtZU9ySWQsXG4gICAgICBDb21tb24udGFiSnNvbi5BcHBTY3JlZW5zLFxuICAgICAgc2NyZWVuID0+IHNjcmVlbj8uSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8IHNjcmVlbj8uTmFtZSA9PT0gbmFtZU9ySWQsXG4gICAgICBzY3JlZW4gPT4gbmV3IEFwcFNjcmVlbk1vZGVsKHNjcmVlbilcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxsIGFwcCBzY3JlZW5zLlxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cbiAgICogXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIC0gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgYXBwIHNjcmVlbnMuXG4gICAqIEByZXR1cm5zIHtBcHBTY3JlZW5Nb2RlbFtdfSAtIFRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zLlxuICAgKi9cbiAgZ2V0QWxsQXBwU2NyZWVucyhmaWx0ZXJGbj86IChzY3JlZW46IEFwcFNjcmVlbk1vZGVsKSA9PiBib29sZWFuKTogQXBwU2NyZWVuTW9kZWxbXSB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucyBsYXppbHkuXG4gICAgY29uc3QgbGlzdCA9IHRoaXMubGF6eUluaXRMaXN0KFxuICAgICAgdGhpcy5hbGxBcHBTY3JlZW5zLFxuICAgICAgdmFsID0+ICh0aGlzLmFsbEFwcFNjcmVlbnMgPSB2YWwpLFxuICAgICAgQ29tbW9uLnRhYkpzb24uQXBwU2NyZWVucyxcbiAgICAgIHRoaXMuYXBwU2NyZWVuTWFwLFxuICAgICAgKHM6IGFueSkgPT4gW3M/LklEPy50b0xvd2VyQ2FzZSgpLCBzPy5OYW1lXSxcbiAgICAgIHMgPT4gbmV3IEFwcFNjcmVlbk1vZGVsKHMpXG4gICAgKTtcblxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cbiAgICByZXR1cm4gZmlsdGVyRm4gPyBsaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBsaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhbiBvcmdhbml6YXRpb24gaW5mbyBieSBpdHMgSUQgb3IgVGVuYW50Q29kZS5cbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgb3JnYW5pemF0aW9uIGluZm8gYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPclRlbmFudENvZGUgLSBUaGUgSUQgb3IgVGVuYW50Q29kZSBvZiB0aGUgb3JnYW5pemF0aW9uIGluZm8gdG8gcmV0cmlldmUuXG4gICAqIEByZXR1cm5zIHtPcmdJbmZvTW9kZWwgfCBudWxsfSAtIFRoZSBvcmdhbml6YXRpb24gaW5mbyBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXG4gICAqL1xuICBnZXRPcmdJbmZvQnlJZE9yVGVuYW50Q29kZShuYW1lT3JUZW5hbnRDb2RlOiBzdHJpbmcpOiBPcmdJbmZvTW9kZWwgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGcm9tTWFwT3JDcmVhdGUoXG4gICAgICB0aGlzLm9yZ0luZm9NYXAsXG4gICAgICBuYW1lT3JUZW5hbnRDb2RlLFxuICAgICAgQ29tbW9uLnRhYkpzb24uT3JnSW5mb3MsXG4gICAgICAvLyBTZWFyY2ggZm9yIHRoZSBvcmdhbml6YXRpb24gaW5mbyBieSBJRCBvciBUZW5hbnRDb2RlXG4gICAgICBvcmcgPT4gb3JnLklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JUZW5hbnRDb2RlPy50b0xvd2VyQ2FzZSgpIHx8IG9yZy5UZW5hbnRDb2RlID09PSBuYW1lT3JUZW5hbnRDb2RlLFxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IE9yZ0luZm9Nb2RlbCBpZiB0aGUgb3JnYW5pemF0aW9uIGluZm8gaXMgZm91bmRcbiAgICAgIG9yZyA9PiBuZXcgT3JnSW5mb01vZGVsKG9yZylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxsIG9yZ2FuaXphdGlvbiBpbmZvLlxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byB0aGUgbGlzdCBvZiBvcmdhbml6YXRpb24gaW5mby5cbiAgICogXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIC0gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgb3JnYW5pemF0aW9uIGluZm8uXG4gICAqIEByZXR1cm5zIHtPcmdJbmZvTW9kZWxbXX0gLSBUaGUgbGlzdCBvZiBvcmdhbml6YXRpb24gaW5mby5cbiAgICovXG4gIGdldEFsbE9yZ0luZm9zKGZpbHRlckZuPzogKG9yZzogT3JnSW5mb01vZGVsKSA9PiBib29sZWFuKTogT3JnSW5mb01vZGVsW10ge1xuICAgIC8vIEluaXRpYWxpemUgdGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8gbGF6aWx5LlxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcbiAgICAgIHRoaXMuYWxsT3JnSW5mb3MsXG4gICAgICB2YWwgPT4gKHRoaXMuYWxsT3JnSW5mb3MgPSB2YWwpLFxuICAgICAgQ29tbW9uLnRhYkpzb24uT3JnSW5mb3MsXG4gICAgICB0aGlzLm9yZ0luZm9NYXAsXG4gICAgICAob3JnOiBhbnkpID0+IFtvcmc/LklEPy50b0xvd2VyQ2FzZSgpLCBvcmc/LlRlbmFudENvZGVdLFxuICAgICAgb3JnID0+IG5ldyBPcmdJbmZvTW9kZWwob3JnKVxuICAgICk7XG5cbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXG4gICAgcmV0dXJuIGZpbHRlckZuID8gbGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogbGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBhIGdsb2JhbCBzZWFyY2ggYWNyb3NzIGFsbCBtZXRhZGF0YSBmb3IgYSBnaXZlbiBzZWFyY2ggdGVybS5cbiAgICogWW91IGNhbiBuYXJyb3cgdGhlIHNlYXJjaCBieSBwcm92aWRpbmcgYSBsaXN0IG9mIGVudGl0eSB0eXBlcyB0byBzZWFyY2ggd2l0aGluLlxuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRlcm0gLSBUaGUgc2VhcmNoIHRlcm0gdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtNZXRhZGF0YUVudGl0eVR5cGVbXX0gZW50aXR5VHlwZXMgLSBUaGUgbGlzdCBvZiBlbnRpdHkgdHlwZXMgdG8gc2VhcmNoIHdpdGhpbi4gSWYgb21pdHRlZCwgYWxsIGVudGl0eSB0eXBlcyBhcmUgc2VhcmNoZWQuXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnlbXT59IC0gQSBkaWN0aW9uYXJ5IHdpdGggcmVzdWx0cyBncm91cGVkIGJ5IGVudGl0eSB0eXBlLlxuICAgKi9cbiAgc2VhcmNoTWV0YWRhdGEodGVybTogc3RyaW5nLCBlbnRpdHlUeXBlcz86IE1ldGFkYXRhRW50aXR5VHlwZVtdKTogUmVjb3JkPHN0cmluZywgYW55W10+IHtcbiAgICBjb25zdCBzZWFyY2hUZXJtID0gdGVybS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gZW50aXR5IHR5cGUgc2hvdWxkIGJlIHNlYXJjaGVkLlxuICAgICAqIEBwYXJhbSB7TWV0YWRhdGFFbnRpdHlUeXBlfSB0eXBlIC0gVGhlIGVudGl0eSB0eXBlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgdGhlIGVudGl0eSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cbiAgICAgKi9cbiAgICBjb25zdCBzaG91bGRTZWFyY2ggPSAodHlwZTogTWV0YWRhdGFFbnRpdHlUeXBlKSA9PiAhZW50aXR5VHlwZXMgfHwgZW50aXR5VHlwZXMuaW5jbHVkZXModHlwZSk7XG5cbiAgICBpZiAoc2hvdWxkU2VhcmNoKE1ldGFkYXRhRW50aXR5VHlwZS5BUFBfT0JKRUNUUykpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIG9iamVjdHMgYnkgSUQsIE9iamVjdE5hbWUsIERpc3BsYXlOYW1lLCBvciBTeXN0ZW1EQlRhYmxlTmFtZVxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5BUFBfT0JKRUNUU10gPSB0aGlzLmdldEFsbEFwcE9iamVjdHMob2JqID0+XG4gICAgICAgIFtvYmo/LklELCBvYmo/Lk9iamVjdE5hbWUsIG9iaj8uRGlzcGxheU5hbWUsIG9iaj8uU3lzdGVtREJUYWJsZU5hbWVdXG4gICAgICAgICAgLnNvbWUodmFsID0+IHZhbCA9PT0gc2VhcmNoVGVybSB8fCB2YWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkpXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9GSUVMRFMpKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGFwcCBmaWVsZHMgYnkgdXNpbmcgdGhlIHNlYXJjaCBtZXRob2RcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuQVBQX0ZJRUxEU10gPSB0aGlzLmdldEFsbEZpZWxkcyhmaWVsZCA9PiBmaWVsZC5zZWFyY2goc2VhcmNoVGVybSkpO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkRBVEFfU09VUkNFX1FVRVJJRVMpKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGRhdGEgc291cmNlIHF1ZXJpZXMgYnkgdXNpbmcgdGhlIHNlYXJjaCBtZXRob2RcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuREFUQV9TT1VSQ0VfUVVFUklFU10gPSB0aGlzLmdldEFsbERhdGFTb3VyY2VRdWVyaWVzKGRzcSA9PiBkc3Euc2VhcmNoKHNlYXJjaFRlcm0pKTtcbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkU2VhcmNoKE1ldGFkYXRhRW50aXR5VHlwZS5BUFBfU0NSRUVOUykpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIHNjcmVlbnMgYnkgdXNpbmcgdGhlIHNlYXJjaCBtZXRob2RcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuQVBQX1NDUkVFTlNdID0gdGhpcy5nZXRBbGxBcHBTY3JlZW5zKHNjcmVlbiA9PiBzY3JlZW4uc2VhcmNoKHNlYXJjaFRlcm0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59Il19
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { AppFieldModel } from './app-field.model';
|
|
2
2
|
import { DataSourceQueryModel } from './data-source-query.model';
|
|
3
3
|
export class AppObjectModel {
|
|
4
|
-
constructor(raw) {
|
|
4
|
+
constructor(raw, metadataHelper) {
|
|
5
5
|
this.raw = raw;
|
|
6
|
+
this.metadataHelper = metadataHelper;
|
|
6
7
|
// Cache maps
|
|
7
8
|
this.fieldMap = new Map();
|
|
8
9
|
this.dsqMap = new Map();
|
|
@@ -115,7 +116,7 @@ export class AppObjectModel {
|
|
|
115
116
|
if (!this.allDSQs?.length) {
|
|
116
117
|
// Map the raw DataSourceQueries to DataSourceQueryModel instances
|
|
117
118
|
this.allDSQs = (this.raw?.DataSourceQueries ?? []).map((dsq) => {
|
|
118
|
-
const model = new DataSourceQueryModel(dsq, this);
|
|
119
|
+
const model = new DataSourceQueryModel(dsq, this, this.metadataHelper);
|
|
119
120
|
// Cache the DataSourceQuery in a map by ID, QueryName, and DisplayName
|
|
120
121
|
this.dsqMap.set(dsq?.ID?.toLowerCase(), model);
|
|
121
122
|
this.dsqMap.set(dsq?.QueryName, model);
|
|
@@ -184,4 +185,4 @@ export class AppObjectModel {
|
|
|
184
185
|
return this.raw;
|
|
185
186
|
}
|
|
186
187
|
}
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLW9iamVjdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9tb2RlbHMvYXBwLW9iamVjdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsTUFBTSxPQUFPLGNBQWM7SUF3Q3pCLFlBQTZCLEdBQVE7UUFBUixRQUFHLEdBQUgsR0FBRyxDQUFLO1FBTnJDLGFBQWE7UUFDSSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFDNUMsV0FBTSxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO1FBQzFELGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBQ2hDLFlBQU8sR0FBMkIsRUFBRSxDQUFDO1FBRzNDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUUsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFLFdBQVcsQ0FBQztRQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxFQUFFLGlCQUFpQixDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRSxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsWUFBWSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEVBQUUsa0JBQWtCLENB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QUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMsSUFBWTtRQUNqQixvQ0FBb0M7UUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVqRSxpREFBaUQ7UUFDakQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXRFLDRCQUE0QjtRQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhcHAtb2JqZWN0Lm1vZGVsLnRzXG5pbXBvcnQgeyBPYmplY3RUeXBlIH0gZnJvbSAnLi4vZW51bXMvY29tbW9uLmVudW0nO1xuaW1wb3J0IHsgT2JqZWN0Q3JlYXRpb25UeXBlIH0gZnJvbSAnLi4vZW51bXMvZHNxLmVudW0nO1xuaW1wb3J0IHsgRGVwbG95bWVudFN0YXR1cyB9IGZyb20gJy4uL2VudW1zL3Blcm1pc3Npb24uZW51bSc7XG5pbXBvcnQgeyBDaGlsZFJlbGF0aW9uU2hpcCB9IGZyb20gJy4vYXBpLXF1ZXJ5LmNsYXNzJztcbmltcG9ydCB7IEFwcEZpZWxkTW9kZWwgfSBmcm9tICcuL2FwcC1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBPYmplY3RBY2Nlc3MgfSBmcm9tICcuL2FwcC1vYmplY3QuY2xhc3MnO1xuaW1wb3J0IHsgUmVzb3VyY2VzIH0gZnJvbSAnLi9jb21tb24uY2xhc3MnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfSBmcm9tICcuL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIEFwcE9iamVjdE1vZGVsIHtcbiAgLy8gUHJvcGVydGllc1xuICByZWFkb25seSBJRDogc3RyaW5nO1xuICByZWFkb25seSBPYmplY3ROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IERpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IERlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IFN5c3RlbURCVGFibGVOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IElzU3lzdGVtOiBib29sZWFuO1xuICByZWFkb25seSBJc1Zpc2libGU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IElzRGVwcmVjYXRlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgSXNTdXBwb3J0Qmx1ZVByaW50OiBib29sZWFuIHwgbnVsbDtcbiAgcmVhZG9ubHkgSXNMb2NhdGlvblRyYWNraW5nOiBib29sZWFuIHwgbnVsbDtcbiAgcmVhZG9ubHkgT2JqZWN0VHlwZTogT2JqZWN0VHlwZTtcbiAgcmVhZG9ubHkgRGVwbG95bWVudFN0YXR1czogRGVwbG95bWVudFN0YXR1cztcbiAgcmVhZG9ubHkgQ3JlYXRpb25UeXBlOiBPYmplY3RDcmVhdGlvblR5cGU7XG4gIHJlYWRvbmx5IEFsbG93VmVyc2lvbmluZzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgRW5hYmxlVHJhY2tpbmc6IGJvb2xlYW47XG4gIHJlYWRvbmx5IEFsbG93U2VhcmNoYWJsZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgQWxsb3dSZXBvcnRzOiBib29sZWFuO1xuICByZWFkb25seSBBbGxvd0FjdGl2aXRpZXM6IGJvb2xlYW47XG4gIHJlYWRvbmx5IEFsbG93U2hhcmluZzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgQWxsb3dTb2Z0RGVsZXRlOiBib29sZWFuIHwgbnVsbDtcbiAgcmVhZG9ubHkgSXNSZXBsaWNhdGlvbk5lZWRlZDogYm9vbGVhbiB8IG51bGw7XG4gIHJlYWRvbmx5IElzQ2FjaGVFbmFibGU6IGJvb2xlYW4gfCBudWxsO1xuICByZWFkb25seSBDYWNoZVR0bDogbnVtYmVyIHwgbnVsbDtcbiAgcmVhZG9ubHkgQXBwT2JqZWN0Q29uZmlndXJhdGlvbjogc3RyaW5nO1xuICByZWFkb25seSBDUlVEQXBwT2JqZWN0SWQ6IHN0cmluZyB8IG51bGw7XG4gIHJlYWRvbmx5IENvbm5lY3Rpb25JZDogc3RyaW5nIHwgbnVsbDtcbiAgcmVhZG9ubHkgSXNTdXBwb3J0TGF5b3V0OiBib29sZWFuIHwgbnVsbDtcbiAgcmVhZG9ubHkgQWNjZXNzTGlzdDogQXJyYXk8T2JqZWN0QWNjZXNzPjtcbiAgcmVhZG9ubHkgUmVzb3VyY2VzOiBBcnJheTxSZXNvdXJjZXM+O1xuICByZWFkb25seSBDaGlsZFJlbGF0aW9uU2hpcHM6IEFycmF5PENoaWxkUmVsYXRpb25TaGlwPjtcbiAgcmVhZG9ubHkgcGFyc2VkQXBwT2JqZWN0Q29uZmlndXJhdGlvbjogYW55O1xuXG4gIC8vIENhY2hlIG1hcHNcbiAgcHJpdmF0ZSByZWFkb25seSBmaWVsZE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcHBGaWVsZE1vZGVsPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRzcU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBEYXRhU291cmNlUXVlcnlNb2RlbD4oKTtcbiAgcHJpdmF0ZSBhbGxGaWVsZHM6IEFwcEZpZWxkTW9kZWxbXSA9IFtdO1xuICBwcml2YXRlIGFsbERTUXM6IERhdGFTb3VyY2VRdWVyeU1vZGVsW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJhdzogYW55KSB7XG4gICAgdGhpcy5JRCA9IHJhdz8uSUQ7XG4gICAgdGhpcy5PYmplY3ROYW1lID0gcmF3Py5PYmplY3ROYW1lO1xuICAgIHRoaXMuRGlzcGxheU5hbWUgPSByYXc/LkRpc3BsYXlOYW1lO1xuICAgIHRoaXMuRGVzY3JpcHRpb24gPSByYXc/LkRlc2NyaXB0aW9uO1xuICAgIHRoaXMuU3lzdGVtREJUYWJsZU5hbWUgPSByYXc/LlN5c3RlbURCVGFibGVOYW1lO1xuICAgIHRoaXMuSXNTeXN0ZW0gPSByYXc/LklzU3lzdGVtO1xuICAgIHRoaXMuSXNWaXNpYmxlID0gcmF3Py5Jc1Zpc2libGU7XG4gICAgdGhpcy5Jc0RlcHJlY2F0ZWQgPSByYXc/LklzRGVwcmVjYXRlZDtcbiAgICB0aGlzLklzU3VwcG9ydEJsdWVQcmludCA9IHJhdz8uSXNTdXBwb3J0Qmx1ZVByaW50O1xuICAgIHRoaXMuSXNMb2NhdGlvblRyYWNraW5nID0gcmF3Py5Jc0xvY2F0aW9uVHJhY2tpbmc7XG4gICAgdGhpcy5PYmplY3RUeXBlID0gcmF3Py5PYmplY3RUeXBlO1xuICAgIHRoaXMuRGVwbG95bWVudFN0YXR1cyA9IHJhdz8uRGVwbG95bWVudFN0YXR1cztcbiAgICB0aGlzLkNyZWF0aW9uVHlwZSA9IHJhdz8uQ3JlYXRpb25UeXBlO1xuICAgIHRoaXMuQWxsb3dWZXJzaW9uaW5nID0gcmF3Py5BbGxvd1ZlcnNpb25pbmc7XG4gICAgdGhpcy5FbmFibGVUcmFja2luZyA9IHJhdz8uRW5hYmxlVHJhY2tpbmc7XG4gICAgdGhpcy5BbGxvd1NlYXJjaGFibGUgPSByYXc/LkFsbG93U2VhcmNoYWJsZTtcbiAgICB0aGlzLkFsbG93UmVwb3J0cyA9IHJhdz8uQWxsb3dSZXBvcnRzO1xuICAgIHRoaXMuQWxsb3dBY3Rpdml0aWVzID0gcmF3Py5BbGxvd0FjdGl2aXRpZXM7XG4gICAgdGhpcy5BbGxvd1NoYXJpbmcgPSByYXc/LkFsbG93U2hhcmluZztcbiAgICB0aGlzLkFsbG93U29mdERlbGV0ZSA9IHJhdz8uQWxsb3dTb2Z0RGVsZXRlO1xuICAgIHRoaXMuSXNSZXBsaWNhdGlvbk5lZWRlZCA9IHJhdz8uSXNSZXBsaWNhdGlvbk5lZWRlZDtcbiAgICB0aGlzLklzQ2FjaGVFbmFibGUgPSByYXc/LklzQ2FjaGVFbmFibGU7XG4gICAgdGhpcy5DYWNoZVR0bCA9IHJhdz8uQ2FjaGVUdGw7XG4gICAgdGhpcy5BcHBPYmplY3RDb25maWd1cmF0aW9uID0gcmF3Py5BcHBPYmplY3RDb25maWd1cmF0aW9uO1xuICAgIHRoaXMuQ1JVREFwcE9iamVjdElkID0gcmF3Py5DUlVEQXBwT2JqZWN0SWQ7XG4gICAgdGhpcy5Db25uZWN0aW9uSWQgPSByYXc/LkNvbm5lY3Rpb25JZDtcbiAgICB0aGlzLklzU3VwcG9ydExheW91dCA9IHJhdz8uSXNTdXBwb3J0TGF5b3V0O1xuICAgIHRoaXMuQWNjZXNzTGlzdCA9IHJhdz8uQWNjZXNzTGlzdDtcbiAgICB0aGlzLlJlc291cmNlcyA9IHJhdz8uUmVzb3VyY2VzO1xuICAgIHRoaXMuQ2hpbGRSZWxhdGlvblNoaXBzID0gcmF3Py5DaGlsZFJlbGF0aW9uU2hpcHM7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5wYXJzZWRBcHBPYmplY3RDb25maWd1cmF0aW9uID0gSlNPTi5wYXJzZSh0aGlzLkFwcE9iamVjdENvbmZpZ3VyYXRpb24gfHwgJ3t9Jyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdJbnZhbGlkIEFwcE9iamVjdENvbmZpZ3VyYXRpb24gSlNPTicsIGUpO1xuICAgICAgdGhpcy5wYXJzZWRBcHBPYmplY3RDb25maWd1cmF0aW9uID0ge307XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIGZpZWxkcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBBcHBPYmplY3QuIFRoZSBmaWVsZHMgYXJlIGNhY2hlZCBzbyB0aGF0IHN1YnNlcXVlbnQgY2FsbHNcbiAgICogYXJlIGZhc3Rlci4gVGhlIGNhY2hlIGlzIHN0b3JlZCBpbiBhIG1hcCBieSBJRC5cbiAgICpcbiAgICogQHJldHVybnMge0FwcEZpZWxkTW9kZWxbXX0gQW4gYXJyYXkgb2YgQXBwRmllbGRNb2RlbCBvYmplY3RzLlxuICAgKi9cbiAgZmllbGRzKCk6IEFwcEZpZWxkTW9kZWxbXSB7XG4gICAgaWYgKCF0aGlzLmFsbEZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmFsbEZpZWxkcyA9ICh0aGlzLnJhdz8uRmllbGRzID8/IFtdKS5tYXAoKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgbW9kZWwgPSBuZXcgQXBwRmllbGRNb2RlbChmaWVsZCk7XG4gICAgICAgIC8vIENhY2hlIHRoZSBmaWVsZCBpbiBhIG1hcCBieSBJRFxuICAgICAgICB0aGlzLmZpZWxkTWFwLnNldChmaWVsZD8uSUQ/LnRvTG93ZXJDYXNlKCksIG1vZGVsKTtcbiAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFsbEZpZWxkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBmaWVsZCBieSBpdHMgSUQgb3IgbmFtZS5cbiAgICogSWYgdGhlIGZpZWxkIGlzIGNhY2hlZCwgaXQgcmV0dXJucyBpdCBmcm9tIHRoZSBjYWNoZS5cbiAgICogT3RoZXJ3aXNlLCBpdCBzZWFyY2hlcyB0aHJvdWdoIGFsbCBmaWVsZHMuXG4gICAqIFxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRPck5hbWUgLSBUaGUgSUQgb3IgbmFtZSBvZiB0aGUgZmllbGQgdG8gcmV0cmlldmUuXG4gICAqIEByZXR1cm5zIHtBcHBGaWVsZE1vZGVsIHwgdW5kZWZpbmVkfSAtIFRoZSBmaWVsZCBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIHVuZGVmaW5lZC5cbiAgICovXG4gIGZpZWxkKGlkT3JOYW1lOiBzdHJpbmcpOiBBcHBGaWVsZE1vZGVsIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBFbnN1cmUgYWxsIGZpZWxkcyBhcmUgbG9hZGVkIGFuZCBjYWNoZWRcbiAgICB0aGlzLmZpZWxkcygpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGZpZWxkIGlzIGF2YWlsYWJsZSBpbiB0aGUgY2FjaGUgbWFwXG4gICAgaWYgKHRoaXMuZmllbGRNYXAuaGFzKGlkT3JOYW1lKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmllbGRNYXAuZ2V0KGlkT3JOYW1lKTtcbiAgICB9XG5cbiAgICAvLyBDb252ZXJ0IHRoZSBpZE9yTmFtZSB0byBsb3dlcmNhc2UgZm9yIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoXG4gICAgY29uc3QgaWRMb3dlciA9IGlkT3JOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAvLyBGaW5kIHRoZSBmaWVsZCBieSBtYXRjaGluZyBJRCBvciBuYW1lLCBjYXNlLWluc2Vuc2l0aXZlbHlcbiAgICByZXR1cm4gdGhpcy5hbGxGaWVsZHM/LmZpbmQoXG4gICAgICBmID0+IGYuSUQ/LnRvTG93ZXJDYXNlKCkgPT09IGlkTG93ZXIgfHwgZi5GaWVsZE5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IGlkTG93ZXIgfHwgZi5EaXNwbGF5TmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gaWRMb3dlclxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFsbCBmaWVsZHMgb2YgdGhlIGFwcCBvYmplY3QgdGhhdCBhcmUgbG9va3VwIGZpZWxkcy5cbiAgICogQSBsb29rdXAgZmllbGQgaXMgYSBmaWVsZCB0aGF0IGhhcyBhIHJlbGF0aW9uc2hpcCB3aXRoIGFub3RoZXIgZmllbGQuXG4gICAqIEl0IGlzIHVzZWQgdG8gcGVyZm9ybSBsb29rdXBzLCBzdWNoIGFzIHJldHJpZXZpbmcgYSBsaXN0IG9mIHZhbHVlc1xuICAgKiBmcm9tIGEgcmVsYXRlZCBmaWVsZC5cbiAgICogXG4gICAqIEByZXR1cm5zIHtBcHBGaWVsZE1vZGVsW119IC0gQW4gYXJyYXkgb2YgQXBwRmllbGRNb2RlbCBvYmplY3RzIHRoYXQgYXJlIGxvb2t1cCBmaWVsZHMuXG4gICAqL1xuICBsb29rdXBGaWVsZHMoKTogQXBwRmllbGRNb2RlbFtdIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZHMoKS5maWx0ZXIoZmllbGQgPT4gZmllbGQuSXNMb29rdXApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuZCByZXR1cm5zIHRoZSBmaWVsZHMgZm9yIHRoZSBhcHAgb2JqZWN0IHRoYXQgc2F0aXNmeSB0aGUgZ2l2ZW4gZmlsdGVyIGZ1bmN0aW9uLlxuICAgKiBUaGUgZmlsdGVyIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGVhY2ggZmllbGQgYXMgYW4gYXJndW1lbnQsIGFuZCBzaG91bGQgcmV0dXJuIHRydWUgaWYgdGhlIGZpZWxkXG4gICAqIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBmaWVsZHMuXG4gICAqIEByZXR1cm5zIHtBcHBGaWVsZE1vZGVsW119IFRoZSBhcnJheSBvZiBmaWVsZHMgdGhhdCBzYXRpc2Z5IHRoZSBmaWx0ZXIgZnVuY3Rpb24uXG4gICAqL1xuICBmaW5kRmllbGRzKGZpbHRlckZuOiAoZmllbGQ6IEFwcEZpZWxkTW9kZWwpID0+IGJvb2xlYW4pOiBBcHBGaWVsZE1vZGVsW10ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkcygpLmZpbHRlcihmaWx0ZXJGbik7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFsbCBkYXRhIHNvdXJjZSBxdWVyaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIEFwcE9iamVjdC4gXG4gICAqIFRoZSBxdWVyaWVzIGFyZSBjYWNoZWQgZm9yIGZhc3RlciBzdWJzZXF1ZW50IGFjY2Vzcy4gVGhlIGNhY2hlIGlzIHN0b3JlZCBpbiBhIG1hcCBieSBJRCwgUXVlcnlOYW1lLCBhbmQgRGlzcGxheU5hbWUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtEYXRhU291cmNlUXVlcnlNb2RlbFtdfSBBbiBhcnJheSBvZiBEYXRhU291cmNlUXVlcnlNb2RlbCBvYmplY3RzLlxuICAgKi9cbiAgZGF0YVNvdXJjZVF1ZXJpZXMoKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWxbXSB7XG4gICAgLy8gQ2hlY2sgaWYgYWxsRFNRcyBpcyBlbXB0eSBvciB1bmRlZmluZWRcbiAgICBpZiAoIXRoaXMuYWxsRFNRcz8ubGVuZ3RoKSB7XG4gICAgICAvLyBNYXAgdGhlIHJhdyBEYXRhU291cmNlUXVlcmllcyB0byBEYXRhU291cmNlUXVlcnlNb2RlbCBpbnN0YW5jZXNcbiAgICAgIHRoaXMuYWxsRFNRcyA9ICh0aGlzLnJhdz8uRGF0YVNvdXJjZVF1ZXJpZXMgPz8gW10pLm1hcCgoZHNxOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgbW9kZWwgPSBuZXcgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwoZHNxLCB0aGlzKTtcbiAgICAgICAgLy8gQ2FjaGUgdGhlIERhdGFTb3VyY2VRdWVyeSBpbiBhIG1hcCBieSBJRCwgUXVlcnlOYW1lLCBhbmQgRGlzcGxheU5hbWVcbiAgICAgICAgdGhpcy5kc3FNYXAuc2V0KGRzcT8uSUQ/LnRvTG93ZXJDYXNlKCksIG1vZGVsKTtcbiAgICAgICAgdGhpcy5kc3FNYXAuc2V0KGRzcT8uUXVlcnlOYW1lLCBtb2RlbCk7XG4gICAgICAgIHRoaXMuZHNxTWFwLnNldChkc3E/LkRpc3BsYXlOYW1lLCBtb2RlbCk7XG4gICAgICAgIHJldHVybiBtb2RlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hbGxEU1FzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGRhdGEgc291cmNlIHF1ZXJ5IGJ5IGl0cyBJRCBvciBuYW1lLlxuICAgKiBJZiB0aGUgcXVlcnkgaXMgY2FjaGVkLCBpdCByZXR1cm5zIGl0IGZyb20gdGhlIGNhY2hlLlxuICAgKiBPdGhlcndpc2UsIGl0IHNlYXJjaGVzIHRocm91Z2ggYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMuXG4gICAqIFxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRPck5hbWUgLSBUaGUgSUQgb3IgbmFtZSBvZiB0aGUgZGF0YSBzb3VyY2UgcXVlcnkgdG8gcmV0cmlldmUuXG4gICAqIEByZXR1cm5zIHtEYXRhU291cmNlUXVlcnlNb2RlbCB8IHVuZGVmaW5lZH0gLSBUaGUgZGF0YSBzb3VyY2UgcXVlcnkgbW9kZWwgaWYgZm91bmQsIG90aGVyd2lzZSB1bmRlZmluZWQuXG4gICAqL1xuICBkYXRhU291cmNlUXVlcnkoaWRPck5hbWU6IHN0cmluZyk6IERhdGFTb3VyY2VRdWVyeU1vZGVsIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBFbnN1cmUgYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMgYXJlIGxvYWRlZCBhbmQgY2FjaGVkXG4gICAgdGhpcy5kYXRhU291cmNlUXVlcmllcygpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IGlzIGF2YWlsYWJsZSBpbiB0aGUgY2FjaGUgbWFwXG4gICAgaWYgKHRoaXMuZHNxTWFwLmhhcyhpZE9yTmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmRzcU1hcC5nZXQoaWRPck5hbWUpO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdGhlIGlkT3JOYW1lIHRvIGxvd2VyY2FzZSBmb3IgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2hcbiAgICBjb25zdCBpZExvd2VyID0gaWRPck5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIEZpbmQgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IGJ5IG1hdGNoaW5nIFF1ZXJ5TmFtZSBvciBEaXNwbGF5TmFtZSwgY2FzZS1pbnNlbnNpdGl2ZWx5XG4gICAgcmV0dXJuIHRoaXMuYWxsRFNRcz8uZmluZChcbiAgICAgIGRzcSA9PiBkc3EuSUQ/LnRvTG93ZXJDYXNlKCkgPT09IGlkTG93ZXIgfHwgZHNxLlF1ZXJ5TmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gaWRMb3dlciB8fCBkc3EuRGlzcGxheU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IGlkTG93ZXJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuZCByZXR1cm5zIHRoZSBkYXRhIHNvdXJjZSBxdWVyaWVzIHRoYXQgc2F0aXNmeSB0aGUgZ2l2ZW4gZmlsdGVyIGZ1bmN0aW9uLlxuICAgKiBUaGUgZmlsdGVyIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGVhY2ggZGF0YSBzb3VyY2UgcXVlcnkgYXMgYW4gYXJndW1lbnQuXG4gICAqIElmIHRoZSBmaWx0ZXIgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB0aGUgZGF0YSBzb3VyY2UgcXVlcnkgaXMgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdC5cbiAgICogXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIC0gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgZGF0YSBzb3VyY2UgcXVlcmllcy5cbiAgICogQHJldHVybnMge0RhdGFTb3VyY2VRdWVyeU1vZGVsW119IC0gVGhlIGFycmF5IG9mIGRhdGEgc291cmNlIHF1ZXJpZXMgdGhhdCBzYXRpc2Z5IHRoZSBmaWx0ZXIgZnVuY3Rpb24uXG4gICAqL1xuICBmaW5kRGF0YVNvdXJjZVF1ZXJpZXMoZmlsdGVyRm46IChkc3E6IERhdGFTb3VyY2VRdWVyeU1vZGVsKSA9PiBib29sZWFuKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWxbXSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZVF1ZXJpZXMoKS5maWx0ZXIoZmlsdGVyRm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaGVzIGZvciB0aGUgZ2l2ZW4gdGVybSBpbiB0aGUgZmllbGRzIGFuZCBkYXRhIHNvdXJjZSBxdWVyaWVzIG9mIHRoaXMgQXBwT2JqZWN0LlxuICAgKiBUaGUgc2VhcmNoIGlzIGNhc2UtaW5zZW5zaXRpdmUgYW5kIHBlcmZvcm1lZCBvbiB0aGUgZm9sbG93aW5nIGZpZWxkczpcbiAgICogICAtIEZpZWxkIG5hbWUgYW5kIGRlc2NyaXB0aW9uXG4gICAqICAgLSBEYXRhIHNvdXJjZSBxdWVyeSBuYW1lLCBkaXNwbGF5IG5hbWUsIGFuZCBkZXNjcmlwdGlvblxuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRlcm0gLSBUaGUgc2VhcmNoIHRlcm0gdG8gc2VhcmNoIGZvci5cbiAgICogQHJldHVybnMge3sgZmllbGRzOiBBcHBGaWVsZE1vZGVsW107IGRzcXM6IERhdGFTb3VyY2VRdWVyeU1vZGVsW10gfX0gLSBBbiBvYmplY3Qgd2l0aCB0aGUgc2VhcmNoIHJlc3VsdHMuXG4gICAqICAgVGhlIGBmaWVsZHNgIHByb3BlcnR5IGNvbnRhaW5zIGFuIGFycmF5IG9mIEFwcEZpZWxkTW9kZWwgb2JqZWN0cyB0aGF0IG1hdGNoIHRoZSBzZWFyY2ggdGVybS5cbiAgICogICBUaGUgYGRzcXNgIHByb3BlcnR5IGNvbnRhaW5zIGFuIGFycmF5IG9mIERhdGFTb3VyY2VRdWVyeU1vZGVsIG9iamVjdHMgdGhhdCBtYXRjaCB0aGUgc2VhcmNoIHRlcm0uXG4gICAqL1xuICBzZWFyY2godGVybTogc3RyaW5nKTogeyBmaWVsZHM6IEFwcEZpZWxkTW9kZWxbXTsgZHNxczogRGF0YVNvdXJjZVF1ZXJ5TW9kZWxbXSB9IHtcbiAgICAvLyBTZWFyY2ggZm9yIHRoZSB0ZXJtIGluIHRoZSBmaWVsZHNcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkcygpLmZpbHRlcihmaWVsZCA9PiBmaWVsZC5zZWFyY2godGVybSkpO1xuXG4gICAgLy8gU2VhcmNoIGZvciB0aGUgdGVybSBpbiB0aGUgZGF0YSBzb3VyY2UgcXVlcmllc1xuICAgIGNvbnN0IGRzcXMgPSB0aGlzLmRhdGFTb3VyY2VRdWVyaWVzKCkuZmlsdGVyKGRzcSA9PiBkc3Euc2VhcmNoKHRlcm0pKTtcblxuICAgIC8vIFJldHVybiB0aGUgc2VhcmNoIHJlc3VsdHNcbiAgICByZXR1cm4geyBmaWVsZHMsIGRzcXMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgY3VycmVudCBvYmplY3QgdG8gYSBKU09OIG9iamVjdC5cbiAgICpcbiAgICogQHJldHVybnMge2FueX0gVGhlIHJhdyBkYXRhIGFzIGEgSlNPTiBvYmplY3QuXG4gICAqL1xuICB0b0pTT04oKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5yYXc7XG4gIH1cbn0iXX0=
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLW9iamVjdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9tb2RlbHMvYXBwLW9iamVjdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsTUFBTSxPQUFPLGNBQWM7SUF3Q3pCLFlBQTZCLEdBQVEsRUFBVSxjQUE4QjtRQUFoRCxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTjdFLGFBQWE7UUFDSSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFDNUMsV0FBTSxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO1FBQzFELGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBQ2hDLFlBQU8sR0FBMkIsRUFBRSxDQUFDO1FBRzNDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUUsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFLFdBQVcsQ0FBQztRQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxFQUFFLGlCQUFpQixDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRSxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsWUFBWSxDQUFDO1FBQ3RDLElB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SCxxQkFBcUIsQ0FBQyxRQUFnRDtRQUNwRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLG9DQUFvQztRQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRWpFLGlEQUFpRDtRQUNqRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdEUsNEJBQTRCO1FBQzVCLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGFwcC1vYmplY3QubW9kZWwudHNcbmltcG9ydCB7IE9iamVjdFR5cGUgfSBmcm9tICcuLi9lbnVtcy9jb21tb24uZW51bSc7XG5pbXBvcnQgeyBPYmplY3RDcmVhdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy9kc3EuZW51bSc7XG5pbXBvcnQgeyBEZXBsb3ltZW50U3RhdHVzIH0gZnJvbSAnLi4vZW51bXMvcGVybWlzc2lvbi5lbnVtJztcbmltcG9ydCB7IENoaWxkUmVsYXRpb25TaGlwIH0gZnJvbSAnLi9hcGktcXVlcnkuY2xhc3MnO1xuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVycyc7XG5pbXBvcnQgeyBBcHBGaWVsZE1vZGVsIH0gZnJvbSAnLi9hcHAtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgT2JqZWN0QWNjZXNzIH0gZnJvbSAnLi9hcHAtb2JqZWN0LmNsYXNzJztcbmltcG9ydCB7IFJlc291cmNlcyB9IGZyb20gJy4vY29tbW9uLmNsYXNzJztcbmltcG9ydCB7IERhdGFTb3VyY2VRdWVyeU1vZGVsIH0gZnJvbSAnLi9kYXRhLXNvdXJjZS1xdWVyeS5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBBcHBPYmplY3RNb2RlbCB7XG4gIC8vIFByb3BlcnRpZXNcbiAgcmVhZG9ubHkgSUQ6IHN0cmluZztcbiAgcmVhZG9ubHkgT2JqZWN0TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBEaXNwbGF5TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBEZXNjcmlwdGlvbjogc3RyaW5nO1xuICByZWFkb25seSBTeXN0ZW1EQlRhYmxlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBJc1N5c3RlbTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgSXNWaXNpYmxlOiBib29sZWFuO1xuICByZWFkb25seSBJc0RlcHJlY2F0ZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IElzU3VwcG9ydEJsdWVQcmludDogYm9vbGVhbiB8IG51bGw7XG4gIHJlYWRvbmx5IElzTG9jYXRpb25UcmFja2luZzogYm9vbGVhbiB8IG51bGw7XG4gIHJlYWRvbmx5IE9iamVjdFR5cGU6IE9iamVjdFR5cGU7XG4gIHJlYWRvbmx5IERlcGxveW1lbnRTdGF0dXM6IERlcGxveW1lbnRTdGF0dXM7XG4gIHJlYWRvbmx5IENyZWF0aW9uVHlwZTogT2JqZWN0Q3JlYXRpb25UeXBlO1xuICByZWFkb25seSBBbGxvd1ZlcnNpb25pbmc6IGJvb2xlYW47XG4gIHJlYWRvbmx5IEVuYWJsZVRyYWNraW5nOiBib29sZWFuO1xuICByZWFkb25seSBBbGxvd1NlYXJjaGFibGU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IEFsbG93UmVwb3J0czogYm9vbGVhbjtcbiAgcmVhZG9ubHkgQWxsb3dBY3Rpdml0aWVzOiBib29sZWFuO1xuICByZWFkb25seSBBbGxvd1NoYXJpbmc6IGJvb2xlYW47XG4gIHJlYWRvbmx5IEFsbG93U29mdERlbGV0ZTogYm9vbGVhbiB8IG51bGw7XG4gIHJlYWRvbmx5IElzUmVwbGljYXRpb25OZWVkZWQ6IGJvb2xlYW4gfCBudWxsO1xuICByZWFkb25seSBJc0NhY2hlRW5hYmxlOiBib29sZWFuIHwgbnVsbDtcbiAgcmVhZG9ubHkgQ2FjaGVUdGw6IG51bWJlciB8IG51bGw7XG4gIHJlYWRvbmx5IEFwcE9iamVjdENvbmZpZ3VyYXRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgQ1JVREFwcE9iamVjdElkOiBzdHJpbmcgfCBudWxsO1xuICByZWFkb25seSBDb25uZWN0aW9uSWQ6IHN0cmluZyB8IG51bGw7XG4gIHJlYWRvbmx5IElzU3VwcG9ydExheW91dDogYm9vbGVhbiB8IG51bGw7XG4gIHJlYWRvbmx5IEFjY2Vzc0xpc3Q6IEFycmF5PE9iamVjdEFjY2Vzcz47XG4gIHJlYWRvbmx5IFJlc291cmNlczogQXJyYXk8UmVzb3VyY2VzPjtcbiAgcmVhZG9ubHkgQ2hpbGRSZWxhdGlvblNoaXBzOiBBcnJheTxDaGlsZFJlbGF0aW9uU2hpcD47XG4gIHJlYWRvbmx5IHBhcnNlZEFwcE9iamVjdENvbmZpZ3VyYXRpb246IGFueTtcblxuICAvLyBDYWNoZSBtYXBzXG4gIHByaXZhdGUgcmVhZG9ubHkgZmllbGRNYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwRmllbGRNb2RlbD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkc3FNYXAgPSBuZXcgTWFwPHN0cmluZywgRGF0YVNvdXJjZVF1ZXJ5TW9kZWw+KCk7XG4gIHByaXZhdGUgYWxsRmllbGRzOiBBcHBGaWVsZE1vZGVsW10gPSBbXTtcbiAgcHJpdmF0ZSBhbGxEU1FzOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByYXc6IGFueSwgcHJpdmF0ZSBtZXRhZGF0YUhlbHBlcjogTWV0YWRhdGFIZWxwZXIpIHtcbiAgICB0aGlzLklEID0gcmF3Py5JRDtcbiAgICB0aGlzLk9iamVjdE5hbWUgPSByYXc/Lk9iamVjdE5hbWU7XG4gICAgdGhpcy5EaXNwbGF5TmFtZSA9IHJhdz8uRGlzcGxheU5hbWU7XG4gICAgdGhpcy5EZXNjcmlwdGlvbiA9IHJhdz8uRGVzY3JpcHRpb247XG4gICAgdGhpcy5TeXN0ZW1EQlRhYmxlTmFtZSA9IHJhdz8uU3lzdGVtREJUYWJsZU5hbWU7XG4gICAgdGhpcy5Jc1N5c3RlbSA9IHJhdz8uSXNTeXN0ZW07XG4gICAgdGhpcy5Jc1Zpc2libGUgPSByYXc/LklzVmlzaWJsZTtcbiAgICB0aGlzLklzRGVwcmVjYXRlZCA9IHJhdz8uSXNEZXByZWNhdGVkO1xuICAgIHRoaXMuSXNTdXBwb3J0Qmx1ZVByaW50ID0gcmF3Py5Jc1N1cHBvcnRCbHVlUHJpbnQ7XG4gICAgdGhpcy5Jc0xvY2F0aW9uVHJhY2tpbmcgPSByYXc/LklzTG9jYXRpb25UcmFja2luZztcbiAgICB0aGlzLk9iamVjdFR5cGUgPSByYXc/Lk9iamVjdFR5cGU7XG4gICAgdGhpcy5EZXBsb3ltZW50U3RhdHVzID0gcmF3Py5EZXBsb3ltZW50U3RhdHVzO1xuICAgIHRoaXMuQ3JlYXRpb25UeXBlID0gcmF3Py5DcmVhdGlvblR5cGU7XG4gICAgdGhpcy5BbGxvd1ZlcnNpb25pbmcgPSByYXc/LkFsbG93VmVyc2lvbmluZztcbiAgICB0aGlzLkVuYWJsZVRyYWNraW5nID0gcmF3Py5FbmFibGVUcmFja2luZztcbiAgICB0aGlzLkFsbG93U2VhcmNoYWJsZSA9IHJhdz8uQWxsb3dTZWFyY2hhYmxlO1xuICAgIHRoaXMuQWxsb3dSZXBvcnRzID0gcmF3Py5BbGxvd1JlcG9ydHM7XG4gICAgdGhpcy5BbGxvd0FjdGl2aXRpZXMgPSByYXc/LkFsbG93QWN0aXZpdGllcztcbiAgICB0aGlzLkFsbG93U2hhcmluZyA9IHJhdz8uQWxsb3dTaGFyaW5nO1xuICAgIHRoaXMuQWxsb3dTb2Z0RGVsZXRlID0gcmF3Py5BbGxvd1NvZnREZWxldGU7XG4gICAgdGhpcy5Jc1JlcGxpY2F0aW9uTmVlZGVkID0gcmF3Py5Jc1JlcGxpY2F0aW9uTmVlZGVkO1xuICAgIHRoaXMuSXNDYWNoZUVuYWJsZSA9IHJhdz8uSXNDYWNoZUVuYWJsZTtcbiAgICB0aGlzLkNhY2hlVHRsID0gcmF3Py5DYWNoZVR0bDtcbiAgICB0aGlzLkFwcE9iamVjdENvbmZpZ3VyYXRpb24gPSByYXc/LkFwcE9iamVjdENvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5DUlVEQXBwT2JqZWN0SWQgPSByYXc/LkNSVURBcHBPYmplY3RJZDtcbiAgICB0aGlzLkNvbm5lY3Rpb25JZCA9IHJhdz8uQ29ubmVjdGlvbklkO1xuICAgIHRoaXMuSXNTdXBwb3J0TGF5b3V0ID0gcmF3Py5Jc1N1cHBvcnRMYXlvdXQ7XG4gICAgdGhpcy5BY2Nlc3NMaXN0ID0gcmF3Py5BY2Nlc3NMaXN0O1xuICAgIHRoaXMuUmVzb3VyY2VzID0gcmF3Py5SZXNvdXJjZXM7XG4gICAgdGhpcy5DaGlsZFJlbGF0aW9uU2hpcHMgPSByYXc/LkNoaWxkUmVsYXRpb25TaGlwcztcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnBhcnNlZEFwcE9iamVjdENvbmZpZ3VyYXRpb24gPSBKU09OLnBhcnNlKHRoaXMuQXBwT2JqZWN0Q29uZmlndXJhdGlvbiB8fCAne30nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgQXBwT2JqZWN0Q29uZmlndXJhdGlvbiBKU09OJywgZSk7XG4gICAgICB0aGlzLnBhcnNlZEFwcE9iamVjdENvbmZpZ3VyYXRpb24gPSB7fTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbGwgZmllbGRzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIEFwcE9iamVjdC4gVGhlIGZpZWxkcyBhcmUgY2FjaGVkIHNvIHRoYXQgc3Vic2VxdWVudCBjYWxsc1xuICAgKiBhcmUgZmFzdGVyLiBUaGUgY2FjaGUgaXMgc3RvcmVkIGluIGEgbWFwIGJ5IElELlxuICAgKlxuICAgKiBAcmV0dXJucyB7QXBwRmllbGRNb2RlbFtdfSBBbiBhcnJheSBvZiBBcHBGaWVsZE1vZGVsIG9iamVjdHMuXG4gICAqL1xuICBmaWVsZHMoKTogQXBwRmllbGRNb2RlbFtdIHtcbiAgICBpZiAoIXRoaXMuYWxsRmllbGRzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYWxsRmllbGRzID0gKHRoaXMucmF3Py5GaWVsZHMgPz8gW10pLm1hcCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBBcHBGaWVsZE1vZGVsKGZpZWxkKTtcbiAgICAgICAgLy8gQ2FjaGUgdGhlIGZpZWxkIGluIGEgbWFwIGJ5IElEXG4gICAgICAgIHRoaXMuZmllbGRNYXAuc2V0KGZpZWxkPy5JRD8udG9Mb3dlckNhc2UoKSwgbW9kZWwpO1xuICAgICAgICByZXR1cm4gbW9kZWw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWxsRmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGZpZWxkIGJ5IGl0cyBJRCBvciBuYW1lLlxuICAgKiBJZiB0aGUgZmllbGQgaXMgY2FjaGVkLCBpdCByZXR1cm5zIGl0IGZyb20gdGhlIGNhY2hlLlxuICAgKiBPdGhlcndpc2UsIGl0IHNlYXJjaGVzIHRocm91Z2ggYWxsIGZpZWxkcy5cbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZE9yTmFtZSAtIFRoZSBJRCBvciBuYW1lIG9mIHRoZSBmaWVsZCB0byByZXRyaWV2ZS5cbiAgICogQHJldHVybnMge0FwcEZpZWxkTW9kZWwgfCB1bmRlZmluZWR9IC0gVGhlIGZpZWxkIG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxuICAgKi9cbiAgZmllbGQoaWRPck5hbWU6IHN0cmluZyk6IEFwcEZpZWxkTW9kZWwgfCB1bmRlZmluZWQge1xuICAgIC8vIEVuc3VyZSBhbGwgZmllbGRzIGFyZSBsb2FkZWQgYW5kIGNhY2hlZFxuICAgIHRoaXMuZmllbGRzKCk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgZmllbGQgaXMgYXZhaWxhYmxlIGluIHRoZSBjYWNoZSBtYXBcbiAgICBpZiAodGhpcy5maWVsZE1hcC5oYXMoaWRPck5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWVsZE1hcC5nZXQoaWRPck5hbWUpO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdGhlIGlkT3JOYW1lIHRvIGxvd2VyY2FzZSBmb3IgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2hcbiAgICBjb25zdCBpZExvd2VyID0gaWRPck5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIEZpbmQgdGhlIGZpZWxkIGJ5IG1hdGNoaW5nIElEIG9yIG5hbWUsIGNhc2UtaW5zZW5zaXRpdmVseVxuICAgIHJldHVybiB0aGlzLmFsbEZpZWxkcz8uZmluZChcbiAgICAgIGYgPT4gZi5JRD8udG9Mb3dlckNhc2UoKSA9PT0gaWRMb3dlciB8fCBmLkZpZWxkTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gaWRMb3dlciB8fCBmLkRpc3BsYXlOYW1lPy50b0xvd2VyQ2FzZSgpID09PSBpZExvd2VyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYWxsIGZpZWxkcyBvZiB0aGUgYXBwIG9iamVjdCB0aGF0IGFyZSBsb29rdXAgZmllbGRzLlxuICAgKiBBIGxvb2t1cCBmaWVsZCBpcyBhIGZpZWxkIHRoYXQgaGFzIGEgcmVsYXRpb25zaGlwIHdpdGggYW5vdGhlciBmaWVsZC5cbiAgICogSXQgaXMgdXNlZCB0byBwZXJmb3JtIGxvb2t1cHMsIHN1Y2ggYXMgcmV0cmlldmluZyBhIGxpc3Qgb2YgdmFsdWVzXG4gICAqIGZyb20gYSByZWxhdGVkIGZpZWxkLlxuICAgKiBcbiAgICogQHJldHVybnMge0FwcEZpZWxkTW9kZWxbXX0gLSBBbiBhcnJheSBvZiBBcHBGaWVsZE1vZGVsIG9iamVjdHMgdGhhdCBhcmUgbG9va3VwIGZpZWxkcy5cbiAgICovXG4gIGxvb2t1cEZpZWxkcygpOiBBcHBGaWVsZE1vZGVsW10ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkcygpLmZpbHRlcihmaWVsZCA9PiBmaWVsZC5Jc0xvb2t1cCk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIGZpZWxkcyBmb3IgdGhlIGFwcCBvYmplY3QgdGhhdCBzYXRpc2Z5IHRoZSBnaXZlbiBmaWx0ZXIgZnVuY3Rpb24uXG4gICAqIFRoZSBmaWx0ZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggZWFjaCBmaWVsZCBhcyBhbiBhcmd1bWVudCwgYW5kIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiB0aGUgZmllbGRcbiAgICogc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHQuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGZpZWxkcy5cbiAgICogQHJldHVybnMge0FwcEZpZWxkTW9kZWxbXX0gVGhlIGFycmF5IG9mIGZpZWxkcyB0aGF0IHNhdGlzZnkgdGhlIGZpbHRlciBmdW5jdGlvbi5cbiAgICovXG4gIGZpbmRGaWVsZHMoZmlsdGVyRm46IChmaWVsZDogQXBwRmllbGRNb2RlbCkgPT4gYm9vbGVhbik6IEFwcEZpZWxkTW9kZWxbXSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRzKCkuZmlsdGVyKGZpbHRlckZuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgQXBwT2JqZWN0LiBcbiAgICogVGhlIHF1ZXJpZXMgYXJlIGNhY2hlZCBmb3IgZmFzdGVyIHN1YnNlcXVlbnQgYWNjZXNzLiBUaGUgY2FjaGUgaXMgc3RvcmVkIGluIGEgbWFwIGJ5IElELCBRdWVyeU5hbWUsIGFuZCBEaXNwbGF5TmFtZS5cbiAgICpcbiAgICogQHJldHVybnMge0RhdGFTb3VyY2VRdWVyeU1vZGVsW119IEFuIGFycmF5IG9mIERhdGFTb3VyY2VRdWVyeU1vZGVsIG9iamVjdHMuXG4gICAqL1xuICBkYXRhU291cmNlUXVlcmllcygpOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdIHtcbiAgICAvLyBDaGVjayBpZiBhbGxEU1FzIGlzIGVtcHR5IG9yIHVuZGVmaW5lZFxuICAgIGlmICghdGhpcy5hbGxEU1FzPy5sZW5ndGgpIHtcbiAgICAgIC8vIE1hcCB0aGUgcmF3IERhdGFTb3VyY2VRdWVyaWVzIHRvIERhdGFTb3VyY2VRdWVyeU1vZGVsIGluc3RhbmNlc1xuICAgICAgdGhpcy5hbGxEU1FzID0gKHRoaXMucmF3Py5EYXRhU291cmNlUXVlcmllcyA/PyBbXSkubWFwKChkc3E6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBEYXRhU291cmNlUXVlcnlNb2RlbChkc3EsIHRoaXMsIHRoaXMubWV0YWRhdGFIZWxwZXIpO1xuICAgICAgICAvLyBDYWNoZSB0aGUgRGF0YVNvdXJjZVF1ZXJ5IGluIGEgbWFwIGJ5IElELCBRdWVyeU5hbWUsIGFuZCBEaXNwbGF5TmFtZVxuICAgICAgICB0aGlzLmRzcU1hcC5zZXQoZHNxPy5JRD8udG9Mb3dlckNhc2UoKSwgbW9kZWwpO1xuICAgICAgICB0aGlzLmRzcU1hcC5zZXQoZHNxPy5RdWVyeU5hbWUsIG1vZGVsKTtcbiAgICAgICAgdGhpcy5kc3FNYXAuc2V0KGRzcT8uRGlzcGxheU5hbWUsIG1vZGVsKTtcbiAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFsbERTUXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGEgZGF0YSBzb3VyY2UgcXVlcnkgYnkgaXRzIElEIG9yIG5hbWUuXG4gICAqIElmIHRoZSBxdWVyeSBpcyBjYWNoZWQsIGl0IHJldHVybnMgaXQgZnJvbSB0aGUgY2FjaGUuXG4gICAqIE90aGVyd2lzZSwgaXQgc2VhcmNoZXMgdGhyb3VnaCBhbGwgZGF0YSBzb3VyY2UgcXVlcmllcy5cbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZE9yTmFtZSAtIFRoZSBJRCBvciBuYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSB0byByZXRyaWV2ZS5cbiAgICogQHJldHVybnMge0RhdGFTb3VyY2VRdWVyeU1vZGVsIHwgdW5kZWZpbmVkfSAtIFRoZSBkYXRhIHNvdXJjZSBxdWVyeSBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIHVuZGVmaW5lZC5cbiAgICovXG4gIGRhdGFTb3VyY2VRdWVyeShpZE9yTmFtZTogc3RyaW5nKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfCB1bmRlZmluZWQge1xuICAgIC8vIEVuc3VyZSBhbGwgZGF0YSBzb3VyY2UgcXVlcmllcyBhcmUgbG9hZGVkIGFuZCBjYWNoZWRcbiAgICB0aGlzLmRhdGFTb3VyY2VRdWVyaWVzKCk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBzb3VyY2UgcXVlcnkgaXMgYXZhaWxhYmxlIGluIHRoZSBjYWNoZSBtYXBcbiAgICBpZiAodGhpcy5kc3FNYXAuaGFzKGlkT3JOYW1lKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZHNxTWFwLmdldChpZE9yTmFtZSk7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCB0aGUgaWRPck5hbWUgdG8gbG93ZXJjYXNlIGZvciBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaFxuICAgIGNvbnN0IGlkTG93ZXIgPSBpZE9yTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgLy8gRmluZCB0aGUgZGF0YSBzb3VyY2UgcXVlcnkgYnkgbWF0Y2hpbmcgUXVlcnlOYW1lIG9yIERpc3BsYXlOYW1lLCBjYXNlLWluc2Vuc2l0aXZlbHlcbiAgICByZXR1cm4gdGhpcy5hbGxEU1FzPy5maW5kKFxuICAgICAgZHNxID0+IGRzcS5JRD8udG9Mb3dlckNhc2UoKSA9PT0gaWRMb3dlciB8fCBkc3EuUXVlcnlOYW1lPy50b0xvd2VyQ2FzZSgpID09PSBpZExvd2VyIHx8IGRzcS5EaXNwbGF5TmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gaWRMb3dlclxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIGRhdGEgc291cmNlIHF1ZXJpZXMgdGhhdCBzYXRpc2Z5IHRoZSBnaXZlbiBmaWx0ZXIgZnVuY3Rpb24uXG4gICAqIFRoZSBmaWx0ZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggZWFjaCBkYXRhIHNvdXJjZSBxdWVyeSBhcyBhbiBhcmd1bWVudC5cbiAgICogSWYgdGhlIGZpbHRlciBmdW5jdGlvbiByZXR1cm5zIHRydWUsIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSBpcyBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0LlxuICAgKiBcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBkYXRhIHNvdXJjZSBxdWVyaWVzLlxuICAgKiBAcmV0dXJucyB7RGF0YVNvdXJjZVF1ZXJ5TW9kZWxbXX0gLSBUaGUgYXJyYXkgb2YgZGF0YSBzb3VyY2UgcXVlcmllcyB0aGF0IHNhdGlzZnkgdGhlIGZpbHRlciBmdW5jdGlvbi5cbiAgICovXG4gIGZpbmREYXRhU291cmNlUXVlcmllcyhmaWx0ZXJGbjogKGRzcTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwpID0+IGJvb2xlYW4pOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlUXVlcmllcygpLmZpbHRlcihmaWx0ZXJGbik7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoZXMgZm9yIHRoZSBnaXZlbiB0ZXJtIGluIHRoZSBmaWVsZHMgYW5kIGRhdGEgc291cmNlIHF1ZXJpZXMgb2YgdGhpcyBBcHBPYmplY3QuXG4gICAqIFRoZSBzZWFyY2ggaXMgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgcGVyZm9ybWVkIG9uIHRoZSBmb2xsb3dpbmcgZmllbGRzOlxuICAgKiAgIC0gRmllbGQgbmFtZSBhbmQgZGVzY3JpcHRpb25cbiAgICogICAtIERhdGEgc291cmNlIHF1ZXJ5IG5hbWUsIGRpc3BsYXkgbmFtZSwgYW5kIGRlc2NyaXB0aW9uXG4gICAqIFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGVybSAtIFRoZSBzZWFyY2ggdGVybSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcmV0dXJucyB7eyBmaWVsZHM6IEFwcEZpZWxkTW9kZWxbXTsgZHNxczogRGF0YVNvdXJjZVF1ZXJ5TW9kZWxbXSB9fSAtIEFuIG9iamVjdCB3aXRoIHRoZSBzZWFyY2ggcmVzdWx0cy5cbiAgICogICBUaGUgYGZpZWxkc2AgcHJvcGVydHkgY29udGFpbnMgYW4gYXJyYXkgb2YgQXBwRmllbGRNb2RlbCBvYmplY3RzIHRoYXQgbWF0Y2ggdGhlIHNlYXJjaCB0ZXJtLlxuICAgKiAgIFRoZSBgZHNxc2AgcHJvcGVydHkgY29udGFpbnMgYW4gYXJyYXkgb2YgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgb2JqZWN0cyB0aGF0IG1hdGNoIHRoZSBzZWFyY2ggdGVybS5cbiAgICovXG4gIHNlYXJjaCh0ZXJtOiBzdHJpbmcpOiB7IGZpZWxkczogQXBwRmllbGRNb2RlbFtdOyBkc3FzOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdIH0ge1xuICAgIC8vIFNlYXJjaCBmb3IgdGhlIHRlcm0gaW4gdGhlIGZpZWxkc1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzKCkuZmlsdGVyKGZpZWxkID0+IGZpZWxkLnNlYXJjaCh0ZXJtKSk7XG5cbiAgICAvLyBTZWFyY2ggZm9yIHRoZSB0ZXJtIGluIHRoZSBkYXRhIHNvdXJjZSBxdWVyaWVzXG4gICAgY29uc3QgZHNxcyA9IHRoaXMuZGF0YVNvdXJjZVF1ZXJpZXMoKS5maWx0ZXIoZHNxID0+IGRzcS5zZWFyY2godGVybSkpO1xuXG4gICAgLy8gUmV0dXJuIHRoZSBzZWFyY2ggcmVzdWx0c1xuICAgIHJldHVybiB7IGZpZWxkcywgZHNxcyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBjdXJyZW50IG9iamVjdCB0byBhIEpTT04gb2JqZWN0LlxuICAgKlxuICAgKiBAcmV0dXJucyB7YW55fSBUaGUgcmF3IGRhdGEgYXMgYSBKU09OIG9iamVjdC5cbiAgICovXG4gIHRvSlNPTigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJhdztcbiAgfVxufSJdfQ==
|
|
@@ -2,9 +2,10 @@ import { FilterModel } from './filter.model';
|
|
|
2
2
|
import { ParameterModel } from './parameter.model';
|
|
3
3
|
import { SortModel } from './sort.model';
|
|
4
4
|
export class DataSourceQueryModel {
|
|
5
|
-
constructor(raw, parentAppObject) {
|
|
5
|
+
constructor(raw, parentAppObject, metadataHelper) {
|
|
6
6
|
this.raw = raw;
|
|
7
7
|
this.parentAppObject = parentAppObject;
|
|
8
|
+
this.metadataHelper = metadataHelper;
|
|
8
9
|
this.enrichedFields = [];
|
|
9
10
|
this.cachedParameters = [];
|
|
10
11
|
this.cachedFilters = [];
|
|
@@ -25,11 +26,20 @@ export class DataSourceQueryModel {
|
|
|
25
26
|
const rawFields = this.raw?.Fields;
|
|
26
27
|
if (rawFields?.length) {
|
|
27
28
|
// Enrich the fields by mapping each field to the corresponding `AppFieldModel` object.
|
|
28
|
-
this.enrichedFields = rawFields.map((field) =>
|
|
29
|
-
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
this.enrichedFields = rawFields.map((field) => {
|
|
30
|
+
let fieldModel;
|
|
31
|
+
// First try to find the field in the parent object
|
|
32
|
+
fieldModel = this.parentAppObject.field(field.AppFieldID);
|
|
33
|
+
// If not found and metadataHelper is available, search across all objects
|
|
34
|
+
if (!fieldModel && this.metadataHelper) {
|
|
35
|
+
fieldModel = this.metadataHelper.getFieldByIdOrName(field.AppFieldID);
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
...field,
|
|
39
|
+
// The `Field` property contains the corresponding `AppFieldModel` object.
|
|
40
|
+
Field: fieldModel
|
|
41
|
+
};
|
|
42
|
+
});
|
|
33
43
|
}
|
|
34
44
|
else {
|
|
35
45
|
// If there are no fields, return an empty array.
|
|
@@ -120,4 +130,4 @@ export class DataSourceQueryModel {
|
|
|
120
130
|
return this.raw;
|
|
121
131
|
}
|
|
122
132
|
}
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtcXVlcnkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxNQUFNLE9BQU8sb0JBQW9CO0lBYS9CLFlBQ21CLEdBQVEsRUFDaEIsZUFBK0I7UUFEdkIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNoQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFQbEMsbUJBQWMsR0FBK0IsRUFBRSxDQUFDO1FBQ2hELHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFDeEMsa0JBQWEsR0FBa0IsRUFBRSxDQUFDO1FBQ2xDLGdCQUFXLEdBQWdCLEVBQUUsQ0FBQztRQU1wQyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0s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TSxDQUFDLElBQVk7UUFDakIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sQ0FDTCxJQUFJLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDM0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ2xELElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwT2JqZWN0TW9kZWwgfSBmcm9tICcuL2FwcC1vYmplY3QubW9kZWwnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzIH0gZnJvbSAnLi9kYXRhLXNvdXJjZS1xdWVyaWVzLmNsYXNzJztcbmltcG9ydCB7IEZpbHRlck1vZGVsIH0gZnJvbSAnLi9maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgUGFyYW1ldGVyTW9kZWwgfSBmcm9tICcuL3BhcmFtZXRlci5tb2RlbCc7XG5pbXBvcnQgeyBTb3J0TW9kZWwgfSBmcm9tICcuL3NvcnQubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwge1xuICByZWFkb25seSBJRDogc3RyaW5nO1xuICByZWFkb25seSBPYmplY3RJRDogc3RyaW5nO1xuICByZWFkb25seSBPYmplY3RJRF9Ub3NhdmU6IHN0cmluZztcbiAgcmVhZG9ubHkgUXVlcnlOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IERpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IEZpbHRlckxvZ2ljOiBzdHJpbmcgfCBudWxsO1xuXG4gIHByaXZhdGUgZW5yaWNoZWRGaWVsZHM6IERhdGFTb3VyY2VRdWVyaWVzX0ZpZWxkc1tdID0gW107XG4gIHByaXZhdGUgY2FjaGVkUGFyYW1ldGVyczogUGFyYW1ldGVyTW9kZWxbXSA9IFtdO1xuICBwcml2YXRlIGNhY2hlZEZpbHRlcnM6IEZpbHRlck1vZGVsW10gPSBbXTtcbiAgcHJpdmF0ZSBjYWNoZWRTb3J0czogU29ydE1vZGVsW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhdzogYW55LFxuICAgIHJlYWRvbmx5IHBhcmVudEFwcE9iamVjdDogQXBwT2JqZWN0TW9kZWxcbiAgKSB7XG4gICAgdGhpcy5JRCA9IHJhdy5JRDtcbiAgICB0aGlzLk9iamVjdElEID0gcmF3Lk9iamVjdElEO1xuICAgIHRoaXMuT2JqZWN0SURfVG9zYXZlID0gcmF3Lk9iamVjdElEX1Rvc2F2ZTtcbiAgICB0aGlzLlF1ZXJ5TmFtZSA9IHJhdy5RdWVyeU5hbWU7XG4gICAgdGhpcy5EaXNwbGF5TmFtZSA9IHJhdy5EaXNwbGF5TmFtZTtcbiAgICB0aGlzLkZpbHRlckxvZ2ljID0gcmF3LkZpbHRlckxvZ2ljO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGZpZWxkcyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5LiBUaGUgZmllbGRzIGFyZSBlbnJpY2hlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGBBcHBGaWVsZE1vZGVsYCBvYmplY3RzLlxuICAgKiBAcmV0dXJucyB7RGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzW119IFRoZSBhcnJheSBvZiBlbnJpY2hlZCBmaWVsZHMuXG4gICAqL1xuICBmaWVsZHMoKTogRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzW10ge1xuICAgIGlmICghdGhpcy5lbnJpY2hlZEZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCByYXdGaWVsZHMgPSB0aGlzLnJhdz8uRmllbGRzO1xuICAgICAgaWYgKHJhd0ZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICAgIC8vIEVucmljaCB0aGUgZmllbGRzIGJ5IG1hcHBpbmcgZWFjaCBmaWVsZCB0byB0aGUgY29ycmVzcG9uZGluZyBgQXBwRmllbGRNb2RlbGAgb2JqZWN0LlxuICAgICAgICB0aGlzLmVucmljaGVkRmllbGRzID0gcmF3RmllbGRzLm1hcCgoZmllbGQ6IGFueSkgPT4gKHtcbiAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICAvLyBUaGUgYEZpZWxkYCBwcm9wZXJ0eSBjb250YWlucyB0aGUgY29ycmVzcG9uZGluZyBgQXBwRmllbGRNb2RlbGAgb2JqZWN0LlxuICAgICAgICAgIEZpZWxkOiB0aGlzLnBhcmVudEFwcE9iamVjdC5maWVsZChmaWVsZC5BcHBGaWVsZElEKVxuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gZmllbGRzLCByZXR1cm4gYW4gZW1wdHkgYXJyYXkuXG4gICAgICAgIHRoaXMuZW5yaWNoZWRGaWVsZHMgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUmV0dXJuIHRoZSBlbnJpY2hlZCBmaWVsZHMuXG4gICAgcmV0dXJuIHRoaXMuZW5yaWNoZWRGaWVsZHM7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIGZpZWxkcyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IHRoYXQgc2F0aXNmeSB0aGUgZ2l2ZW4gZmlsdGVyIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBmaWVsZHMuXG4gICAqIEByZXR1cm5zIHtEYXRhU291cmNlUXVlcmllc19GaWVsZHNbXX0gVGhlIGFycmF5IG9mIGZpZWxkcyB0aGF0IHNhdGlzZnkgdGhlIGZpbHRlciBmdW5jdGlvbi5cbiAgICovXG4gIGZpbmRGaWVsZHMoZmlsdGVyRm46IChmaWVsZDogRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzKSA9PiBib29sZWFuKTogRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzW10ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkcygpLmZpbHRlcihmaWx0ZXJGbik7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuZCBjYWNoZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeS5cbiAgICogQHJldHVybnMge1BhcmFtZXRlck1vZGVsW119IFRoZSBhcnJheSBvZiBQYXJhbWV0ZXJNb2RlbCBpbnN0YW5jZXMuXG4gICAqL1xuICBwYXJhbWV0ZXJzKCk6IFBhcmFtZXRlck1vZGVsW10ge1xuICAgIC8vIENoZWNrIGlmIHBhcmFtZXRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gY2FjaGVkXG4gICAgaWYgKCF0aGlzLmNhY2hlZFBhcmFtZXRlcnMpIHtcbiAgICAgIC8vIE1hcCByYXcgcGFyYW1ldGVycyB0byBQYXJhbWV0ZXJNb2RlbCBpbnN0YW5jZXMgYW5kIGNhY2hlIHRoZW1cbiAgICAgIHRoaXMuY2FjaGVkUGFyYW1ldGVycyA9ICh0aGlzLnJhdz8uUGFyYW1ldGVycyB8fCBbXSkubWFwKChwOiBhbnkpID0+IG5ldyBQYXJhbWV0ZXJNb2RlbChwKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNhY2hlZFBhcmFtZXRlcnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBtYW5kYXRvcnkgcGFyYW1ldGVycyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5LlxuICAgKiBAcmV0dXJucyB7UGFyYW1ldGVyTW9kZWxbXX0gVGhlIGFycmF5IG9mIG1hbmRhdG9yeSBQYXJhbWV0ZXJNb2RlbCBpbnN0YW5jZXMuXG4gICAqL1xuICBtYW5kYXRvcnlQYXJhbWV0ZXJzKCk6IFBhcmFtZXRlck1vZGVsW10ge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnMoKS5maWx0ZXIocCA9PiBwLklzTWFuZGF0b3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhIHBhcmFtZXRlciBieSBpdHMgbmFtZSAoY2FzZS1pbnNlbnNpdGl2ZSkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdG8gZmluZC5cbiAgICogQHJldHVybnMge1BhcmFtZXRlck1vZGVsIHwgdW5kZWZpbmVkfSBUaGUgcGFyYW1ldGVyIG1vZGVsIGluc3RhbmNlIGlmIGZvdW5kLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxuICAgKi9cbiAgcGFyYW1ldGVyKG5hbWU6IHN0cmluZyk6IFBhcmFtZXRlck1vZGVsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBuYW1lTG93ZXIgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycygpLmZpbmQocCA9PiBwLlBhcmFtZXRlck5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVMb3dlcik7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuZCBjYWNoZXMgdGhlIGZpbHRlcnMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeS5cbiAgICogQHJldHVybnMge0ZpbHRlck1vZGVsW119IFRoZSBhcnJheSBvZiBGaWx0ZXJNb2RlbCBpbnN0YW5jZXMuXG4gICAqL1xuICBmaWx0ZXJzKCk6IEZpbHRlck1vZGVsW10ge1xuICAgIC8vIENoZWNrIGlmIGZpbHRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gY2FjaGVkXG4gICAgaWYgKCF0aGlzLmNhY2hlZEZpbHRlcnMpIHtcbiAgICAgIC8vIE1hcCByYXcgZmlsdGVycyB0byBGaWx0ZXJNb2RlbCBpbnN0YW5jZXMgYW5kIGNhY2hlIHRoZW1cbiAgICAgIHRoaXMuY2FjaGVkRmlsdGVycyA9ICh0aGlzLnJhdy5GaWx0ZXJzPy5GaWx0ZXJzIHx8IFtdKS5tYXAoKGY6IGFueSkgPT4gbmV3IEZpbHRlck1vZGVsKGYpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkRmlsdGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYW5kIGNhY2hlcyB0aGUgc29ydHMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeS5cbiAgICogQHJldHVybnMge1NvcnRNb2RlbFtdfSBUaGUgYXJyYXkgb2YgU29ydE1vZGVsIGluc3RhbmNlcy5cbiAgICovXG4gIHNvcnRzKCk6IFNvcnRNb2RlbFtdIHtcbiAgICAvLyBDaGVjayBpZiBzb3J0cyBoYXZlIGFscmVhZHkgYmVlbiBjYWNoZWRcbiAgICBpZiAoIXRoaXMuY2FjaGVkU29ydHMpIHtcbiAgICAgIC8vIE1hcCByYXcgc29ydHMgdG8gU29ydE1vZGVsIGluc3RhbmNlcyBhbmQgY2FjaGUgdGhlbVxuICAgICAgdGhpcy5jYWNoZWRTb3J0cyA9ICh0aGlzLnJhdy5Tb3J0IHx8IFtdKS5tYXAoKHM6IGFueSkgPT4gbmV3IFNvcnRNb2RlbChzKSk7XG4gICAgfVxuICAgIC8vIFJldHVybiB0aGUgY2FjaGVkIHNvcnRzXG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkU29ydHM7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGdpdmVuIHNlYXJjaCB0ZXJtIGlzIHByZXNlbnQgaW4gYW55IG9mIHRoZSBmaWVsZHMgb2YgdGhlXG4gICAqIGN1cnJlbnQgZGF0YSBzb3VyY2UgcXVlcnlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRlcm0gVGhlIHNlYXJjaCB0ZXJtXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoZSBzZWFyY2ggdGVybSBpcyBwcmVzZW50IGluIGFueSBmaWVsZFxuICAgKi9cbiAgc2VhcmNoKHRlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSB0ZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuSUQ/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgfHxcbiAgICAgIHRoaXMuUXVlcnlOYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pIHx8XG4gICAgICB0aGlzLkRpc3BsYXlOYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgaW5zdGFuY2UgdG8gYSBKU09OIHJlcHJlc2VudGF0aW9uLlxuICAgKiBAcmV0dXJucyB7YW55fSBUaGUgcmF3IGRhdGEgaW4gSlNPTiBmb3JtYXQuXG4gICAqL1xuICB0b0pTT04oKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5yYXc7XG4gIH1cbn0iXX0=
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtcXVlcnkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxNQUFNLE9BQU8sb0JBQW9CO0lBYS9CLFlBQ21CLEdBQVEsRUFDaEIsZUFBK0IsRUFDaEMsY0FBOEI7UUFGckIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNoQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUmhDLG1CQUFjLEdBQStCLEVBQUUsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBQ3hDLGtCQUFhLEdBQWtCLEVBQUUsQ0FBQztRQUNsQyxnQkFBVyxHQUFnQixFQUFFLENBQUM7UUFPcEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07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QUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLHNEQUFzRDtZQUN0RCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCwwQkFBMEI7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QyxPQUFPLENBQ0wsSUFBSSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUNsRCxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FDckQsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMnO1xuaW1wb3J0IHsgQXBwT2JqZWN0TW9kZWwgfSBmcm9tICcuL2FwcC1vYmplY3QubW9kZWwnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzIH0gZnJvbSAnLi9kYXRhLXNvdXJjZS1xdWVyaWVzLmNsYXNzJztcbmltcG9ydCB7IEZpbHRlck1vZGVsIH0gZnJvbSAnLi9maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgUGFyYW1ldGVyTW9kZWwgfSBmcm9tICcuL3BhcmFtZXRlci5tb2RlbCc7XG5pbXBvcnQgeyBTb3J0TW9kZWwgfSBmcm9tICcuL3NvcnQubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwge1xuICByZWFkb25seSBJRDogc3RyaW5nO1xuICByZWFkb25seSBPYmplY3RJRDogc3RyaW5nO1xuICByZWFkb25seSBPYmplY3RJRF9Ub3NhdmU6IHN0cmluZztcbiAgcmVhZG9ubHkgUXVlcnlOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IERpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IEZpbHRlckxvZ2ljOiBzdHJpbmcgfCBudWxsO1xuXG4gIHByaXZhdGUgZW5yaWNoZWRGaWVsZHM6IERhdGFTb3VyY2VRdWVyaWVzX0ZpZWxkc1tdID0gW107XG4gIHByaXZhdGUgY2FjaGVkUGFyYW1ldGVyczogUGFyYW1ldGVyTW9kZWxbXSA9IFtdO1xuICBwcml2YXRlIGNhY2hlZEZpbHRlcnM6IEZpbHRlck1vZGVsW10gPSBbXTtcbiAgcHJpdmF0ZSBjYWNoZWRTb3J0czogU29ydE1vZGVsW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhdzogYW55LFxuICAgIHJlYWRvbmx5IHBhcmVudEFwcE9iamVjdDogQXBwT2JqZWN0TW9kZWwsXG4gICAgcHJpdmF0ZSBtZXRhZGF0YUhlbHBlcjogTWV0YWRhdGFIZWxwZXJcbiAgKSB7XG4gICAgdGhpcy5JRCA9IHJhdy5JRDtcbiAgICB0aGlzLk9iamVjdElEID0gcmF3Lk9iamVjdElEO1xuICAgIHRoaXMuT2JqZWN0SURfVG9zYXZlID0gcmF3Lk9iamVjdElEX1Rvc2F2ZTtcbiAgICB0aGlzLlF1ZXJ5TmFtZSA9IHJhdy5RdWVyeU5hbWU7XG4gICAgdGhpcy5EaXNwbGF5TmFtZSA9IHJhdy5EaXNwbGF5TmFtZTtcbiAgICB0aGlzLkZpbHRlckxvZ2ljID0gcmF3LkZpbHRlckxvZ2ljO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGZpZWxkcyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5LiBUaGUgZmllbGRzIGFyZSBlbnJpY2hlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGBBcHBGaWVsZE1vZGVsYCBvYmplY3RzLlxuICAgKiBAcmV0dXJucyB7RGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzW119IFRoZSBhcnJheSBvZiBlbnJpY2hlZCBmaWVsZHMuXG4gICAqL1xuICBmaWVsZHMoKTogRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzW10ge1xuICAgIGlmICghdGhpcy5lbnJpY2hlZEZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCByYXdGaWVsZHMgPSB0aGlzLnJhdz8uRmllbGRzO1xuICAgICAgaWYgKHJhd0ZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICAgIC8vIEVucmljaCB0aGUgZmllbGRzIGJ5IG1hcHBpbmcgZWFjaCBmaWVsZCB0byB0aGUgY29ycmVzcG9uZGluZyBgQXBwRmllbGRNb2RlbGAgb2JqZWN0LlxuICAgICAgICB0aGlzLmVucmljaGVkRmllbGRzID0gcmF3RmllbGRzLm1hcCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBmaWVsZE1vZGVsO1xuXG4gICAgICAgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgdGhlIGZpZWxkIGluIHRoZSBwYXJlbnQgb2JqZWN0XG4gICAgICAgICAgZmllbGRNb2RlbCA9IHRoaXMucGFyZW50QXBwT2JqZWN0LmZpZWxkKGZpZWxkLkFwcEZpZWxkSUQpO1xuXG4gICAgICAgICAgLy8gSWYgbm90IGZvdW5kIGFuZCBtZXRhZGF0YUhlbHBlciBpcyBhdmFpbGFibGUsIHNlYXJjaCBhY3Jvc3MgYWxsIG9iamVjdHNcbiAgICAgICAgICBpZiAoIWZpZWxkTW9kZWwgJiYgdGhpcy5tZXRhZGF0YUhlbHBlcikge1xuICAgICAgICAgICAgZmllbGRNb2RlbCA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0RmllbGRCeUlkT3JOYW1lKGZpZWxkLkFwcEZpZWxkSUQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICAgIC8vIFRoZSBgRmllbGRgIHByb3BlcnR5IGNvbnRhaW5zIHRoZSBjb3JyZXNwb25kaW5nIGBBcHBGaWVsZE1vZGVsYCBvYmplY3QuXG4gICAgICAgICAgICBGaWVsZDogZmllbGRNb2RlbFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gZmllbGRzLCByZXR1cm4gYW4gZW1wdHkgYXJyYXkuXG4gICAgICAgIHRoaXMuZW5yaWNoZWRGaWVsZHMgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUmV0dXJuIHRoZSBlbnJpY2hlZCBmaWVsZHMuXG4gICAgcmV0dXJuIHRoaXMuZW5yaWNoZWRGaWVsZHM7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIGZpZWxkcyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IHRoYXQgc2F0aXNmeSB0aGUgZ2l2ZW4gZmlsdGVyIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBmaWVsZHMuXG4gICAqIEByZXR1cm5zIHtEYXRhU291cmNlUXVlcmllc19GaWVsZHNbXX0gVGhlIGFycmF5IG9mIGZpZWxkcyB0aGF0IHNhdGlzZnkgdGhlIGZpbHRlciBmdW5jdGlvbi5cbiAgICovXG4gIGZpbmRGaWVsZHMoZmlsdGVyRm46IChmaWVsZDogRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzKSA9PiBib29sZWFuKTogRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzW10ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkcygpLmZpbHRlcihmaWx0ZXJGbik7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuZCBjYWNoZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeS5cbiAgICogQHJldHVybnMge1BhcmFtZXRlck1vZGVsW119IFRoZSBhcnJheSBvZiBQYXJhbWV0ZXJNb2RlbCBpbnN0YW5jZXMuXG4gICAqL1xuICBwYXJhbWV0ZXJzKCk6IFBhcmFtZXRlck1vZGVsW10ge1xuICAgIC8vIENoZWNrIGlmIHBhcmFtZXRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gY2FjaGVkXG4gICAgaWYgKCF0aGlzLmNhY2hlZFBhcmFtZXRlcnMpIHtcbiAgICAgIC8vIE1hcCByYXcgcGFyYW1ldGVycyB0byBQYXJhbWV0ZXJNb2RlbCBpbnN0YW5jZXMgYW5kIGNhY2hlIHRoZW1cbiAgICAgIHRoaXMuY2FjaGVkUGFyYW1ldGVycyA9ICh0aGlzLnJhdz8uUGFyYW1ldGVycyB8fCBbXSkubWFwKChwOiBhbnkpID0+IG5ldyBQYXJhbWV0ZXJNb2RlbChwKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNhY2hlZFBhcmFtZXRlcnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBtYW5kYXRvcnkgcGFyYW1ldGVycyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5LlxuICAgKiBAcmV0dXJucyB7UGFyYW1ldGVyTW9kZWxbXX0gVGhlIGFycmF5IG9mIG1hbmRhdG9yeSBQYXJhbWV0ZXJNb2RlbCBpbnN0YW5jZXMuXG4gICAqL1xuICBtYW5kYXRvcnlQYXJhbWV0ZXJzKCk6IFBhcmFtZXRlck1vZGVsW10ge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnMoKS5maWx0ZXIocCA9PiBwLklzTWFuZGF0b3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhIHBhcmFtZXRlciBieSBpdHMgbmFtZSAoY2FzZS1pbnNlbnNpdGl2ZSkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdG8gZmluZC5cbiAgICogQHJldHVybnMge1BhcmFtZXRlck1vZGVsIHwgdW5kZWZpbmVkfSBUaGUgcGFyYW1ldGVyIG1vZGVsIGluc3RhbmNlIGlmIGZvdW5kLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxuICAgKi9cbiAgcGFyYW1ldGVyKG5hbWU6IHN0cmluZyk6IFBhcmFtZXRlck1vZGVsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBuYW1lTG93ZXIgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycygpLmZpbmQocCA9PiBwLlBhcmFtZXRlck5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVMb3dlcik7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuZCBjYWNoZXMgdGhlIGZpbHRlcnMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeS5cbiAgICogQHJldHVybnMge0ZpbHRlck1vZGVsW119IFRoZSBhcnJheSBvZiBGaWx0ZXJNb2RlbCBpbnN0YW5jZXMuXG4gICAqL1xuICBmaWx0ZXJzKCk6IEZpbHRlck1vZGVsW10ge1xuICAgIC8vIENoZWNrIGlmIGZpbHRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gY2FjaGVkXG4gICAgaWYgKCF0aGlzLmNhY2hlZEZpbHRlcnMpIHtcbiAgICAgIC8vIE1hcCByYXcgZmlsdGVycyB0byBGaWx0ZXJNb2RlbCBpbnN0YW5jZXMgYW5kIGNhY2hlIHRoZW1cbiAgICAgIHRoaXMuY2FjaGVkRmlsdGVycyA9ICh0aGlzLnJhdy5GaWx0ZXJzPy5GaWx0ZXJzIHx8IFtdKS5tYXAoKGY6IGFueSkgPT4gbmV3IEZpbHRlck1vZGVsKGYpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkRmlsdGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYW5kIGNhY2hlcyB0aGUgc29ydHMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeS5cbiAgICogQHJldHVybnMge1NvcnRNb2RlbFtdfSBUaGUgYXJyYXkgb2YgU29ydE1vZGVsIGluc3RhbmNlcy5cbiAgICovXG4gIHNvcnRzKCk6IFNvcnRNb2RlbFtdIHtcbiAgICAvLyBDaGVjayBpZiBzb3J0cyBoYXZlIGFscmVhZHkgYmVlbiBjYWNoZWRcbiAgICBpZiAoIXRoaXMuY2FjaGVkU29ydHMpIHtcbiAgICAgIC8vIE1hcCByYXcgc29ydHMgdG8gU29ydE1vZGVsIGluc3RhbmNlcyBhbmQgY2FjaGUgdGhlbVxuICAgICAgdGhpcy5jYWNoZWRTb3J0cyA9ICh0aGlzLnJhdy5Tb3J0IHx8IFtdKS5tYXAoKHM6IGFueSkgPT4gbmV3IFNvcnRNb2RlbChzKSk7XG4gICAgfVxuICAgIC8vIFJldHVybiB0aGUgY2FjaGVkIHNvcnRzXG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkU29ydHM7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGdpdmVuIHNlYXJjaCB0ZXJtIGlzIHByZXNlbnQgaW4gYW55IG9mIHRoZSBmaWVsZHMgb2YgdGhlXG4gICAqIGN1cnJlbnQgZGF0YSBzb3VyY2UgcXVlcnlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRlcm0gVGhlIHNlYXJjaCB0ZXJtXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoZSBzZWFyY2ggdGVybSBpcyBwcmVzZW50IGluIGFueSBmaWVsZFxuICAgKi9cbiAgc2VhcmNoKHRlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSB0ZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuSUQ/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgfHxcbiAgICAgIHRoaXMuUXVlcnlOYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pIHx8XG4gICAgICB0aGlzLkRpc3BsYXlOYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgaW5zdGFuY2UgdG8gYSBKU09OIHJlcHJlc2VudGF0aW9uLlxuICAgKiBAcmV0dXJucyB7YW55fSBUaGUgcmF3IGRhdGEgaW4gSlNPTiBmb3JtYXQuXG4gICAqL1xuICB0b0pTT04oKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5yYXc7XG4gIH1cbn0iXX0=
|
|
@@ -58,6 +58,12 @@ export declare class MetadataHelper {
|
|
|
58
58
|
* @returns The list of fields.
|
|
59
59
|
*/
|
|
60
60
|
getAllFields(filterFn?: (field: AppFieldModel) => boolean): AppFieldModel[];
|
|
61
|
+
/**
|
|
62
|
+
* Finds a field by its ID across all app objects
|
|
63
|
+
* @param fieldId The ID of the field to find
|
|
64
|
+
* @returns The field if found, or null if not found
|
|
65
|
+
*/
|
|
66
|
+
getFieldByIdOrName(nameOrId: string): AppFieldModel | null;
|
|
61
67
|
/**
|
|
62
68
|
* Returns a list of data source queries in the metadata.
|
|
63
69
|
* If a filter function is given, it is applied to each data source query.
|
|
@@ -2,12 +2,14 @@ import { ObjectType } from '../enums/common.enum';
|
|
|
2
2
|
import { ObjectCreationType } from '../enums/dsq.enum';
|
|
3
3
|
import { DeploymentStatus } from '../enums/permission.enum';
|
|
4
4
|
import { ChildRelationShip } from './api-query.class';
|
|
5
|
+
import { MetadataHelper } from '../helpers/common/meta-data.helpers';
|
|
5
6
|
import { AppFieldModel } from './app-field.model';
|
|
6
7
|
import { ObjectAccess } from './app-object.class';
|
|
7
8
|
import { Resources } from './common.class';
|
|
8
9
|
import { DataSourceQueryModel } from './data-source-query.model';
|
|
9
10
|
export declare class AppObjectModel {
|
|
10
11
|
private readonly raw;
|
|
12
|
+
private metadataHelper;
|
|
11
13
|
readonly ID: string;
|
|
12
14
|
readonly ObjectName: string;
|
|
13
15
|
readonly DisplayName: string;
|
|
@@ -43,7 +45,7 @@ export declare class AppObjectModel {
|
|
|
43
45
|
private readonly dsqMap;
|
|
44
46
|
private allFields;
|
|
45
47
|
private allDSQs;
|
|
46
|
-
constructor(raw: any);
|
|
48
|
+
constructor(raw: any, metadataHelper: MetadataHelper);
|
|
47
49
|
/**
|
|
48
50
|
* Returns all fields associated with this AppObject. The fields are cached so that subsequent calls
|
|
49
51
|
* are faster. The cache is stored in a map by ID.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MetadataHelper } from '../helpers/common/meta-data.helpers';
|
|
1
2
|
import { AppObjectModel } from './app-object.model';
|
|
2
3
|
import { DataSourceQueries_Fields } from './data-source-queries.class';
|
|
3
4
|
import { FilterModel } from './filter.model';
|
|
@@ -6,6 +7,7 @@ import { SortModel } from './sort.model';
|
|
|
6
7
|
export declare class DataSourceQueryModel {
|
|
7
8
|
private readonly raw;
|
|
8
9
|
readonly parentAppObject: AppObjectModel;
|
|
10
|
+
private metadataHelper;
|
|
9
11
|
readonly ID: string;
|
|
10
12
|
readonly ObjectID: string;
|
|
11
13
|
readonly ObjectID_Tosave: string;
|
|
@@ -16,7 +18,7 @@ export declare class DataSourceQueryModel {
|
|
|
16
18
|
private cachedParameters;
|
|
17
19
|
private cachedFilters;
|
|
18
20
|
private cachedSorts;
|
|
19
|
-
constructor(raw: any, parentAppObject: AppObjectModel);
|
|
21
|
+
constructor(raw: any, parentAppObject: AppObjectModel, metadataHelper: MetadataHelper);
|
|
20
22
|
/**
|
|
21
23
|
* Gets the fields for the data source query. The fields are enriched with the corresponding `AppFieldModel` objects.
|
|
22
24
|
* @returns {DataSourceQueries_Fields[]} The array of enriched fields.
|