@trudb/tru-common-lib 0.1.638 → 0.1.640
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.
|
@@ -129,20 +129,18 @@ export class TruCloneView extends TruViewBase {
|
|
|
129
129
|
buildCloneTree = (currentEntity, node) => {
|
|
130
130
|
var childProperties = this.getChildPropertiesForCurrentEntity(currentEntity);
|
|
131
131
|
childProperties.forEach((childProperty) => {
|
|
132
|
-
childProperty.entities
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
this.buildCloneTree(entity, childNode);
|
|
143
|
-
});
|
|
144
|
-
node.nodes.push(groupNode);
|
|
132
|
+
let type = this.getTypeFromEntityTypeName(childProperty.entities[0].$type);
|
|
133
|
+
let childLookup = this.modelTableLookup.lookup.get(type);
|
|
134
|
+
let groupNode = new Node(null, childProperty.entities[0].constructor.name, childLookup?.pluralLabel, false, true, [], '', null, false, node, null);
|
|
135
|
+
this.flatList.push(groupNode);
|
|
136
|
+
childProperty.entities.forEach((childEntity) => {
|
|
137
|
+
let type = this.getTypeFromEntityTypeName(childEntity.$type);
|
|
138
|
+
let childNode = new Node(childEntity[type + 'Ref'], type, type, true, true, [], '', childProperty.parentToChildRefName, false, groupNode, childEntity);
|
|
139
|
+
this.childFlatList.push(childNode);
|
|
140
|
+
groupNode.nodes.push(childNode);
|
|
141
|
+
this.buildCloneTree(childEntity, childNode);
|
|
145
142
|
});
|
|
143
|
+
node.nodes.push(groupNode);
|
|
146
144
|
});
|
|
147
145
|
};
|
|
148
146
|
asyncForEachRecordId = (arr, cb) => {
|
|
@@ -188,7 +186,7 @@ export class TruCloneView extends TruViewBase {
|
|
|
188
186
|
});
|
|
189
187
|
newEntity.setProperty('_associatedDataCached', true);
|
|
190
188
|
let childLookup = this.modelTableLookup.lookup.get(node.tableName);
|
|
191
|
-
currentEntity[
|
|
189
|
+
currentEntity[node.parentToChildRefName].push(newEntity);
|
|
192
190
|
let childNodes = node.nodes;
|
|
193
191
|
childNodes.forEach((childNode) => {
|
|
194
192
|
if (childNode.checked)
|
|
@@ -338,4 +336,4 @@ class Node {
|
|
|
338
336
|
}
|
|
339
337
|
};
|
|
340
338
|
}
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNsb25lLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xvbmUtdmlldy90cnUtY2xvbmUtdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jbG9uZS12aWV3L3RydS1jbG9uZS12aWV3Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCN0QsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUFXO0lBa0MvQjtJQUNBO0lBQ0Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBeENWLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsY0FBYyxHQUFXLGtDQUFrQyxDQUFDO0lBQzVELGNBQWMsQ0FBa0M7SUFDaEQsc0JBQXNCLENBQTRCO0lBQ2xELGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdEIsUUFBUSxHQUFnQixJQUFJLENBQUM7SUFDN0Isa0JBQWtCLEdBQUc7UUFDbkIsWUFBWTtRQUNaLFNBQVM7UUFDVCxZQUFZO1FBQ1osU0FBUztRQUNULFFBQVE7UUFDUix5QkFBeUI7UUFDekIsY0FBYztRQUNkLHVCQUF1QjtRQUN2QixlQUFlO1FBQ2YsY0FBYztRQUNkLFlBQVk7UUFDWixZQUFZO1FBQ1osZUFBZTtRQUNmLGFBQWE7UUFDYixhQUFhO1FBQ2IsdUJBQXVCO1FBQ3ZCLEtBQUs7S0FDTixDQUFDO0lBQ0YsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLFFBQVEsR0FBZ0IsRUFBRSxDQUFDO0lBQzNCLGFBQWEsR0FBZ0IsRUFBRSxDQUFDO0lBQ2hDLGNBQWMsR0FBVyxDQUFD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QUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDaEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTt3QkFDekIsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNwQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtvQkFDekIsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3JCLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRydVZpZXdCYXNlIH0gZnJvbSAnLi4vLi4vYmFzZS12aWV3cy90cnUtdmlldy1iYXNlJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uL3Rvb2xiYXIvY2xhc3Nlcy90cnUtdG9vbGJhci1kcm9wZG93bi1vcHRpb24nO1xyXG5pbXBvcnQgeyBUcnVUZXh0TWFuYWdlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS10ZXh0LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dFdmVudEhhbmRsZXIgfSBmcm9tICcuLi9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydU1vZGVsVGFibGVMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdGFibGUtbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC1wcm9wZXJ0eS1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFR5cGVMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdHlwZS1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLW5hdmlnYXRpb24tcHJvcGVydGllcy1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVOYXZpZ2F0aW9uUHJvcGVydHlDb25maWcgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RydS1uYXZpZ2F0aW9uLXByb3BlcnR5LWNvbmZpZyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtY2xvbmUtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1jbG9uZS12aWV3Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1jbG9uZS12aWV3LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVDbG9uZVZpZXcgZXh0ZW5kcyBUcnVWaWV3QmFzZSB7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgbG9hZGluZ01lc3NhZ2U6IHN0cmluZyA9ICdTZWFyY2hpbmcgZm9yIHJlbGF0ZWQgcmVjb3Jkcy4uLic7XHJcbiAgbnVtYmVyT2ZDb3BpZXM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+XHJcbiAgc2VsZWN0ZWROdW1iZXJPZkNvcGllczogSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbjtcclxuICBjb250ZXh0RmlsdGVycyA9IG51bGw7XHJcbiAgcm9vdE5vZGU6IE5vZGUgfCBudWxsID0gbnVsbDsgXHJcbiAgaWdub3JlUHJvcGVydHlMaXN0ID0gW1xyXG4gICAgJ0NyZWF0ZWRSZWYnLFxyXG4gICAgJ0NyZWF0ZWQnLFxyXG4gICAgJ1VwZGF0ZWRSZWYnLFxyXG4gICAgJ1VwZGF0ZWQnLFxyXG4gICAgJ3Jvd3ZlcicsXHJcbiAgICAnX2N1c3RvbVZhbGlkYXRpb25FcnJvcnMnLFxyXG4gICAgJ2VudGl0eUFzcGVjdCcsXHJcbiAgICAnX2Fzc29jaWF0ZWREYXRhQ2FjaGVkJyxcclxuICAgICdfYmFja2luZ1N0b3JlJyxcclxuICAgICdfc2V0RGVmYXVsdHMnLFxyXG4gICAgJ18kdHlwZU5hbWUnLFxyXG4gICAgJ2VudGl0eVR5cGUnLFxyXG4gICAgJ18kaW50ZXJjZXB0b3InLFxyXG4gICAgJ2dldFByb3BlcnR5JyxcclxuICAgICdzZXRQcm9wZXJ0eScsXHJcbiAgICAnX3BlbmRpbmdCYWNraW5nU3RvcmVzJyxcclxuICAgICdSZWYnXHJcbiAgXTtcclxuICBkYXRhVHJlZSA9IFtdO1xyXG4gIGZsYXRMaXN0OiBBcnJheTxOb2RlPiA9IFtdO1xyXG4gIGNoaWxkRmxhdExpc3Q6IEFycmF5PE5vZGU+ID0gW107XHJcbiAgcHJvY2Vzc2VkQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgZG9uZVByb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNwbGF5VHJlZSA9IFt0aGlzLnJvb3ROb2RlXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgdGV4dE1hbmFnZXI6IFRydVRleHRNYW5hZ2VyLFxyXG4gICAgcHJvdGVjdGVkIHdpbmRvd0V2ZW50SGFuZGxlcjogVHJ1V2luZG93RXZlbnRIYW5kbGVyLFxyXG4gICAgcHJpdmF0ZSBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBwcml2YXRlIG1vZGVsVGFibGVMb29rdXA6IFRydU1vZGVsVGFibGVMb29rdXAsXHJcbiAgICBwcml2YXRlIG1vZGVsUHJvcGVydHlMb29rdXA6IFRydU1vZGVsUHJvcGVydHlMb29rdXAsXHJcbiAgICBwcml2YXRlIG1vZGVsVHlwZUxvb2t1cDogVHJ1TW9kZWxUeXBlTG9va3VwLFxyXG4gICAgcHJpdmF0ZSBtb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwOiBUcnVNb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwLFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb24pIHtcclxuICAgIHN1cGVyKHRleHRNYW5hZ2VyLCB3aW5kb3dFdmVudEhhbmRsZXIpO1xyXG4gICAgdGhpcy5udW1iZXJPZkNvcGllcyA9IHRoaXMuZ2V0TnVtYmVyT2ZDb3BpZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWROdW1iZXJPZkNvcGllcyA9IHRoaXMubnVtYmVyT2ZDb3BpZXNbMF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE51bWJlck9mQ29waWVzID0gKCk6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+ID0+IHtcclxuICAgIGxldCBjb3BpZXM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+ID0gW107XHJcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAyNTsgaSsrKSB7XHJcbiAgICAgIGNvcGllcy5wdXNoKHtcclxuICAgICAgICB2YWx1ZTogaSxcclxuICAgICAgICBsYWJlbDogaS50b1N0cmluZygpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvcGllcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvcGVydHlJc0FsbG93ZWQgPSAocHJvcGVydHlOYW1lOiBzdHJpbmcsIHRhYmxlTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICBpZiAocHJvcGVydHlOYW1lID09PSB0YWJsZU5hbWUgKyAnUmVmJykgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHByb3BlcnR5TmFtZS5zdGFydHNXaXRoKCdvJykpIHJldHVybiBmYWxzZTtcclxuICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMubW9kZWxQcm9wZXJ0eUxvb2t1cC5sb29rdXAuZ2V0KHByb3BlcnR5TmFtZSk7XHJcbiAgICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHkuZXhjbHVkZUZyb21DbG9uaW5nKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5pZ25vcmVQcm9wZXJ0eUxpc3Quc29tZShmdW5jdGlvbiAocHJvcGVydHlUb0lnbm9yZSkgeyByZXR1cm4gcHJvcGVydHlUb0lnbm9yZSA9PT0gcHJvcGVydHlOYW1lOyB9KSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgIGdldFByb3RvdHlwZVByb3BlcnRpZXMgPSAob2JqOiBhbnkpID0+IHtcclxuICAgIHZhciByZXN1bHQgPSBbXTtcclxuICAgIGZvciAodmFyIHByb3AgaW4gb2JqKSB7XHJcbiAgICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2gocHJvcCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENoaWxkUHJvcGVydGllc0ZvckN1cnJlbnRFbnRpdHkgPSAoY3VycmVudEVudGl0eTogYW55KSA9PiB7XHJcbiAgICAvL3ZhciBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmtleXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGN1cnJlbnRFbnRpdHkpKTtcclxuICAgIGxldCBlbnRpdHlOYW1lID0gdGhpcy5nZXRUeXBlRnJvbUVudGl0eVR5cGVOYW1lKGN1cnJlbnRFbnRpdHkuJHR5cGUpO1xyXG4gICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwLmxvb2t1cC5nZXQoZW50aXR5TmFtZSkgYXMgVHJ1TmF2aWdhdGlvblByb3BlcnR5Q29uZmlnW107XHJcbiAgICBsZXQgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5rZXlzKGN1cnJlbnRFbnRpdHkpO1xyXG4gICAgbGV0IG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzID0gcHJvcGVydHlOYW1lcy5maWx0ZXIoKG4pID0+IHsgcmV0dXJuIG4uc3RhcnRzV2l0aCgnbycpOyB9KTtcclxuICAgIGxldCBjaGlsZE5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzID0gbmF2aWdhdGlvblByb3BlcnR5TmFtZXMuZmlsdGVyKChuKSA9PiB7XHJcbiAgICAgIHJldHVybiBjaGlsZExvb2t1cC5zb21lKChsb29rdXA6IGFueSkgPT4geyByZXR1cm4gbG9va3VwLm5hbWUgPT09IG47IH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGNoaWxkUHJvcGVydGllczogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgY2hpbGROYXZpZ2F0aW9uUHJvcGVydHlOYW1lcy5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcclxuICAgICAgaWYgKGN1cnJlbnRFbnRpdHlbbl0gJiYgY3VycmVudEVudGl0eVtuXS5sZW5ndGgpXHJcbiAgICAgICAgY2hpbGRQcm9wZXJ0aWVzLnB1c2goe1xyXG4gICAgICAgICAgcGFyZW50VG9DaGlsZFJlZk5hbWU6IG4sXHJcbiAgICAgICAgICBlbnRpdGllczogY3VycmVudEVudGl0eVtuXVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGNoaWxkUHJvcGVydGllcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VHlwZUZyb21FbnRpdHlUeXBlTmFtZSA9ICh0eXBlTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICB2YXIgcDFzID0gdHlwZU5hbWUuc3BsaXQoJywnKVswXTtcclxuICAgIHZhciBwMnMgPSBwMXMuc3BsaXQoJy4nKTtcclxuICAgIHJldHVybiBwMnNbcDJzLmxlbmd0aCAtIDFdO1xyXG4gIH1cclxuXHJcbnByaXZhdGUgYnVpbGRDbG9uZVRyZWUgPSAoY3VycmVudEVudGl0eTogYW55LCBub2RlOiBhbnkpID0+IHtcclxuICB2YXIgY2hpbGRQcm9wZXJ0aWVzID0gdGhpcy5nZXRDaGlsZFByb3BlcnRpZXNGb3JDdXJyZW50RW50aXR5KGN1cnJlbnRFbnRpdHkpO1xyXG4gIGNoaWxkUHJvcGVydGllcy5mb3JFYWNoKChjaGlsZFByb3BlcnR5OiBhbnkpID0+IHtcclxuICAgIGNoaWxkUHJvcGVydHkuZW50aXRpZXMuZm9yRWFjaCgoZW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgbGV0IHR5cGUgPSB0aGlzLmdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUoZW50aXR5LiR0eXBlKTtcclxuICAgICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbFRhYmxlTG9va3VwLmxvb2t1cC5nZXQodHlwZSk7XHJcbiAgICAgIGxldCBncm91cE5vZGUgPSBuZXcgTm9kZShcclxuICAgICAgICBudWxsLFxyXG4gICAgICAgIGVudGl0eS5jb25zdHJ1Y3Rvci5uYW1lLFxyXG4gICAgICAgIGNoaWxkTG9va3VwPy5wbHVyYWxMYWJlbCBhcyBzdHJpbmcsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgdHJ1ZSxcclxuICAgICAgICBbXSxcclxuICAgICAgICAnJyxcclxuICAgICAgICBjaGlsZFByb3BlcnR5LnBhcmVudFRvQ2hpbGRSZWZOYW1lLFxyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICAgIG5vZGUsXHJcbiAgICAgICAgbnVsbFxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5mbGF0TGlzdC5wdXNoKGdyb3VwTm9kZSk7XHJcblxyXG4gICAgICBjaGlsZFByb3BlcnRpZXMuZm9yRWFjaCgoY2hpbGRQcm9wZXJ0eTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IHR5cGUgPSB0aGlzLmdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUoZW50aXR5LiR0eXBlKTtcclxuICAgICAgICBsZXQgY2hpbGROb2RlID0gbmV3IE5vZGUoXHJcbiAgICAgICAgICBlbnRpdHlbdHlwZSArICdSZWYnXSxcclxuICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgIHRydWUsXHJcbiAgICAgICAgICBbXSxcclxuICAgICAgICAgICcnLFxyXG4gICAgICAgICAgY2hpbGRQcm9wZXJ0eS5wYXJlbnRUb0NoaWxkUmVmTmFtZSxcclxuICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgZ3JvdXBOb2RlLFxyXG4gICAgICAgICAgZW50aXR5XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5jaGlsZEZsYXRMaXN0LnB1c2goY2hpbGROb2RlKTtcclxuICAgICAgICBncm91cE5vZGUubm9kZXMucHVzaChjaGlsZE5vZGUpO1xyXG4gICAgICAgIHRoaXMuYnVpbGRDbG9uZVRyZWUoZW50aXR5LCBjaGlsZE5vZGUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIG5vZGUubm9kZXMucHVzaChncm91cE5vZGUpO1xyXG4gICAgfSlcclxuICB9KTtcclxufVxyXG5cclxuICBwcml2YXRlIGFzeW5jRm9yRWFjaFJlY29yZElkID0gKGFycjogYW55LCBjYjogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gYXJyLnJlZHVjZSgocDogYW55LCBjOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHAudGhlbigoKSA9PiBjYihjKSk7XHJcbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoUmVjb3JkSWQgPSAoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgdmFyIGMgPSBjaGlsZDtcclxuICAgIHZhciBkYXRhID0ge1xyXG4gICAgICByZWY6IGMucmVmLFxyXG4gICAgICB0YWJsZU5hbWU6IGMudGFibGVOYW1lXHJcbiAgICB9O1xyXG4gICAgZGF0YSA9IHRoaXMudGV4dE1hbmFnZXIuZm9ybWF0QXNVcmxQYXJhbWV0ZXJzKGRhdGEpO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55KSA9PiB7XHJcbiAgICAgIGMuZGlzcGxheU5hbWUgPSBjaGlsZC5lbnRpdHkuSElEO1xyXG4gICAgICB0aGlzLnByb2Nlc3NlZENvdW50Kys7XHJcbiAgICAgIHRoaXMubG9hZGluZ01lc3NhZ2UgPSAnRm9ybWF0dGluZyBkYXRhLi4ucHJvY2Vzc2VkICgnICsgdGhpcy5wcm9jZXNzZWRDb3VudCArICcvJyArIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggKyAnKSByZWNvcmRzJztcclxuICAgICAgaWYgKHRoaXMucHJvY2Vzc2VkQ291bnQgPj0gdGhpcy5jaGlsZEZsYXRMaXN0Lmxlbmd0aClcclxuICAgICAgICB0aGlzLmxvYWRpbmdNZXNzYWdlID0gJ1JlbmRlcmluZyB0cmVlLi4uJztcclxuICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYXZlcnNlID0gKG5vZGU6IGFueSwgY3VycmVudEVudGl0eTogYW55KSA9PiB7XHJcbiAgICB2YXIgZ3JvdXAgPSAhbm9kZS5jaGlsZDtcclxuICAgIGlmIChncm91cCkge1xyXG4gICAgICB2YXIgZ3JvdXBOb2RlcyA9IG5vZGUubm9kZXM7XHJcbiAgICAgIGdyb3VwTm9kZXMuZm9yRWFjaCgoZ3JvdXBOb2RlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZ3JvdXBOb2RlLmNoZWNrZWQpXHJcbiAgICAgICAgICBncm91cE5vZGUubm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50cmF2ZXJzZShjaGlsZE5vZGUsIGN1cnJlbnRFbnRpdHkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKG5vZGUuY2hlY2tlZCkge1xyXG4gICAgICAgIGxldCB0YWJsZVR5cGUgPSB0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKHRoaXMudGFibGVOYW1lKTtcclxuICAgICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGFibGVUeXBlLCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgdGhpcy5nZXRQcm90b3R5cGVQcm9wZXJ0aWVzKG5ld0VudGl0eSkuZm9yRWFjaCgocHJvcGVydHlOYW1lKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eUlzQWxsb3dlZChwcm9wZXJ0eU5hbWUsIG5vZGUudGFibGVOYW1lKSkge1xyXG4gICAgICAgICAgICBuZXdFbnRpdHlbcHJvcGVydHlOYW1lIGFzIE9iamVjdEtleV0gPSBub2RlLmVudGl0eVtwcm9wZXJ0eU5hbWVdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBuZXdFbnRpdHkuc2V0UHJvcGVydHkhKCdfYXNzb2NpYXRlZERhdGFDYWNoZWQnLCB0cnVlKTtcclxuXHJcbiAgICAgICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbFRhYmxlTG9va3VwLmxvb2t1cC5nZXQobm9kZS50YWJsZU5hbWUpO1xyXG4gICAgICAgIGN1cnJlbnRFbnRpdHlbJ28nICsgY2hpbGRMb29rdXAhLnBsdXJhbE5hbWVdLnB1c2gobmV3RW50aXR5KTtcclxuICAgICAgICBsZXQgY2hpbGROb2RlcyA9IG5vZGUubm9kZXM7XHJcbiAgICAgICAgY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkTm9kZS5jaGVja2VkKVxyXG4gICAgICAgICAgICBjaGlsZE5vZGUubm9kZXMuZm9yRWFjaCgoZ3JvdXBOb2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnRyYXZlcnNlKGdyb3VwTm9kZSwgbmV3RW50aXR5KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwcml2YXRlIGdldERhdGFGb3JDbG9uaW5nID0gKCkgPT4ge1xyXG4gICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5jbG9uZSh7XHJcbiAgICAgIHJlZjogdGhpcy5lbnRpdHkuUmVmLFxyXG4gICAgICB0YWJsZU5hbWU6IHRoaXMudGFibGVOYW1lXHJcbiAgICB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVRyZWUgPSByZXNwb25zZS5Db250ZW50WzBdO1xyXG4gICAgICAgIHRoaXMuYnVpbGRDbG9uZVRyZWUodGhpcy5kYXRhVHJlZSwgdGhpcy5yb290Tm9kZSk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGluZ01lc3NhZ2UgPSAnRm9ybWF0dGluZyBkYXRhLi4uKDAvJyArIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggKyAnKSByZWNvcmRzJztcclxuICAgICAgICB0aGlzLmFzeW5jRm9yRWFjaFJlY29yZElkKHRoaXMuY2hpbGRGbGF0TGlzdCwgdGhpcy5mZXRjaFJlY29yZElkKS50aGVuKHRoaXMub25Eb25lKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5VHJlZSA9IFt0aGlzLnJvb3ROb2RlXTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChleDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yJywgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcignU2VydmVyIEVycm9yOiAnICsgZXguc3RhdHVzLCBbZXguZXJyb3IuTWVzc2FnZV0pKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2xvbmUgPSAoKSA9PiB7XHJcbiAgICBsZXQgY29waWVzID0gdGhpcy5zZWxlY3RlZE51bWJlck9mQ29waWVzLnZhbHVlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3BpZXM7IGkrKykge1xyXG4gICAgICBsZXQgdGFibGVUeXBlID0gdGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSh0aGlzLnRhYmxlTmFtZSk7XHJcbiAgICAgIGxldCBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0YWJsZVR5cGUsIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgIHRoaXMuZ2V0UHJvdG90eXBlUHJvcGVydGllcyh0aGlzLmVudGl0eSkuZm9yRWFjaCgocHJvcGVydHlOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eUlzQWxsb3dlZChwcm9wZXJ0eU5hbWUsIHRoaXMudGFibGVOYW1lKSkge1xyXG4gICAgICAgICAgbmV3RW50aXR5W3Byb3BlcnR5TmFtZSBhcyBPYmplY3RLZXldID0gdGhpcy5lbnRpdHlbcHJvcGVydHlOYW1lXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbmV3RW50aXR5LnNldFByb3BlcnR5ISgnX2Fzc29jaWF0ZWREYXRhQ2FjaGVkJywgdHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLnRyYXZlcnNlKHRoaXMuZGlzcGxheVRyZWVbMF0sIG5ld0VudGl0eSk7XHJcbiAgICAgIHRoaXMudmlldy5lbnRpdGllcz8ucHVzaChuZXdFbnRpdHkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy53aW5kb3dFdmVudEhhbmRsZXIuY2xvc2UoKTtcclxuICB9O1xyXG5cclxuICBvbkRvbmUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmRvbmVQcm9jZXNzaW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uUmVuZGVyZWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmxvYWRpbmdNZXNzYWdlID0gJyc7XHJcbiAgfTtcclxuXHJcbiAgb25DYW5jZWwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLndpbmRvd0V2ZW50SGFuZGxlci5jbG9zZSgpO1xyXG4gIH07XHJcblxyXG4gIG9uRXhwYW5kQ2xpY2tlZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY2hpbGRGbGF0TGlzdC5maW5kKChub2RlOiBOb2RlKSA9PiB7IG5vZGUuc2hvd0VudGl0aWVzID0gdHJ1ZTsgfSk7XHJcbiAgfVxyXG4gICAgIFxyXG4gIG9uQ29sbGFwc2VDbGlja2VkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jaGlsZEZsYXRMaXN0LmZpbmQoKG5vZGU6IE5vZGUpID0+IHsgbm9kZS5zaG93RW50aXRpZXMgPSBmYWxzZTsgfSk7XHJcbiAgfVxyXG5cclxuICBvbk51bWJlck9mQ29waWVzQ2hhbmdlZCA9IChldmVudDogYW55KSA9PiB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRhYmxlTmFtZSA9IHRoaXMudmlldy53aW5kb3cudGFibGVOYW1lO1xyXG4gICAgdGhpcy5lbnRpdGllcyA9IHRoaXMudmlldy5lbnRpdGllcyBhcyBhbnk7XHJcbiAgICB0aGlzLmVudGl0eSA9IHRoaXMuZW50aXRpZXNbdGhpcy52aWV3LmVudGl0eUluZGV4XTtcclxuICAgIHRoaXMucm9vdE5vZGUgPSBuZXcgTm9kZShudWxsLCB0aGlzLnRhYmxlTmFtZSwgdGhpcy50YWJsZU5hbWUsIGZhbHNlLCB0cnVlLCBudWxsLCBudWxsLCBudWxsLCB0cnVlLCBudWxsLCBudWxsKTtcclxuICAgIHRoaXMuc2V0RW50aXR5RGlzcGxheVZhbHVlcyh0aGlzLnZpZXcud2luZG93LnRhYmxlTmFtZSk7XHJcbiAgICB0aGlzLmdldERhdGFGb3JDbG9uaW5nKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGF0YVRyZWUubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuZmxhdExpc3QubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggPSAwO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgTm9kZSB7XHJcbiAgcmVmOiBudW1iZXIgfCBudWxsO1xyXG4gIHRhYmxlTmFtZTogc3RyaW5nO1xyXG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgY2hlY2tlZDogYm9vbGVhbjtcclxuICBjaGlsZDogYW55O1xyXG4gIGNoaWxkTm9kZXM6IGFueTtcclxuICBzaG93RW50aXRpZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXRoRnJvbVJvb3Q6IHN0cmluZyB8IG51bGw7XHJcbiAgcGFyZW50VG9DaGlsZFJlZk5hbWU6IHN0cmluZyB8IG51bGw7XHJcbiAgbm9kZXM6IE5vZGVbXSA9IFtdO1xyXG4gIHJvb3Q6IGFueTtcclxuICBwYXJlbnQ6IGFueTtcclxuICBlbnRpdHk6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwsXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmcsXHJcbiAgICBjaGlsZDogYW55LFxyXG4gICAgY2hlY2tlZDogYm9vbGVhbixcclxuICAgIGNoaWxkRW50aXRpZXM6IGFueSxcclxuICAgIHBhdGhGcm9tUm9vdDogc3RyaW5nIHwgbnVsbCxcclxuICAgIHBhcmVudFRvQ2hpbGRSZWZOYW1lOiBzdHJpbmcgfCBudWxsLFxyXG4gICAgcm9vdDogYm9vbGVhbixcclxuICAgIHBhcmVudDogYW55LFxyXG4gICAgZW50aXR5OiBhbnkpIHtcclxuICAgIHRoaXMucmVmID0gcmVmO1xyXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWU7XHJcbiAgICB0aGlzLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XHJcbiAgICB0aGlzLmNoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgdGhpcy5jaGlsZCA9IGNoaWxkO1xyXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGRFbnRpdGllcztcclxuICAgIHRoaXMucGF0aEZyb21Sb290ID0gcGF0aEZyb21Sb290O1xyXG4gICAgdGhpcy5wYXJlbnRUb0NoaWxkUmVmTmFtZSA9IHBhcmVudFRvQ2hpbGRSZWZOYW1lO1xyXG4gICAgdGhpcy5yb290ID0gcm9vdDtcclxuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xyXG4gICAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XHJcbiAgfVxyXG5cclxuICBvbkdyb3VwRGlzcGxheSA9ICgpID0+IHtcclxuICAgIHZhciBjdXJyZW50VmFsdWUgPSB0aGlzLnNob3dFbnRpdGllcyA9ICF0aGlzLnNob3dFbnRpdGllcztcclxuICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgIG4uc2hvd0VudGl0aWVzID0gY3VycmVudFZhbHVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrZWRDaGFuZ2VkID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tlZCkge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZCkge1xyXG4gICAgICAgIHZhciBwID0gdGhpcy5wYXJlbnQ7XHJcbiAgICAgICAgd2hpbGUgKHApIHtcclxuICAgICAgICAgIHAuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICBwID0gcC5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7IG4uY2hlY2tlZCA9IHRydWU7IH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZCkge1xyXG4gICAgICAgIHZhciBhbGxVbmNoZWNrZWQgPSB0aGlzLnBhcmVudC5ub2Rlcy5ldmVyeSgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gbi5jaGVja2VkID09PSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoYWxsVW5jaGVja2VkKVxyXG4gICAgICAgICAgdGhpcy5wYXJlbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB1bmNoZWNrQ2hpbGROb2RlcyA9IChub2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgIG5vZGUubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHVuY2hlY2tDaGlsZE5vZGVzKG4pO1xyXG4gICAgICAgICAgICBuLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5maW5kKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgIHVuY2hlY2tDaGlsZE5vZGVzKG4pO1xyXG4gICAgICAgICAgbi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIjxkaXY+XHJcbiAgPHRydS10b29sYmFyPlxyXG4gICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCInZXhwYW5kLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0V4cGFuZCdcIiBbZGlzYWJsZWRdPVwiIWRvbmVQcm9jZXNzaW5nXCIgKG9uQ2xpY2spPVwib25FeHBhbmRDbGlja2VkKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ2NvbGxhcHNlLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0NvbGxhcHNlJ1wiIFtkaXNhYmxlZF09XCIhZG9uZVByb2Nlc3NpbmdcIiAob25DbGljayk9XCJvbkNvbGxhcHNlQ2xpY2tlZCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICA8dHJ1LXRvb2xiYXItdGV4dCBbdGV4dF09XCInQ29waWVzOidcIj48L3RydS10b29sYmFyLXRleHQ+XHJcbiAgICA8dHJ1LXRvb2xiYXItZHJvcGRvd24gW29wdGlvbnNdPVwibnVtYmVyT2ZDb3BpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRPcHRpb24pXT1cInNlbGVjdGVkTnVtYmVyT2ZDb3BpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZG9uZVByb2Nlc3NpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25OdW1iZXJPZkNvcGllc0NoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgPC90cnUtdG9vbGJhci1kcm9wZG93bj5cclxuICA8L3RydS10b29sYmFyPlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGlhbG9nLWNvbnRlbnQgY2xvbmVcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXBOb2RlUmVuZGVyZXIgbGV0LWRhdGE+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhZGF0YS5jaGlsZCB8fCBkYXRhLnNob3dFbnRpdGllc1wiXHJcbiAgICAgICAgICAgY2xhc3M9XCJjbG9uZS1tb2RhbC10cmVlLWdyb3VwXCI+XHJcbiAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGEub25DaGVja2VkQ2hhbmdlZCgpXCJcclxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGEucm9vdFwiXHJcbiAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIC8+XHJcbiAgICAgICAgPGEgKGNsaWNrKT1cImRhdGEub25Hcm91cERpc3BsYXlOYW1lQ2xpY2tlZCgpXCJcclxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Nsb25lLW1vZGFsLXRyZWUtZ3JvdXAtcm9vdC1uYW1lJzogZGF0YS5yb290IHx8IGRhdGEuY2hpbGR9XCJcclxuICAgICAgICAgICBbbmdTdHlsZV09XCJ7J21heC13aWR0aCc6IGRhdGEuY2hpbGROb2RlID8gJzMwMHB4JyA6ICdhdXRvJ31cIj57e2RhdGEuZGlzcGxheU5hbWV9fTwvYT5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFkYXRhLnJvb3QgJiYgIWRhdGEuY2hpbGRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xvbmUtbW9kYWwtdHJlZS1ncm91cC1jb3VudFwiPih7e2RhdGEubm9kZXMubGVuZ3RofX0pPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHVsPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkYXRhLm5vZGVzOyBsZXQgbGFzdCA9IGxhc3RcIiB0cnVSZW5kZXJlZCAocmVuZGVyZWQpPVwib25SZW5kZXJlZCgpXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXBOb2RlUmVuZGVyZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGF9XCI+PC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ01lc3NhZ2VcIlxyXG4gICAgICAgICBjbGFzcz1cImNsb25lLW1vZGFsLWxvYWRpbmdcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjbG9uZS1tb2RhbC1sb2FkaW5nLW1lc3NhZ2VcIj57e2xvYWRpbmdNZXNzYWdlfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJkb25lUHJvY2Vzc2luZ1wiXHJcbiAgICAgICAgIGNsYXNzPVwiY2xvbmUtbW9kYWwtdHJlZVwiPlxyXG4gICAgICA8dWw+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRpc3BsYXlUcmVlOyBsZXQgbGFzdCA9IGxhc3RcIiB0cnVSZW5kZXJlZCAocmVuZGVyZWQpPVwib25SZW5kZXJlZCgpXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXBOb2RlUmVuZGVyZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGF9XCI+PC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGlhbG9nLWZvb3RlclwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkNsb25lKClcIiAoa2V5dXAuZW50ZXIpPVwib25DbG9uZSgpXCIgW2Rpc2FibGVkXT1cIiFkb25lUHJvY2Vzc2luZ1wiPkNsb25lPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNsb25lLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xvbmUtdmlldy90cnUtY2xvbmUtdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jbG9uZS12aWV3L3RydS1jbG9uZS12aWV3Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCN0QsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUFXO0lBa0MvQjtJQUNBO0lBQ0Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBeENWLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsY0FBYyxHQUFXLGtDQUFrQyxDQUFDO0lBQzVELGNBQWMsQ0FBa0M7SUFDaEQsc0JBQXNCLENBQTRCO0lBQ2xELGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdEIsUUFBUSxHQUFnQixJQUFJLENBQUM7SUFDN0Isa0JBQWtCLEdBQUc7UUFDbkIsWUFBWTtRQUNaLFNBQVM7UUFDVCxZQUFZO1FBQ1osU0FBUztRQUNULFFBQVE7UUFDUix5QkFBeUI7UUFDekIsY0FBYztRQUNkLHVCQUF1QjtRQUN2QixlQUFlO1FBQ2YsY0FBYztRQUNkLFlBQVk7UUFDWixZQUFZO1FBQ1osZUFBZTtRQUNmLGFBQWE7UUFDYixhQUFhO1FBQ2IsdUJBQXVCO1FBQ3ZCLEtBQUs7S0FDTixDQUFDO0lBQ0YsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLFFBQVEsR0FBZ0IsRUFBRSxDQUFDO0lBQzNCLGFBQWEsR0FBZ0IsRUFBRSxDQUFDO0lBQ2hDLGNBQWMsR0FBVyxDQUFD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LENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLGlCQUFpQixHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7d0JBQ3pCLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDcEIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7b0JBQ3pCLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNyQixDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcnVWaWV3QmFzZSB9IGZyb20gJy4uLy4uL2Jhc2Utdmlld3MvdHJ1LXZpZXctYmFzZSc7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi90b29sYmFyL2NsYXNzZXMvdHJ1LXRvb2xiYXItZHJvcGRvd24tb3B0aW9uJztcclxuaW1wb3J0IHsgVHJ1VGV4dE1hbmFnZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdGV4dC1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vZGVza3RvcC9zZXJ2aWNlcy90cnUtd2luZG93LWV2ZW50LWhhbmRsZXInO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFRhYmxlTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLXRhYmxlLWxvb2t1cCc7XHJcbmltcG9ydCB7IFRydVVpTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXVpLW5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IFRydU1vZGVsUHJvcGVydHlMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtcHJvcGVydHktbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxUeXBlTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLXR5cGUtbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxOYXZpZ2F0aW9uUHJvcGVydGllc0xvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC1uYXZpZ2F0aW9uLXByb3BlcnRpZXMtbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1TmF2aWdhdGlvblByb3BlcnR5Q29uZmlnIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90cnUtbmF2aWdhdGlvbi1wcm9wZXJ0eS1jb25maWcnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWNsb25lLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtY2xvbmUtdmlldy5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cnUtY2xvbmUtdmlldy5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1Q2xvbmVWaWV3IGV4dGVuZHMgVHJ1Vmlld0Jhc2Uge1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGxvYWRpbmdNZXNzYWdlOiBzdHJpbmcgPSAnU2VhcmNoaW5nIGZvciByZWxhdGVkIHJlY29yZHMuLi4nO1xyXG4gIG51bWJlck9mQ29waWVzOiBBcnJheTxJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uPlxyXG4gIHNlbGVjdGVkTnVtYmVyT2ZDb3BpZXM6IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb247XHJcbiAgY29udGV4dEZpbHRlcnMgPSBudWxsO1xyXG4gIHJvb3ROb2RlOiBOb2RlIHwgbnVsbCA9IG51bGw7XHJcbiAgaWdub3JlUHJvcGVydHlMaXN0ID0gW1xyXG4gICAgJ0NyZWF0ZWRSZWYnLFxyXG4gICAgJ0NyZWF0ZWQnLFxyXG4gICAgJ1VwZGF0ZWRSZWYnLFxyXG4gICAgJ1VwZGF0ZWQnLFxyXG4gICAgJ3Jvd3ZlcicsXHJcbiAgICAnX2N1c3RvbVZhbGlkYXRpb25FcnJvcnMnLFxyXG4gICAgJ2VudGl0eUFzcGVjdCcsXHJcbiAgICAnX2Fzc29jaWF0ZWREYXRhQ2FjaGVkJyxcclxuICAgICdfYmFja2luZ1N0b3JlJyxcclxuICAgICdfc2V0RGVmYXVsdHMnLFxyXG4gICAgJ18kdHlwZU5hbWUnLFxyXG4gICAgJ2VudGl0eVR5cGUnLFxyXG4gICAgJ18kaW50ZXJjZXB0b3InLFxyXG4gICAgJ2dldFByb3BlcnR5JyxcclxuICAgICdzZXRQcm9wZXJ0eScsXHJcbiAgICAnX3BlbmRpbmdCYWNraW5nU3RvcmVzJyxcclxuICAgICdSZWYnXHJcbiAgXTtcclxuICBkYXRhVHJlZSA9IFtdO1xyXG4gIGZsYXRMaXN0OiBBcnJheTxOb2RlPiA9IFtdO1xyXG4gIGNoaWxkRmxhdExpc3Q6IEFycmF5PE5vZGU+ID0gW107XHJcbiAgcHJvY2Vzc2VkQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgZG9uZVByb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNwbGF5VHJlZSA9IFt0aGlzLnJvb3ROb2RlXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgdGV4dE1hbmFnZXI6IFRydVRleHRNYW5hZ2VyLFxyXG4gICAgcHJvdGVjdGVkIHdpbmRvd0V2ZW50SGFuZGxlcjogVHJ1V2luZG93RXZlbnRIYW5kbGVyLFxyXG4gICAgcHJpdmF0ZSBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBwcml2YXRlIG1vZGVsVGFibGVMb29rdXA6IFRydU1vZGVsVGFibGVMb29rdXAsXHJcbiAgICBwcml2YXRlIG1vZGVsUHJvcGVydHlMb29rdXA6IFRydU1vZGVsUHJvcGVydHlMb29rdXAsXHJcbiAgICBwcml2YXRlIG1vZGVsVHlwZUxvb2t1cDogVHJ1TW9kZWxUeXBlTG9va3VwLFxyXG4gICAgcHJpdmF0ZSBtb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwOiBUcnVNb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwLFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb24pIHtcclxuICAgIHN1cGVyKHRleHRNYW5hZ2VyLCB3aW5kb3dFdmVudEhhbmRsZXIpO1xyXG4gICAgdGhpcy5udW1iZXJPZkNvcGllcyA9IHRoaXMuZ2V0TnVtYmVyT2ZDb3BpZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWROdW1iZXJPZkNvcGllcyA9IHRoaXMubnVtYmVyT2ZDb3BpZXNbMF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE51bWJlck9mQ29waWVzID0gKCk6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+ID0+IHtcclxuICAgIGxldCBjb3BpZXM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+ID0gW107XHJcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAyNTsgaSsrKSB7XHJcbiAgICAgIGNvcGllcy5wdXNoKHtcclxuICAgICAgICB2YWx1ZTogaSxcclxuICAgICAgICBsYWJlbDogaS50b1N0cmluZygpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvcGllcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvcGVydHlJc0FsbG93ZWQgPSAocHJvcGVydHlOYW1lOiBzdHJpbmcsIHRhYmxlTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICBpZiAocHJvcGVydHlOYW1lID09PSB0YWJsZU5hbWUgKyAnUmVmJykgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHByb3BlcnR5TmFtZS5zdGFydHNXaXRoKCdvJykpIHJldHVybiBmYWxzZTtcclxuICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMubW9kZWxQcm9wZXJ0eUxvb2t1cC5sb29rdXAuZ2V0KHByb3BlcnR5TmFtZSk7XHJcbiAgICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHkuZXhjbHVkZUZyb21DbG9uaW5nKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5pZ25vcmVQcm9wZXJ0eUxpc3Quc29tZShmdW5jdGlvbiAocHJvcGVydHlUb0lnbm9yZSkgeyByZXR1cm4gcHJvcGVydHlUb0lnbm9yZSA9PT0gcHJvcGVydHlOYW1lOyB9KSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UHJvdG90eXBlUHJvcGVydGllcyA9IChvYmo6IGFueSkgPT4ge1xyXG4gICAgdmFyIHJlc3VsdCA9IFtdO1xyXG4gICAgZm9yICh2YXIgcHJvcCBpbiBvYmopIHtcclxuICAgICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcclxuICAgICAgICByZXN1bHQucHVzaChwcm9wKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q2hpbGRQcm9wZXJ0aWVzRm9yQ3VycmVudEVudGl0eSA9IChjdXJyZW50RW50aXR5OiBhbnkpID0+IHtcclxuICAgIC8vdmFyIHByb3BlcnR5TmFtZXMgPSBPYmplY3Qua2V5cyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3VycmVudEVudGl0eSkpO1xyXG4gICAgbGV0IGVudGl0eU5hbWUgPSB0aGlzLmdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUoY3VycmVudEVudGl0eS4kdHlwZSk7XHJcbiAgICBsZXQgY2hpbGRMb29rdXAgPSB0aGlzLm1vZGVsTmF2aWdhdGlvblByb3BlcnRpZXNMb29rdXAubG9va3VwLmdldChlbnRpdHlOYW1lKSBhcyBUcnVOYXZpZ2F0aW9uUHJvcGVydHlDb25maWdbXTtcclxuICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmtleXMoY3VycmVudEVudGl0eSk7XHJcbiAgICBsZXQgbmF2aWdhdGlvblByb3BlcnR5TmFtZXMgPSBwcm9wZXJ0eU5hbWVzLmZpbHRlcigobikgPT4geyByZXR1cm4gbi5zdGFydHNXaXRoKCdvJyk7IH0pO1xyXG4gICAgbGV0IGNoaWxkTmF2aWdhdGlvblByb3BlcnR5TmFtZXMgPSBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lcy5maWx0ZXIoKG4pID0+IHtcclxuICAgICAgcmV0dXJuIGNoaWxkTG9va3VwLnNvbWUoKGxvb2t1cDogYW55KSA9PiB7IHJldHVybiBsb29rdXAubmFtZSA9PT0gbjsgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgY2hpbGRQcm9wZXJ0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBjaGlsZE5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzLmZpbHRlcihmdW5jdGlvbiAobikge1xyXG4gICAgICBpZiAoY3VycmVudEVudGl0eVtuXSAmJiBjdXJyZW50RW50aXR5W25dLmxlbmd0aClcclxuICAgICAgICBjaGlsZFByb3BlcnRpZXMucHVzaCh7XHJcbiAgICAgICAgICBwYXJlbnRUb0NoaWxkUmVmTmFtZTogbixcclxuICAgICAgICAgIGVudGl0aWVzOiBjdXJyZW50RW50aXR5W25dXHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gY2hpbGRQcm9wZXJ0aWVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUeXBlRnJvbUVudGl0eVR5cGVOYW1lID0gKHR5cGVOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgIHZhciBwMXMgPSB0eXBlTmFtZS5zcGxpdCgnLCcpWzBdO1xyXG4gICAgdmFyIHAycyA9IHAxcy5zcGxpdCgnLicpO1xyXG4gICAgcmV0dXJuIHAyc1twMnMubGVuZ3RoIC0gMV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkQ2xvbmVUcmVlID0gKGN1cnJlbnRFbnRpdHk6IGFueSwgbm9kZTogYW55KSA9PiB7XHJcbiAgICB2YXIgY2hpbGRQcm9wZXJ0aWVzID0gdGhpcy5nZXRDaGlsZFByb3BlcnRpZXNGb3JDdXJyZW50RW50aXR5KGN1cnJlbnRFbnRpdHkpO1xyXG4gICAgY2hpbGRQcm9wZXJ0aWVzLmZvckVhY2goKGNoaWxkUHJvcGVydHk6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdHlwZSA9IHRoaXMuZ2V0VHlwZUZyb21FbnRpdHlUeXBlTmFtZShjaGlsZFByb3BlcnR5LmVudGl0aWVzWzBdLiR0eXBlKTtcclxuICAgICAgICBsZXQgY2hpbGRMb29rdXAgPSB0aGlzLm1vZGVsVGFibGVMb29rdXAubG9va3VwLmdldCh0eXBlKTtcclxuICAgICAgICBsZXQgZ3JvdXBOb2RlID0gbmV3IE5vZGUoXHJcbiAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgY2hpbGRQcm9wZXJ0eS5lbnRpdGllc1swXS5jb25zdHJ1Y3Rvci5uYW1lLFxyXG4gICAgICAgICAgY2hpbGRMb29rdXA/LnBsdXJhbExhYmVsIGFzIHN0cmluZyxcclxuICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgIFtdLFxyXG4gICAgICAgICAgJycsXHJcbiAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgICBub2RlLFxyXG4gICAgICAgICAgbnVsbFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmxhdExpc3QucHVzaChncm91cE5vZGUpO1xyXG5cclxuICAgICAgICBjaGlsZFByb3BlcnR5LmVudGl0aWVzLmZvckVhY2goKGNoaWxkRW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCB0eXBlID0gdGhpcy5nZXRUeXBlRnJvbUVudGl0eVR5cGVOYW1lKGNoaWxkRW50aXR5LiR0eXBlKTtcclxuICAgICAgICAgIGxldCBjaGlsZE5vZGUgPSBuZXcgTm9kZShcclxuICAgICAgICAgICAgY2hpbGRFbnRpdHlbdHlwZSArICdSZWYnXSxcclxuICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgICAgW10sXHJcbiAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICBjaGlsZFByb3BlcnR5LnBhcmVudFRvQ2hpbGRSZWZOYW1lLFxyXG4gICAgICAgICAgICBmYWxzZSxcclxuICAgICAgICAgICAgZ3JvdXBOb2RlLFxyXG4gICAgICAgICAgICBjaGlsZEVudGl0eVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNoaWxkRmxhdExpc3QucHVzaChjaGlsZE5vZGUpO1xyXG4gICAgICAgICAgZ3JvdXBOb2RlLm5vZGVzLnB1c2goY2hpbGROb2RlKTtcclxuICAgICAgICAgIHRoaXMuYnVpbGRDbG9uZVRyZWUoY2hpbGRFbnRpdHksIGNoaWxkTm9kZSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIG5vZGUubm9kZXMucHVzaChncm91cE5vZGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jRm9yRWFjaFJlY29yZElkID0gKGFycjogYW55LCBjYjogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gYXJyLnJlZHVjZSgocDogYW55LCBjOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHAudGhlbigoKSA9PiBjYihjKSk7XHJcbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoUmVjb3JkSWQgPSAoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgdmFyIGMgPSBjaGlsZDtcclxuICAgIHZhciBkYXRhID0ge1xyXG4gICAgICByZWY6IGMucmVmLFxyXG4gICAgICB0YWJsZU5hbWU6IGMudGFibGVOYW1lXHJcbiAgICB9O1xyXG4gICAgZGF0YSA9IHRoaXMudGV4dE1hbmFnZXIuZm9ybWF0QXNVcmxQYXJhbWV0ZXJzKGRhdGEpO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55KSA9PiB7XHJcbiAgICAgIGMuZGlzcGxheU5hbWUgPSBjaGlsZC5lbnRpdHkuSElEO1xyXG4gICAgICB0aGlzLnByb2Nlc3NlZENvdW50Kys7XHJcbiAgICAgIHRoaXMubG9hZGluZ01lc3NhZ2UgPSAnRm9ybWF0dGluZyBkYXRhLi4ucHJvY2Vzc2VkICgnICsgdGhpcy5wcm9jZXNzZWRDb3VudCArICcvJyArIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggKyAnKSByZWNvcmRzJztcclxuICAgICAgaWYgKHRoaXMucHJvY2Vzc2VkQ291bnQgPj0gdGhpcy5jaGlsZEZsYXRMaXN0Lmxlbmd0aClcclxuICAgICAgICB0aGlzLmxvYWRpbmdNZXNzYWdlID0gJ1JlbmRlcmluZyB0cmVlLi4uJztcclxuICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYXZlcnNlID0gKG5vZGU6IGFueSwgY3VycmVudEVudGl0eTogYW55KSA9PiB7XHJcbiAgICB2YXIgZ3JvdXAgPSAhbm9kZS5jaGlsZDtcclxuICAgIGlmIChncm91cCkge1xyXG4gICAgICB2YXIgZ3JvdXBOb2RlcyA9IG5vZGUubm9kZXM7XHJcbiAgICAgIGdyb3VwTm9kZXMuZm9yRWFjaCgoZ3JvdXBOb2RlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZ3JvdXBOb2RlLmNoZWNrZWQpXHJcbiAgICAgICAgICBncm91cE5vZGUubm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50cmF2ZXJzZShjaGlsZE5vZGUsIGN1cnJlbnRFbnRpdHkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKG5vZGUuY2hlY2tlZCkge1xyXG4gICAgICAgIGxldCB0YWJsZVR5cGUgPSB0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKHRoaXMudGFibGVOYW1lKTtcclxuICAgICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGFibGVUeXBlLCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgdGhpcy5nZXRQcm90b3R5cGVQcm9wZXJ0aWVzKG5ld0VudGl0eSkuZm9yRWFjaCgocHJvcGVydHlOYW1lKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eUlzQWxsb3dlZChwcm9wZXJ0eU5hbWUsIG5vZGUudGFibGVOYW1lKSkge1xyXG4gICAgICAgICAgICBuZXdFbnRpdHlbcHJvcGVydHlOYW1lIGFzIE9iamVjdEtleV0gPSBub2RlLmVudGl0eVtwcm9wZXJ0eU5hbWVdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBuZXdFbnRpdHkuc2V0UHJvcGVydHkhKCdfYXNzb2NpYXRlZERhdGFDYWNoZWQnLCB0cnVlKTtcclxuXHJcbiAgICAgICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbFRhYmxlTG9va3VwLmxvb2t1cC5nZXQobm9kZS50YWJsZU5hbWUpO1xyXG4gICAgICAgIGN1cnJlbnRFbnRpdHlbbm9kZS5wYXJlbnRUb0NoaWxkUmVmTmFtZV0ucHVzaChuZXdFbnRpdHkpO1xyXG4gICAgICAgIGxldCBjaGlsZE5vZGVzID0gbm9kZS5ub2RlcztcclxuICAgICAgICBjaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hpbGROb2RlLmNoZWNrZWQpXHJcbiAgICAgICAgICAgIGNoaWxkTm9kZS5ub2Rlcy5mb3JFYWNoKChncm91cE5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudHJhdmVyc2UoZ3JvdXBOb2RlLCBuZXdFbnRpdHkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YUZvckNsb25pbmcgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmNsb25lKHtcclxuICAgICAgcmVmOiB0aGlzLmVudGl0eS5SZWYsXHJcbiAgICAgIHRhYmxlTmFtZTogdGhpcy50YWJsZU5hbWVcclxuICAgIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhVHJlZSA9IHJlc3BvbnNlLkNvbnRlbnRbMF07XHJcbiAgICAgICAgdGhpcy5idWlsZENsb25lVHJlZSh0aGlzLmRhdGFUcmVlLCB0aGlzLnJvb3ROb2RlKTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nTWVzc2FnZSA9ICdGb3JtYXR0aW5nIGRhdGEuLi4oMC8nICsgdGhpcy5jaGlsZEZsYXRMaXN0Lmxlbmd0aCArICcpIHJlY29yZHMnO1xyXG4gICAgICAgIHRoaXMuYXN5bmNGb3JFYWNoUmVjb3JkSWQodGhpcy5jaGlsZEZsYXRMaXN0LCB0aGlzLmZldGNoUmVjb3JkSWQpLnRoZW4odGhpcy5vbkRvbmUpO1xyXG5cclxuICAgICAgICB0aGlzLmRpc3BsYXlUcmVlID0gW3RoaXMucm9vdE5vZGVdO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGV4OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnZXJyb3InLCB0aGlzLnVpTm90aWZpY2F0aW9uLmVycm9yKCdTZXJ2ZXIgRXJyb3I6ICcgKyBleC5zdGF0dXMsIFtleC5lcnJvci5NZXNzYWdlXSkpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DbG9uZSA9ICgpID0+IHtcclxuICAgIGxldCBjb3BpZXMgPSB0aGlzLnNlbGVjdGVkTnVtYmVyT2ZDb3BpZXMudmFsdWU7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvcGllczsgaSsrKSB7XHJcbiAgICAgIGxldCB0YWJsZVR5cGUgPSB0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKHRoaXMudGFibGVOYW1lKTtcclxuICAgICAgbGV0IG5ld0VudGl0eSA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuYWRkKHRhYmxlVHlwZSwgdGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgdGhpcy5nZXRQcm90b3R5cGVQcm9wZXJ0aWVzKHRoaXMuZW50aXR5KS5mb3JFYWNoKChwcm9wZXJ0eU5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BlcnR5SXNBbGxvd2VkKHByb3BlcnR5TmFtZSwgdGhpcy50YWJsZU5hbWUpKSB7XHJcbiAgICAgICAgICBuZXdFbnRpdHlbcHJvcGVydHlOYW1lIGFzIE9iamVjdEtleV0gPSB0aGlzLmVudGl0eVtwcm9wZXJ0eU5hbWVdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBuZXdFbnRpdHkuc2V0UHJvcGVydHkhKCdfYXNzb2NpYXRlZERhdGFDYWNoZWQnLCB0cnVlKTtcclxuXHJcbiAgICAgIHRoaXMudHJhdmVyc2UodGhpcy5kaXNwbGF5VHJlZVswXSwgbmV3RW50aXR5KTtcclxuICAgICAgdGhpcy52aWV3LmVudGl0aWVzPy5wdXNoKG5ld0VudGl0eSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLndpbmRvd0V2ZW50SGFuZGxlci5jbG9zZSgpO1xyXG4gIH07XHJcblxyXG4gIG9uRG9uZSA9ICgpID0+IHtcclxuICAgIHRoaXMuZG9uZVByb2Nlc3NpbmcgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25SZW5kZXJlZCA9ICgpID0+IHtcclxuICAgIHRoaXMubG9hZGluZ01lc3NhZ2UgPSAnJztcclxuICB9O1xyXG5cclxuICBvbkNhbmNlbCA9ICgpID0+IHtcclxuICAgIHRoaXMud2luZG93RXZlbnRIYW5kbGVyLmNsb3NlKCk7XHJcbiAgfTtcclxuXHJcbiAgb25FeHBhbmRDbGlja2VkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jaGlsZEZsYXRMaXN0LmZpbmQoKG5vZGU6IE5vZGUpID0+IHsgbm9kZS5zaG93RW50aXRpZXMgPSB0cnVlOyB9KTtcclxuICB9XHJcblxyXG4gIG9uQ29sbGFwc2VDbGlja2VkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jaGlsZEZsYXRMaXN0LmZpbmQoKG5vZGU6IE5vZGUpID0+IHsgbm9kZS5zaG93RW50aXRpZXMgPSBmYWxzZTsgfSk7XHJcbiAgfVxyXG5cclxuICBvbk51bWJlck9mQ29waWVzQ2hhbmdlZCA9IChldmVudDogYW55KSA9PiB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRhYmxlTmFtZSA9IHRoaXMudmlldy53aW5kb3cudGFibGVOYW1lO1xyXG4gICAgdGhpcy5lbnRpdGllcyA9IHRoaXMudmlldy5lbnRpdGllcyBhcyBhbnk7XHJcbiAgICB0aGlzLmVudGl0eSA9IHRoaXMuZW50aXRpZXNbdGhpcy52aWV3LmVudGl0eUluZGV4XTtcclxuICAgIHRoaXMucm9vdE5vZGUgPSBuZXcgTm9kZShudWxsLCB0aGlzLnRhYmxlTmFtZSwgdGhpcy50YWJsZU5hbWUsIGZhbHNlLCB0cnVlLCBudWxsLCBudWxsLCBudWxsLCB0cnVlLCBudWxsLCBudWxsKTtcclxuICAgIHRoaXMuc2V0RW50aXR5RGlzcGxheVZhbHVlcyh0aGlzLnZpZXcud2luZG93LnRhYmxlTmFtZSk7XHJcbiAgICB0aGlzLmdldERhdGFGb3JDbG9uaW5nKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGF0YVRyZWUubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuZmxhdExpc3QubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggPSAwO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgTm9kZSB7XHJcbiAgcmVmOiBudW1iZXIgfCBudWxsO1xyXG4gIHRhYmxlTmFtZTogc3RyaW5nO1xyXG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgY2hlY2tlZDogYm9vbGVhbjtcclxuICBjaGlsZDogYW55O1xyXG4gIGNoaWxkTm9kZXM6IGFueTtcclxuICBzaG93RW50aXRpZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXRoRnJvbVJvb3Q6IHN0cmluZyB8IG51bGw7XHJcbiAgcGFyZW50VG9DaGlsZFJlZk5hbWU6IHN0cmluZyB8IG51bGw7XHJcbiAgbm9kZXM6IE5vZGVbXSA9IFtdO1xyXG4gIHJvb3Q6IGFueTtcclxuICBwYXJlbnQ6IGFueTtcclxuICBlbnRpdHk6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwsXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmcsXHJcbiAgICBjaGlsZDogYW55LFxyXG4gICAgY2hlY2tlZDogYm9vbGVhbixcclxuICAgIGNoaWxkRW50aXRpZXM6IGFueSxcclxuICAgIHBhdGhGcm9tUm9vdDogc3RyaW5nIHwgbnVsbCxcclxuICAgIHBhcmVudFRvQ2hpbGRSZWZOYW1lOiBzdHJpbmcgfCBudWxsLFxyXG4gICAgcm9vdDogYm9vbGVhbixcclxuICAgIHBhcmVudDogYW55LFxyXG4gICAgZW50aXR5OiBhbnkpIHtcclxuICAgIHRoaXMucmVmID0gcmVmO1xyXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWU7XHJcbiAgICB0aGlzLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XHJcbiAgICB0aGlzLmNoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgdGhpcy5jaGlsZCA9IGNoaWxkO1xyXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGRFbnRpdGllcztcclxuICAgIHRoaXMucGF0aEZyb21Sb290ID0gcGF0aEZyb21Sb290O1xyXG4gICAgdGhpcy5wYXJlbnRUb0NoaWxkUmVmTmFtZSA9IHBhcmVudFRvQ2hpbGRSZWZOYW1lO1xyXG4gICAgdGhpcy5yb290ID0gcm9vdDtcclxuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xyXG4gICAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XHJcbiAgfVxyXG5cclxuICBvbkdyb3VwRGlzcGxheSA9ICgpID0+IHtcclxuICAgIHZhciBjdXJyZW50VmFsdWUgPSB0aGlzLnNob3dFbnRpdGllcyA9ICF0aGlzLnNob3dFbnRpdGllcztcclxuICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgIG4uc2hvd0VudGl0aWVzID0gY3VycmVudFZhbHVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrZWRDaGFuZ2VkID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tlZCkge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZCkge1xyXG4gICAgICAgIHZhciBwID0gdGhpcy5wYXJlbnQ7XHJcbiAgICAgICAgd2hpbGUgKHApIHtcclxuICAgICAgICAgIHAuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICBwID0gcC5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7IG4uY2hlY2tlZCA9IHRydWU7IH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZCkge1xyXG4gICAgICAgIHZhciBhbGxVbmNoZWNrZWQgPSB0aGlzLnBhcmVudC5ub2Rlcy5ldmVyeSgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gbi5jaGVja2VkID09PSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoYWxsVW5jaGVja2VkKVxyXG4gICAgICAgICAgdGhpcy5wYXJlbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB1bmNoZWNrQ2hpbGROb2RlcyA9IChub2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgIG5vZGUubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHVuY2hlY2tDaGlsZE5vZGVzKG4pO1xyXG4gICAgICAgICAgICBuLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5maW5kKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgIHVuY2hlY2tDaGlsZE5vZGVzKG4pO1xyXG4gICAgICAgICAgbi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICA8dHJ1LXRvb2xiYXI+XHJcbiAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIidleHBhbmQtaWNvbidcIiBbdG9vbHRpcF09XCInRXhwYW5kJ1wiIFtkaXNhYmxlZF09XCIhZG9uZVByb2Nlc3NpbmdcIiAob25DbGljayk9XCJvbkV4cGFuZENsaWNrZWQoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCInY29sbGFwc2UtaWNvbidcIiBbdG9vbHRpcF09XCInQ29sbGFwc2UnXCIgW2Rpc2FibGVkXT1cIiFkb25lUHJvY2Vzc2luZ1wiIChvbkNsaWNrKT1cIm9uQ29sbGFwc2VDbGlja2VkKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgIDx0cnUtdG9vbGJhci10ZXh0IFt0ZXh0XT1cIidDb3BpZXM6J1wiPjwvdHJ1LXRvb2xiYXItdGV4dD5cclxuICAgIDx0cnUtdG9vbGJhci1kcm9wZG93biBbb3B0aW9uc109XCJudW1iZXJPZkNvcGllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZE9wdGlvbildPVwic2VsZWN0ZWROdW1iZXJPZkNvcGllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFkb25lUHJvY2Vzc2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbk51bWJlck9mQ29waWVzQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICA8L3RydS10b29sYmFyLWRyb3Bkb3duPlxyXG4gIDwvdHJ1LXRvb2xiYXI+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1kaWFsb2ctY29udGVudCBjbG9uZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlICNncm91cE5vZGVSZW5kZXJlciBsZXQtZGF0YT5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFkYXRhLmNoaWxkIHx8IGRhdGEuc2hvd0VudGl0aWVzXCJcclxuICAgICAgICAgICBjbGFzcz1cImNsb25lLW1vZGFsLXRyZWUtZ3JvdXBcIj5cclxuICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJkYXRhLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0YS5vbkNoZWNrZWRDaGFuZ2VkKClcIlxyXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGF0YS5yb290XCJcclxuICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgLz5cclxuICAgICAgICA8YSAoY2xpY2spPVwiZGF0YS5vbkdyb3VwRGlzcGxheU5hbWVDbGlja2VkKClcIlxyXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2xvbmUtbW9kYWwtdHJlZS1ncm91cC1yb290LW5hbWUnOiBkYXRhLnJvb3QgfHwgZGF0YS5jaGlsZH1cIlxyXG4gICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbWF4LXdpZHRoJzogZGF0YS5jaGlsZE5vZGUgPyAnMzAwcHgnIDogJ2F1dG8nfVwiPnt7ZGF0YS5kaXNwbGF5TmFtZX19PC9hPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWRhdGEucm9vdCAmJiAhZGF0YS5jaGlsZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjbG9uZS1tb2RhbC10cmVlLWdyb3VwLWNvdW50XCI+KHt7ZGF0YS5ub2Rlcy5sZW5ndGh9fSk8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8dWw+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRhdGEubm9kZXM7IGxldCBsYXN0ID0gbGFzdFwiIHRydVJlbmRlcmVkIChyZW5kZXJlZCk9XCJvblJlbmRlcmVkKClcIj5cclxuICAgICAgICAgIDxkaXYgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cE5vZGVSZW5kZXJlcjsgY29udGV4dDogeyRpbXBsaWNpdDogZGF0YX1cIj48L2Rpdj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nTWVzc2FnZVwiXHJcbiAgICAgICAgIGNsYXNzPVwiY2xvbmUtbW9kYWwtbG9hZGluZ1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImNsb25lLW1vZGFsLWxvYWRpbmctbWVzc2FnZVwiPnt7bG9hZGluZ01lc3NhZ2V9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImRvbmVQcm9jZXNzaW5nXCJcclxuICAgICAgICAgY2xhc3M9XCJjbG9uZS1tb2RhbC10cmVlXCI+XHJcbiAgICAgIDx1bD5cclxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgZGlzcGxheVRyZWU7IGxldCBsYXN0ID0gbGFzdFwiIHRydVJlbmRlcmVkIChyZW5kZXJlZCk9XCJvblJlbmRlcmVkKClcIj5cclxuICAgICAgICAgIDxkaXYgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cE5vZGVSZW5kZXJlcjsgY29udGV4dDogeyRpbXBsaWNpdDogZGF0YX1cIj48L2Rpdj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1kaWFsb2ctZm9vdGVyXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9uQ2xvbmUoKVwiIChrZXl1cC5lbnRlcik9XCJvbkNsb25lKClcIiBbZGlzYWJsZWRdPVwiIWRvbmVQcm9jZXNzaW5nXCI+Q2xvbmU8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -5752,20 +5752,18 @@ class TruCloneView extends TruViewBase {
|
|
|
5752
5752
|
buildCloneTree = (currentEntity, node) => {
|
|
5753
5753
|
var childProperties = this.getChildPropertiesForCurrentEntity(currentEntity);
|
|
5754
5754
|
childProperties.forEach((childProperty) => {
|
|
5755
|
-
childProperty.entities
|
|
5756
|
-
|
|
5757
|
-
|
|
5758
|
-
|
|
5759
|
-
|
|
5760
|
-
|
|
5761
|
-
|
|
5762
|
-
|
|
5763
|
-
|
|
5764
|
-
|
|
5765
|
-
this.buildCloneTree(entity, childNode);
|
|
5766
|
-
});
|
|
5767
|
-
node.nodes.push(groupNode);
|
|
5755
|
+
let type = this.getTypeFromEntityTypeName(childProperty.entities[0].$type);
|
|
5756
|
+
let childLookup = this.modelTableLookup.lookup.get(type);
|
|
5757
|
+
let groupNode = new Node(null, childProperty.entities[0].constructor.name, childLookup?.pluralLabel, false, true, [], '', null, false, node, null);
|
|
5758
|
+
this.flatList.push(groupNode);
|
|
5759
|
+
childProperty.entities.forEach((childEntity) => {
|
|
5760
|
+
let type = this.getTypeFromEntityTypeName(childEntity.$type);
|
|
5761
|
+
let childNode = new Node(childEntity[type + 'Ref'], type, type, true, true, [], '', childProperty.parentToChildRefName, false, groupNode, childEntity);
|
|
5762
|
+
this.childFlatList.push(childNode);
|
|
5763
|
+
groupNode.nodes.push(childNode);
|
|
5764
|
+
this.buildCloneTree(childEntity, childNode);
|
|
5768
5765
|
});
|
|
5766
|
+
node.nodes.push(groupNode);
|
|
5769
5767
|
});
|
|
5770
5768
|
};
|
|
5771
5769
|
asyncForEachRecordId = (arr, cb) => {
|
|
@@ -5811,7 +5809,7 @@ class TruCloneView extends TruViewBase {
|
|
|
5811
5809
|
});
|
|
5812
5810
|
newEntity.setProperty('_associatedDataCached', true);
|
|
5813
5811
|
let childLookup = this.modelTableLookup.lookup.get(node.tableName);
|
|
5814
|
-
currentEntity[
|
|
5812
|
+
currentEntity[node.parentToChildRefName].push(newEntity);
|
|
5815
5813
|
let childNodes = node.nodes;
|
|
5816
5814
|
childNodes.forEach((childNode) => {
|
|
5817
5815
|
if (childNode.checked)
|