@yuuvis/client-core 0.7.1 → 0.7.3

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.
@@ -253,7 +253,7 @@ export class DmsService {
253
253
  .map((key) => `${key}=${options[key]}`)
254
254
  .join('&')
255
255
  : '';
256
- return this.#backend.post(`/dms/objects?${query}}`, { objects: mappedObjects }, ApiBase.core);
256
+ return this.#backend.post(`/dms/objects?${query}`, { objects: mappedObjects }, ApiBase.core);
257
257
  }
258
258
  /**
259
259
  * Get a bunch of dms objects.
@@ -437,4 +437,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
437
437
  providedIn: 'root'
438
438
  }]
439
439
  }] });
440
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFjLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBVXpELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFDcEQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sVUFBVTtJQUNyQixjQUFjLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFD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QUssRUFBRSxlQUFlO1lBQ3RCLFdBQVc7U0FDWixDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzsrR0F0ZlUsVUFBVTttSEFBVixVQUFVLGNBRlQsTUFBTTs7NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWxheSwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERtc09iamVjdCB9IGZyb20gJy4uLy4uL21vZGVsL2Rtcy1vYmplY3QubW9kZWwnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcbmltcG9ydCB7IEFwaUJhc2UgfSBmcm9tICcuLi9iYWNrZW5kL2FwaS5lbnVtJztcbmltcG9ydCB7IEh0dHBPcHRpb25zIH0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWNrZW5kU2VydmljZSB9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJy4uL2V2ZW50L2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgWXV2RXZlbnRUeXBlIH0gZnJvbSAnLi4vZXZlbnQvZXZlbnRzJztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoUmVzcG9uc2UsIFNlYXJjaFJlc3VsdCwgU2VhcmNoUmVzdWx0Q29udGVudCwgU2VhcmNoUmVzdWx0SXRlbSB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2guc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFzZU9iamVjdFR5cGVGaWVsZCwgQ29udGVudFN0cmVhbUZpZWxkLCBTeXN0ZW1SZXN1bHQgfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLmVudW0nO1xuaW1wb3J0IHsgU3lzdGVtU2VydmljZSB9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vdXBsb2FkL3VwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENvcmVBcGlPYmplY3QsXG4gIENvcmVBcGlPYmplY3RQcm9wZXJ0eSxcbiAgQ29yZUFwaVJlc3BvbnNlLFxuICBPYmplY3RDb3B5T3B0aW9ucyxcbiAgT2JqZWN0RGVsZXRlT3B0aW9ucyxcbiAgT2JqZWN0RGVsZXRlUmVzdWx0LFxuICBPYmplY3RNb3ZlT3B0aW9uc1xufSBmcm9tICcuL2Rtcy5zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnLi4vLi4vdXRpbC91dGlscy5oZWxwZXIuZW51bSc7XG4vKipcbiAqIFNlcnZpY2UgZm9yIHdvcmtpbmcgd2l0aCBkbXMgb2JqZWN0czogY3JlYXRlIHRoZW0sIGRlbGV0ZSwgZXRjLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEbXNTZXJ2aWNlIHtcbiAgI3NlYXJjaFNlcnZpY2UgPSBpbmplY3QoU2VhcmNoU2VydmljZSk7XG4gICNiYWNrZW5kID0gaW5qZWN0KEJhY2tlbmRTZXJ2aWNlKTtcbiAgI2V2ZW50U2VydmljZSA9IGluamVjdChFdmVudFNlcnZpY2UpO1xuICAjdXBsb2FkU2VydmljZSA9IGluamVjdChVcGxvYWRTZXJ2aWNlKTtcblxuICAvLyBnZW5lcmFsIHRyaWdnZXIgb3BlcmF0b3IgdG8gaGFuZGxlIGFsbCBkbXMgZXZlbnRzXG4gIHByaXZhdGUgdHJpZ2dlckV2ZW50KGV2ZW50OiBZdXZFdmVudFR5cGUsIGlkPzogc3RyaW5nLCBzaWxlbnQgPSBmYWxzZSkge1xuICAgIHJldHVybiAoc3RyZWFtOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4gPT5cbiAgICAgIHN0cmVhbS5waXBlKFxuICAgICAgICAvLyB1cGRhdGUgZG9lcyBub3QgcmV0dXJuIHBlcm1pc3Npb25zLCBzbyB3ZSBuZWVkIHRvIHJlLWxvYWQgdGhlIHdob2xlIGRtcyBvYmplY3RcbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIG9uY2UgcGVybWlzc2lvbnMgYXJlIHByb3ZpZGVkXG4gICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiAoIWlkID8gb2YocmVzKSA6IHRoaXMuZ2V0RG1zT2JqZWN0KGlkKSkpLFxuICAgICAgICAvLyBUT0RPOiBlbmFibGUgb25jZSBwZXJtaXNzaW9ucyBhcmUgcHJvdmlkZWRcbiAgICAgICAgLy8gbWFwKChyZXMpID0+IHRoaXMuc2VhcmNoUmVzdWx0VG9EbXNPYmplY3QodGhpcy5zZWFyY2hTZXJ2aWNlLnRvU2VhcmNoUmVzdWx0KHJlcykuaXRlbXNbMF0pKSxcbiAgICAgICAgdGFwKChyZXM6IGFueSkgPT4gIXNpbGVudCAmJiB0aGlzLiNldmVudFNlcnZpY2UudHJpZ2dlcihldmVudCwgcmVzKSlcbiAgICAgICk7XG4gIH1cblxuICAvLyBnZW5lcmFsIHRyaWdnZXIgb3BlcmF0b3IgdG8gaGFuZGxlIGFsbCBkbXMgZXZlbnRzXG4gICN0cmlnZ2VyRXZlbnRzKGV2ZW50OiBZdXZFdmVudFR5cGUsIGlkcz86IHN0cmluZ1tdLCBzaWxlbnQgPSBmYWxzZSkge1xuICAgIHJldHVybiAoc3RyZWFtOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4gPT5cbiAgICAgIHN0cmVhbS5waXBlKFxuICAgICAgICAvLyB1cGRhdGUgZG9lcyBub3QgcmV0dXJuIHBlcm1pc3Npb25zLCBzbyB3ZSBuZWVkIHRvIHJlLWxvYWQgdGhlIHdob2xlIGRtcyBvYmplY3RcbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIG9uY2UgcGVybWlzc2lvbnMgYXJlIHByb3ZpZGVkXG4gICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiAoIWlkcyA/IG9mKHJlcykgOiB0aGlzLmdldERtc09iamVjdHMoaWRzKSkpLFxuICAgICAgICAvLyBUT0RPOiBlbmFibGUgb25jZSBwZXJtaXNzaW9ucyBhcmUgcHJvdmlkZWRcbiAgICAgICAgLy8gbWFwKChfcmVzOiBhbnlbXSkgPT4gX3Jlcy5tYXAoKHJlcywgaSkgPT4gcmVzPy5fZXJyb3IgPyB7IC4uLnJlcywgaWQ6IGlkcz9baV0gfSA6IHRoaXMuc2VhcmNoUmVzdWx0VG9EbXNPYmplY3QodGhpcy5zZWFyY2hTZXJ2aWNlLnRvU2VhcmNoUmVzdWx0KHJlcykuaXRlbXNbMF0pKSksXG4gICAgICAgIG1hcCgoX3JlczogYW55W10pID0+IF9yZXMubWFwKChyZXMsIGkpID0+IChyZXM/Ll9lcnJvciAmJiBpZHMgPyB7IC4uLnJlcywgaWQ6IGlkc1tpXSB9IDogcmVzKSkpLFxuICAgICAgICB0YXAoKHJlczogYW55KSA9PiAhc2lsZW50ICYmIHJlcy5mb3JFYWNoKChvOiBhbnkpID0+IG8gJiYgdGhpcy4jZXZlbnRTZXJ2aWNlLnRyaWdnZXIoZXZlbnQsIG8pKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIG5ldyBkbXMgb2JqZWN0KHMpLiBQcm92aWRpbmcgYW4gYXJyYXkgb2YgZmlsZXMgaGVyZSBpbnN0ZWFkIG9mIG9uZSB3aWxsIGNyZWF0ZVxuICAgKiBhIG5ldyBkbXMgb2JqZWN0IGZvciBldmVyeSBmaWxlLiBJbiB0aGlzIGNhc2UgaW5kZXhkYXRhIHdpbGwgc2hhcmVkIGFjcm9zcyBhbGwgZmlsZXMuXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlSWQgVGhlIElEIG9mIHRoZSBvYmplY3QgdHlwZSB0byBiZSBjcmVhdGVkXG4gICAqIEBwYXJhbSBpbmRleGRhdGEgSW5kZXhkYXRhIGZvciB0aGUgbmV3IG9iamVjdChzKVxuICAgKiBAcGFyYW0gZmlsZXMgRmlsZShzKSB0byBjcmVhdGUgZG1zIG9iamVjdHMgY29udGVudChzKSB3aXRoXG4gICAqIEBwYXJhbSBsYWJlbCBBIGxhYmVsIHRoYXQgd2lsbCBzaG93IHVwIGluIHRoZSB1cGxvYWQgb3ZlcmxheSBkaWFsb2cgd2hpbGUgdXBsb2FkaW5nXG4gICAqXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIElEcyBvZiB0aGUgb2JqZWN0cyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkXG4gICAqL1xuICBjcmVhdGVEbXNPYmplY3Qob2JqZWN0VHlwZUlkOiBzdHJpbmcsIGluZGV4ZGF0YTogYW55LCBmaWxlczogRmlsZVtdLCBsYWJlbD86IHN0cmluZywgc2lsZW50ID0gZmFsc2UpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy4jYmFja2VuZC5nZXRBcGlCYXNlKEFwaUJhc2UuYXBpV2ViKX0vZG1zL29iamVjdHNgO1xuICAgIGNvbnN0IGRhdGEgPSBpbmRleGRhdGE7XG4gICAgZGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLk9CSkVDVF9UWVBFX0lEXSA9IG9iamVjdFR5cGVJZDtcblxuICAgIGNvbnN0IHVwbG9hZCA9IGZpbGVzLmxlbmd0aCA/IHRoaXMuI3VwbG9hZFNlcnZpY2UudXBsb2FkTXVsdGlwYXJ0KHVybCwgZmlsZXMsIGRhdGEsIGxhYmVsLCBzaWxlbnQpIDogdGhpcy4jdXBsb2FkU2VydmljZS5jcmVhdGVEb2N1bWVudCh1cmwsIGRhdGEpO1xuXG4gICAgcmV0dXJuIHVwbG9hZFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiByZXMubWFwKChyOiBhbnkpID0+IHIucHJvcGVydGllc1tCYXNlT2JqZWN0VHlwZUZpZWxkLk9CSkVDVF9JRF0udmFsdWUpKSxcbiAgICAgICAgLy8gVE9ETzogUmVwbGFjZSBieSBwcm9wZXIgc29sdXRpb25cbiAgICAgICAgLy8gUmlnaHQgbm93IHRoZXJlIGlzIGEgZ2FwIGJldHdlZW4gd2hlbiB0aGUgb2JqZWN0IHdhc1xuICAgICAgICAvLyBjcmVhdGVkIGFuZCB3aGVuIGl0IGlzIGluZGV4ZWQuIFNvIGRlbGF5aW5nIGhlcmUgd2lsbFxuICAgICAgICAvLyBnaXZlIGJhY2tlbmQgdGltZSB0byBnZXQgaXRzIHN0dWZmIHRvZ2V0aGVyLlxuICAgICAgICBkZWxheSgxMDAwKVxuICAgICAgKVxuICAgICAgLnBpcGUodGhpcy50cmlnZ2VyRXZlbnQoWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfQ1JFQVRFRCwgJycsIHNpbGVudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGRtcyBvYmplY3QuXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgb2JqZWN0IHRvIGJlIGRlbGV0ZWRcbiAgICovXG4gIGRlbGV0ZURtc09iamVjdChpZDogc3RyaW5nLCBzaWxlbnQgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYC9kbXMvb2JqZWN0cy8ke2lkfWA7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmRcbiAgICAgIC5kZWxldGUodXJsLCBBcGlCYXNlLmFwaVdlYilcbiAgICAgIC5waXBlKG1hcCgoKSA9PiAoeyBpZCB9KSkpXG4gICAgICAucGlwZSh0aGlzLnRyaWdnZXJFdmVudChZdXZFdmVudFR5cGUuRE1TX09CSkVDVF9ERUxFVEVELCAnJywgc2lsZW50KSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZSBvbGRlciB2ZXJzaW9uIG9mIGEgZG1zIG9iamVjdC5cbiAgICogQHBhcmFtIGlkIElEIG9mIHRoZSBvYmplY3QgdG8gYmUgcmVzdG9yZWRcbiAgICogQHBhcmFtIHZlcnNpb24gdmVyc2lvbiBvZiB0aGUgb2JqZWN0IHRvIGJlIHJlc3RvcmVkXG4gICAqL1xuICByZXN0b3JlRG1zT2JqZWN0KGlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgc2lsZW50ID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAvZG1zL29iamVjdHMvJHtpZH0vdmVyc2lvbnMvJHt2ZXJzaW9ufS9hY3Rpb25zL3Jlc3RvcmU/d2FpdEZvclNlYXJjaENvbnNpc3RlbmN5PXRydWUmcmVzdG9yZVBhcmVudElkPWZhbHNlYDtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZC5wb3N0KHVybCwge30sIEFwaUJhc2UuYXBpV2ViKS5waXBlKHRoaXMudHJpZ2dlckV2ZW50KFl1dkV2ZW50VHlwZS5ETVNfT0JKRUNUX1VQREFURUQsIGlkLCBzaWxlbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGxvYWQgKGFkZC9yZXBsYWNlKSBjb250ZW50IHRvIGEgZG1zIG9iamVjdC5cbiAgICogQHBhcmFtIG9iamVjdElkIElEIG9mIHRoZSBkbXMgb2JqZWN0IHRvIHVwbG9hZCB0aGUgZmlsZSB0b1xuICAgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB0byBiZSB1cGxvYWRlZFxuICAgKi9cbiAgdXBsb2FkQ29udGVudChvYmplY3RJZDogc3RyaW5nLCBmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy4jdXBsb2FkU2VydmljZS51cGxvYWQodGhpcy5nZXRDb250ZW50UGF0aChvYmplY3RJZCksIGZpbGUpLnBpcGUodGhpcy50cmlnZ2VyRXZlbnQoWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfVVBEQVRFRCwgb2JqZWN0SWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRoIG9mIGRtcyBvYmplY3QgY29udGVudCBmaWxlLlxuICAgKiBAcGFyYW0gb2JqZWN0SWQgSUQgb2YgdGhlIGRtcyBvYmplY3RcbiAgICogQHBhcmFtIHZlcnNpb24gdmVyc2lvbiBudW1iZXIgb2YgdGhlIGRtcyBvYmplY3RcbiAgICovXG4gIGdldENvbnRlbnRQYXRoKG9iamVjdElkOiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIpIHtcbiAgICByZXR1cm4gYCR7dGhpcy4jYmFja2VuZC5nZXRBcGlCYXNlKEFwaUJhc2UuYXBpV2ViKX0vZG1zL29iamVjdHMvJHtvYmplY3RJZH0vY29udGVudHMvZmlsZSR7dmVyc2lvbiA/ICc/dmVyc2lvbj0nICsgdmVyc2lvbiA6ICcnfWA7XG4gIH1cblxuICAvKipcbiAgICogT3JpZ2luYWwgQVBJIFBhdGggb2YgZG1zIG9iamVjdCBjb250ZW50IGZpbGUuXG4gICAqIEBwYXJhbSBvYmplY3RJZCBJRCBvZiB0aGUgZG1zIG9iamVjdFxuICAgKiBAcGFyYW0gdmVyc2lvbiB2ZXJzaW9uIG51bWJlciBvZiB0aGUgZG1zIG9iamVjdFxuICAgKiBAcGFyYW0gcmVuZGl0aW9uIHNob3VsZCByZXR1cm4gcmVuZGl0aW9uIHBhdGggb2YgdGhlIGRtcyBvYmplY3RcbiAgICovXG4gIGdldEZ1bGxDb250ZW50UGF0aChvYmplY3RJZDogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCByZW5kaXRpb24gPSBmYWxzZSkge1xuICAgIHJldHVybiBgJHt0aGlzLiNiYWNrZW5kLmdldEFwaUJhc2UoQXBpQmFzZS5jb3JlLCB0cnVlKX0vZG1zL29iamVjdHMvJHtvYmplY3RJZH0ke3ZlcnNpb24gPyAnL3ZlcnNpb25zLycgKyB2ZXJzaW9uIDogJyd9L2NvbnRlbnRzLyR7XG4gICAgICByZW5kaXRpb24gPyAncmVuZGl0aW9ucy9wZGYnIDogJ2ZpbGUnXG4gICAgfWA7XG4gIH1cblxuICBnZXRTbGlkZVVSSShvYmplY3RJZDogc3RyaW5nLCBtaW1lVHlwZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc3VwcG9ydGVkTWltZVR5cGVzID0gWycqLyonXTtcbiAgICBsZXQgc3VwcG9ydGVkID0gZmFsc2U7XG4gICAgaWYgKG1pbWVUeXBlKSB7XG4gICAgICAvLyBjaGVjayBpZiBtaW1lIHR5cGUgc3VwcG9ydHMgc2xpZGVzXG4gICAgICBzdXBwb3J0ZWRNaW1lVHlwZXMuZm9yRWFjaCgocCkgPT4gKHN1cHBvcnRlZCA9IHN1cHBvcnRlZCB8fCBVdGlscy5wYXR0ZXJuVG9SZWdFeHAocCkudGVzdChtaW1lVHlwZSkpKTtcbiAgICB9XG4gICAgcmV0dXJuICFtaW1lVHlwZSB8fCBzdXBwb3J0ZWQgPyBgJHt0aGlzLiNiYWNrZW5kLmdldEFwaUJhc2UoQXBpQmFzZS5jb3JlLCB0cnVlKX0vZG1zL29iamVjdHMvJHtvYmplY3RJZH0vY29udGVudHMvcmVuZGl0aW9ucy9zbGlkZWAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRG93bmxvYWRzIHRoZSBjb250ZW50IG9mIGRtcyBvYmplY3RzLlxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0W10gZG1zT2JqZWN0cyBBcnJheSBvZiBkbXMgb2JqZWN0cyB0byBiZSBkb3dubG9hZGVkXG4gICAqIEBwYXJhbSB3aXRoVmVyc2lvbiBzaG91bGQgZG93bmxvYWQgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgb2JqZWN0XG4gICAqL1xuICBkb3dubG9hZENvbnRlbnQob2JqZWN0czogRG1zT2JqZWN0W10sIHdpdGhWZXJzaW9uPzogYm9vbGVhbikge1xuICAgIG9iamVjdHMuZm9yRWFjaCgob2JqZWN0LCBpKSA9PlxuICAgICAgc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVyaSA9IGAke3RoaXMuZ2V0Q29udGVudFBhdGgob2JqZWN0Py5pZCwgd2l0aFZlcnNpb24gPyBvYmplY3Q/LnZlcnNpb24gOiB1bmRlZmluZWQpfWA7XG4gICAgICAgICAgdGhpcy4jYmFja2VuZC5kb3dubG9hZCh1cmkpO1xuICAgICAgICB9LFxuICAgICAgICBVdGlscy5pc1NhZmFyaSgpID8gaSAqIDEwMDAgOiAwIC8vIFNhZmFyaSBkb2VzIG5vdCBhbGxvdyBtdWx0aSBkb3dubG9hZFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYSBkbXMgb2JqZWN0LlxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICogQHBhcmFtIHZlcnNpb24gRGVzaXJlZCB2ZXJzaW9uIG9mIHRoZSBvYmplY3RcbiAgICovXG4gIGdldERtc09iamVjdChpZDogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCBzaWxlbnQgPSBmYWxzZSwgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyB8IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmRcbiAgICAgIC5nZXQoYC9kbXMvb2JqZWN0cy8ke2lkfSR7dmVyc2lvbiA/ICcvdmVyc2lvbnMvJyArIHZlcnNpb24gOiAnJ31gLCB1bmRlZmluZWQsIHJlcXVlc3RPcHRpb25zKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXRlbTogU2VhcmNoUmVzdWx0SXRlbSA9IHRoaXMuI3NlYXJjaFNlcnZpY2UudG9TZWFyY2hSZXN1bHQocmVzKS5pdGVtc1swXTtcbiAgICAgICAgICByZXR1cm4gdGhpcy4jc2VhcmNoUmVzdWx0VG9EbXNPYmplY3QoaXRlbSk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZSh0aGlzLnRyaWdnZXJFdmVudChZdXZFdmVudFR5cGUuRE1TX09CSkVDVF9MT0FERUQsICcnLCBzaWxlbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgdGFnIG9uIGEgZG1zIG9iamVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSB0YWcgVGhlIHRhZyB0byBiZSB1cGRhdGVkXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdGFncyBuZXcgdmFsdWVcbiAgICovXG4gIHNldERtc09iamVjdFRhZyhpZDogc3RyaW5nLCB0YWc6IHN0cmluZywgdmFsdWU6IGFueSwgc2lsZW50ID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kXG4gICAgICAucG9zdChgL2Rtcy9vYmplY3RzL3RhZ3MvJHt0YWd9L3N0YXRlLyR7dmFsdWV9P3F1ZXJ5PVNFTEVDVCAqIEZST00gc3lzdGVtOm9iamVjdCBXSEVSRSBzeXN0ZW06b2JqZWN0SWQ9JyR7aWR9J2AsIHt9LCBBcGlCYXNlLmNvcmUpXG4gICAgICAucGlwZSh0aGlzLnRyaWdnZXJFdmVudChZdXZFdmVudFR5cGUuRE1TX09CSkVDVF9VUERBVEVELCBpZCwgc2lsZW50KSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhIHRhZyBmcm9tIGEgZG1zIG9iamVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSB0YWcgVGhlIHRhZyB0byBiZSBkZWxldGVkXG4gICAqL1xuICBkZWxldGVEbXNPYmplY3RUYWcoaWQ6IHN0cmluZywgdGFnOiBzdHJpbmcsIHNpbGVudCA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZC5kZWxldGUoYC9kbXMvb2JqZWN0cy8ke2lkfS90YWdzLyR7dGFnfWAsIEFwaUJhc2UuY29yZSkucGlwZSh0aGlzLnRyaWdnZXJFdmVudChZdXZFdmVudFR5cGUuRE1TX09CSkVDVF9VUERBVEVELCBpZCwgc2lsZW50KSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGluZGV4ZGF0YSBvZiBhIGRtcyBvYmplY3QuXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgb2JqZWN0IHRvIGFwcGx5IHRoZSBkYXRhIHRvXG4gICAqIEBwYXJhbSBkYXRhIEluZGV4ZGF0YSB0byBiZSBhcHBsaWVkXG4gICAqIEBwYXJhbSBzaWxlbnQgZmxhZyB0byB0cmlnZ2VyIERNU19PQkpFQ1RfVVBEQVRFRCBldmVudFxuICAgKi9cbiAgdXBkYXRlRG1zT2JqZWN0KGlkOiBzdHJpbmcsIGRhdGE6IGFueSwgc2lsZW50ID0gZmFsc2UpOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kLnBhdGNoKGAvZG1zL29iamVjdHMvJHtpZH1gLCBkYXRhKS5waXBlKHRoaXMudHJpZ2dlckV2ZW50KFl1dkV2ZW50VHlwZS5ETVNfT0JKRUNUX1VQREFURUQsIGlkLCBzaWxlbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGdpdmVuIG9iamVjdHMuXG4gICAqIEBwYXJhbSBvYmplY3RzIHRoZSBvYmplY3RzIHRvIHVwZGF0ZWRcbiAgICovXG4gIHVwZGF0ZURtc09iamVjdHMob2JqZWN0czogeyBpZDogc3RyaW5nOyBkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IH1bXSwgc2lsZW50ID0gZmFsc2UpOiBPYnNlcnZhYmxlPERtc09iamVjdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmRcbiAgICAgIC5wYXRjaChgL2Rtcy9vYmplY3RzYCwge1xuICAgICAgICBwYXRjaGVzOiBvYmplY3RzLm1hcCgobykgPT4gKHtcbiAgICAgICAgICBpZDogby5pZCxcbiAgICAgICAgICBkYXRhOiBvLmRhdGFcbiAgICAgICAgfSkpXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRoaXMuI3RyaWdnZXJFdmVudHMoXG4gICAgICAgICAgWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfVVBEQVRFRCxcbiAgICAgICAgICBvYmplY3RzLm1hcCgobykgPT4gby5pZCksXG4gICAgICAgICAgc2lsZW50XG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBhIHRhZyBvbiBhIGRtcyBvYmplY3QuXG4gICAqIEBwYXJhbSBpZHMgTGlzdCBvZiBJRHMgb2Ygb2JqZWN0c1xuICAgKiBAcGFyYW0gdGFnIFRoZSB0YWcgdG8gYmUgdXBkYXRlZFxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHRhZ3MgbmV3IHZhbHVlXG4gICAqL1xuICB1cGRhdGVEbXNPYmplY3RzVGFnKGlkczogc3RyaW5nW10sIHRhZzogc3RyaW5nLCB2YWx1ZTogYW55LCBzaWxlbnQgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYmF0Y2hVcGRhdGVUYWcoaWRzLCB0YWcsIHZhbHVlKS5waXBlKHRoaXMuI3RyaWdnZXJFdmVudHMoWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfVVBEQVRFRCwgaWRzLCBzaWxlbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyBnaXZlbiBvYmplY3RzIHRvIGEgZGlmZmVyZW50IGZvbGRlci5cbiAgICogQHBhcmFtIGZvbGRlcklkIHRoZSBpZCBvZiB0aGUgbmV3IHBhcmVudCBmb2xkZXJcbiAgICogQHBhcmFtIG9iamVjdHMgb2JqZWN0cyB0byBiZSBtb3ZlZFxuICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zIGZvciB0aGUgbW92ZSBvcGVyYXRpb25cbiAgICovXG4gIG1vdmVEbXNPYmplY3RzKHRhcmdldEZvbGRlcklkOiBzdHJpbmcgfCBudWxsLCBvYmplY3RzOiBEbXNPYmplY3RbXSwgb3B0aW9ucz86IE9iamVjdE1vdmVPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVEbXNPYmplY3RzKG9iamVjdHMubWFwKChvKSA9PiAoeyBpZDogby5pZCwgZGF0YTogeyBbQmFzZU9iamVjdFR5cGVGaWVsZC5QQVJFTlRfSURdOiB0YXJnZXRGb2xkZXJJZCB9IH0pLCB0cnVlKSkucGlwZShcbiAgICAgIHRhcCgocmVzKSA9PiAhb3B0aW9ucz8uc2lsZW50ICYmIHRoaXMuI2V2ZW50U2VydmljZS50cmlnZ2VyKFl1dkV2ZW50VHlwZS5ETVNfT0JKRUNUU19NT1ZFRCwgcmVzKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcHkgZ2l2ZW4gb2JqZWN0cyB0byBhIGRpZmZlcmVudCBmb2xkZXIuIFRoZSBvYmplY3RzIHdpbGwgYmUgY29waWVkIHdpdGggdGhlaXIgaW5kZXhkYXRhIHJlZmVyZW5jaW5nXG4gICAqIHRoZSBleGlzdGluZyBjb250ZW50IG9mIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgKiBAcGFyYW0gdGFyZ2V0Rm9sZGVySWQgVGhlIElEIG9mIHRoZSB0YXJnZXQgZm9sZGVyXG4gICAqIEBwYXJhbSBvYmplY3RzIFRoZSBvYmplY3RzIHRvIGJlIGNvcGllZFxuICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zIGZvciB0aGUgY29weSBvcGVyYXRpb25cbiAgICovXG4gIGNvcHlEbXNPYmplY3RzKHRhcmdldEZvbGRlcklkOiBzdHJpbmcgfCBudWxsLCBvYmplY3RzOiBEbXNPYmplY3RbXSwgb3B0aW9ucz86IE9iamVjdENvcHlPcHRpb25zKTogT2JzZXJ2YWJsZTxDb3JlQXBpUmVzcG9uc2U+IHtcbiAgICBjb25zdCBleGNsdWRlUHJvcGVydGllcyA9IFtcbiAgICAgIEJhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX0lELFxuICAgICAgQmFzZU9iamVjdFR5cGVGaWVsZC5DUkVBVEVEX0JZLFxuICAgICAgQmFzZU9iamVjdFR5cGVGaWVsZC5DUkVBVElPTl9EQVRFLFxuICAgICAgQmFzZU9iamVjdFR5cGVGaWVsZC5NT0RJRklFRF9CWSxcbiAgICAgIEJhc2VPYmplY3RUeXBlRmllbGQuTU9ESUZJQ0FUSU9OX0RBVEUsXG4gICAgICBCYXNlT2JqZWN0VHlwZUZpZWxkLlZFUlNJT05fTlVNQkVSLFxuICAgICAgQmFzZU9iamVjdFR5cGVGaWVsZC5UUkFDRV9JRCxcbiAgICAgIEJhc2VPYmplY3RUeXBlRmllbGQuUEFSRU5UX09CSkVDVF9UWVBFX0lELFxuICAgICAgQmFzZU9iamVjdFR5cGVGaWVsZC5QQVJFTlRfVkVSU0lPTl9OVU1CRVJcbiAgICBdO1xuXG4gICAgY29uc3QgbWFwcGVkT2JqZWN0czogQ29yZUFwaU9iamVjdFtdID0gb2JqZWN0cy5tYXAoKG8pID0+IHtcbiAgICAgIG8uZGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLlBBUkVOVF9JRF0gPSB0YXJnZXRGb2xkZXJJZDtcblxuICAgICAgLy8gUmVtb3ZlIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGFsbG93ZWQgdG8gYmUgY29waWVkLlxuICAgICAgLy8gVGhpcyBhbHNvIGluY2x1ZGVzIGNvbnRlbnQgc3RyZWFtIGZpZWxkcyBidW5kbGVkIGludG8gdGhlIG9iamVjdHMgZGF0YSBmaWVsZC5cbiAgICAgIC8vIFByb3BlcnRpZXMgZW5kaW5nIHdpdGggJ190aXRsZScgYXJlIGFsc28gZXhjbHVkZWQgYXMgdGhleSBhcmUgZW5yaWNobWVudCB2YWx1ZXNcbiAgICAgIC8vIHByb3ZpZGVkIGJ5IEFQSS1XZWIuXG4gICAgICBPYmplY3Qua2V5cyhvLmRhdGEpXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4ga2V5LmVuZHNXaXRoKCdfdGl0bGUnKSB8fCBleGNsdWRlUHJvcGVydGllcy5pbmNsdWRlcyhrZXkpIHx8IE9iamVjdC52YWx1ZXMoQ29udGVudFN0cmVhbUZpZWxkKS5pbmNsdWRlcyhrZXkpKVxuICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KG8uZGF0YSwga2V5KSk7XG5cbiAgICAgIC8vIG1hcCBmaWx0ZXJlZCBkYXRhIGZpZWxkIHRvIGRhdGEgZm9ybWF0IHJlcXVpcmVkIGJ5IHRoZSBDb3JlLUFQSVxuICAgICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5rZXlzKG8uZGF0YSkucmVkdWNlKFxuICAgICAgICAoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICBhY2Nba2V5XSA9IHsgdmFsdWU6IG8uZGF0YVtrZXldIH07XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgQ29yZUFwaU9iamVjdFByb3BlcnR5PlxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJvcGVydGllczogcHJvcGVydGllcyxcbiAgICAgICAgb2JqZWN0VHlwZUlkOiBvLm9iamVjdFR5cGVJZCxcbiAgICAgICAgLi4uKG8uY29udGVudFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBjb250ZW50U3RyZWFtczogW28uY29udGVudF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHt9KVxuICAgICAgfSBhcyBDb3JlQXBpT2JqZWN0O1xuICAgIH0pO1xuXG4gICAgY29uc3QgcXVlcnkgPSBvcHRpb25zXG4gICAgICA/IE9iamVjdC5rZXlzKG9wdGlvbnMpXG4gICAgICAgICAgLm1hcCgoa2V5OiBzdHJpbmcpID0+IGAke2tleX09JHsob3B0aW9ucyBhcyBhbnkpW2tleV19YClcbiAgICAgICAgICAuam9pbignJicpXG4gICAgICA6ICcnO1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kLnBvc3QoYC9kbXMvb2JqZWN0cz8ke3F1ZXJ5fX1gLCB7IG9iamVjdHM6IG1hcHBlZE9iamVjdHMgfSwgQXBpQmFzZS5jb3JlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBidW5jaCBvZiBkbXMgb2JqZWN0cy5cbiAgICogQHBhcmFtIGlkcyBMaXN0IG9mIElEcyBvZiBvYmplY3RzIHRvIGJlIHJldHJpZXZlZFxuICAgKi9cbiAgZ2V0RG1zT2JqZWN0cyhpZHM6IHN0cmluZ1tdLCBzaWxlbnQgPSBmYWxzZSk6IE9ic2VydmFibGU8RG1zT2JqZWN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5iYXRjaEdldChpZHMpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChfcmVzOiBhbnlbXSkgPT5cbiAgICAgICAgICBfcmVzLm1hcCgocmVzLCBpKSA9PiAocmVzPy5fZXJyb3IgPyB7IC4uLnJlcywgaWQ6IGlkc1tpXSB9IDogdGhpcy4jc2VhcmNoUmVzdWx0VG9EbXNPYmplY3QodGhpcy4jc2VhcmNoU2VydmljZS50b1NlYXJjaFJlc3VsdChyZXMpLml0ZW1zWzBdKSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5waXBlKHRoaXMuI3RyaWdnZXJFdmVudHMoWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfTE9BREVELCB1bmRlZmluZWQsIHNpbGVudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGJ1bmNoIG9mIGRtcyBvYmplY3RzLlxuICAgKiBAcGFyYW0gaWRzIExpc3Qgb2YgSURzIG9mIG9iamVjdHMgdG8gYmUgZGVsZXRlZFxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgZGVsZXRlIG9wZXJhdGlvblxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBkZWxldGUgcmVzdWx0cy5cbiAgICovXG4gIGRlbGV0ZURtc09iamVjdHMoXG4gICAgb2JqZWN0czogc3RyaW5nW10gfCB7IGlkOiBzdHJpbmc7IHN1YmplY3Q6IHN0cmluZyB9W10sXG5cbiAgICBvcHRpb25zPzogT2JqZWN0RGVsZXRlT3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPE9iamVjdERlbGV0ZVJlc3VsdFtdPiB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBvcHRpb25zXG4gICAgICA/IGA/JHtPYmplY3Qua2V5cyhvcHRpb25zKVxuICAgICAgICAgIC5maWx0ZXIoKGspID0+IFsnd2FpdEZvclNlYXJjaENvbnNpc3RlbmN5JywgJ2dyZWVkeSddLmluY2x1ZGVzKGspKVxuICAgICAgICAgIC5tYXAoKGspID0+IGAke2t9PSR7KG9wdGlvbnMgYXMgYW55KVtrXX1gKVxuICAgICAgICAgIC5qb2luKCcmJyl9YFxuICAgICAgOiAnJztcblxuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kXG4gICAgICAuZGVsZXRlKGAvZG1zL29iamVjdHMke3F1ZXJ5UGFyYW1zfWAsIEFwaUJhc2UuY29yZSwge1xuICAgICAgICBib2R5OiB7XG4gICAgICAgICAgb2JqZWN0czogb2JqZWN0cy5tYXAoKG8pID0+ICh7XG4gICAgICAgICAgICBwcm9wZXJ0aWVzOlxuICAgICAgICAgICAgICB0eXBlb2YgbyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbTpvYmplY3RJZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW06b2JqZWN0SWQnOiB7IHZhbHVlOiBvLmlkIH0sXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3Q6IHsgdmFsdWU6IG8uc3ViamVjdCB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXMpID0+XG4gICAgICAgICAgcmVzPy5vYmplY3RzPy5tYXAoKHI6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdiA9IHIub3B0aW9ucz8uW1N5c3RlbVJlc3VsdC5ERUxFVEVdO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgaWQ6IHIucHJvcGVydGllcz8uW0Jhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX0lEXT8udmFsdWUsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHIucHJvcGVydGllcyxcbiAgICAgICAgICAgICAgLi4uKHY/Lmh0dHBTdGF0dXNDb2RlID49IDQwMCA/IHsgX2Vycm9yOiB7IHN0YXR1czogdi5odHRwU3RhdHVzQ29kZSwgbWVzc2FnZTogdi5tZXNzYWdlIH0gfSA6IHt9KVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgICAucGlwZSh0aGlzLiN0cmlnZ2VyRXZlbnRzKFl1dkV2ZW50VHlwZS5ETVNfT0JKRUNUX0RFTEVURUQsIHVuZGVmaW5lZCwgb3B0aW9ucz8uc2lsZW50KSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYSBkbXMgb2JqZWN0IHZlcnNpb25zLlxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICovXG4gIGdldERtc09iamVjdFZlcnNpb25zKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERtc09iamVjdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQuZ2V0KCcvZG1zL29iamVjdHMvJyArIGlkICsgJy92ZXJzaW9ucycpLnBpcGUoXG4gICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBpdGVtczogU2VhcmNoUmVzdWx0SXRlbVtdID0gdGhpcy4jc2VhcmNoU2VydmljZS50b1NlYXJjaFJlc3VsdChyZXMpLml0ZW1zIHx8IFtdO1xuICAgICAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLiNzZWFyY2hSZXN1bHRUb0Rtc09iamVjdChpdGVtKSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgocmVzKSA9PiByZXMuc29ydChVdGlscy5zb3J0VmFsdWVzKCd2ZXJzaW9uJywgU29ydC5ERVNDKSkpXG4gICAgKTtcbiAgfVxuXG4gIGdldERtc09iamVjdFZlcnNpb24oaWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZFxuICAgICAgLmdldChgL2Rtcy9vYmplY3RzLyR7aWR9L3ZlcnNpb25zLyR7dmVyc2lvbn1gKVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IHRoaXMuI3NlYXJjaFJlc3VsdFRvRG1zT2JqZWN0KHRoaXMuI3NlYXJjaFNlcnZpY2UudG9TZWFyY2hSZXN1bHQocmVzKS5pdGVtc1swXSkpKTtcbiAgfVxuXG4gIGNvcmVBcGlSZXNwb25zZVRvRG1zT2JqZWN0KHJlczogQ29yZUFwaVJlc3BvbnNlKTogRG1zT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy4jc2VhcmNoUmVzdWx0VG9EbXNPYmplY3Qoe1xuICAgICAgb2JqZWN0VHlwZUlkOiByZXMucHJvcGVydGllc1tCYXNlT2JqZWN0VHlwZUZpZWxkLk9CSkVDVF9UWVBFX0lEXS52YWx1ZSBhcyBzdHJpbmcsXG4gICAgICBmaWVsZHM6IG5ldyBNYXAoT2JqZWN0LmVudHJpZXMocmVzLnByb3BlcnRpZXMpKSxcbiAgICAgIGNvbnRlbnQ6IHJlcy5jb250ZW50U3RyZWFtcz8uWzBdXG4gICAgfSk7XG4gIH1cblxuICAjc2VhcmNoUmVzdWx0VG9EbXNPYmplY3QocmVzSXRlbTogU2VhcmNoUmVzdWx0SXRlbSk6IERtc09iamVjdCB7XG4gICAgcmV0dXJuIG5ldyBEbXNPYmplY3QocmVzSXRlbSk7XG4gIH1cblxuICBiYXRjaFVwZGF0ZVRhZyhpZHM6IHN0cmluZ1tdLCB0YWc6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kLmJhdGNoKFxuICAgICAgaWRzLm1hcCgoaWQpID0+ICh7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICB1cmk6IGAvZG1zL29iamVjdHMvdGFncy8ke3RhZ30vc3RhdGUvJHt2YWx1ZX0/cXVlcnk9U0VMRUNUICogRlJPTSBzeXN0ZW06b2JqZWN0IFdIRVJFIHN5c3RlbTpvYmplY3RJZD0nJHtpZH0nYCxcbiAgICAgICAgYmFzZTogQXBpQmFzZS5jb3JlLFxuICAgICAgICBib2R5OiB7fVxuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIGJhdGNoRGVsZXRlVGFnKGlkczogc3RyaW5nW10sIHRhZzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQuYmF0Y2goXG4gICAgICBpZHMubWFwKChpZCkgPT4gKHtcbiAgICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgICAgdXJpOiBgL2Rtcy9vYmplY3RzLyR7aWR9L3RhZ3MvJHt0YWd9YCxcbiAgICAgICAgYmFzZTogQXBpQmFzZS5jb3JlXG4gICAgICB9KSlcbiAgICApO1xuICB9XG5cbiAgYmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kLmJhdGNoKGlkcy5tYXAoKGlkKSA9PiAoeyBtZXRob2Q6ICdERUxFVEUnLCB1cmk6IGAvZG1zL29iamVjdHMvJHtpZH1gIH0pKSk7XG4gIH1cblxuICBiYXRjaEdldChpZHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQuYmF0Y2goaWRzLm1hcCgoaWQpID0+ICh7IG1ldGhvZDogJ0dFVCcsIHVyaTogYC9kbXMvb2JqZWN0cy8ke2lkfWAgfSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXAgc2VhcmNoIHJlc3VsdCBmcm9tIHRoZSBiYWNrZW5kIHRvIGFwcGxpY2F0aW9ucyBTZWFyY2hSZXN1bHQgb2JqZWN0XG4gICAqIEBwYXJhbSBzZWFyY2hSZXNwb25zZSBUaGUgYmFja2VuZCByZXNwb25zZVxuICAgKi9cbiAgdG9TZWFyY2hSZXN1bHQoc2VhcmNoUmVzcG9uc2U6IFNlYXJjaFJlc3BvbnNlKTogU2VhcmNoUmVzdWx0IHtcbiAgICBjb25zdCByZXN1bHRMaXN0SXRlbXM6IFNlYXJjaFJlc3VsdEl0ZW1bXSA9IFtdO1xuICAgIGNvbnN0IG9iamVjdFR5cGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgc2VhcmNoUmVzcG9uc2Uub2JqZWN0cy5mb3JFYWNoKChvOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkcyA9IG5ldyBNYXAoKTtcbiAgICAgIC8vIHByb2Nlc3MgcHJvcGVydGllcyBzZWN0aW9uIG9mIHJlc3VsdFxuICAgICAgT2JqZWN0LmtleXMoby5wcm9wZXJ0aWVzKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSBvLnByb3BlcnRpZXNba2V5XS52YWx1ZTtcbiAgICAgICAgaWYgKG8ucHJvcGVydGllc1trZXldLmNsdmFsdWUpIHtcbiAgICAgICAgICAvLyB0YWJsZSBmaWVsZHMgd2lsbCBoYXZlIGEgY2xpZW50VmFsdWUgdG9vIC4uLlxuICAgICAgICAgIHZhbHVlID0gby5wcm9wZXJ0aWVzW2tleV0uY2x2YWx1ZTtcbiAgICAgICAgICAvLyAuLi4gYW5kIGFsc28gbWF5IGNvbnRhaW4gdmFsdWVzIHRoYXQgbmVlZCB0byBiZSByZXNvbHZlZFxuICAgICAgICAgIGlmIChvLnByb3BlcnRpZXNba2V5XS5yZXNvbHZlZFZhbHVlcykge1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgodjogYW55KSA9PiB7XG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKHYpLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNWYWx1ZSA9IEFycmF5LmlzQXJyYXkodltrXSkgPyB2W2tdLm1hcCgoaTogYW55KSA9PiBvLnByb3BlcnRpZXNba2V5XS5yZXNvbHZlZFZhbHVlc1tpXSkgOiBvLnByb3BlcnRpZXNba2V5XS5yZXNvbHZlZFZhbHVlc1t2W2tdXTtcbiAgICAgICAgICAgICAgICBpZiAocmVzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIHZbYCR7a31fdGl0bGVgXSA9IHJlc1ZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmaWVsZHMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICBpZiAoby5wcm9wZXJ0aWVzW2tleV0udGl0bGUpIHtcbiAgICAgICAgICBmaWVsZHMuc2V0KGtleSArICdfdGl0bGUnLCBvLnByb3BlcnRpZXNba2V5XS50aXRsZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBwcm9jZXNzIGNvbnRlbnRTdHJlYW1zIHNlY3Rpb24gb2YgcmVzdWx0IGlmIGF2YWlsYWJsZS5cbiAgICAgIC8vIE9iamVjdHMgdGhhdCBkb24ndCBoYXZlIGZpbGVzIGF0dGFjaGVkIHdvbid0IGhhdmUgdGhpcyBzZWN0aW9uXG4gICAgICBsZXQgY29udGVudDogU2VhcmNoUmVzdWx0Q29udGVudCB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChvLmNvbnRlbnRTdHJlYW1zICYmIG8uY29udGVudFN0cmVhbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyB3ZSBhc3N1bWUgdGhhdCBlYWNoIHJlc3VsdCBvYmplY3Qgb25seSBoYXMgT05FIGZpbGUgYXR0YWNoZWQsIGFsdG91Z2hcbiAgICAgICAgLy8gdGhpcyBpcyBhbiBhcnJheSBhbmQgdGhlcmUgbWF5IGJlIG1vcmVcbiAgICAgICAgY29uc3QgY29udGVudFN0cmVhbSA9IG8uY29udGVudFN0cmVhbXNbMF07XG4gICAgICAgIC8vIGFsc28gYWRkIGNvbnRlbnRzdHJlYW0gcmVsYXRlZCBmaWVsZHMgdG8gdGhlIHJlc3VsdCBmaWVsZHNcbiAgICAgICAgZmllbGRzLnNldChDb250ZW50U3RyZWFtRmllbGQuTEVOR1RILCBjb250ZW50U3RyZWFtLmxlbmd0aCk7XG4gICAgICAgIGZpZWxkcy5zZXQoQ29udGVudFN0cmVhbUZpZWxkLk1JTUVfVFlQRSwgY29udGVudFN0cmVhbS5taW1lVHlwZSk7XG4gICAgICAgIGZpZWxkcy5zZXQoQ29udGVudFN0cmVhbUZpZWxkLkZJTEVOQU1FLCBjb250ZW50U3RyZWFtLmZpbGVOYW1lKTtcbiAgICAgICAgZmllbGRzLnNldChDb250ZW50U3RyZWFtRmllbGQuSUQsIGNvbnRlbnRTdHJlYW0uY29udGVudFN0cmVhbUlkKTtcbiAgICAgICAgZmllbGRzLnNldChDb250ZW50U3RyZWFtRmllbGQuUkFOR0UsIGNvbnRlbnRTdHJlYW0uY29udGVudFN0cmVhbVJhbmdlKTtcbiAgICAgICAgZmllbGRzLnNldChDb250ZW50U3RyZWFtRmllbGQuUkVQT1NJVE9SWV9JRCwgY29udGVudFN0cmVhbS5yZXBvc2l0b3J5SWQpO1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5ESUdFU1QsIGNvbnRlbnRTdHJlYW0uZGlnZXN0KTtcbiAgICAgICAgZmllbGRzLnNldChDb250ZW50U3RyZWFtRmllbGQuQVJDSElWRV9QQVRILCBjb250ZW50U3RyZWFtLmFyY2hpdmVQYXRoKTtcblxuICAgICAgICBjb250ZW50ID0ge1xuICAgICAgICAgIGNvbnRlbnRTdHJlYW1JZDogY29udGVudFN0cmVhbS5jb250ZW50U3RyZWFtSWQsXG4gICAgICAgICAgcmVwb3NpdG9yeUlkOiBjb250ZW50U3RyZWFtLnJlcG9zaXRvcnlJZCxcbiAgICAgICAgICByYW5nZTogY29udGVudFN0cmVhbS5yYW5nZSxcbiAgICAgICAgICBkaWdlc3Q6IGNvbnRlbnRTdHJlYW0uZGlnZXN0LFxuICAgICAgICAgIGFyY2hpdmVQYXRoOiBjb250ZW50U3RyZWFtLmFyY2hpdmVQYXRoLFxuICAgICAgICAgIGZpbGVOYW1lOiBjb250ZW50U3RyZWFtLmZpbGVOYW1lLFxuICAgICAgICAgIG1pbWVUeXBlOiBjb250ZW50U3RyZWFtLm1pbWVUeXBlLFxuICAgICAgICAgIHNpemU6IGNvbnRlbnRTdHJlYW0ubGVuZ3RoXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9iamVjdFR5cGVJZCA9IG8ucHJvcGVydGllc1tCYXNlT2JqZWN0VHlwZUZpZWxkLk9CSkVDVF9UWVBFX0lEXSA/IG8ucHJvcGVydGllc1tCYXNlT2JqZWN0VHlwZUZpZWxkLk9CSkVDVF9UWVBFX0lEXS52YWx1ZSA6IG51bGw7XG4gICAgICBpZiAob2JqZWN0VHlwZXMuaW5kZXhPZihvYmplY3RUeXBlSWQpID09PSAtMSkge1xuICAgICAgICBvYmplY3RUeXBlcy5wdXNoKG9iamVjdFR5cGVJZCk7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdExpc3RJdGVtcy5wdXNoKHtcbiAgICAgICAgb2JqZWN0VHlwZUlkLFxuICAgICAgICBjb250ZW50LFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIHBlcm1pc3Npb25zOiBvLnBlcm1pc3Npb25zXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdDogU2VhcmNoUmVzdWx0ID0ge1xuICAgICAgaGFzTW9yZUl0ZW1zOiBzZWFyY2hSZXNwb25zZS5oYXNNb3JlSXRlbXMsXG4gICAgICB0b3RhbE51bUl0ZW1zOiBzZWFyY2hSZXNwb25zZS50b3RhbE51bUl0ZW1zLFxuICAgICAgaXRlbXM6IHJlc3VsdExpc3RJdGVtcyxcbiAgICAgIG9iamVjdFR5cGVzXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
440
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFjLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBVXpELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFDcEQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sVUFBVTtJQUNyQixjQUFjLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFD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QUssRUFBRSxlQUFlO1lBQ3RCLFdBQVc7U0FDWixDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzsrR0F0ZlUsVUFBVTttSEFBVixVQUFVLGNBRlQsTUFBTTs7NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWxheSwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERtc09iamVjdCB9IGZyb20gJy4uLy4uL21vZGVsL2Rtcy1vYmplY3QubW9kZWwnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcbmltcG9ydCB7IEFwaUJhc2UgfSBmcm9tICcuLi9iYWNrZW5kL2FwaS5lbnVtJztcbmltcG9ydCB7IEh0dHBPcHRpb25zIH0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWNrZW5kU2VydmljZSB9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJy4uL2V2ZW50L2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgWXV2RXZlbnRUeXBlIH0gZnJvbSAnLi4vZXZlbnQvZXZlbnRzJztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoUmVzcG9uc2UsIFNlYXJjaFJlc3VsdCwgU2VhcmNoUmVzdWx0Q29udGVudCwgU2VhcmNoUmVzdWx0SXRlbSB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2guc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFzZU9iamVjdFR5cGVGaWVsZCwgQ29udGVudFN0cmVhbUZpZWxkLCBTeXN0ZW1SZXN1bHQgfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLmVudW0nO1xuaW1wb3J0IHsgU3lzdGVtU2VydmljZSB9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vdXBsb2FkL3VwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENvcmVBcGlPYmplY3QsXG4gIENvcmVBcGlPYmplY3RQcm9wZXJ0eSxcbiAgQ29yZUFwaVJlc3BvbnNlLFxuICBPYmplY3RDb3B5T3B0aW9ucyxcbiAgT2JqZWN0RGVsZXRlT3B0aW9ucyxcbiAgT2JqZWN0RGVsZXRlUmVzdWx0LFxuICBPYmplY3RNb3ZlT3B0aW9uc1xufSBmcm9tICcuL2Rtcy5zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnLi4vLi4vdXRpbC91dGlscy5oZWxwZXIuZW51bSc7XG4vKipcbiAqIFNlcnZpY2UgZm9yIHdvcmtpbmcgd2l0aCBkbXMgb2JqZWN0czogY3JlYXRlIHRoZW0sIGRlbGV0ZSwgZXRjLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEbXNTZXJ2aWNlIHtcbiAgI3NlYXJjaFNlcnZpY2UgPSBpbmplY3QoU2VhcmNoU2VydmljZSk7XG4gICNiYWNrZW5kID0gaW5qZWN0KEJhY2tlbmRTZXJ2aWNlKTtcbiAgI2V2ZW50U2VydmljZSA9IGluamVjdChFdmVudFNlcnZpY2UpO1xuICAjdXBsb2FkU2VydmljZSA9IGluamVjdChVcGxvYWRTZXJ2aWNlKTtcblxuICAvLyBnZW5lcmFsIHRyaWdnZXIgb3BlcmF0b3IgdG8gaGFuZGxlIGFsbCBkbXMgZXZlbnRzXG4gIHByaXZhdGUgdHJpZ2dlckV2ZW50KGV2ZW50OiBZdXZFdmVudFR5cGUsIGlkPzogc3RyaW5nLCBzaWxlbnQgPSBmYWxzZSkge1xuICAgIHJldHVybiAoc3RyZWFtOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4gPT5cbiAgICAgIHN0cmVhbS5waXBlKFxuICAgICAgICAvLyB1cGRhdGUgZG9lcyBub3QgcmV0dXJuIHBlcm1pc3Npb25zLCBzbyB3ZSBuZWVkIHRvIHJlLWxvYWQgdGhlIHdob2xlIGRtcyBvYmplY3RcbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIG9uY2UgcGVybWlzc2lvbnMgYXJlIHByb3ZpZGVkXG4gICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiAoIWlkID8gb2YocmVzKSA6IHRoaXMuZ2V0RG1zT2JqZWN0KGlkKSkpLFxuICAgICAgICAvLyBUT0RPOiBlbmFibGUgb25jZSBwZXJtaXNzaW9ucyBhcmUgcHJvdmlkZWRcbiAgICAgICAgLy8gbWFwKChyZXMpID0+IHRoaXMuc2VhcmNoUmVzdWx0VG9EbXNPYmplY3QodGhpcy5zZWFyY2hTZXJ2aWNlLnRvU2VhcmNoUmVzdWx0KHJlcykuaXRlbXNbMF0pKSxcbiAgICAgICAgdGFwKChyZXM6IGFueSkgPT4gIXNpbGVudCAmJiB0aGlzLiNldmVudFNlcnZpY2UudHJpZ2dlcihldmVudCwgcmVzKSlcbiAgICAgICk7XG4gIH1cblxuICAvLyBnZW5lcmFsIHRyaWdnZXIgb3BlcmF0b3IgdG8gaGFuZGxlIGFsbCBkbXMgZXZlbnRzXG4gICN0cmlnZ2VyRXZlbnRzKGV2ZW50OiBZdXZFdmVudFR5cGUsIGlkcz86IHN0cmluZ1tdLCBzaWxlbnQgPSBmYWxzZSkge1xuICAgIHJldHVybiAoc3RyZWFtOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4gPT5cbiAgICAgIHN0cmVhbS5waXBlKFxuICAgICAgICAvLyB1cGRhdGUgZG9lcyBub3QgcmV0dXJuIHBlcm1pc3Npb25zLCBzbyB3ZSBuZWVkIHRvIHJlLWxvYWQgdGhlIHdob2xlIGRtcyBvYmplY3RcbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIG9uY2UgcGVybWlzc2lvbnMgYXJlIHByb3ZpZGVkXG4gICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiAoIWlkcyA/IG9mKHJlcykgOiB0aGlzLmdldERtc09iamVjdHMoaWRzKSkpLFxuICAgICAgICAvLyBUT0RPOiBlbmFibGUgb25jZSBwZXJtaXNzaW9ucyBhcmUgcHJvdmlkZWRcbiAgICAgICAgLy8gbWFwKChfcmVzOiBhbnlbXSkgPT4gX3Jlcy5tYXAoKHJlcywgaSkgPT4gcmVzPy5fZXJyb3IgPyB7IC4uLnJlcywgaWQ6IGlkcz9baV0gfSA6IHRoaXMuc2VhcmNoUmVzdWx0VG9EbXNPYmplY3QodGhpcy5zZWFyY2hTZXJ2aWNlLnRvU2VhcmNoUmVzdWx0KHJlcykuaXRlbXNbMF0pKSksXG4gICAgICAgIG1hcCgoX3JlczogYW55W10pID0+IF9yZXMubWFwKChyZXMsIGkpID0+IChyZXM/Ll9lcnJvciAmJiBpZHMgPyB7IC4uLnJlcywgaWQ6IGlkc1tpXSB9IDogcmVzKSkpLFxuICAgICAgICB0YXAoKHJlczogYW55KSA9PiAhc2lsZW50ICYmIHJlcy5mb3JFYWNoKChvOiBhbnkpID0+IG8gJiYgdGhpcy4jZXZlbnRTZXJ2aWNlLnRyaWdnZXIoZXZlbnQsIG8pKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIG5ldyBkbXMgb2JqZWN0KHMpLiBQcm92aWRpbmcgYW4gYXJyYXkgb2YgZmlsZXMgaGVyZSBpbnN0ZWFkIG9mIG9uZSB3aWxsIGNyZWF0ZVxuICAgKiBhIG5ldyBkbXMgb2JqZWN0IGZvciBldmVyeSBmaWxlLiBJbiB0aGlzIGNhc2UgaW5kZXhkYXRhIHdpbGwgc2hhcmVkIGFjcm9zcyBhbGwgZmlsZXMuXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlSWQgVGhlIElEIG9mIHRoZSBvYmplY3QgdHlwZSB0byBiZSBjcmVhdGVkXG4gICAqIEBwYXJhbSBpbmRleGRhdGEgSW5kZXhkYXRhIGZvciB0aGUgbmV3IG9iamVjdChzKVxuICAgKiBAcGFyYW0gZmlsZXMgRmlsZShzKSB0byBjcmVhdGUgZG1zIG9iamVjdHMgY29udGVudChzKSB3aXRoXG4gICAqIEBwYXJhbSBsYWJlbCBBIGxhYmVsIHRoYXQgd2lsbCBzaG93IHVwIGluIHRoZSB1cGxvYWQgb3ZlcmxheSBkaWFsb2cgd2hpbGUgdXBsb2FkaW5nXG4gICAqXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIElEcyBvZiB0aGUgb2JqZWN0cyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkXG4gICAqL1xuICBjcmVhdGVEbXNPYmplY3Qob2JqZWN0VHlwZUlkOiBzdHJpbmcsIGluZGV4ZGF0YTogYW55LCBmaWxlczogRmlsZVtdLCBsYWJlbD86IHN0cmluZywgc2lsZW50ID0gZmFsc2UpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy4jYmFja2VuZC5nZXRBcGlCYXNlKEFwaUJhc2UuYXBpV2ViKX0vZG1zL29iamVjdHNgO1xuICAgIGNvbnN0IGRhdGEgPSBpbmRleGRhdGE7XG4gICAgZGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLk9CSkVDVF9UWVBFX0lEXSA9IG9iamVjdFR5cGVJZDtcblxuICAgIGNvbnN0IHVwbG9hZCA9IGZpbGVzLmxlbmd0aCA/IHRoaXMuI3VwbG9hZFNlcnZpY2UudXBsb2FkTXVsdGlwYXJ0KHVybCwgZmlsZXMsIGRhdGEsIGxhYmVsLCBzaWxlbnQpIDogdGhpcy4jdXBsb2FkU2VydmljZS5jcmVhdGVEb2N1bWVudCh1cmwsIGRhdGEpO1xuXG4gICAgcmV0dXJuIHVwbG9hZFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiByZXMubWFwKChyOiBhbnkpID0+IHIucHJvcGVydGllc1tCYXNlT2JqZWN0VHlwZUZpZWxkLk9CSkVDVF9JRF0udmFsdWUpKSxcbiAgICAgICAgLy8gVE9ETzogUmVwbGFjZSBieSBwcm9wZXIgc29sdXRpb25cbiAgICAgICAgLy8gUmlnaHQgbm93IHRoZXJlIGlzIGEgZ2FwIGJldHdlZW4gd2hlbiB0aGUgb2JqZWN0IHdhc1xuICAgICAgICAvLyBjcmVhdGVkIGFuZCB3aGVuIGl0IGlzIGluZGV4ZWQuIFNvIGRlbGF5aW5nIGhlcmUgd2lsbFxuICAgICAgICAvLyBnaXZlIGJhY2tlbmQgdGltZSB0byBnZXQgaXRzIHN0dWZmIHRvZ2V0aGVyLlxuICAgICAgICBkZWxheSgxMDAwKVxuICAgICAgKVxuICAgICAgLnBpcGUodGhpcy50cmlnZ2VyRXZlbnQoWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfQ1JFQVRFRCwgJycsIHNpbGVudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGRtcyBvYmplY3QuXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgb2JqZWN0IHRvIGJlIGRlbGV0ZWRcbiAgICovXG4gIGRlbGV0ZURtc09iamVjdChpZDogc3RyaW5nLCBzaWxlbnQgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYC9kbXMvb2JqZWN0cy8ke2lkfWA7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmRcbiAgICAgIC5kZWxldGUodXJsLCBBcGlCYXNlLmFwaVdlYilcbiAgICAgIC5waXBlKG1hcCgoKSA9PiAoeyBpZCB9KSkpXG4gICAgICAucGlwZSh0aGlzLnRyaWdnZXJFdmVudChZdXZFdmVudFR5cGUuRE1TX09CSkVDVF9ERUxFVEVELCAnJywgc2lsZW50KSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZSBvbGRlciB2ZXJzaW9uIG9mIGEgZG1zIG9iamVjdC5cbiAgICogQHBhcmFtIGlkIElEIG9mIHRoZSBvYmplY3QgdG8gYmUgcmVzdG9yZWRcbiAgICogQHBhcmFtIHZlcnNpb24gdmVyc2lvbiBvZiB0aGUgb2JqZWN0IHRvIGJlIHJlc3RvcmVkXG4gICAqL1xuICByZXN0b3JlRG1zT2JqZWN0KGlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgc2lsZW50ID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAvZG1zL29iamVjdHMvJHtpZH0vdmVyc2lvbnMvJHt2ZXJzaW9ufS9hY3Rpb25zL3Jlc3RvcmU/d2FpdEZvclNlYXJjaENvbnNpc3RlbmN5PXRydWUmcmVzdG9yZVBhcmVudElkPWZhbHNlYDtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZC5wb3N0KHVybCwge30sIEFwaUJhc2UuYXBpV2ViKS5waXBlKHRoaXMudHJpZ2dlckV2ZW50KFl1dkV2ZW50VHlwZS5ETVNfT0JKRUNUX1VQREFURUQsIGlkLCBzaWxlbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGxvYWQgKGFkZC9yZXBsYWNlKSBjb250ZW50IHRvIGEgZG1zIG9iamVjdC5cbiAgICogQHBhcmFtIG9iamVjdElkIElEIG9mIHRoZSBkbXMgb2JqZWN0IHRvIHVwbG9hZCB0aGUgZmlsZSB0b1xuICAgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB0byBiZSB1cGxvYWRlZFxuICAgKi9cbiAgdXBsb2FkQ29udGVudChvYmplY3RJZDogc3RyaW5nLCBmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy4jdXBsb2FkU2VydmljZS51cGxvYWQodGhpcy5nZXRDb250ZW50UGF0aChvYmplY3RJZCksIGZpbGUpLnBpcGUodGhpcy50cmlnZ2VyRXZlbnQoWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfVVBEQVRFRCwgb2JqZWN0SWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRoIG9mIGRtcyBvYmplY3QgY29udGVudCBmaWxlLlxuICAgKiBAcGFyYW0gb2JqZWN0SWQgSUQgb2YgdGhlIGRtcyBvYmplY3RcbiAgICogQHBhcmFtIHZlcnNpb24gdmVyc2lvbiBudW1iZXIgb2YgdGhlIGRtcyBvYmplY3RcbiAgICovXG4gIGdldENvbnRlbnRQYXRoKG9iamVjdElkOiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIpIHtcbiAgICByZXR1cm4gYCR7dGhpcy4jYmFja2VuZC5nZXRBcGlCYXNlKEFwaUJhc2UuYXBpV2ViKX0vZG1zL29iamVjdHMvJHtvYmplY3RJZH0vY29udGVudHMvZmlsZSR7dmVyc2lvbiA/ICc/dmVyc2lvbj0nICsgdmVyc2lvbiA6ICcnfWA7XG4gIH1cblxuICAvKipcbiAgICogT3JpZ2luYWwgQVBJIFBhdGggb2YgZG1zIG9iamVjdCBjb250ZW50IGZpbGUuXG4gICAqIEBwYXJhbSBvYmplY3RJZCBJRCBvZiB0aGUgZG1zIG9iamVjdFxuICAgKiBAcGFyYW0gdmVyc2lvbiB2ZXJzaW9uIG51bWJlciBvZiB0aGUgZG1zIG9iamVjdFxuICAgKiBAcGFyYW0gcmVuZGl0aW9uIHNob3VsZCByZXR1cm4gcmVuZGl0aW9uIHBhdGggb2YgdGhlIGRtcyBvYmplY3RcbiAgICovXG4gIGdldEZ1bGxDb250ZW50UGF0aChvYmplY3RJZDogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCByZW5kaXRpb24gPSBmYWxzZSkge1xuICAgIHJldHVybiBgJHt0aGlzLiNiYWNrZW5kLmdldEFwaUJhc2UoQXBpQmFzZS5jb3JlLCB0cnVlKX0vZG1zL29iamVjdHMvJHtvYmplY3RJZH0ke3ZlcnNpb24gPyAnL3ZlcnNpb25zLycgKyB2ZXJzaW9uIDogJyd9L2NvbnRlbnRzLyR7XG4gICAgICByZW5kaXRpb24gPyAncmVuZGl0aW9ucy9wZGYnIDogJ2ZpbGUnXG4gICAgfWA7XG4gIH1cblxuICBnZXRTbGlkZVVSSShvYmplY3RJZDogc3RyaW5nLCBtaW1lVHlwZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc3VwcG9ydGVkTWltZVR5cGVzID0gWycqLyonXTtcbiAgICBsZXQgc3VwcG9ydGVkID0gZmFsc2U7XG4gICAgaWYgKG1pbWVUeXBlKSB7XG4gICAgICAvLyBjaGVjayBpZiBtaW1lIHR5cGUgc3VwcG9ydHMgc2xpZGVzXG4gICAgICBzdXBwb3J0ZWRNaW1lVHlwZXMuZm9yRWFjaCgocCkgPT4gKHN1cHBvcnRlZCA9IHN1cHBvcnRlZCB8fCBVdGlscy5wYXR0ZXJuVG9SZWdFeHAocCkudGVzdChtaW1lVHlwZSkpKTtcbiAgICB9XG4gICAgcmV0dXJuICFtaW1lVHlwZSB8fCBzdXBwb3J0ZWQgPyBgJHt0aGlzLiNiYWNrZW5kLmdldEFwaUJhc2UoQXBpQmFzZS5jb3JlLCB0cnVlKX0vZG1zL29iamVjdHMvJHtvYmplY3RJZH0vY29udGVudHMvcmVuZGl0aW9ucy9zbGlkZWAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRG93bmxvYWRzIHRoZSBjb250ZW50IG9mIGRtcyBvYmplY3RzLlxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0W10gZG1zT2JqZWN0cyBBcnJheSBvZiBkbXMgb2JqZWN0cyB0byBiZSBkb3dubG9hZGVkXG4gICAqIEBwYXJhbSB3aXRoVmVyc2lvbiBzaG91bGQgZG93bmxvYWQgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgb2JqZWN0XG4gICAqL1xuICBkb3dubG9hZENvbnRlbnQob2JqZWN0czogRG1zT2JqZWN0W10sIHdpdGhWZXJzaW9uPzogYm9vbGVhbikge1xuICAgIG9iamVjdHMuZm9yRWFjaCgob2JqZWN0LCBpKSA9PlxuICAgICAgc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVyaSA9IGAke3RoaXMuZ2V0Q29udGVudFBhdGgob2JqZWN0Py5pZCwgd2l0aFZlcnNpb24gPyBvYmplY3Q/LnZlcnNpb24gOiB1bmRlZmluZWQpfWA7XG4gICAgICAgICAgdGhpcy4jYmFja2VuZC5kb3dubG9hZCh1cmkpO1xuICAgICAgICB9LFxuICAgICAgICBVdGlscy5pc1NhZmFyaSgpID8gaSAqIDEwMDAgOiAwIC8vIFNhZmFyaSBkb2VzIG5vdCBhbGxvdyBtdWx0aSBkb3dubG9hZFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYSBkbXMgb2JqZWN0LlxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICogQHBhcmFtIHZlcnNpb24gRGVzaXJlZCB2ZXJzaW9uIG9mIHRoZSBvYmplY3RcbiAgICovXG4gIGdldERtc09iamVjdChpZDogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCBzaWxlbnQgPSBmYWxzZSwgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyB8IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmRcbiAgICAgIC5nZXQoYC9kbXMvb2JqZWN0cy8ke2lkfSR7dmVyc2lvbiA/ICcvdmVyc2lvbnMvJyArIHZlcnNpb24gOiAnJ31gLCB1bmRlZmluZWQsIHJlcXVlc3RPcHRpb25zKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXRlbTogU2VhcmNoUmVzdWx0SXRlbSA9IHRoaXMuI3NlYXJjaFNlcnZpY2UudG9TZWFyY2hSZXN1bHQocmVzKS5pdGVtc1swXTtcbiAgICAgICAgICByZXR1cm4gdGhpcy4jc2VhcmNoUmVzdWx0VG9EbXNPYmplY3QoaXRlbSk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZSh0aGlzLnRyaWdnZXJFdmVudChZdXZFdmVudFR5cGUuRE1TX09CSkVDVF9MT0FERUQsICcnLCBzaWxlbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgdGFnIG9uIGEgZG1zIG9iamVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSB0YWcgVGhlIHRhZyB0byBiZSB1cGRhdGVkXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdGFncyBuZXcgdmFsdWVcbiAgICovXG4gIHNldERtc09iamVjdFRhZyhpZDogc3RyaW5nLCB0YWc6IHN0cmluZywgdmFsdWU6IGFueSwgc2lsZW50ID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kXG4gICAgICAucG9zdChgL2Rtcy9vYmplY3RzL3RhZ3MvJHt0YWd9L3N0YXRlLyR7dmFsdWV9P3F1ZXJ5PVNFTEVDVCAqIEZST00gc3lzdGVtOm9iamVjdCBXSEVSRSBzeXN0ZW06b2JqZWN0SWQ9JyR7aWR9J2AsIHt9LCBBcGlCYXNlLmNvcmUpXG4gICAgICAucGlwZSh0aGlzLnRyaWdnZXJFdmVudChZdXZFdmVudFR5cGUuRE1TX09CSkVDVF9VUERBVEVELCBpZCwgc2lsZW50KSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhIHRhZyBmcm9tIGEgZG1zIG9iamVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSB0YWcgVGhlIHRhZyB0byBiZSBkZWxldGVkXG4gICAqL1xuICBkZWxldGVEbXNPYmplY3RUYWcoaWQ6IHN0cmluZywgdGFnOiBzdHJpbmcsIHNpbGVudCA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZC5kZWxldGUoYC9kbXMvb2JqZWN0cy8ke2lkfS90YWdzLyR7dGFnfWAsIEFwaUJhc2UuY29yZSkucGlwZSh0aGlzLnRyaWdnZXJFdmVudChZdXZFdmVudFR5cGUuRE1TX09CSkVDVF9VUERBVEVELCBpZCwgc2lsZW50KSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGluZGV4ZGF0YSBvZiBhIGRtcyBvYmplY3QuXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgb2JqZWN0IHRvIGFwcGx5IHRoZSBkYXRhIHRvXG4gICAqIEBwYXJhbSBkYXRhIEluZGV4ZGF0YSB0byBiZSBhcHBsaWVkXG4gICAqIEBwYXJhbSBzaWxlbnQgZmxhZyB0byB0cmlnZ2VyIERNU19PQkpFQ1RfVVBEQVRFRCBldmVudFxuICAgKi9cbiAgdXBkYXRlRG1zT2JqZWN0KGlkOiBzdHJpbmcsIGRhdGE6IGFueSwgc2lsZW50ID0gZmFsc2UpOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kLnBhdGNoKGAvZG1zL29iamVjdHMvJHtpZH1gLCBkYXRhKS5waXBlKHRoaXMudHJpZ2dlckV2ZW50KFl1dkV2ZW50VHlwZS5ETVNfT0JKRUNUX1VQREFURUQsIGlkLCBzaWxlbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGdpdmVuIG9iamVjdHMuXG4gICAqIEBwYXJhbSBvYmplY3RzIHRoZSBvYmplY3RzIHRvIHVwZGF0ZWRcbiAgICovXG4gIHVwZGF0ZURtc09iamVjdHMob2JqZWN0czogeyBpZDogc3RyaW5nOyBkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IH1bXSwgc2lsZW50ID0gZmFsc2UpOiBPYnNlcnZhYmxlPERtc09iamVjdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmRcbiAgICAgIC5wYXRjaChgL2Rtcy9vYmplY3RzYCwge1xuICAgICAgICBwYXRjaGVzOiBvYmplY3RzLm1hcCgobykgPT4gKHtcbiAgICAgICAgICBpZDogby5pZCxcbiAgICAgICAgICBkYXRhOiBvLmRhdGFcbiAgICAgICAgfSkpXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRoaXMuI3RyaWdnZXJFdmVudHMoXG4gICAgICAgICAgWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfVVBEQVRFRCxcbiAgICAgICAgICBvYmplY3RzLm1hcCgobykgPT4gby5pZCksXG4gICAgICAgICAgc2lsZW50XG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBhIHRhZyBvbiBhIGRtcyBvYmplY3QuXG4gICAqIEBwYXJhbSBpZHMgTGlzdCBvZiBJRHMgb2Ygb2JqZWN0c1xuICAgKiBAcGFyYW0gdGFnIFRoZSB0YWcgdG8gYmUgdXBkYXRlZFxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHRhZ3MgbmV3IHZhbHVlXG4gICAqL1xuICB1cGRhdGVEbXNPYmplY3RzVGFnKGlkczogc3RyaW5nW10sIHRhZzogc3RyaW5nLCB2YWx1ZTogYW55LCBzaWxlbnQgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYmF0Y2hVcGRhdGVUYWcoaWRzLCB0YWcsIHZhbHVlKS5waXBlKHRoaXMuI3RyaWdnZXJFdmVudHMoWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfVVBEQVRFRCwgaWRzLCBzaWxlbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyBnaXZlbiBvYmplY3RzIHRvIGEgZGlmZmVyZW50IGZvbGRlci5cbiAgICogQHBhcmFtIGZvbGRlcklkIHRoZSBpZCBvZiB0aGUgbmV3IHBhcmVudCBmb2xkZXJcbiAgICogQHBhcmFtIG9iamVjdHMgb2JqZWN0cyB0byBiZSBtb3ZlZFxuICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zIGZvciB0aGUgbW92ZSBvcGVyYXRpb25cbiAgICovXG4gIG1vdmVEbXNPYmplY3RzKHRhcmdldEZvbGRlcklkOiBzdHJpbmcgfCBudWxsLCBvYmplY3RzOiBEbXNPYmplY3RbXSwgb3B0aW9ucz86IE9iamVjdE1vdmVPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVEbXNPYmplY3RzKG9iamVjdHMubWFwKChvKSA9PiAoeyBpZDogby5pZCwgZGF0YTogeyBbQmFzZU9iamVjdFR5cGVGaWVsZC5QQVJFTlRfSURdOiB0YXJnZXRGb2xkZXJJZCB9IH0pLCB0cnVlKSkucGlwZShcbiAgICAgIHRhcCgocmVzKSA9PiAhb3B0aW9ucz8uc2lsZW50ICYmIHRoaXMuI2V2ZW50U2VydmljZS50cmlnZ2VyKFl1dkV2ZW50VHlwZS5ETVNfT0JKRUNUU19NT1ZFRCwgcmVzKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcHkgZ2l2ZW4gb2JqZWN0cyB0byBhIGRpZmZlcmVudCBmb2xkZXIuIFRoZSBvYmplY3RzIHdpbGwgYmUgY29waWVkIHdpdGggdGhlaXIgaW5kZXhkYXRhIHJlZmVyZW5jaW5nXG4gICAqIHRoZSBleGlzdGluZyBjb250ZW50IG9mIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgKiBAcGFyYW0gdGFyZ2V0Rm9sZGVySWQgVGhlIElEIG9mIHRoZSB0YXJnZXQgZm9sZGVyXG4gICAqIEBwYXJhbSBvYmplY3RzIFRoZSBvYmplY3RzIHRvIGJlIGNvcGllZFxuICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zIGZvciB0aGUgY29weSBvcGVyYXRpb25cbiAgICovXG4gIGNvcHlEbXNPYmplY3RzKHRhcmdldEZvbGRlcklkOiBzdHJpbmcgfCBudWxsLCBvYmplY3RzOiBEbXNPYmplY3RbXSwgb3B0aW9ucz86IE9iamVjdENvcHlPcHRpb25zKTogT2JzZXJ2YWJsZTxDb3JlQXBpUmVzcG9uc2U+IHtcbiAgICBjb25zdCBleGNsdWRlUHJvcGVydGllcyA9IFtcbiAgICAgIEJhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX0lELFxuICAgICAgQmFzZU9iamVjdFR5cGVGaWVsZC5DUkVBVEVEX0JZLFxuICAgICAgQmFzZU9iamVjdFR5cGVGaWVsZC5DUkVBVElPTl9EQVRFLFxuICAgICAgQmFzZU9iamVjdFR5cGVGaWVsZC5NT0RJRklFRF9CWSxcbiAgICAgIEJhc2VPYmplY3RUeXBlRmllbGQuTU9ESUZJQ0FUSU9OX0RBVEUsXG4gICAgICBCYXNlT2JqZWN0VHlwZUZpZWxkLlZFUlNJT05fTlVNQkVSLFxuICAgICAgQmFzZU9iamVjdFR5cGVGaWVsZC5UUkFDRV9JRCxcbiAgICAgIEJhc2VPYmplY3RUeXBlRmllbGQuUEFSRU5UX09CSkVDVF9UWVBFX0lELFxuICAgICAgQmFzZU9iamVjdFR5cGVGaWVsZC5QQVJFTlRfVkVSU0lPTl9OVU1CRVJcbiAgICBdO1xuXG4gICAgY29uc3QgbWFwcGVkT2JqZWN0czogQ29yZUFwaU9iamVjdFtdID0gb2JqZWN0cy5tYXAoKG8pID0+IHtcbiAgICAgIG8uZGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLlBBUkVOVF9JRF0gPSB0YXJnZXRGb2xkZXJJZDtcblxuICAgICAgLy8gUmVtb3ZlIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGFsbG93ZWQgdG8gYmUgY29waWVkLlxuICAgICAgLy8gVGhpcyBhbHNvIGluY2x1ZGVzIGNvbnRlbnQgc3RyZWFtIGZpZWxkcyBidW5kbGVkIGludG8gdGhlIG9iamVjdHMgZGF0YSBmaWVsZC5cbiAgICAgIC8vIFByb3BlcnRpZXMgZW5kaW5nIHdpdGggJ190aXRsZScgYXJlIGFsc28gZXhjbHVkZWQgYXMgdGhleSBhcmUgZW5yaWNobWVudCB2YWx1ZXNcbiAgICAgIC8vIHByb3ZpZGVkIGJ5IEFQSS1XZWIuXG4gICAgICBPYmplY3Qua2V5cyhvLmRhdGEpXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4ga2V5LmVuZHNXaXRoKCdfdGl0bGUnKSB8fCBleGNsdWRlUHJvcGVydGllcy5pbmNsdWRlcyhrZXkpIHx8IE9iamVjdC52YWx1ZXMoQ29udGVudFN0cmVhbUZpZWxkKS5pbmNsdWRlcyhrZXkpKVxuICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KG8uZGF0YSwga2V5KSk7XG5cbiAgICAgIC8vIG1hcCBmaWx0ZXJlZCBkYXRhIGZpZWxkIHRvIGRhdGEgZm9ybWF0IHJlcXVpcmVkIGJ5IHRoZSBDb3JlLUFQSVxuICAgICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5rZXlzKG8uZGF0YSkucmVkdWNlKFxuICAgICAgICAoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICBhY2Nba2V5XSA9IHsgdmFsdWU6IG8uZGF0YVtrZXldIH07XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgQ29yZUFwaU9iamVjdFByb3BlcnR5PlxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJvcGVydGllczogcHJvcGVydGllcyxcbiAgICAgICAgb2JqZWN0VHlwZUlkOiBvLm9iamVjdFR5cGVJZCxcbiAgICAgICAgLi4uKG8uY29udGVudFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBjb250ZW50U3RyZWFtczogW28uY29udGVudF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHt9KVxuICAgICAgfSBhcyBDb3JlQXBpT2JqZWN0O1xuICAgIH0pO1xuXG4gICAgY29uc3QgcXVlcnkgPSBvcHRpb25zXG4gICAgICA/IE9iamVjdC5rZXlzKG9wdGlvbnMpXG4gICAgICAgICAgLm1hcCgoa2V5OiBzdHJpbmcpID0+IGAke2tleX09JHsob3B0aW9ucyBhcyBhbnkpW2tleV19YClcbiAgICAgICAgICAuam9pbignJicpXG4gICAgICA6ICcnO1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kLnBvc3QoYC9kbXMvb2JqZWN0cz8ke3F1ZXJ5fWAsIHsgb2JqZWN0czogbWFwcGVkT2JqZWN0cyB9LCBBcGlCYXNlLmNvcmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGJ1bmNoIG9mIGRtcyBvYmplY3RzLlxuICAgKiBAcGFyYW0gaWRzIExpc3Qgb2YgSURzIG9mIG9iamVjdHMgdG8gYmUgcmV0cmlldmVkXG4gICAqL1xuICBnZXREbXNPYmplY3RzKGlkczogc3RyaW5nW10sIHNpbGVudCA9IGZhbHNlKTogT2JzZXJ2YWJsZTxEbXNPYmplY3RbXT4ge1xuICAgIHJldHVybiB0aGlzLmJhdGNoR2V0KGlkcylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKF9yZXM6IGFueVtdKSA9PlxuICAgICAgICAgIF9yZXMubWFwKChyZXMsIGkpID0+IChyZXM/Ll9lcnJvciA/IHsgLi4ucmVzLCBpZDogaWRzW2ldIH0gOiB0aGlzLiNzZWFyY2hSZXN1bHRUb0Rtc09iamVjdCh0aGlzLiNzZWFyY2hTZXJ2aWNlLnRvU2VhcmNoUmVzdWx0KHJlcykuaXRlbXNbMF0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnBpcGUodGhpcy4jdHJpZ2dlckV2ZW50cyhZdXZFdmVudFR5cGUuRE1TX09CSkVDVF9MT0FERUQsIHVuZGVmaW5lZCwgc2lsZW50KSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGEgYnVuY2ggb2YgZG1zIG9iamVjdHMuXG4gICAqIEBwYXJhbSBpZHMgTGlzdCBvZiBJRHMgb2Ygb2JqZWN0cyB0byBiZSBkZWxldGVkXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSBkZWxldGUgb3BlcmF0aW9uXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIGRlbGV0ZSByZXN1bHRzLlxuICAgKi9cbiAgZGVsZXRlRG1zT2JqZWN0cyhcbiAgICBvYmplY3RzOiBzdHJpbmdbXSB8IHsgaWQ6IHN0cmluZzsgc3ViamVjdDogc3RyaW5nIH1bXSxcblxuICAgIG9wdGlvbnM/OiBPYmplY3REZWxldGVPcHRpb25zXG4gICk6IE9ic2VydmFibGU8T2JqZWN0RGVsZXRlUmVzdWx0W10+IHtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG9wdGlvbnNcbiAgICAgID8gYD8ke09iamVjdC5rZXlzKG9wdGlvbnMpXG4gICAgICAgICAgLmZpbHRlcigoaykgPT4gWyd3YWl0Rm9yU2VhcmNoQ29uc2lzdGVuY3knLCAnZ3JlZWR5J10uaW5jbHVkZXMoaykpXG4gICAgICAgICAgLm1hcCgoaykgPT4gYCR7a309JHsob3B0aW9ucyBhcyBhbnkpW2tdfWApXG4gICAgICAgICAgLmpvaW4oJyYnKX1gXG4gICAgICA6ICcnO1xuXG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmRcbiAgICAgIC5kZWxldGUoYC9kbXMvb2JqZWN0cyR7cXVlcnlQYXJhbXN9YCwgQXBpQmFzZS5jb3JlLCB7XG4gICAgICAgIGJvZHk6IHtcbiAgICAgICAgICBvYmplY3RzOiBvYmplY3RzLm1hcCgobykgPT4gKHtcbiAgICAgICAgICAgIHByb3BlcnRpZXM6XG4gICAgICAgICAgICAgIHR5cGVvZiBvID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAnc3lzdGVtOm9iamVjdElkJzoge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbTpvYmplY3RJZCc6IHsgdmFsdWU6IG8uaWQgfSxcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdDogeyB2YWx1ZTogby5zdWJqZWN0IH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT5cbiAgICAgICAgICByZXM/Lm9iamVjdHM/Lm1hcCgocjogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2ID0gci5vcHRpb25zPy5bU3lzdGVtUmVzdWx0LkRFTEVURV07XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBpZDogci5wcm9wZXJ0aWVzPy5bQmFzZU9iamVjdFR5cGVGaWVsZC5PQkpFQ1RfSURdPy52YWx1ZSxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogci5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi4odj8uaHR0cFN0YXR1c0NvZGUgPj0gNDAwID8geyBfZXJyb3I6IHsgc3RhdHVzOiB2Lmh0dHBTdGF0dXNDb2RlLCBtZXNzYWdlOiB2Lm1lc3NhZ2UgfSB9IDoge30pXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5waXBlKHRoaXMuI3RyaWdnZXJFdmVudHMoWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfREVMRVRFRCwgdW5kZWZpbmVkLCBvcHRpb25zPy5zaWxlbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhIGRtcyBvYmplY3QgdmVyc2lvbnMuXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgKi9cbiAgZ2V0RG1zT2JqZWN0VmVyc2lvbnMoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RG1zT2JqZWN0W10+IHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZC5nZXQoJy9kbXMvb2JqZWN0cy8nICsgaWQgKyAnL3ZlcnNpb25zJykucGlwZShcbiAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1zOiBTZWFyY2hSZXN1bHRJdGVtW10gPSB0aGlzLiNzZWFyY2hTZXJ2aWNlLnRvU2VhcmNoUmVzdWx0KHJlcykuaXRlbXMgfHwgW107XG4gICAgICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0pID0+IHRoaXMuI3NlYXJjaFJlc3VsdFRvRG1zT2JqZWN0KGl0ZW0pKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKChyZXMpID0+IHJlcy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ3ZlcnNpb24nLCBTb3J0LkRFU0MpKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0RG1zT2JqZWN0VmVyc2lvbihpZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIpOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kXG4gICAgICAuZ2V0KGAvZG1zL29iamVjdHMvJHtpZH0vdmVyc2lvbnMvJHt2ZXJzaW9ufWApXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gdGhpcy4jc2VhcmNoUmVzdWx0VG9EbXNPYmplY3QodGhpcy4jc2VhcmNoU2VydmljZS50b1NlYXJjaFJlc3VsdChyZXMpLml0ZW1zWzBdKSkpO1xuICB9XG5cbiAgY29yZUFwaVJlc3BvbnNlVG9EbXNPYmplY3QocmVzOiBDb3JlQXBpUmVzcG9uc2UpOiBEbXNPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLiNzZWFyY2hSZXN1bHRUb0Rtc09iamVjdCh7XG4gICAgICBvYmplY3RUeXBlSWQ6IHJlcy5wcm9wZXJ0aWVzW0Jhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX1RZUEVfSURdLnZhbHVlIGFzIHN0cmluZyxcbiAgICAgIGZpZWxkczogbmV3IE1hcChPYmplY3QuZW50cmllcyhyZXMucHJvcGVydGllcykpLFxuICAgICAgY29udGVudDogcmVzLmNvbnRlbnRTdHJlYW1zPy5bMF1cbiAgICB9KTtcbiAgfVxuXG4gICNzZWFyY2hSZXN1bHRUb0Rtc09iamVjdChyZXNJdGVtOiBTZWFyY2hSZXN1bHRJdGVtKTogRG1zT2JqZWN0IHtcbiAgICByZXR1cm4gbmV3IERtc09iamVjdChyZXNJdGVtKTtcbiAgfVxuXG4gIGJhdGNoVXBkYXRlVGFnKGlkczogc3RyaW5nW10sIHRhZzogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQuYmF0Y2goXG4gICAgICBpZHMubWFwKChpZCkgPT4gKHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIHVyaTogYC9kbXMvb2JqZWN0cy90YWdzLyR7dGFnfS9zdGF0ZS8ke3ZhbHVlfT9xdWVyeT1TRUxFQ1QgKiBGUk9NIHN5c3RlbTpvYmplY3QgV0hFUkUgc3lzdGVtOm9iamVjdElkPScke2lkfSdgLFxuICAgICAgICBiYXNlOiBBcGlCYXNlLmNvcmUsXG4gICAgICAgIGJvZHk6IHt9XG4gICAgICB9KSlcbiAgICApO1xuICB9XG5cbiAgYmF0Y2hEZWxldGVUYWcoaWRzOiBzdHJpbmdbXSwgdGFnOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZC5iYXRjaChcbiAgICAgIGlkcy5tYXAoKGlkKSA9PiAoe1xuICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgICB1cmk6IGAvZG1zL29iamVjdHMvJHtpZH0vdGFncy8ke3RhZ31gLFxuICAgICAgICBiYXNlOiBBcGlCYXNlLmNvcmVcbiAgICAgIH0pKVxuICAgICk7XG4gIH1cblxuICBiYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQuYmF0Y2goaWRzLm1hcCgoaWQpID0+ICh7IG1ldGhvZDogJ0RFTEVURScsIHVyaTogYC9kbXMvb2JqZWN0cy8ke2lkfWAgfSkpKTtcbiAgfVxuXG4gIGJhdGNoR2V0KGlkczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZC5iYXRjaChpZHMubWFwKChpZCkgPT4gKHsgbWV0aG9kOiAnR0VUJywgdXJpOiBgL2Rtcy9vYmplY3RzLyR7aWR9YCB9KSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcCBzZWFyY2ggcmVzdWx0IGZyb20gdGhlIGJhY2tlbmQgdG8gYXBwbGljYXRpb25zIFNlYXJjaFJlc3VsdCBvYmplY3RcbiAgICogQHBhcmFtIHNlYXJjaFJlc3BvbnNlIFRoZSBiYWNrZW5kIHJlc3BvbnNlXG4gICAqL1xuICB0b1NlYXJjaFJlc3VsdChzZWFyY2hSZXNwb25zZTogU2VhcmNoUmVzcG9uc2UpOiBTZWFyY2hSZXN1bHQge1xuICAgIGNvbnN0IHJlc3VsdExpc3RJdGVtczogU2VhcmNoUmVzdWx0SXRlbVtdID0gW107XG4gICAgY29uc3Qgb2JqZWN0VHlwZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBzZWFyY2hSZXNwb25zZS5vYmplY3RzLmZvckVhY2goKG86IGFueSkgPT4ge1xuICAgICAgY29uc3QgZmllbGRzID0gbmV3IE1hcCgpO1xuICAgICAgLy8gcHJvY2VzcyBwcm9wZXJ0aWVzIHNlY3Rpb24gb2YgcmVzdWx0XG4gICAgICBPYmplY3Qua2V5cyhvLnByb3BlcnRpZXMpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG8ucHJvcGVydGllc1trZXldLnZhbHVlO1xuICAgICAgICBpZiAoby5wcm9wZXJ0aWVzW2tleV0uY2x2YWx1ZSkge1xuICAgICAgICAgIC8vIHRhYmxlIGZpZWxkcyB3aWxsIGhhdmUgYSBjbGllbnRWYWx1ZSB0b28gLi4uXG4gICAgICAgICAgdmFsdWUgPSBvLnByb3BlcnRpZXNba2V5XS5jbHZhbHVlO1xuICAgICAgICAgIC8vIC4uLiBhbmQgYWxzbyBtYXkgY29udGFpbiB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHJlc29sdmVkXG4gICAgICAgICAgaWYgKG8ucHJvcGVydGllc1trZXldLnJlc29sdmVkVmFsdWVzKSB7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXModikuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc1ZhbHVlID0gQXJyYXkuaXNBcnJheSh2W2tdKSA/IHZba10ubWFwKChpOiBhbnkpID0+IG8ucHJvcGVydGllc1trZXldLnJlc29sdmVkVmFsdWVzW2ldKSA6IG8ucHJvcGVydGllc1trZXldLnJlc29sdmVkVmFsdWVzW3Zba11dO1xuICAgICAgICAgICAgICAgIGlmIChyZXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgdltgJHtrfV90aXRsZWBdID0gcmVzVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZpZWxkcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGlmIChvLnByb3BlcnRpZXNba2V5XS50aXRsZSkge1xuICAgICAgICAgIGZpZWxkcy5zZXQoa2V5ICsgJ190aXRsZScsIG8ucHJvcGVydGllc1trZXldLnRpdGxlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIHByb2Nlc3MgY29udGVudFN0cmVhbXMgc2VjdGlvbiBvZiByZXN1bHQgaWYgYXZhaWxhYmxlLlxuICAgICAgLy8gT2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgZmlsZXMgYXR0YWNoZWQgd29uJ3QgaGF2ZSB0aGlzIHNlY3Rpb25cbiAgICAgIGxldCBjb250ZW50OiBTZWFyY2hSZXN1bHRDb250ZW50IHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKG8uY29udGVudFN0cmVhbXMgJiYgby5jb250ZW50U3RyZWFtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIHdlIGFzc3VtZSB0aGF0IGVhY2ggcmVzdWx0IG9iamVjdCBvbmx5IGhhcyBPTkUgZmlsZSBhdHRhY2hlZCwgYWx0b3VnaFxuICAgICAgICAvLyB0aGlzIGlzIGFuIGFycmF5IGFuZCB0aGVyZSBtYXkgYmUgbW9yZVxuICAgICAgICBjb25zdCBjb250ZW50U3RyZWFtID0gby5jb250ZW50U3RyZWFtc1swXTtcbiAgICAgICAgLy8gYWxzbyBhZGQgY29udGVudHN0cmVhbSByZWxhdGVkIGZpZWxkcyB0byB0aGUgcmVzdWx0IGZpZWxkc1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5MRU5HVEgsIGNvbnRlbnRTdHJlYW0ubGVuZ3RoKTtcbiAgICAgICAgZmllbGRzLnNldChDb250ZW50U3RyZWFtRmllbGQuTUlNRV9UWVBFLCBjb250ZW50U3RyZWFtLm1pbWVUeXBlKTtcbiAgICAgICAgZmllbGRzLnNldChDb250ZW50U3RyZWFtRmllbGQuRklMRU5BTUUsIGNvbnRlbnRTdHJlYW0uZmlsZU5hbWUpO1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5JRCwgY29udGVudFN0cmVhbS5jb250ZW50U3RyZWFtSWQpO1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5SQU5HRSwgY29udGVudFN0cmVhbS5jb250ZW50U3RyZWFtUmFuZ2UpO1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5SRVBPU0lUT1JZX0lELCBjb250ZW50U3RyZWFtLnJlcG9zaXRvcnlJZCk7XG4gICAgICAgIGZpZWxkcy5zZXQoQ29udGVudFN0cmVhbUZpZWxkLkRJR0VTVCwgY29udGVudFN0cmVhbS5kaWdlc3QpO1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5BUkNISVZFX1BBVEgsIGNvbnRlbnRTdHJlYW0uYXJjaGl2ZVBhdGgpO1xuXG4gICAgICAgIGNvbnRlbnQgPSB7XG4gICAgICAgICAgY29udGVudFN0cmVhbUlkOiBjb250ZW50U3RyZWFtLmNvbnRlbnRTdHJlYW1JZCxcbiAgICAgICAgICByZXBvc2l0b3J5SWQ6IGNvbnRlbnRTdHJlYW0ucmVwb3NpdG9yeUlkLFxuICAgICAgICAgIHJhbmdlOiBjb250ZW50U3RyZWFtLnJhbmdlLFxuICAgICAgICAgIGRpZ2VzdDogY29udGVudFN0cmVhbS5kaWdlc3QsXG4gICAgICAgICAgYXJjaGl2ZVBhdGg6IGNvbnRlbnRTdHJlYW0uYXJjaGl2ZVBhdGgsXG4gICAgICAgICAgZmlsZU5hbWU6IGNvbnRlbnRTdHJlYW0uZmlsZU5hbWUsXG4gICAgICAgICAgbWltZVR5cGU6IGNvbnRlbnRTdHJlYW0ubWltZVR5cGUsXG4gICAgICAgICAgc2l6ZTogY29udGVudFN0cmVhbS5sZW5ndGhcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb2JqZWN0VHlwZUlkID0gby5wcm9wZXJ0aWVzW0Jhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX1RZUEVfSURdID8gby5wcm9wZXJ0aWVzW0Jhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX1RZUEVfSURdLnZhbHVlIDogbnVsbDtcbiAgICAgIGlmIChvYmplY3RUeXBlcy5pbmRleE9mKG9iamVjdFR5cGVJZCkgPT09IC0xKSB7XG4gICAgICAgIG9iamVjdFR5cGVzLnB1c2gob2JqZWN0VHlwZUlkKTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0TGlzdEl0ZW1zLnB1c2goe1xuICAgICAgICBvYmplY3RUeXBlSWQsXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgcGVybWlzc2lvbnM6IG8ucGVybWlzc2lvbnNcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0OiBTZWFyY2hSZXN1bHQgPSB7XG4gICAgICBoYXNNb3JlSXRlbXM6IHNlYXJjaFJlc3BvbnNlLmhhc01vcmVJdGVtcyxcbiAgICAgIHRvdGFsTnVtSXRlbXM6IHNlYXJjaFJlc3BvbnNlLnRvdGFsTnVtSXRlbXMsXG4gICAgICBpdGVtczogcmVzdWx0TGlzdEl0ZW1zLFxuICAgICAgb2JqZWN0VHlwZXNcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
@@ -3607,7 +3607,7 @@ class DmsService {
3607
3607
  .map((key) => `${key}=${options[key]}`)
3608
3608
  .join('&')
3609
3609
  : '';
3610
- return this.#backend.post(`/dms/objects?${query}}`, { objects: mappedObjects }, ApiBase.core);
3610
+ return this.#backend.post(`/dms/objects?${query}`, { objects: mappedObjects }, ApiBase.core);
3611
3611
  }
3612
3612
  /**
3613
3613
  * Get a bunch of dms objects.