tango-app-ui-store-builder 1.0.95 → 1.0.97

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.
Files changed (32) hide show
  1. package/esm2022/lib/components/collection-update-ai/components/store-select/store-select.component.mjs +23 -4
  2. package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +141 -14
  3. package/esm2022/lib/components/collection-update-ai/find-replace-table/find-replace-table.component.mjs +13 -3
  4. package/esm2022/lib/components/collection-update-ai/models/find-replace.model.mjs +1 -1
  5. package/esm2022/lib/components/collection-update-ai/services/data.service.mjs +5 -1
  6. package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +221 -14
  7. package/esm2022/lib/components/manage-store-plano/verification-feedback/action-confirm-popup/action-confirm-popup.component.mjs +12 -1
  8. package/esm2022/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.mjs +102 -7
  9. package/esm2022/lib/components/onboard-store-plano/onboard-store-plano.component.mjs +70 -12
  10. package/esm2022/lib/components/onboard-store-plano/utils/axis-compaction.mjs +56 -55
  11. package/esm2022/lib/components/plano-tools/allow-edit/allow-edit.component.mjs +1 -1
  12. package/esm2022/lib/components/plano-tools/delete-task/delete-task.component.mjs +1 -1
  13. package/esm2022/lib/components/plano-tools/modify-fixture-numbers/modify-fixture-numbers.component.mjs +156 -0
  14. package/esm2022/lib/components/plano-tools/plano-data-export/plano-data-export.component.mjs +1 -1
  15. package/esm2022/lib/components/plano-tools/store-exports/store-exports.component.mjs +1 -1
  16. package/esm2022/lib/components/plano-tools/tools-parent/tools-parent.component.mjs +3 -3
  17. package/esm2022/lib/services/store-builder.service.mjs +19 -1
  18. package/esm2022/lib/tango-store-builder-routing.module.mjs +6 -1
  19. package/esm2022/lib/tango-store-builder.module.mjs +4 -1
  20. package/fesm2022/tango-app-ui-store-builder.mjs +810 -106
  21. package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
  22. package/lib/components/collection-update-ai/components/store-select/store-select.component.d.ts +2 -1
  23. package/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.d.ts +18 -0
  24. package/lib/components/collection-update-ai/find-replace-table/find-replace-table.component.d.ts +1 -0
  25. package/lib/components/collection-update-ai/models/find-replace.model.d.ts +12 -0
  26. package/lib/components/manage-store-plano/manage-store-plano.component.d.ts +5 -0
  27. package/lib/components/manage-store-plano/verification-feedback/action-confirm-popup/action-confirm-popup.component.d.ts +1 -1
  28. package/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.d.ts +13 -1
  29. package/lib/components/plano-tools/modify-fixture-numbers/modify-fixture-numbers.component.d.ts +49 -0
  30. package/lib/services/store-builder.service.d.ts +13 -0
  31. package/lib/tango-store-builder.module.d.ts +53 -52
  32. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1yZXBsYWNlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbi11cGRhdGUtYWkvbW9kZWxzL2ZpbmQtcmVwbGFjZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGaW5kUmVwbGFjZSB7XHJcbiAgICBfaWQ6IHN0cmluZztcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbiAgICBjbGllbnRJZD86IHN0cmluZztcclxuICAgIHNlYXJjaE1vZGU/OiAnc3RvcmUnIHwgJ2NsdXN0ZXInO1xyXG4gICAgc3RvcmVTZWFyY2hTdHJpbmc/OiBzdHJpbmc7XHJcbiAgICB0YXJnZXQ/OiAnbWVyY2gnIHwgJ3ZtJyB8ICdib3RoJztcclxuICAgIGZpbmRQcm9tcHQ/OiBzdHJpbmc7XHJcbiAgICByZXBsYWNlUHJvbXB0Pzogc3RyaW5nO1xyXG4gICAgc3RvcmVDb3VudD86IG51bWJlcjtcclxuICAgIHN0b3Jlcz86IFN0b3JlW107XHJcbiAgICBzZWxlY3RlZENsdXN0ZXJzPzogQXJyYXk8eyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0+O1xyXG4gICAgYmF0Y2hQcm9ncmVzcz86IG51bWJlcjtcclxuICAgIHN0YXR1czogJ2RyYWZ0JyB8ICdiYXRjaC1ydW5uaW5nJyB8ICd5ZXQtdG8tYXBwcm92ZScgfCAnYXBwcm92ZWQnIHwgJ3NjaGVkdWxlZCc7XHJcbiAgICBzY2hlZHVsZT86IGJvb2xlYW47XHJcbiAgICBzY2hlZHVsZURhdGU/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgY3JlYXRlZEF0Pzogc3RyaW5nO1xyXG4gICAgdXBkYXRlZEF0Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0b3Jle1xyXG4gICAgc3RvcmVOYW1lOnN0cmluZztcclxuICAgIHN0b3JlSWQ/OnN0cmluZztcclxuICAgIHBsYW5vSWQ/OnN0cmluZztcclxuICAgIGxheW91dElkPzpzdHJpbmc7XHJcbiAgICBiYXRjaElkPzpzdHJpbmc7XHJcbiAgICBiYXRjaFN0YXR1cz86J3lldC10by1zdGFydCcgfCAnaW5pdGlhdGVkJyB8ICdjb21wbGV0ZScgfCAnZmFpbGVkJztcclxuICAgIHJlc3BvbnNlU3RhdHVzPzonbWF0Y2gnIHwgJ25vLW1hdGNoJztcclxuICAgIGZpbmRSZXNwb25zZURhdGE/OiBzdHJpbmc7IC8vIGZpeHR1cmUgX2lkXHJcbiAgICBpc0FwcHJvdmVkPzpib29sZWFuO1xyXG4gICAgcmVwbGFjZVJlc3BvbnNlRGF0YT86IHtcclxuICAgICAgICB2bUNvbmZpZz86IGFueVtdO1xyXG4gICAgICAgIHNoZWxmQ29uZmlnPzogYW55W107XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbmRSZXBsYWNlRmlsdGVyIHtcclxuICAgIHN0YXR1cz86IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbmRSZXBsYWNlUmVxdWVzdCB7XHJcbiAgICBsaW1pdDogbnVtYmVyO1xyXG4gICAgb2Zmc2V0OiBudW1iZXI7XHJcbiAgICBzZWFyY2hWYWx1ZT86IHN0cmluZztcclxuICAgIGZpbHRlcj86IEZpbmRSZXBsYWNlRmlsdGVyO1xyXG4gICAgc29ydENvbHVtbk5hbWU/OiBzdHJpbmc7XHJcbiAgICBzb3J0Qnk/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmluZFJlcGxhY2VSZXNwb25zZSB7XHJcbiAgICBjb2RlOiBudW1iZXI7XHJcbiAgICBkYXRhOiB7XHJcbiAgICAgICAgZGF0YTogRmluZFJlcGxhY2VbXTtcclxuICAgICAgICBjb3VudDogbnVtYmVyO1xyXG4gICAgfTtcclxufSJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1yZXBsYWNlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbi11cGRhdGUtYWkvbW9kZWxzL2ZpbmQtcmVwbGFjZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBSZXBsYWNlQnJhbmRTZWxlY3Rpb24ge1xyXG4gICAgX2lkOiBzdHJpbmc7XHJcbiAgICBicmFuZE5hbWU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZXBsYWNlVm1TZWxlY3Rpb24ge1xyXG4gICAgX2lkOiBzdHJpbmc7XHJcbiAgICB2bU5hbWU6IHN0cmluZztcclxuICAgIHZtVHlwZT86IHN0cmluZztcclxuICAgIHZtQnJhbmQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmluZFJlcGxhY2Uge1xyXG4gICAgX2lkOiBzdHJpbmc7XHJcbiAgICBuYW1lPzogc3RyaW5nO1xyXG4gICAgY2xpZW50SWQ/OiBzdHJpbmc7XHJcbiAgICBzZWFyY2hNb2RlPzogJ3N0b3JlJyB8ICdjbHVzdGVyJztcclxuICAgIHN0b3JlU2VhcmNoU3RyaW5nPzogc3RyaW5nO1xyXG4gICAgdGFyZ2V0PzogJ21lcmNoJyB8ICd2bScgfCAnYm90aCc7XHJcbiAgICBmaW5kUHJvbXB0Pzogc3RyaW5nO1xyXG4gICAgcmVwbGFjZVByb21wdD86IHN0cmluZztcclxuICAgIHJlcGxhY2VCcmFuZD86IFJlcGxhY2VCcmFuZFNlbGVjdGlvbiB8IG51bGw7XHJcbiAgICByZXBsYWNlVm0/OiBSZXBsYWNlVm1TZWxlY3Rpb24gfCBudWxsO1xyXG4gICAgc3RvcmVDb3VudD86IG51bWJlcjtcclxuICAgIHN0b3Jlcz86IFN0b3JlW107XHJcbiAgICBzZWxlY3RlZENsdXN0ZXJzPzogQXJyYXk8eyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0+O1xyXG4gICAgYmF0Y2hQcm9ncmVzcz86IG51bWJlcjtcclxuICAgIHN0YXR1czogJ2RyYWZ0JyB8ICdiYXRjaC1ydW5uaW5nJyB8ICd5ZXQtdG8tYXBwcm92ZScgfCAnYXBwcm92ZWQnIHwgJ3NjaGVkdWxlZCc7XHJcbiAgICBzY2hlZHVsZT86IGJvb2xlYW47XHJcbiAgICBzY2hlZHVsZURhdGU/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgY3JlYXRlZEF0Pzogc3RyaW5nO1xyXG4gICAgdXBkYXRlZEF0Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0b3Jle1xyXG4gICAgc3RvcmVOYW1lOnN0cmluZztcclxuICAgIHN0b3JlSWQ/OnN0cmluZztcclxuICAgIHBsYW5vSWQ/OnN0cmluZztcclxuICAgIGxheW91dElkPzpzdHJpbmc7XHJcbiAgICBiYXRjaElkPzpzdHJpbmc7XHJcbiAgICBiYXRjaFN0YXR1cz86J3lldC10by1zdGFydCcgfCAnaW5pdGlhdGVkJyB8ICdjb21wbGV0ZScgfCAnZmFpbGVkJztcclxuICAgIHJlc3BvbnNlU3RhdHVzPzonbWF0Y2gnIHwgJ25vLW1hdGNoJztcclxuICAgIGZpbmRSZXNwb25zZURhdGE/OiBzdHJpbmc7IC8vIGZpeHR1cmUgX2lkXHJcbiAgICBpc0FwcHJvdmVkPzpib29sZWFuO1xyXG4gICAgcmVwbGFjZVJlc3BvbnNlRGF0YT86IHtcclxuICAgICAgICB2bUNvbmZpZz86IGFueVtdO1xyXG4gICAgICAgIHNoZWxmQ29uZmlnPzogYW55W107XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbmRSZXBsYWNlRmlsdGVyIHtcclxuICAgIHN0YXR1cz86IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbmRSZXBsYWNlUmVxdWVzdCB7XHJcbiAgICBsaW1pdDogbnVtYmVyO1xyXG4gICAgb2Zmc2V0OiBudW1iZXI7XHJcbiAgICBzZWFyY2hWYWx1ZT86IHN0cmluZztcclxuICAgIGZpbHRlcj86IEZpbmRSZXBsYWNlRmlsdGVyO1xyXG4gICAgc29ydENvbHVtbk5hbWU/OiBzdHJpbmc7XHJcbiAgICBzb3J0Qnk/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmluZFJlcGxhY2VSZXNwb25zZSB7XHJcbiAgICBjb2RlOiBudW1iZXI7XHJcbiAgICBkYXRhOiB7XHJcbiAgICAgICAgZGF0YTogRmluZFJlcGxhY2VbXTtcclxuICAgICAgICBjb3VudDogbnVtYmVyO1xyXG4gICAgfTtcclxufSJdfQ==
@@ -147,6 +147,8 @@ export class CollectionUpdateAiDataService {
147
147
  target: mergedData?.target || 'merch',
148
148
  findPrompt: mergedData?.findPrompt || '',
149
149
  replacePrompt: mergedData?.replacePrompt || '',
150
+ replaceBrand: mergedData?.replaceBrand ?? null,
151
+ replaceVm: mergedData?.replaceVm ?? null,
150
152
  stores: mergedData?.stores || [],
151
153
  storeCount: mergedData?.storeCount || 0,
152
154
  selectedClusters: mergedData?.selectedClusters || undefined,
@@ -214,6 +216,8 @@ export class CollectionUpdateAiDataService {
214
216
  target: mergedData.target || 'merch',
215
217
  findPrompt: mergedData.findPrompt || '',
216
218
  replacePrompt: mergedData.replacePrompt || '',
219
+ replaceBrand: mergedData.replaceBrand ?? null,
220
+ replaceVm: mergedData.replaceVm ?? null,
217
221
  stores: mergedData.stores || [],
218
222
  storeCount: mergedData.storeCount || 0,
219
223
  selectedClusters: mergedData.selectedClusters || undefined,
@@ -322,4 +326,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
322
326
  providedIn: 'root'
323
327
  }]
324
328
  }], ctorParameters: () => [{ type: i1.StoreBuilderService }, { type: i2.ToastService }] });
325
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbi11cGRhdGUtYWkvc2VydmljZXMvZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFReEYsTUFBTSxPQUFPLDZCQUE2QjtJQVU5QjtJQUNBO0lBVkYsZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLENBQXFCLElBQUksQ0FBQyxDQUFDO0lBQ2pFLGlCQUFpQixHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO0lBQ3hELFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUMvQyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUNqQyxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDaEQsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDL0IsZ0JBQWdCLEdBQVEsSUFBSSxDQUFDO0lBRXJDLFlBQ1UsbUJBQXdDLEVBQ3hDLFlBQTBCO1FBRDFCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFFbEMsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUI7YUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6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S0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDNUQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVM7UUFDUCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7d0dBbFZVLDZCQUE2Qjs0R0FBN0IsNkJBQTZCLGNBRjVCLE1BQU07OzRGQUVQLDZCQUE2QjtrQkFIekMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwsIHRhcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGaW5kUmVwbGFjZSB9IGZyb20gJy4uL21vZGVscy9maW5kLXJlcGxhY2UubW9kZWwnO1xyXG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uVXBkYXRlQWlEYXRhU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBmaW5kUmVwbGFjZURhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaW5kUmVwbGFjZSB8IG51bGw+KG51bGwpO1xyXG4gIHByaXZhdGUgc2F2ZURyYWZ0U3ViamVjdCQgPSBuZXcgU3ViamVjdDxQYXJ0aWFsPEZpbmRSZXBsYWNlPj4oKTtcclxuICBwcml2YXRlIGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJpdmF0ZSBzYXZlZElkJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICBwcml2YXRlIGVkaXRNb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgc2F2ZVN1YnNjcmlwdGlvbjogYW55ID0gbnVsbDtcclxuICBcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc3RvcmVCdWlsZGVyU2VydmljZTogU3RvcmVCdWlsZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2VcclxuICApIHtcclxuICAgIC8vIFN1YnNjcmliZSB0byBzYXZlIGRyYWZ0IGV2ZW50c1xyXG4gICAgdGhpcy5zYXZlRHJhZnRTdWJqZWN0JFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgICB0aGlzLnNhdmVBc0RyYWZ0KGRhdGEpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY3VycmVudCBGaW5kUmVwbGFjZSBkYXRhIGFzIE9ic2VydmFibGVcclxuICAgKi9cclxuICBnZXRGaW5kUmVwbGFjZURhdGEoKTogT2JzZXJ2YWJsZTxGaW5kUmVwbGFjZSB8IG51bGw+IHtcclxuICAgIHJldHVybiB0aGlzLmZpbmRSZXBsYWNlRGF0YSQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgbG9hZGluZyBzdGF0ZSBhcyBPYnNlcnZhYmxlXHJcbiAgICovXHJcbiAgZ2V0TG9hZGluZ1N0YXRlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgc2F2ZWQgSUQgYXMgT2JzZXJ2YWJsZSAoZW1pdHMgd2hlbiBzYXZlIGlzIHN1Y2Nlc3NmdWwpXHJcbiAgICovXHJcbiAgZ2V0U2F2ZWRJZCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2F2ZWRJZCQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgZWRpdCBtb2RlIHN0YXRlIGFzIE9ic2VydmFibGVcclxuICAgKi9cclxuICBnZXRFZGl0TW9kZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRNb2RlJC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBjdXJyZW50IGVkaXQgbW9kZSB2YWx1ZVxyXG4gICAqL1xyXG4gIGlzRWRpdE1vZGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0TW9kZSQudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgZWRpdCBtb2RlXHJcbiAgICovXHJcbiAgc2V0RWRpdE1vZGUoZW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0TW9kZSQubmV4dChlbmFibGVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBjdXJyZW50IEZpbmRSZXBsYWNlIGRhdGEgdmFsdWVcclxuICAgKi9cclxuICBnZXRDdXJyZW50RGF0YSgpOiBGaW5kUmVwbGFjZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZmluZFJlcGxhY2VEYXRhJC52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgb3IgdXBkYXRlIEZpbmRSZXBsYWNlIGRhdGFcclxuICAgKi9cclxuICBzZXRGaW5kUmVwbGFjZURhdGEoZGF0YTogRmluZFJlcGxhY2UgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbmRSZXBsYWNlRGF0YSQubmV4dChkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBwYXJ0aWFsIGRhdGEgYW5kIG1lcmdlIHdpdGggZXhpc3RpbmdcclxuICAgKi9cclxuICB1cGRhdGVEYXRhKHBhcnRpYWxEYXRhOiBQYXJ0aWFsPEZpbmRSZXBsYWNlPik6IHZvaWQge1xyXG4gICAgY29uc3QgY3VycmVudERhdGEgPSB0aGlzLmZpbmRSZXBsYWNlRGF0YSQudmFsdWU7XHJcbiAgICBpZiAoY3VycmVudERhdGEpIHtcclxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSB7IC4uLmN1cnJlbnREYXRhLCAuLi5wYXJ0aWFsRGF0YSB9O1xyXG4gICAgICB0aGlzLmZpbmRSZXBsYWNlRGF0YSQubmV4dCh1cGRhdGVkRGF0YSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBJZiBubyBleGlzdGluZyBkYXRhLCBjcmVhdGUgbmV3IHdpdGggcGFydGlhbCBkYXRhXHJcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSB7XHJcbiAgICAgICAgX2lkOiBwYXJ0aWFsRGF0YS5faWQgfHwgJycsXHJcbiAgICAgICAgc3RhdHVzOiAnZHJhZnQnIGFzIGNvbnN0LFxyXG4gICAgICAgIC4uLnBhcnRpYWxEYXRhXHJcbiAgICAgIH0gYXMgRmluZFJlcGxhY2U7XHJcbiAgICAgIHRoaXMuZmluZFJlcGxhY2VEYXRhJC5uZXh0KG5ld0RhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJpZ2dlciBzYXZlIGFzIGRyYWZ0IHdpdGggdXBkYXRlZCBkYXRhXHJcbiAgICogQ29tcG9uZW50cyBjYW4gY2FsbCB0aGlzIHRvIHNhdmUgY3VycmVudCBzdGF0ZVxyXG4gICAqIEBwYXJhbSBkYXRhIE9wdGlvbmFsIHBhcnRpYWwgZGF0YSB0byB1cGRhdGUgYmVmb3JlIHNhdmluZ1xyXG4gICAqIEBwYXJhbSBzaG93VG9hc3QgV2hldGhlciB0byBzaG93IHRoZSBzdWNjZXNzIHRvYXN0IChkZWZhdWx0OiBmYWxzZSlcclxuICAgKi9cclxuICB0cmlnZ2VyU2F2ZURyYWZ0KGRhdGE/OiBQYXJ0aWFsPEZpbmRSZXBsYWNlPiwgc2hvd1RvYXN0OiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRGF0YShkYXRhKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGN1cnJlbnREYXRhID0gdGhpcy5maW5kUmVwbGFjZURhdGEkLnZhbHVlO1xyXG4gICAgLy8gQWxsb3cgc2F2aW5nIGV2ZW4gaWYgbm8gZGF0YSBleGlzdHMgKGZvciBmaXJzdC10aW1lIHVwc2VydClcclxuICAgIGlmIChjdXJyZW50RGF0YSkge1xyXG4gICAgICB0aGlzLnNhdmVEcmFmdFN1YmplY3QkLm5leHQoeyAuLi5jdXJyZW50RGF0YSwgX3Nob3dUb2FzdDogc2hvd1RvYXN0IH0gYXMgYW55KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEluaXRpYWxpemUgd2l0aCBtaW5pbWFsIGRhdGEgZm9yIGZpcnN0LXRpbWUgc2F2ZVxyXG4gICAgICBjb25zdCBuZXdEYXRhOiBQYXJ0aWFsPEZpbmRSZXBsYWNlPiA9IHtcclxuICAgICAgICBfaWQ6ICcnLFxyXG4gICAgICAgIHN0YXR1czogJ2RyYWZ0JyxcclxuICAgICAgICBuYW1lOiAnJyxcclxuICAgICAgICB0YXJnZXQ6ICdtZXJjaCcsXHJcbiAgICAgICAgZmluZFByb21wdDogJycsXHJcbiAgICAgICAgcmVwbGFjZVByb21wdDogJycsXHJcbiAgICAgICAgc3RvcmVzOiBbXSxcclxuICAgICAgICBzdG9yZUNvdW50OiAwLFxyXG4gICAgICAgIC4uLmRhdGFcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5zYXZlRHJhZnRTdWJqZWN0JC5uZXh0KHsgLi4ubmV3RGF0YSwgX3Nob3dUb2FzdDogc2hvd1RvYXN0IH0gYXMgYW55KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmUgYXMgZHJhZnQgYW5kIHJldHVybiBhbiBPYnNlcnZhYmxlIHRoYXQgY2FuIGJlIGF3YWl0ZWRcclxuICAgKiBVc2UgdGhpcyB3aGVuIHlvdSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBzYXZlIHRvIGNvbXBsZXRlXHJcbiAgICovXHJcbiAgc2F2ZURyYWZ0QW5kV2FpdChkYXRhPzogUGFydGlhbDxGaW5kUmVwbGFjZT4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgdGhpcy51cGRhdGVEYXRhKGRhdGEpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3VycmVudERhdGEgPSB0aGlzLmZpbmRSZXBsYWNlRGF0YSQudmFsdWU7XHJcbiAgICBjb25zdCBoYWRJZEJlZm9yZSA9ICEhKGN1cnJlbnREYXRhPy5faWQgfHwgZGF0YT8uX2lkKTtcclxuICAgIFxyXG4gICAgLy8gTWVyZ2UgY3VycmVudCBkYXRhIHdpdGggaW5jb21pbmcgZGF0YVxyXG4gICAgY29uc3QgbWVyZ2VkRGF0YSA9IGN1cnJlbnREYXRhID8geyAuLi5jdXJyZW50RGF0YSwgLi4uZGF0YSB9IDogKGRhdGEgYXMgRmluZFJlcGxhY2UpO1xyXG4gICAgXHJcbiAgICAvLyBQcmVzZXJ2ZSBleGlzdGluZyBzdGF0dXMgd2hlbiBzYXZpbmcgYXMgZHJhZnQgKGRvbid0IGNoYW5nZSBzdGF0dXMpXHJcbiAgICBjb25zdCBwcmVzZXJ2ZWRTdGF0dXMgPSBtZXJnZWREYXRhPy5zdGF0dXMgfHwgJ2RyYWZ0JztcclxuICAgIFxyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBpZDogbWVyZ2VkRGF0YT8uX2lkIHx8ICcnLFxyXG4gICAgICBuYW1lOiBtZXJnZWREYXRhPy5uYW1lIHx8ICcnLFxyXG4gICAgICBzZWFyY2hNb2RlOiBtZXJnZWREYXRhPy5zZWFyY2hNb2RlLFxyXG4gICAgICBzdG9yZVNlYXJjaFN0cmluZzogbWVyZ2VkRGF0YT8uc3RvcmVTZWFyY2hTdHJpbmcsXHJcbiAgICAgIHRhcmdldDogbWVyZ2VkRGF0YT8udGFyZ2V0IHx8ICdtZXJjaCcsXHJcbiAgICAgIGZpbmRQcm9tcHQ6IG1lcmdlZERhdGE/LmZpbmRQcm9tcHQgfHwgJycsXHJcbiAgICAgIHJlcGxhY2VQcm9tcHQ6IG1lcmdlZERhdGE/LnJlcGxhY2VQcm9tcHQgfHwgJycsXHJcbiAgICAgIHN0b3JlczogbWVyZ2VkRGF0YT8uc3RvcmVzIHx8IFtdLFxyXG4gICAgICBzdG9yZUNvdW50OiBtZXJnZWREYXRhPy5zdG9yZUNvdW50IHx8IDAsXHJcbiAgICAgIHNlbGVjdGVkQ2x1c3RlcnM6IG1lcmdlZERhdGE/LnNlbGVjdGVkQ2x1c3RlcnMgfHwgdW5kZWZpbmVkLFxyXG4gICAgICBzdGF0dXM6IHByZXNlcnZlZFN0YXR1cyBhcyBGaW5kUmVwbGFjZVsnc3RhdHVzJ10sXHJcbiAgICAgIHNjaGVkdWxlOiBtZXJnZWREYXRhPy5zY2hlZHVsZSxcclxuICAgICAgc2NoZWR1bGVEYXRlOiBtZXJnZWREYXRhPy5zY2hlZHVsZURhdGVcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgXHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlLnNhdmVBc0RyYWZ0KHBheWxvYWQpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgLy8gSGFuZGxlIHJlc3BvbnNlIGFuZCB1cGRhdGUgbG9jYWwgZGF0YVxyXG4gICAgICB0YXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZT8uY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICBsZXQgc2F2ZWRJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIFVwZGF0ZSBsb2NhbCBkYXRhIHdpdGggc2F2ZWQgZGF0YSBpZiByZXNwb25zZSBjb250YWlucyBpdFxyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5kYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RmluZFJlcGxhY2VEYXRhKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICBzYXZlZElkID0gcmVzcG9uc2UuZGF0YS5faWQgfHwgcmVzcG9uc2UuZGF0YS5pZCB8fCBudWxsO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZT8uZGF0YT8uX2lkKSB7XHJcbiAgICAgICAgICAgIHNhdmVkSWQgPSByZXNwb25zZS5kYXRhLl9pZDtcclxuICAgICAgICAgICAgaWYgKHNhdmVkSWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRBbmRTZXRGaW5kUmVwbGFjZURhdGFCeUlkKHNhdmVkSWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBpZCA9IHBheWxvYWQuaWQ7XHJcbiAgICAgICAgICAgIGlmIChpZCkge1xyXG4gICAgICAgICAgICAgIHNhdmVkSWQgPSBpZDtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRBbmRTZXRGaW5kUmVwbGFjZURhdGFCeUlkKGlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBFbWl0IHNhdmVkIElEIGlmIHRoaXMgd2FzIGFuIGluaXRpYWwgc2F2ZSAobm8gSUQgYmVmb3JlKVxyXG4gICAgICAgICAgaWYgKHNhdmVkSWQgJiYgIWhhZElkQmVmb3JlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZWRJZCQubmV4dChzYXZlZElkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGFzIGRyYWZ0OicsIGVycm9yKTtcclxuICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYXZlIGFzIGRyYWZ0IC0gaW50ZXJuYWwgbWV0aG9kXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzYXZlQXNEcmFmdChkYXRhOiBQYXJ0aWFsPEZpbmRSZXBsYWNlPiB8IEZpbmRSZXBsYWNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJyZW50RGF0YSA9IHRoaXMuZmluZFJlcGxhY2VEYXRhJC52YWx1ZTtcclxuICAgIGNvbnN0IGhhZElkQmVmb3JlID0gISEoY3VycmVudERhdGE/Ll9pZCB8fCAoZGF0YSBhcyBhbnkpLl9pZCk7XHJcbiAgICBcclxuICAgIC8vIEV4dHJhY3Qgc2hvd1RvYXN0IGZsYWcgZnJvbSBkYXRhIChpZiBwcmVzZW50KVxyXG4gICAgY29uc3Qgc2hvd1RvYXN0ID0gISEoZGF0YSBhcyBhbnkpLl9zaG93VG9hc3Q7XHJcbiAgICAvLyBSZW1vdmUgdGhlIF9zaG93VG9hc3QgZmxhZyBmcm9tIGRhdGEgYmVmb3JlIHByb2Nlc3NpbmdcclxuICAgIGNvbnN0IHsgX3Nob3dUb2FzdCwgLi4uY2xlYW5EYXRhIH0gPSBkYXRhIGFzIGFueTtcclxuICAgIFxyXG4gICAgdGhpcy5sb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgXHJcbiAgICAvLyBNZXJnZSBjdXJyZW50IGRhdGEgd2l0aCBpbmNvbWluZyBkYXRhIChpbmNvbWluZyBkYXRhIHRha2VzIHByZWNlZGVuY2UpXHJcbiAgICBjb25zdCBtZXJnZWREYXRhID0gY3VycmVudERhdGEgPyB7IC4uLmN1cnJlbnREYXRhLCAuLi5jbGVhbkRhdGEgfSA6IChjbGVhbkRhdGEgYXMgRmluZFJlcGxhY2UpO1xyXG4gICAgXHJcbiAgICAvLyBQcmVzZXJ2ZSBleGlzdGluZyBzdGF0dXMgd2hlbiBzYXZpbmcgYXMgZHJhZnQgKGRvbid0IGNoYW5nZSBzdGF0dXMpXHJcbiAgICAvLyBPbmx5IHNldCB0byAnZHJhZnQnIGlmIHRoZXJlJ3Mgbm8gZXhpc3Rpbmcgc3RhdHVzXHJcbiAgICBjb25zdCBwcmVzZXJ2ZWRTdGF0dXMgPSBtZXJnZWREYXRhLnN0YXR1cyB8fCAnZHJhZnQnO1xyXG4gICAgXHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIGlkOiBtZXJnZWREYXRhLl9pZCB8fCAnJyxcclxuICAgICAgbmFtZTogbWVyZ2VkRGF0YS5uYW1lIHx8ICcnLFxyXG4gICAgICBzZWFyY2hNb2RlOiBtZXJnZWREYXRhLnNlYXJjaE1vZGUsXHJcbiAgICAgIHN0b3JlU2VhcmNoU3RyaW5nOiBtZXJnZWREYXRhLnN0b3JlU2VhcmNoU3RyaW5nLFxyXG4gICAgICB0YXJnZXQ6IG1lcmdlZERhdGEudGFyZ2V0IHx8ICdtZXJjaCcsXHJcbiAgICAgIGZpbmRQcm9tcHQ6IG1lcmdlZERhdGEuZmluZFByb21wdCB8fCAnJyxcclxuICAgICAgcmVwbGFjZVByb21wdDogbWVyZ2VkRGF0YS5yZXBsYWNlUHJvbXB0IHx8ICcnLFxyXG4gICAgICBzdG9yZXM6IG1lcmdlZERhdGEuc3RvcmVzIHx8IFtdLFxyXG4gICAgICBzdG9yZUNvdW50OiBtZXJnZWREYXRhLnN0b3JlQ291bnQgfHwgMCxcclxuICAgICAgc2VsZWN0ZWRDbHVzdGVyczogbWVyZ2VkRGF0YS5zZWxlY3RlZENsdXN0ZXJzIHx8IHVuZGVmaW5lZCxcclxuICAgICAgc3RhdHVzOiBwcmVzZXJ2ZWRTdGF0dXMgYXMgRmluZFJlcGxhY2VbJ3N0YXR1cyddLFxyXG4gICAgICBzY2hlZHVsZTogbWVyZ2VkRGF0YS5zY2hlZHVsZSxcclxuICAgICAgc2NoZWR1bGVEYXRlOiBtZXJnZWREYXRhLnNjaGVkdWxlRGF0ZSxcclxuICAgICAgY2xpZW50SWQ6IG1lcmdlZERhdGE/LmNsaWVudElkIHx8ICcxMSdcclxuICAgIH07XHJcblxyXG4gICAgLy8gQ2FuY2VsIHByZXZpb3VzIHNhdmUgaWYgc3RpbGwgaW4gcHJvZ3Jlc3NcclxuICAgIGlmICh0aGlzLnNhdmVTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5zYXZlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5zYXZlQXNEcmFmdChwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgbGV0IHNhdmVkSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gVXBkYXRlIGxvY2FsIGRhdGEgd2l0aCBzYXZlZCBkYXRhIGlmIHJlc3BvbnNlIGNvbnRhaW5zIGl0XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZT8uZGF0YSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RmluZFJlcGxhY2VEYXRhKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgIHNhdmVkSWQgPSByZXNwb25zZS5kYXRhLl9pZCB8fCByZXNwb25zZS5kYXRhLmlkIHx8IG51bGw7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2U/LmRhdGE/Ll9pZCkge1xyXG4gICAgICAgICAgICAgIC8vIElmIHJlc3BvbnNlIGNvbnRhaW5zIElEIGJ1dCBub3QgZnVsbCBkYXRhLCBmZXRjaCBpdCBmcm9tIEFQSVxyXG4gICAgICAgICAgICAgIHNhdmVkSWQgPSByZXNwb25zZS5kYXRhLl9pZDtcclxuICAgICAgICAgICAgICBpZiAoc2F2ZWRJZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkQW5kU2V0RmluZFJlcGxhY2VEYXRhQnlJZChzYXZlZElkKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8gSWYgcmVzcG9uc2UgZG9lc24ndCBjb250YWluIGRhdGEsIGZldGNoIGl0IGZyb20gQVBJIHVzaW5nIHBheWxvYWQgSURcclxuICAgICAgICAgICAgICBjb25zdCBpZCA9IHBheWxvYWQuaWQ7XHJcbiAgICAgICAgICAgICAgaWYgKGlkKSB7XHJcbiAgICAgICAgICAgICAgICBzYXZlZElkID0gaWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRBbmRTZXRGaW5kUmVwbGFjZURhdGFCeUlkKGlkKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIEVtaXQgc2F2ZWQgSUQgaWYgdGhpcyB3YXMgYW4gaW5pdGlhbCBzYXZlIChubyBJRCBiZWZvcmUpXHJcbiAgICAgICAgICAgIGlmIChzYXZlZElkICYmICFoYWRJZEJlZm9yZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2F2ZWRJZCQubmV4dChzYXZlZElkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gT25seSBzaG93IHRvYXN0IGlmIGV4cGxpY2l0bHkgcmVxdWVzdGVkXHJcbiAgICAgICAgICAgIGlmIChzaG93VG9hc3QpIHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRTdWNjZXNzVG9hc3QoJ1NhdmVkIGFzIGRyYWZ0IHN1Y2Nlc3NmdWxseScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBPbmx5IHNob3cgZXJyb3IgdG9hc3QgaWYgZXhwbGljaXRseSByZXF1ZXN0ZWQgKGZvciBidXR0b24gY2xpY2tzKVxyXG4gICAgICAgICAgICBpZiAoc2hvd1RvYXN0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChyZXNwb25zZT8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHNhdmUgYXMgZHJhZnQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zYXZlU3Vic2NyaXB0aW9uID0gbnVsbDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAvLyBPbmx5IHNob3cgZXJyb3IgdG9hc3QgaWYgZXhwbGljaXRseSByZXF1ZXN0ZWQgKGZvciBidXR0b24gY2xpY2tzKVxyXG4gICAgICAgICAgaWYgKHNob3dUb2FzdCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdGYWlsZWQgdG8gc2F2ZSBhcyBkcmFmdCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGFzIGRyYWZ0OicsIGVycm9yKTtcclxuICAgICAgICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgRmluZFJlcGxhY2UgZGF0YSBieSBJRFxyXG4gICAqL1xyXG4gIGxvYWRGaW5kUmVwbGFjZURhdGFCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5nZXRGaW5kUmVwbGFjZURhdGFCeUlkKHsgaWQgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIGFuZCBzZXQgRmluZFJlcGxhY2UgZGF0YSBieSBJRFxyXG4gICAqL1xyXG4gIGxvYWRBbmRTZXRGaW5kUmVwbGFjZURhdGFCeUlkKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5nZXRGaW5kUmVwbGFjZURhdGFCeUlkKHsgaWQgfSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uY29kZSA9PT0gMjAwICYmIHJlc3BvbnNlPy5kYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RmluZFJlcGxhY2VEYXRhKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGZpbmQgcmVwbGFjZSBkYXRhOicsIGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgYWxsIGRhdGFcclxuICAgKi9cclxuICBjbGVhckRhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbmRSZXBsYWNlRGF0YSQubmV4dChudWxsKTtcclxuICB9XHJcbn1cclxuIl19
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbi11cGRhdGUtYWkvc2VydmljZXMvZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFReEYsTUFBTSxPQUFPLDZCQUE2QjtJQVU5QjtJQUNBO0lBVkYsZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLENBQXFCLElBQUksQ0FBQyxDQUFDO0lBQ2pFLGlCQUFpQixHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO0lBQ3hELFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUMvQyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUNqQyxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDaEQsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDL0IsZ0JBQWdCLEdBQVEsSUFBSSxDQUFDO0lBRXJDLFlBQ1UsbUJBQXdDLEVBQ3hDLFlBQTBCO1FBRDFCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFFbEMsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUI7YUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6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LElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxRQUFRLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsSUFBSSxFQUFFO29CQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN4QztZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1RCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUztRQUNQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzt3R0F0VlUsNkJBQTZCOzRHQUE3Qiw2QkFBNkIsY0FGNUIsTUFBTTs7NEZBRVAsNkJBQTZCO2tCQUh6QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCwgdGFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZpbmRSZXBsYWNlIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbmQtcmVwbGFjZS5tb2RlbCc7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yZS1idWlsZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbGxlY3Rpb25VcGRhdGVBaURhdGFTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGZpbmRSZXBsYWNlRGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbmRSZXBsYWNlIHwgbnVsbD4obnVsbCk7XHJcbiAgcHJpdmF0ZSBzYXZlRHJhZnRTdWJqZWN0JCA9IG5ldyBTdWJqZWN0PFBhcnRpYWw8RmluZFJlcGxhY2U+PigpO1xyXG4gIHByaXZhdGUgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcml2YXRlIHNhdmVkSWQkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHByaXZhdGUgZWRpdE1vZGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBzYXZlU3Vic2NyaXB0aW9uOiBhbnkgPSBudWxsO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzdG9yZUJ1aWxkZXJTZXJ2aWNlOiBTdG9yZUJ1aWxkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZVxyXG4gICkge1xyXG4gICAgLy8gU3Vic2NyaWJlIHRvIHNhdmUgZHJhZnQgZXZlbnRzXHJcbiAgICB0aGlzLnNhdmVEcmFmdFN1YmplY3QkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2F2ZUFzRHJhZnQoZGF0YSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBjdXJyZW50IEZpbmRSZXBsYWNlIGRhdGEgYXMgT2JzZXJ2YWJsZVxyXG4gICAqL1xyXG4gIGdldEZpbmRSZXBsYWNlRGF0YSgpOiBPYnNlcnZhYmxlPEZpbmRSZXBsYWNlIHwgbnVsbD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmluZFJlcGxhY2VEYXRhJC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBsb2FkaW5nIHN0YXRlIGFzIE9ic2VydmFibGVcclxuICAgKi9cclxuICBnZXRMb2FkaW5nU3RhdGUoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBzYXZlZCBJRCBhcyBPYnNlcnZhYmxlIChlbWl0cyB3aGVuIHNhdmUgaXMgc3VjY2Vzc2Z1bClcclxuICAgKi9cclxuICBnZXRTYXZlZElkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zYXZlZElkJC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBlZGl0IG1vZGUgc3RhdGUgYXMgT2JzZXJ2YWJsZVxyXG4gICAqL1xyXG4gIGdldEVkaXRNb2RlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdE1vZGUkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGN1cnJlbnQgZWRpdCBtb2RlIHZhbHVlXHJcbiAgICovXHJcbiAgaXNFZGl0TW9kZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRNb2RlJC52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBlZGl0IG1vZGVcclxuICAgKi9cclxuICBzZXRFZGl0TW9kZShlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRNb2RlJC5uZXh0KGVuYWJsZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGN1cnJlbnQgRmluZFJlcGxhY2UgZGF0YSB2YWx1ZVxyXG4gICAqL1xyXG4gIGdldEN1cnJlbnREYXRhKCk6IEZpbmRSZXBsYWNlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kUmVwbGFjZURhdGEkLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSBvciB1cGRhdGUgRmluZFJlcGxhY2UgZGF0YVxyXG4gICAqL1xyXG4gIHNldEZpbmRSZXBsYWNlRGF0YShkYXRhOiBGaW5kUmVwbGFjZSB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMuZmluZFJlcGxhY2VEYXRhJC5uZXh0KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHBhcnRpYWwgZGF0YSBhbmQgbWVyZ2Ugd2l0aCBleGlzdGluZ1xyXG4gICAqL1xyXG4gIHVwZGF0ZURhdGEocGFydGlhbERhdGE6IFBhcnRpYWw8RmluZFJlcGxhY2U+KTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJyZW50RGF0YSA9IHRoaXMuZmluZFJlcGxhY2VEYXRhJC52YWx1ZTtcclxuICAgIGlmIChjdXJyZW50RGF0YSkge1xyXG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHsgLi4uY3VycmVudERhdGEsIC4uLnBhcnRpYWxEYXRhIH07XHJcbiAgICAgIHRoaXMuZmluZFJlcGxhY2VEYXRhJC5uZXh0KHVwZGF0ZWREYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIElmIG5vIGV4aXN0aW5nIGRhdGEsIGNyZWF0ZSBuZXcgd2l0aCBwYXJ0aWFsIGRhdGFcclxuICAgICAgY29uc3QgbmV3RGF0YSA9IHtcclxuICAgICAgICBfaWQ6IHBhcnRpYWxEYXRhLl9pZCB8fCAnJyxcclxuICAgICAgICBzdGF0dXM6ICdkcmFmdCcgYXMgY29uc3QsXHJcbiAgICAgICAgLi4ucGFydGlhbERhdGFcclxuICAgICAgfSBhcyBGaW5kUmVwbGFjZTtcclxuICAgICAgdGhpcy5maW5kUmVwbGFjZURhdGEkLm5leHQobmV3RGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VyIHNhdmUgYXMgZHJhZnQgd2l0aCB1cGRhdGVkIGRhdGFcclxuICAgKiBDb21wb25lbnRzIGNhbiBjYWxsIHRoaXMgdG8gc2F2ZSBjdXJyZW50IHN0YXRlXHJcbiAgICogQHBhcmFtIGRhdGEgT3B0aW9uYWwgcGFydGlhbCBkYXRhIHRvIHVwZGF0ZSBiZWZvcmUgc2F2aW5nXHJcbiAgICogQHBhcmFtIHNob3dUb2FzdCBXaGV0aGVyIHRvIHNob3cgdGhlIHN1Y2Nlc3MgdG9hc3QgKGRlZmF1bHQ6IGZhbHNlKVxyXG4gICAqL1xyXG4gIHRyaWdnZXJTYXZlRHJhZnQoZGF0YT86IFBhcnRpYWw8RmluZFJlcGxhY2U+LCBzaG93VG9hc3Q6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgdGhpcy51cGRhdGVEYXRhKGRhdGEpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3VycmVudERhdGEgPSB0aGlzLmZpbmRSZXBsYWNlRGF0YSQudmFsdWU7XHJcbiAgICAvLyBBbGxvdyBzYXZpbmcgZXZlbiBpZiBubyBkYXRhIGV4aXN0cyAoZm9yIGZpcnN0LXRpbWUgdXBzZXJ0KVxyXG4gICAgaWYgKGN1cnJlbnREYXRhKSB7XHJcbiAgICAgIHRoaXMuc2F2ZURyYWZ0U3ViamVjdCQubmV4dCh7IC4uLmN1cnJlbnREYXRhLCBfc2hvd1RvYXN0OiBzaG93VG9hc3QgfSBhcyBhbnkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gSW5pdGlhbGl6ZSB3aXRoIG1pbmltYWwgZGF0YSBmb3IgZmlyc3QtdGltZSBzYXZlXHJcbiAgICAgIGNvbnN0IG5ld0RhdGE6IFBhcnRpYWw8RmluZFJlcGxhY2U+ID0ge1xyXG4gICAgICAgIF9pZDogJycsXHJcbiAgICAgICAgc3RhdHVzOiAnZHJhZnQnLFxyXG4gICAgICAgIG5hbWU6ICcnLFxyXG4gICAgICAgIHRhcmdldDogJ21lcmNoJyxcclxuICAgICAgICBmaW5kUHJvbXB0OiAnJyxcclxuICAgICAgICByZXBsYWNlUHJvbXB0OiAnJyxcclxuICAgICAgICBzdG9yZXM6IFtdLFxyXG4gICAgICAgIHN0b3JlQ291bnQ6IDAsXHJcbiAgICAgICAgLi4uZGF0YVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnNhdmVEcmFmdFN1YmplY3QkLm5leHQoeyAuLi5uZXdEYXRhLCBfc2hvd1RvYXN0OiBzaG93VG9hc3QgfSBhcyBhbnkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZSBhcyBkcmFmdCBhbmQgcmV0dXJuIGFuIE9ic2VydmFibGUgdGhhdCBjYW4gYmUgYXdhaXRlZFxyXG4gICAqIFVzZSB0aGlzIHdoZW4geW91IG5lZWQgdG8gd2FpdCBmb3IgdGhlIHNhdmUgdG8gY29tcGxldGVcclxuICAgKi9cclxuICBzYXZlRHJhZnRBbmRXYWl0KGRhdGE/OiBQYXJ0aWFsPEZpbmRSZXBsYWNlPik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZURhdGEoZGF0YSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXJyZW50RGF0YSA9IHRoaXMuZmluZFJlcGxhY2VEYXRhJC52YWx1ZTtcclxuICAgIGNvbnN0IGhhZElkQmVmb3JlID0gISEoY3VycmVudERhdGE/Ll9pZCB8fCBkYXRhPy5faWQpO1xyXG4gICAgXHJcbiAgICAvLyBNZXJnZSBjdXJyZW50IGRhdGEgd2l0aCBpbmNvbWluZyBkYXRhXHJcbiAgICBjb25zdCBtZXJnZWREYXRhID0gY3VycmVudERhdGEgPyB7IC4uLmN1cnJlbnREYXRhLCAuLi5kYXRhIH0gOiAoZGF0YSBhcyBGaW5kUmVwbGFjZSk7XHJcbiAgICBcclxuICAgIC8vIFByZXNlcnZlIGV4aXN0aW5nIHN0YXR1cyB3aGVuIHNhdmluZyBhcyBkcmFmdCAoZG9uJ3QgY2hhbmdlIHN0YXR1cylcclxuICAgIGNvbnN0IHByZXNlcnZlZFN0YXR1cyA9IG1lcmdlZERhdGE/LnN0YXR1cyB8fCAnZHJhZnQnO1xyXG4gICAgXHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIGlkOiBtZXJnZWREYXRhPy5faWQgfHwgJycsXHJcbiAgICAgIG5hbWU6IG1lcmdlZERhdGE/Lm5hbWUgfHwgJycsXHJcbiAgICAgIHNlYXJjaE1vZGU6IG1lcmdlZERhdGE/LnNlYXJjaE1vZGUsXHJcbiAgICAgIHN0b3JlU2VhcmNoU3RyaW5nOiBtZXJnZWREYXRhPy5zdG9yZVNlYXJjaFN0cmluZyxcclxuICAgICAgdGFyZ2V0OiBtZXJnZWREYXRhPy50YXJnZXQgfHwgJ21lcmNoJyxcclxuICAgICAgZmluZFByb21wdDogbWVyZ2VkRGF0YT8uZmluZFByb21wdCB8fCAnJyxcclxuICAgICAgcmVwbGFjZVByb21wdDogbWVyZ2VkRGF0YT8ucmVwbGFjZVByb21wdCB8fCAnJyxcclxuICAgICAgcmVwbGFjZUJyYW5kOiBtZXJnZWREYXRhPy5yZXBsYWNlQnJhbmQgPz8gbnVsbCxcclxuICAgICAgcmVwbGFjZVZtOiBtZXJnZWREYXRhPy5yZXBsYWNlVm0gPz8gbnVsbCxcclxuICAgICAgc3RvcmVzOiBtZXJnZWREYXRhPy5zdG9yZXMgfHwgW10sXHJcbiAgICAgIHN0b3JlQ291bnQ6IG1lcmdlZERhdGE/LnN0b3JlQ291bnQgfHwgMCxcclxuICAgICAgc2VsZWN0ZWRDbHVzdGVyczogbWVyZ2VkRGF0YT8uc2VsZWN0ZWRDbHVzdGVycyB8fCB1bmRlZmluZWQsXHJcbiAgICAgIHN0YXR1czogcHJlc2VydmVkU3RhdHVzIGFzIEZpbmRSZXBsYWNlWydzdGF0dXMnXSxcclxuICAgICAgc2NoZWR1bGU6IG1lcmdlZERhdGE/LnNjaGVkdWxlLFxyXG4gICAgICBzY2hlZHVsZURhdGU6IG1lcmdlZERhdGE/LnNjaGVkdWxlRGF0ZVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmxvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICBcclxuICAgIHJldHVybiB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2Uuc2F2ZUFzRHJhZnQocGF5bG9hZCkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAvLyBIYW5kbGUgcmVzcG9uc2UgYW5kIHVwZGF0ZSBsb2NhbCBkYXRhXHJcbiAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIGxldCBzYXZlZElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gVXBkYXRlIGxvY2FsIGRhdGEgd2l0aCBzYXZlZCBkYXRhIGlmIHJlc3BvbnNlIGNvbnRhaW5zIGl0XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LmRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRGaW5kUmVwbGFjZURhdGEocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgIHNhdmVkSWQgPSByZXNwb25zZS5kYXRhLl9pZCB8fCByZXNwb25zZS5kYXRhLmlkIHx8IG51bGw7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlPy5kYXRhPy5faWQpIHtcclxuICAgICAgICAgICAgc2F2ZWRJZCA9IHJlc3BvbnNlLmRhdGEuX2lkO1xyXG4gICAgICAgICAgICBpZiAoc2F2ZWRJZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZEFuZFNldEZpbmRSZXBsYWNlRGF0YUJ5SWQoc2F2ZWRJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlkID0gcGF5bG9hZC5pZDtcclxuICAgICAgICAgICAgaWYgKGlkKSB7XHJcbiAgICAgICAgICAgICAgc2F2ZWRJZCA9IGlkO1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZEFuZFNldEZpbmRSZXBsYWNlRGF0YUJ5SWQoaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIEVtaXQgc2F2ZWQgSUQgaWYgdGhpcyB3YXMgYW4gaW5pdGlhbCBzYXZlIChubyBJRCBiZWZvcmUpXHJcbiAgICAgICAgICBpZiAoc2F2ZWRJZCAmJiAhaGFkSWRCZWZvcmUpIHtcclxuICAgICAgICAgICAgdGhpcy5zYXZlZElkJC5uZXh0KHNhdmVkSWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgYXMgZHJhZnQ6JywgZXJyb3IpO1xyXG4gICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmUgYXMgZHJhZnQgLSBpbnRlcm5hbCBtZXRob2RcclxuICAgKi9cclxuICBwcml2YXRlIHNhdmVBc0RyYWZ0KGRhdGE6IFBhcnRpYWw8RmluZFJlcGxhY2U+IHwgRmluZFJlcGxhY2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnREYXRhID0gdGhpcy5maW5kUmVwbGFjZURhdGEkLnZhbHVlO1xyXG4gICAgY29uc3QgaGFkSWRCZWZvcmUgPSAhIShjdXJyZW50RGF0YT8uX2lkIHx8IChkYXRhIGFzIGFueSkuX2lkKTtcclxuICAgIFxyXG4gICAgLy8gRXh0cmFjdCBzaG93VG9hc3QgZmxhZyBmcm9tIGRhdGEgKGlmIHByZXNlbnQpXHJcbiAgICBjb25zdCBzaG93VG9hc3QgPSAhIShkYXRhIGFzIGFueSkuX3Nob3dUb2FzdDtcclxuICAgIC8vIFJlbW92ZSB0aGUgX3Nob3dUb2FzdCBmbGFnIGZyb20gZGF0YSBiZWZvcmUgcHJvY2Vzc2luZ1xyXG4gICAgY29uc3QgeyBfc2hvd1RvYXN0LCAuLi5jbGVhbkRhdGEgfSA9IGRhdGEgYXMgYW55O1xyXG4gICAgXHJcbiAgICB0aGlzLmxvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICBcclxuICAgIC8vIE1lcmdlIGN1cnJlbnQgZGF0YSB3aXRoIGluY29taW5nIGRhdGEgKGluY29taW5nIGRhdGEgdGFrZXMgcHJlY2VkZW5jZSlcclxuICAgIGNvbnN0IG1lcmdlZERhdGEgPSBjdXJyZW50RGF0YSA/IHsgLi4uY3VycmVudERhdGEsIC4uLmNsZWFuRGF0YSB9IDogKGNsZWFuRGF0YSBhcyBGaW5kUmVwbGFjZSk7XHJcbiAgICBcclxuICAgIC8vIFByZXNlcnZlIGV4aXN0aW5nIHN0YXR1cyB3aGVuIHNhdmluZyBhcyBkcmFmdCAoZG9uJ3QgY2hhbmdlIHN0YXR1cylcclxuICAgIC8vIE9ubHkgc2V0IHRvICdkcmFmdCcgaWYgdGhlcmUncyBubyBleGlzdGluZyBzdGF0dXNcclxuICAgIGNvbnN0IHByZXNlcnZlZFN0YXR1cyA9IG1lcmdlZERhdGEuc3RhdHVzIHx8ICdkcmFmdCc7XHJcbiAgICBcclxuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgaWQ6IG1lcmdlZERhdGEuX2lkIHx8ICcnLFxyXG4gICAgICBuYW1lOiBtZXJnZWREYXRhLm5hbWUgfHwgJycsXHJcbiAgICAgIHNlYXJjaE1vZGU6IG1lcmdlZERhdGEuc2VhcmNoTW9kZSxcclxuICAgICAgc3RvcmVTZWFyY2hTdHJpbmc6IG1lcmdlZERhdGEuc3RvcmVTZWFyY2hTdHJpbmcsXHJcbiAgICAgIHRhcmdldDogbWVyZ2VkRGF0YS50YXJnZXQgfHwgJ21lcmNoJyxcclxuICAgICAgZmluZFByb21wdDogbWVyZ2VkRGF0YS5maW5kUHJvbXB0IHx8ICcnLFxyXG4gICAgICByZXBsYWNlUHJvbXB0OiBtZXJnZWREYXRhLnJlcGxhY2VQcm9tcHQgfHwgJycsXHJcbiAgICAgIHJlcGxhY2VCcmFuZDogbWVyZ2VkRGF0YS5yZXBsYWNlQnJhbmQgPz8gbnVsbCxcclxuICAgICAgcmVwbGFjZVZtOiBtZXJnZWREYXRhLnJlcGxhY2VWbSA/PyBudWxsLFxyXG4gICAgICBzdG9yZXM6IG1lcmdlZERhdGEuc3RvcmVzIHx8IFtdLFxyXG4gICAgICBzdG9yZUNvdW50OiBtZXJnZWREYXRhLnN0b3JlQ291bnQgfHwgMCxcclxuICAgICAgc2VsZWN0ZWRDbHVzdGVyczogbWVyZ2VkRGF0YS5zZWxlY3RlZENsdXN0ZXJzIHx8IHVuZGVmaW5lZCxcclxuICAgICAgc3RhdHVzOiBwcmVzZXJ2ZWRTdGF0dXMgYXMgRmluZFJlcGxhY2VbJ3N0YXR1cyddLFxyXG4gICAgICBzY2hlZHVsZTogbWVyZ2VkRGF0YS5zY2hlZHVsZSxcclxuICAgICAgc2NoZWR1bGVEYXRlOiBtZXJnZWREYXRhLnNjaGVkdWxlRGF0ZSxcclxuICAgICAgY2xpZW50SWQ6IG1lcmdlZERhdGE/LmNsaWVudElkIHx8ICcxMSdcclxuICAgIH07XHJcblxyXG4gICAgLy8gQ2FuY2VsIHByZXZpb3VzIHNhdmUgaWYgc3RpbGwgaW4gcHJvZ3Jlc3NcclxuICAgIGlmICh0aGlzLnNhdmVTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5zYXZlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5zYXZlQXNEcmFmdChwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgbGV0IHNhdmVkSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gVXBkYXRlIGxvY2FsIGRhdGEgd2l0aCBzYXZlZCBkYXRhIGlmIHJlc3BvbnNlIGNvbnRhaW5zIGl0XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZT8uZGF0YSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RmluZFJlcGxhY2VEYXRhKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgIHNhdmVkSWQgPSByZXNwb25zZS5kYXRhLl9pZCB8fCByZXNwb25zZS5kYXRhLmlkIHx8IG51bGw7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2U/LmRhdGE/Ll9pZCkge1xyXG4gICAgICAgICAgICAgIC8vIElmIHJlc3BvbnNlIGNvbnRhaW5zIElEIGJ1dCBub3QgZnVsbCBkYXRhLCBmZXRjaCBpdCBmcm9tIEFQSVxyXG4gICAgICAgICAgICAgIHNhdmVkSWQgPSByZXNwb25zZS5kYXRhLl9pZDtcclxuICAgICAgICAgICAgICBpZiAoc2F2ZWRJZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkQW5kU2V0RmluZFJlcGxhY2VEYXRhQnlJZChzYXZlZElkKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8gSWYgcmVzcG9uc2UgZG9lc24ndCBjb250YWluIGRhdGEsIGZldGNoIGl0IGZyb20gQVBJIHVzaW5nIHBheWxvYWQgSURcclxuICAgICAgICAgICAgICBjb25zdCBpZCA9IHBheWxvYWQuaWQ7XHJcbiAgICAgICAgICAgICAgaWYgKGlkKSB7XHJcbiAgICAgICAgICAgICAgICBzYXZlZElkID0gaWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRBbmRTZXRGaW5kUmVwbGFjZURhdGFCeUlkKGlkKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIEVtaXQgc2F2ZWQgSUQgaWYgdGhpcyB3YXMgYW4gaW5pdGlhbCBzYXZlIChubyBJRCBiZWZvcmUpXHJcbiAgICAgICAgICAgIGlmIChzYXZlZElkICYmICFoYWRJZEJlZm9yZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2F2ZWRJZCQubmV4dChzYXZlZElkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gT25seSBzaG93IHRvYXN0IGlmIGV4cGxpY2l0bHkgcmVxdWVzdGVkXHJcbiAgICAgICAgICAgIGlmIChzaG93VG9hc3QpIHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRTdWNjZXNzVG9hc3QoJ1NhdmVkIGFzIGRyYWZ0IHN1Y2Nlc3NmdWxseScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBPbmx5IHNob3cgZXJyb3IgdG9hc3QgaWYgZXhwbGljaXRseSByZXF1ZXN0ZWQgKGZvciBidXR0b24gY2xpY2tzKVxyXG4gICAgICAgICAgICBpZiAoc2hvd1RvYXN0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChyZXNwb25zZT8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHNhdmUgYXMgZHJhZnQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zYXZlU3Vic2NyaXB0aW9uID0gbnVsbDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAvLyBPbmx5IHNob3cgZXJyb3IgdG9hc3QgaWYgZXhwbGljaXRseSByZXF1ZXN0ZWQgKGZvciBidXR0b24gY2xpY2tzKVxyXG4gICAgICAgICAgaWYgKHNob3dUb2FzdCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdGYWlsZWQgdG8gc2F2ZSBhcyBkcmFmdCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGFzIGRyYWZ0OicsIGVycm9yKTtcclxuICAgICAgICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgRmluZFJlcGxhY2UgZGF0YSBieSBJRFxyXG4gICAqL1xyXG4gIGxvYWRGaW5kUmVwbGFjZURhdGFCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5nZXRGaW5kUmVwbGFjZURhdGFCeUlkKHsgaWQgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIGFuZCBzZXQgRmluZFJlcGxhY2UgZGF0YSBieSBJRFxyXG4gICAqL1xyXG4gIGxvYWRBbmRTZXRGaW5kUmVwbGFjZURhdGFCeUlkKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5nZXRGaW5kUmVwbGFjZURhdGFCeUlkKHsgaWQgfSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uY29kZSA9PT0gMjAwICYmIHJlc3BvbnNlPy5kYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RmluZFJlcGxhY2VEYXRhKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGZpbmQgcmVwbGFjZSBkYXRhOicsIGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgYWxsIGRhdGFcclxuICAgKi9cclxuICBjbGVhckRhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbmRSZXBsYWNlRGF0YSQubmV4dChudWxsKTtcclxuICB9XHJcbn1cclxuIl19