raain-app 1.6.37 → 3.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -1
- package/esm2020/profile.service.mjs +2 -3
- package/esm2020/raain-details/raain-details.component.mjs +1 -1
- package/esm2020/tools/CompareManager.mjs +4 -4
- package/fesm2015/raain-app.mjs +4 -5
- package/fesm2015/raain-app.mjs.map +1 -1
- package/fesm2020/raain-app.mjs +4 -5
- package/fesm2020/raain-app.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -749,4 +749,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
749
749
|
type: ViewChild,
|
|
750
750
|
args: ['performanceCanvas']
|
|
751
751
|
}] } });
|
|
752
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvcmFhaW4tZGV0YWlscy9yYWFpbi1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jb3JlL3NoYXJlZC9yYWFpbi1kZXRhaWxzL3JhYWluLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUlMLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQ0gscUJBQXFCLEVBSXJCLFFBQVEsR0FDWCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0gsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBRVQsNEJBQTRCLEVBQzVCLG1CQUFtQixHQUN0QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQTJCLG9CQUFvQixFQUFpQixNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7QUFNeEYsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBUXZCLE1BQU0sT0FBTyxxQkFBcUI7SUFrRzlCLFlBQ2MsT0FBZ0IsRUFDVCxHQUFzQjtRQUQ3QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ1QsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFuRnBDLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFbEIsNEJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBRS9CLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUU3QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQix5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFJNUIsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBQ2xDLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQUNsQyw2QkFBd0IsR0FBcUMsRUFBRSxDQUFDO1FBR2hFLGlCQUFZLEdBQWlCLElBQUksQ0FBQztRQXdDbEMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBSWxDLHNCQUFpQixHQUF1QixFQUFFLENBQUM7UUFDM0MsNkJBQXdCLEdBQVksS0FBSyxDQUFDO1FBQzFDLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUN4Qyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLHlCQUFvQixHQUFnRixFQUFFLENBQUM7UUFNOUcsOERBQThEO1FBQ3ZELDBCQUFxQixHQUFXLENBQUMsQ0FBQztRQUNsQyw0QkFBdUIsR0FBVyxDQUFDLENBQUM7UUFDcEMsNkJBQXdCLEdBQVcsQ0FBQyxDQUFDO1FBQ3JDLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLGdDQUEyQixHQUFXLEVBQUUsQ0FBQztRQUM3QixjQUFTLEdBQUcsU0FBUyxDQUFDO1FBZ056QyxnRUFBZ0U7UUFDekQscUJBQWdCLEdBQUcsS0FBSyxFQUFFLFNBQWUsRUFBRSxVQUFxQixFQUFFLEVBQUU7WUFDdkUsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQztJQTlNQyxDQUFDO0lBRUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFtQjtRQUM1QyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksSUFBSSxFQUFFO1lBQ04sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25CLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQ3pELENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztTQUNsRDtRQUNELE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQUM7UUFDaEQsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFZO1FBQy9CLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2YsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDekQsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRU8sTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQVM7UUFDeEMsT0FBTztZQUNILElBQUksRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1QixDQUFDO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0I7UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUU7WUFDbkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQzNDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pGO1FBRUQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNiLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFO1lBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztTQUNoQztJQUNMLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxVQUE4QjtRQUNwRCw2REFBNkQ7UUFDN0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWtFLENBQUM7UUFFMUYsS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7WUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLEtBQUssR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQzthQUNqRjtZQUNELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFL0Isd0JBQXdCO1lBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM1QyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMxQyxLQUFLLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQzthQUN4QjtZQUVELElBQUksR0FBRyxDQUFDLGlCQUFpQixLQUFLLENBQUMsRUFBRTtnQkFDN0IsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDO2FBQ25DO2lCQUFNLElBQUksR0FBRyxDQUFDLGlCQUFpQixLQUFLLEVBQUUsRUFBRTtnQkFDckMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDO2FBQ25DO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEQsSUFBSTtZQUNKLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFTyxzQkFBc0I7UUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLGFBQWEsQ0FBQztRQUN4RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUNsRCxNQUFNLEVBQ04sSUFBSSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FDOUQsQ0FBQztJQUNOLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBZTtRQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixPQUFPLENBQ0gsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3pCLEdBQUc7WUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FDcEUsQ0FBQztJQUNOLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQWUsRUFBRSxVQUFxQjtRQUN6RCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7U0FDekQ7UUFDRCxNQUFNLFFBQVEsR0FBRztZQUNiO2dCQUNJLEtBQUssRUFBRSxTQUFTO2dCQUNoQixLQUFLLEVBQUUsS0FBSztnQkFDWixNQUFNO2FBQ1Q7WUFDRDtnQkFDSSxLQUFLLEVBQUUsVUFBVTtnQkFDakIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osTUFBTTthQUNUO1lBQ0Q7Z0JBQ0ksS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osTUFBTTthQUNUO1NBQ0osQ0FBQztRQUVGLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxVQUFVLEtBQUssU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNsQyxPQUFPO1NBQ1Y7YUFBTSxJQUFJLFVBQVUsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFO1lBQ3RDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pFLFdBQVcsRUFBRSxTQUFTO2FBQ3pCLENBQUMsQ0FBQztZQUVILElBQUksR0FBRztnQkFDSDtvQkFDSSxLQUFLLEVBQUUsYUFBYTtvQkFDcEIsS0FBSyxFQUFFLE1BQU07b0JBQ2IsTUFBTSxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDO2lCQUMvRTtnQkFDRDtvQkFDSSxLQUFLLEVBQUUsVUFBVTtvQkFDakIsS0FBSyxFQUFFLEtBQUs7b0JBQ1osTUFBTSxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDO2lCQUNsRjtnQkFDRDtvQkFDSSxLQUFLLEVBQUUsZ0JBQWdCO29CQUN2QixLQUFLLEVBQUUsS0FBSztvQkFDWixNQUFNLEVBQUUsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FDdEMscUJBQXFCLENBQUMsbUJBQW1CLENBQzVDO2lCQUNKO2dCQUNEO29CQUNJLEtBQUssRUFBRSxXQUFXO29CQUNsQixLQUFLLEVBQUUsTUFBTTtvQkFDYixNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUM7aUJBQzdFO2FBQ0osQ0FBQztTQUNMO2FBQU07WUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUNqRSxLQUFLO2dCQUNMLFdBQVcsRUFBRSxTQUFTO2FBQ3pCLENBQUMsQ0FBQztZQUVILElBQUksR0FBRztnQkFDSDtvQkFDSSxLQUFLLEVBQUUsU0FBUztvQkFDaEIsS0FBSyxFQUFFLEtBQUs7b0JBQ1osTUFBTSxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDO2lCQUM3RTtnQkFDRDtvQkFDSSxLQUFLLEVBQUUsVUFBVTtvQkFDakIsS0FBSyxFQUFFLEtBQUs7b0JBQ1osTUFBTSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDO2lCQUM5RTtnQkFDRDtvQkFDSSxLQUFLLEVBQUUsZ0JBQWdCO29CQUN2QixLQUFLLEVBQUUsS0FBSztvQkFDWixNQUFNLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FDbEMscUJBQXFCLENBQUMsbUJBQW1CLENBQzVDO2lCQUNKO2FBQ0osQ0FBQztTQUNMO1FBRUQsZ0RBQWdEO1FBQ2hELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFPTSxXQUFXLENBQUMsT0FBc0I7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBYztRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsS0FBVTtRQUNoQyxNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcscUJBQXFCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFeEQsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFVO1FBQzlCLE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNoRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksSUFBSSxDQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FDdkYsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLE1BQWM7UUFDdkMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxlQUFlLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUMvRSxDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsV0FBaUI7UUFDdkMsTUFBTSxVQUFVLEdBQ1osV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztRQUVsQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QiwrQkFBK0I7WUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztZQUNwQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QzthQUFNO1lBQ0gsK0JBQStCO1lBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxVQUFVLENBQUM7WUFDdEMsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEM7UUFDRCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFlO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFXO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsU0FBb0I7UUFDekMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUN6RCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLEdBQUcsQ0FDNUQsQ0FBQztRQUNGLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDN0IsT0FBTztTQUNWO1FBQ0QsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXhDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBRWhGLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGFBQXlDO1FBQzlELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxJQUFJLENBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUM1RCxDQUFDO1FBQ0YsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVGLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVuQyxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQzVELGFBQWEsQ0FBQyxFQUFFLEVBQ2hCLG1CQUFtQixFQUNuQixpQkFBaUIsQ0FDcEIsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFrQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDeEUsOERBQThEO1lBQzlELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBUSxDQUFDLENBQUM7WUFDN0UsT0FBTztnQkFDSCxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUk7Z0JBQ2IsS0FBSyxFQUFFLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSzthQUM3RCxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsbUJBQW1CLEdBQUc7WUFDdkI7Z0JBQ0ksS0FBSyxFQUFFLGFBQWEsQ0FBQyxJQUFJO2dCQUN6QixLQUFLLEVBQUUsS0FBSztnQkFDWixNQUFNLEVBQUUsV0FBVzthQUN0QjtTQUNKLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBd0M7UUFDakUsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUVwRSxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFhO1FBQzNCLHdCQUF3QjtRQUN4Qiw4QkFBOEI7UUFDOUIsSUFBSTtJQUNSLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsd0VBQXdFO0lBQzVFLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsTUFBYTtRQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFO1lBQzFDLFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ25DLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSTtZQUN0QixNQUFNLEVBQUcsTUFBTSxDQUFDLE1BQXNCLEVBQUUsT0FBTztTQUNsRCxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXpCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1lBQ2xFLDREQUE0RDtZQUM1RCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1lBRW5DLDBFQUEwRTtZQUMxRSxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO29CQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO2lCQUMvRDtZQUNMLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVOLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDM0I7YUFBTTtZQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUM5QywwREFBMEQ7WUFDMUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7WUFDekMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNoQixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzlEO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMzQjtRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsc0RBQXNELEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxTQUE4QjtRQUMzRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO1FBRXBDLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdFLDhCQUE4QjtRQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekUsTUFBTSxhQUFhLEdBQUcsVUFBVSxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztRQUNqRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXBELDBCQUEwQjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRS9ELHlCQUF5QjtRQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsaUNBQWlDLEVBQUUsQ0FBQztRQUV6QyxjQUFjO1FBQ2QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM5RDtRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELDZCQUE2QjtRQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLGtEQUFrRCxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsaUNBQWlDO1FBQzdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLHVDQUF1QztZQUN2QyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNuRjthQUFNO1lBQ0gsc0NBQXNDO1lBQ3RDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1NBQ2xFO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFhO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBSSxNQUFzQixFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUM7UUFDL0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEUsTUFBTSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQWE7UUFDakMsTUFBTSxHQUFHLEdBQVksTUFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDO1FBQzNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQW9CLENBQUM7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFO1lBQ3BCLE9BQU87U0FDVjtRQUVELElBQUk7WUFDQSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFekUsd0NBQXdDO1lBQ3hDLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDO29CQUMxQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDO29CQUMxQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsSUFBSSxJQUFJLENBQUM7U0FDdEU7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLHNCQUFzQjtZQUN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztZQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBQzVCO1FBQ0QsOEJBQThCO1FBQzlCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUM5QztRQUVELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVCLDhDQUE4QztRQUM5QyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQ3JELElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQzlELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDeEQ7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUNuQyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN4QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUMsQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBQyxDQUFDLENBQUM7U0FDdEY7SUFDTCxDQUFDO0lBRUQscUJBQXFCLENBQUMsUUFBa0I7UUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDbkQsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6RCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ1osSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWxCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMseUJBQXlCO1FBQzNCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3pCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV4QixJQUFJO1lBQ0EsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUMvRCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQy9CLGlCQUFpQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7YUFDM0MsQ0FBQyxDQUFDO1lBRUgsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUV6RCxJQUFJLE9BQU8sRUFBRTtnQkFDVCxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUMzQjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7YUFDL0U7U0FDSjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN4RDtRQUVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM1QixRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsbUJBQW1CO1lBQ3BCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztRQUNsQyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELHFCQUFxQjtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFO1lBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLE9BQU87U0FDVjtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDdkQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUN4RCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FDN0QsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCwyQkFBMkI7UUFDdkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSx3QkFBd0IsRUFBRSxDQUFDO1FBQ3RFLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDaEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUM7WUFDbEMsT0FBTztTQUNWO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsWUFBWSxDQUFDO1FBQzVDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxhQUFhLENBQUM7UUFDOUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVPLEtBQUssQ0FBQywyQkFBMkI7UUFDckMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDO1FBQy9CLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUM5QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FDbEUsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsR0FBRyxlQUFlLEVBQUU7WUFDN0MsSUFBSTtnQkFDQSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRTdFLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRTtvQkFDaEIscUVBQXFFO29CQUNyRSxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUNoQixJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixlQUFlLENBQ2xCLENBQUM7b0JBRUYsb0NBQW9DO29CQUNwQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FDNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQ2hCO3dCQUNJLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO3dCQUMvQixlQUFlO3dCQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVztxQkFDM0IsQ0FDSixDQUF5QyxDQUFDO29CQUUzQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDL0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLEtBQUssZUFBZSxDQUMvQyxDQUFDO29CQUVGLElBQUksS0FBSyxFQUFFO3dCQUNQLE9BQU8sSUFBSSxDQUFDO3FCQUNmO2lCQUNKO2dCQUVELE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO2FBQzdEO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO2FBQzdEO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sNEJBQTRCLENBQUMsYUFBc0I7UUFDdkQsSUFBSSxhQUFhLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ3hGLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCO29CQUN4QixDQUFDLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUN6QyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUNyRSxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTywwQkFBMEI7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRXZELCtFQUErRTtRQUMvRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBVSxFQUFRLEVBQUU7WUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuRCxPQUFPLElBQUksSUFBSSxDQUNYLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFDbEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUNmLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFDZCxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQ2YsY0FBYyxFQUNkLENBQUMsRUFDRCxDQUFDLENBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHO1lBQ3pCLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3pDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3hDLENBQUM7SUFDTixDQUFDO0lBRU8sS0FBSyxDQUFDLGlCQUFpQjtRQUMzQixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUMzQixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxtQkFBbUIsRUFDeEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQzVCLENBQUM7UUFDRixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLEtBQUssQ0FBQywyQkFBMkI7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ3JELElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzlELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDckQsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxRQUFRO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1FBRTlCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQjtZQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUM7WUFDNUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVaLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6RSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxHQUFHLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7UUFFOUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBRXRDLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU8sS0FBSyxDQUFDLElBQUk7UUFDZCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sS0FBSyxDQUFDLFFBQVE7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTdDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU3QywyQ0FBMkM7UUFDM0MsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDOUIsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQzdDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FDL0MsQ0FBQztRQUVGLGdEQUFnRDtRQUNoRCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFM0MsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDcEMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzlEO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxtQkFBbUIsQ0FDN0IsWUFJQyxFQUNELGNBQXNCO1FBRXRCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFzQjtRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25FLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDaEIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUNsQztTQUNKO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsbUJBQXlDO1FBQy9ELElBQUksbUJBQW1CLEVBQUU7WUFDckIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO1NBQ2xEO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUF1QjtRQUN4QyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDOztBQTM2QnVCLDZCQUFPLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztBQUNyQiw0QkFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQzttSEFGNUMscUJBQXFCO3VHQUFyQixxQkFBcUIsNnRCQ3pDbEMseXd0QkFzWUE7NEZEN1ZhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDSSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU07OEhBT3hDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsY0FBYztzQkFEcEIsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBR0MsVUFBVTtzQkFEaEIsS0FBSztnQkFHQyx1QkFBdUI7c0JBRDdCLEtBQUs7Z0JBR0MscUJBQXFCO3NCQUQzQixLQUFLO2dCQUdDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBR0Msb0JBQW9CO3NCQUQxQixLQUFLO2dCQUdDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBNER5QixtQkFBbUI7c0JBQWpELFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNHLG9CQUFvQjtzQkFBbkQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SW9uVG9nZ2xlfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge1Byb2ZpbGVTZXJ2aWNlfSBmcm9tICcuLi9wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBDYXJ0ZXNpYW5NZWFzdXJlVmFsdWUsXG4gICAgUXVhbGl0eUluZGljYXRvcixcbiAgICBSYWFpbkFwaVJhaW5zQ3VtdWxhdGl2ZXNMaXN0UmVzcG9uc2UsXG4gICAgUmFpbk5vZGUsXG4gICAgVGVhbU5vZGUsXG59IGZyb20gJ3JhYWluLW1vZGVsJztcbmltcG9ydCB7XG4gICAgRGF0ZVJhbmdlLFxuICAgIEVsZW1lbnRzRmFjdG9yeSxcbiAgICBNYXBMYXRMbmcsXG4gICAgTW9kZWxQZXJmb3JtYW5jZUVsZW1lbnQsXG4gICAgTW9kZWxQZXJmb3JtYW5jZUVsZW1lbnRJbnB1dCxcbiAgICBUaW1lZnJhbWVDb250YWluZXJzLFxufSBmcm9tICdyYWFpbi11aSc7XG5pbXBvcnQge0NvbXBhcmVNYW5hZ2VyLCBGcmFtZVNldCwgbWFwRGF0ZVJhbmdlVG9TdHJpbmcsIFJlZnJlc2hNYW5hZ2VyfSBmcm9tICcuLi90b29scyc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7UmFkYXJTZXJ2aWNlfSBmcm9tICcuLi9yYWRhci5zZXJ2aWNlJztcbmltcG9ydCB7U3RvcmFnZX0gZnJvbSAnLi4vc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7Q3VtdWxhdGl2ZVNlbGVjdGlvbn0gZnJvbSAnLi4vY3VtdWxhdGl2ZS1zZWxlY3Rvci9jdW11bGF0aXZlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5cbmxldCBURVNUX0RFVEVDVElPTiA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncmFhaW4tZGV0YWlscycsXG4gICAgdGVtcGxhdGVVcmw6ICdyYWFpbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsncmFhaW4tZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbkRldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSE9VUl9NUyA9IDYwICogNjAwMDA7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREFZX01TID0gMjQgKiA2MCAqIDYwICogMTAwMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRvZ2dsZUFkbWluOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJhaW5Ob2RlOiBSYWluTm9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb21wYXJlTWFuYWdlcjogQ29tcGFyZU1hbmFnZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVmcmVzaE1hbmFnZXI6IFJlZnJlc2hNYW5hZ2VyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByYWRhclNlcnZpY2U6IFJhZGFyU2VydmljZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzY2FsZUxhYmVsID0gJ21tJztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Q3JlYXRlTWlzc2luZ0ltYWdlcyA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0N1bXVsYXRpdmVDb21wYXJlID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93RGF0ZVJhbmdlID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Q3VtdWxhdGl2ZVRvZ2dsZSA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9yY2VUaW1lU3RlcDogbnVtYmVyO1xuXG4gICAgcHVibGljIGF2YWlsYWJsZVByb3ZpZGVyczogc3RyaW5nW10gPSBbXTtcbiAgICBwdWJsaWMgYXZhaWxhYmxlVGltZVN0ZXBzOiBudW1iZXJbXSA9IFtdO1xuICAgIHB1YmxpYyBhdmFpbGFibGVUaW1lU3RlcE9wdGlvbnM6IHtsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nfVtdID0gW107XG4gICAgcHVibGljIHNlbGVjdGVkUHJvdmlkZXI6IHN0cmluZztcbiAgICBwdWJsaWMgc2VsZWN0ZWRUaW1lU3RlcDogbnVtYmVyO1xuICAgIHB1YmxpYyB0aW1lU3RlcE1vZGU6ICdlcScgfCAnbHRlJyA9ICdlcSc7XG5cbiAgICBwdWJsaWMgcGVyaW9kQmVnaW46IERhdGU7XG4gICAgcHVibGljIHBlcmlvZEVuZDogRGF0ZTtcblxuICAgIC8vIHB1YmxpYyBVSSB2YXJpYWJsZXNcbiAgICBwdWJsaWMgdGVhbU5vZGU6IFRlYW1Ob2RlO1xuICAgIHB1YmxpYyBwZXJpb2RCZWdpbkFzU3RyaW5nOiBzdHJpbmc7XG4gICAgcHVibGljIHBlcmlvZEVuZEFzU3RyaW5nOiBzdHJpbmc7XG4gICAgcHVibGljIHBlcmlvZER1cmF0aW9uQXNTdHJpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgZGF0ZVNob3duOiBEYXRlO1xuICAgIHB1YmxpYyBjb29yZGluYXRlczogTWFwTGF0TG5nO1xuICAgIHB1YmxpYyBib3JkZXJzOiBNYXBMYXRMbmdbXTtcbiAgICBwdWJsaWMgdGltZWZyYW1lQ29udGFpbmVyczogVGltZWZyYW1lQ29udGFpbmVycztcbiAgICBwdWJsaWMgY3VycmVudFRpbWVmcmFtZVRhcmdldDogRnJhbWVTZXQ7XG4gICAgcHVibGljIHRpbWVmcmFtZURhdGVzOiBEYXRlW107XG4gICAgcHVibGljIGNvdW50UG9pbnRzOiB7XG4gICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgIHN0eWxlOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlczoge2RhdGU6IERhdGU7IHZhbHVlOiBudW1iZXJ9W107XG4gICAgfVtdO1xuICAgIHB1YmxpYyBjb3VudHNQZXJpb2Q6IHtcbiAgICAgICAgcGVyY2VudEltYWdlcz86IFhZVHlwZVtdO1xuICAgICAgICBxdWV1ZVJ1bm5pbmc/OiBudW1iZXI7XG4gICAgICAgIHByb2dyZXNzPzogbnVtYmVyO1xuICAgIH07XG5cbiAgICBwdWJsaWMgZ2F1Z2VTZWxlY3RlZFBvaW50czoge1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICBzdHlsZTogc3RyaW5nO1xuICAgICAgICB2YWx1ZXM6IHtkYXRlOiBEYXRlOyB2YWx1ZTogbnVtYmVyfVtdO1xuICAgIH1bXTtcbiAgICBwdWJsaWMgdG9nZ2xlSGlzdG9yeTogYm9vbGVhbjtcbiAgICBwdWJsaWMgdG9nZ2xlTWFwOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVDb21wYXJlOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVHYXVnZU1lYXN1cmVzOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVSZW1vdmVDb21wYXJlRHVwbGljYXRlOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVDdW11bGF0aXZlOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWZyZXNoSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgICBwdWJsaWMgc3VtRGV0YWlsczogc3RyaW5nO1xuICAgIHB1YmxpYyBzaG93UGl4ZWxNYXJrZXJzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzQWRtaW46IGJvb2xlYW47XG4gICAgcHVibGljIHNob3dGdWxsRXJyb3I6IGJvb2xlYW47XG4gICAgcHVibGljIHNob3dRdWFsaXR5TW9kYWw6IGJvb2xlYW47XG4gICAgcHVibGljIHF1YWxpdHlJbmRpY2F0b3JzOiBRdWFsaXR5SW5kaWNhdG9yW10gPSBbXTtcbiAgICBwdWJsaWMgcXVhbGl0eUluZGljYXRvcnNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHNob3dDdW11bGF0aXZlU2VsZWN0b3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgY3JlYXRpbmdDdW11bGF0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHNob3dRdWFsaXR5RGV0YWlsczogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBtb2RlbFBlcmZvcm1hbmNlRGF0YTogQXJyYXk8e25hbWU6IHN0cmluZzsgZGF0ZTogRGF0ZTsgS1BFaTogbnVtYmVyIHwgbnVsbDsgS1BFMTogbnVtYmVyIHwgbnVsbH0+ID0gW107XG4gICAgcHJpdmF0ZSBwZXJmb3JtYW5jZUNoYXJ0OiBNb2RlbFBlcmZvcm1hbmNlRWxlbWVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ2N1bXVsYXRpdmVUb2dnbGUnKSBjdW11bGF0aXZlVG9nZ2xlUmVmOiBJb25Ub2dnbGU7XG4gICAgQFZpZXdDaGlsZCgncGVyZm9ybWFuY2VDYW52YXMnKSBwZXJmb3JtYW5jZUNhbnZhc1JlZjogYW55O1xuXG4gICAgLy8gQ2FjaGVkIGNvbXB1dGVkIHZhbHVlcyAodG8gYXZvaWQgbWV0aG9kIGNhbGxzIGluIHRlbXBsYXRlcylcbiAgICBwdWJsaWMgcGVyY2VudE9mQ29tcHV0YXRpb25zOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBwcmVzZW50Q29tcHV0YXRpb25Db3VudDogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgZXhwZWN0ZWRDb21wdXRhdGlvbkNvdW50OiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBwZXJjZW50T2ZJbWFnZXM6IG51bWJlciA9IDA7XG4gICAgcHVibGljIHRydW5jYXRlZEVycm9yOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgY3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzOiBudW1iZXIgPSAxMDtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgRGF0ZVJhbmdlID0gRGF0ZVJhbmdlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBzdG9yYWdlOiBTdG9yYWdlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBQZXJpb2REaXNwbGF5KGRhdGU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgbGV0IGQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgZCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICAgICAgY29uc3QgdXNlclRpbWV6b25lT2Zmc2V0ID0gZC5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7XG4gICAgICAgICAgICBkID0gbmV3IERhdGUoZC5nZXRUaW1lKCkgLSB1c2VyVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4YW1wbGVGb3JtYXR0ZWREYXRlID0gJzIwMTctMDYtMDFUMDg6MzAnO1xuICAgICAgICByZXR1cm4gZC50b0lTT1N0cmluZygpLnN1YnN0cmluZygwLCBleGFtcGxlRm9ybWF0dGVkRGF0ZS5sZW5ndGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIERhdGVVVEMoZGF0ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGhhc0lTT0Zvcm1hdCA9IGRhdGUubWF0Y2goL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfVxcLlxcZHszfVokLyk7XG4gICAgICAgIGxldCBkID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgICAgIGlmICghaGFzSVNPRm9ybWF0KSB7XG4gICAgICAgICAgICBjb25zdCB1c2VyVGltZXpvbmVPZmZzZXQgPSBkLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMDtcbiAgICAgICAgICAgIGQgPSBuZXcgRGF0ZShkLmdldFRpbWUoKSAtIHVzZXJUaW1lem9uZU9mZnNldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgTWFwQ291bnRUb0RhdGVWYWx1ZShjOiBYWVR5cGUpOiB7ZGF0ZTogRGF0ZTsgdmFsdWU6IG51bWJlcn0ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0ZTogUmFhaW5EZXRhaWxzQ29tcG9uZW50LkRhdGVVVEMoYy5uYW1lKSxcbiAgICAgICAgICAgIHZhbHVlOiBNYXRoLm1pbigxMDAsIGMueCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYXN5bmMgb3BlblF1YWxpdHlNb2RhbCgpIHtcbiAgICAgICAgdGhpcy5zaG93UXVhbGl0eU1vZGFsID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5xdWFsaXR5SW5kaWNhdG9yc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnF1YWxpdHlJbmRpY2F0b3JzID0gW107XG4gICAgICAgIHRoaXMubW9kZWxQZXJmb3JtYW5jZURhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgaWYgKHRoaXMucmFpbk5vZGU/LmlkKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldEluZGljYXRvcnModGhpcy5yYWluTm9kZS5pZCk7XG4gICAgICAgICAgICB0aGlzLnF1YWxpdHlJbmRpY2F0b3JzID0gcmVzdWx0LmluZGljYXRvcnM7XG4gICAgICAgICAgICB0aGlzLm1vZGVsUGVyZm9ybWFuY2VEYXRhID0gdGhpcy5idWlsZE1vZGVsUGVyZm9ybWFuY2VEYXRhKHJlc3VsdC5pbmRpY2F0b3JzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucXVhbGl0eUluZGljYXRvcnNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIGlmICh0aGlzLm1vZGVsUGVyZm9ybWFuY2VEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZW5kZXJQZXJmb3JtYW5jZUNoYXJ0KCksIDEwMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbG9zZVF1YWxpdHlNb2RhbCgpIHtcbiAgICAgICAgdGhpcy5zaG93UXVhbGl0eU1vZGFsID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnBlcmZvcm1hbmNlQ2hhcnQ/LmNoYXJ0KSB7XG4gICAgICAgICAgICB0aGlzLnBlcmZvcm1hbmNlQ2hhcnQuY2hhcnQuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5wZXJmb3JtYW5jZUNoYXJ0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJ1aWxkTW9kZWxQZXJmb3JtYW5jZURhdGEoaW5kaWNhdG9yczogUXVhbGl0eUluZGljYXRvcltdKTogQXJyYXk8e25hbWU6IHN0cmluZzsgZGF0ZTogRGF0ZTsgS1BFaTogbnVtYmVyIHwgbnVsbDsgS1BFMTogbnVtYmVyIHwgbnVsbH0+IHtcbiAgICAgICAgLy8gR3JvdXAgYnkgdmVyc2lvbiBjb21ibyAoY29tcHV0aW5nVmVyc2lvbiArIHF1YWxpdHlWZXJzaW9uKVxuICAgICAgICBjb25zdCBncm91cGVkID0gbmV3IE1hcDxzdHJpbmcsIHtkYXRlOiBEYXRlOyBLUEVpOiBudW1iZXIgfCBudWxsOyBLUEUxOiBudW1iZXIgfCBudWxsfT4oKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGluZCBvZiBpbmRpY2F0b3JzKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBgQyR7aW5kLmNvbXB1dGluZ1ZlcnNpb259LVEke2luZC5xdWFsaXR5VmVyc2lvbn1gO1xuICAgICAgICAgICAgaWYgKCFncm91cGVkLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBlZC5zZXQoa2V5LCB7ZGF0ZTogbmV3IERhdGUoaW5kLmxhc3RVcGRhdGVkQXQpLCBLUEVpOiBudWxsLCBLUEUxOiBudWxsfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IGdyb3VwZWQuZ2V0KGtleSk7XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSBkYXRlIHRvIGxhdGVzdFxuICAgICAgICAgICAgY29uc3QgaW5kRGF0ZSA9IG5ldyBEYXRlKGluZC5sYXN0VXBkYXRlZEF0KTtcbiAgICAgICAgICAgIGlmIChpbmREYXRlLmdldFRpbWUoKSA+IGVudHJ5LmRhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgZW50cnkuZGF0ZSA9IGluZERhdGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmQudGltZVN0ZXBJbk1pbnV0ZXMgPT09IDUpIHtcbiAgICAgICAgICAgICAgICBlbnRyeS5LUEVpID0gaW5kLmF2ZXJhZ2VRdWFsaXR5O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmQudGltZVN0ZXBJbk1pbnV0ZXMgPT09IDYwKSB7XG4gICAgICAgICAgICAgICAgZW50cnkuS1BFMSA9IGluZC5hdmVyYWdlUXVhbGl0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGdyb3VwZWQuZW50cmllcygpKS5tYXAoKFtuYW1lLCBkYXRhXSkgPT4gKHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBkYXRlOiBkYXRhLmRhdGUsXG4gICAgICAgICAgICBLUEVpOiBkYXRhLktQRWksXG4gICAgICAgICAgICBLUEUxOiBkYXRhLktQRTEsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlclBlcmZvcm1hbmNlQ2hhcnQoKSB7XG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMucGVyZm9ybWFuY2VDYW52YXNSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICghY2FudmFzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBFbGVtZW50c0ZhY3RvcnkoKTtcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZUNoYXJ0ID0gZmFjdG9yeS5jcmVhdGVNb2RlbFBlcmZvcm1hbmNlKFxuICAgICAgICAgICAgY2FudmFzLFxuICAgICAgICAgICAgbmV3IE1vZGVsUGVyZm9ybWFuY2VFbGVtZW50SW5wdXQodGhpcy5tb2RlbFBlcmZvcm1hbmNlRGF0YSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3JtYXREYXRlKGRhdGVTdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCkgK1xuICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKFtdLCB7aG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0J30pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZldGNoRGF0YShmb2N1c0RhdGU6IERhdGUsIGZvY3VzUmFuZ2U6IERhdGVSYW5nZSkge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh7ZGF0ZTogbmV3IERhdGUoMjAyMCArIGksIDApLCB2YWx1ZTogMTB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmYWtlRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJyUgUmFpbnknLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBJbWFnZXMnLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBDb21wdXRhdGlvbnMnLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHJhbmdlID0gbWFwRGF0ZVJhbmdlVG9TdHJpbmcoZm9jdXNSYW5nZSk7XG4gICAgICAgIGxldCBkYXRhID0gZmFrZURhdGE7XG4gICAgICAgIGlmICghdGhpcy5yYWluTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9jdXNSYW5nZSA9PT0gRGF0ZVJhbmdlLkNFTlRVUlkpIHtcbiAgICAgICAgICAgIC8vIGZha2VcbiAgICAgICAgfSBlbHNlIGlmIChmb2N1c1JhbmdlID09PSBEYXRlUmFuZ2UuSE9VUikge1xuICAgICAgICAgICAgY29uc3QgaG91ckNvdW50cyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0Q291bnRzSG91cih0aGlzLnJhaW5Ob2RlLmlkLCB7XG4gICAgICAgICAgICAgICAgcGVyaW9kQmVnaW46IGZvY3VzRGF0ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBkYXRhID0gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdSYWlueSBDb3VudCcsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnbGluZScsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogaG91ckNvdW50cy5yYWlueUNvdW50Lm1hcChSYWFpbkRldGFpbHNDb21wb25lbnQuTWFwQ291bnRUb0RhdGVWYWx1ZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBJbWFnZXMnLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogaG91ckNvdW50cy5wZXJjZW50SW1hZ2VzLm1hcChSYWFpbkRldGFpbHNDb21wb25lbnQuTWFwQ291bnRUb0RhdGVWYWx1ZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBDb21wdXRhdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogaG91ckNvdW50cy5wZXJjZW50Q29tcHV0YXRpb25zLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIFJhYWluRGV0YWlsc0NvbXBvbmVudC5NYXBDb3VudFRvRGF0ZVZhbHVlXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnUmFpbnkgU3VtJyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBob3VyQ291bnRzLnJhaW55U3VtLm1hcChSYWFpbkRldGFpbHNDb21wb25lbnQuTWFwQ291bnRUb0RhdGVWYWx1ZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb3VudHMgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldENvdW50cyh0aGlzLnJhaW5Ob2RlLmlkLCB7XG4gICAgICAgICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgICAgICAgcGVyaW9kQmVnaW46IGZvY3VzRGF0ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBkYXRhID0gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICclIFJhaW55JyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdiYXInLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IGNvdW50cy5wZXJjZW50UmFpbnkubWFwKFJhYWluRGV0YWlsc0NvbXBvbmVudC5NYXBDb3VudFRvRGF0ZVZhbHVlKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICclIEltYWdlcycsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBjb3VudHMucGVyY2VudEltYWdlcy5tYXAoUmFhaW5EZXRhaWxzQ29tcG9uZW50Lk1hcENvdW50VG9EYXRlVmFsdWUpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJyUgQ29tcHV0YXRpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdiYXInLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IGNvdW50cy5wZXJjZW50Q29tcHV0YXRpb25zLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIFJhYWluRGV0YWlsc0NvbXBvbmVudC5NYXBDb3VudFRvRGF0ZVZhbHVlXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgZmV0Y2hEYXRhIERPTkUgJHtyYW5nZX1gLCBkYXRhKTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0aGF0IHByZXNlcnZlcyB0aGUgYXN5bmMgbmF0dXJlIG9mIGZldGNoRGF0YVxuICAgIHB1YmxpYyBmZXRjaERhdGFXcmFwcGVyID0gYXN5bmMgKGZvY3VzRGF0ZTogRGF0ZSwgZm9jdXNSYW5nZTogRGF0ZVJhbmdlKSA9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZldGNoRGF0YShmb2N1c0RhdGUsIGZvY3VzUmFuZ2UpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoYW5nZShjaGFuZ2VzKS50aGVuKChpZ25vcmVkKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xlYW5BbGwoKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkVuYWJsZUNvdW50SGlzdG9yeVRhYihyYWluOiBSYWluTm9kZSkge1xuICAgICAgICBpZiAoIXRoaXMudG9nZ2xlSGlzdG9yeSkge1xuICAgICAgICAgICAgdGhpcy5jb3VudFBvaW50cyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb25QZXJpb2RCZWdpbkNoYW5nZShldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgPz8gdGhpcy5wZXJpb2RCZWdpbkFzU3RyaW5nO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luID0gbmV3IERhdGUobmV3VmFsdWUpO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kQmVnaW4nLCB0aGlzLnBlcmlvZEJlZ2luKTtcblxuICAgICAgICBhd2FpdCB0aGlzLm9uUGVyaW9kRHVyYXRpb25DaGFuZ2UoZXZlbnQpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uUGVyaW9kRW5kQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBldmVudD8udGFyZ2V0Py52YWx1ZSA/PyB0aGlzLnBlcmlvZEVuZEFzU3RyaW5nO1xuICAgICAgICB0aGlzLnBlcmlvZEVuZCA9IG5ldyBEYXRlKG5ld1ZhbHVlKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kRW5kKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kRW5kJywgdGhpcy5wZXJpb2RFbmQpO1xuXG4gICAgICAgIHRoaXMucGVyaW9kQmVnaW4gPSBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMucGVyaW9kRW5kLmdldFRpbWUoKSAtIHRoaXMuZ2V0RHVyYXRpb25JbkhvdXJzKCkgKiBSYWFpbkRldGFpbHNDb21wb25lbnQuSE9VUl9NU1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kQmVnaW4nLCB0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy51cGRhdGVSZWZyZXNoTWFuYWdlclBlcmlvZCgpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uUGVyaW9kRHVyYXRpb25DaGFuZ2UoX2V2ZW50OiBvYmplY3QpIHtcbiAgICAgICAgY29uc3QgZHVyYXRpb25JbkhvdXJzID0gdGhpcy5nZXREdXJhdGlvbkluSG91cnMoKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmQgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMucGVyaW9kQmVnaW4uZ2V0VGltZSgpICsgZHVyYXRpb25JbkhvdXJzICogUmFhaW5EZXRhaWxzQ29tcG9uZW50LkhPVVJfTVNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kRW5kKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kRW5kJywgdGhpcy5wZXJpb2RFbmQpO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1wZXJpb2REdXJhdGlvbkluSG91cnMnLCBkdXJhdGlvbkluSG91cnMpO1xuICAgICAgICB0aGlzLnVwZGF0ZVJlZnJlc2hNYW5hZ2VyUGVyaW9kKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25EYXRlQ2hhbmdlSW5Db3VudChkYXRlQ2hhbmdlZDogRGF0ZSkge1xuICAgICAgICBjb25zdCBkYXRlU3RyaW5nID1cbiAgICAgICAgICAgIGRhdGVDaGFuZ2VkLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDExKSArXG4gICAgICAgICAgICBkYXRlQ2hhbmdlZC50b0xvY2FsZVRpbWVTdHJpbmcoKS5zdWJzdHJpbmcoMCwgNSk7XG4gICAgICAgIHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZyA9ICcxJztcblxuICAgICAgICBpZiAodGhpcy50b2dnbGVDdW11bGF0aXZlKSB7XG4gICAgICAgICAgICAvLyBDdW11bGF0aXZlOiBzZWxlY3QgcGVyaW9kRW5kXG4gICAgICAgICAgICB0aGlzLnBlcmlvZEVuZEFzU3RyaW5nID0gZGF0ZVN0cmluZztcbiAgICAgICAgICAgIGF3YWl0IHRoaXMub25QZXJpb2RFbmRDaGFuZ2UobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBHcmFudWxhcjogc2VsZWN0IHBlcmlvZEJlZ2luXG4gICAgICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBkYXRlU3RyaW5nO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5vblBlcmlvZEJlZ2luQ2hhbmdlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIucmVmcmVzaChmYWxzZSwgdGhpcy50b2dnbGVBZG1pbik7XG4gICAgfVxuXG4gICAgYXN5bmMgb25EYXRlQ2hhbmdlSW5NYXAoZGF0ZVNob3duOiBEYXRlKSB7XG4gICAgICAgIHRoaXMuZGF0ZVNob3duID0gZGF0ZVNob3duO1xuICAgICAgICBhd2FpdCB0aGlzLmZldGNoQW5kVXBkYXRlTWFwKCk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIuc2V0UmVwb3J0UGVyaW9kKHRoaXMuZGF0ZVNob3duKTtcbiAgICB9XG5cbiAgICBhc3luYyBvblN1bUNoYW5nZUluTWFwKHN1bTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3VtRGV0YWlscyA9IHN1bTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkdhdWdlU2VsZWN0SW5NYXAobWFwTGF0TG5nOiBNYXBMYXRMbmcpIHtcbiAgICAgICAgY29uc3QgZ2F1Z2VzRmlsdGVyZWQgPSB0aGlzLmNvbXBhcmVNYW5hZ2VyLmdhdWdlc0luTWFwLmZpbHRlcihcbiAgICAgICAgICAgIChnKSA9PiBnLmxhdCA9PT0gbWFwTGF0TG5nLmxhdCAmJiBnLmxuZyA9PT0gbWFwTGF0TG5nLmxuZ1xuICAgICAgICApO1xuICAgICAgICBpZiAoZ2F1Z2VzRmlsdGVyZWQubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ2F1Z2VTZWxlY3RlZCA9IGdhdWdlc0ZpbHRlcmVkWzBdO1xuXG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEdhdWdlVmFsdWVzKHtpZDogZ2F1Z2VTZWxlY3RlZC5pZCwgbmFtZTogZ2F1Z2VTZWxlY3RlZC5uYW1lfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5zZWxlY3RHYXVnZShnYXVnZVNlbGVjdGVkLmlkLCAwKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWZyZXNoR2F1Z2VWYWx1ZXMoZ2F1Z2VTZWxlY3RlZDoge2lkOiBzdHJpbmc7IG5hbWU6IHN0cmluZ30pIHtcbiAgICAgICAgY29uc3QgZ2F1Z2VWYWx1ZVNob3dCZWdpbiA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5wZXJpb2RCZWdpbi5nZXRUaW1lKCkgLSBSYWFpbkRldGFpbHNDb21wb25lbnQuREFZX01TXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGdhdWdlVmFsdWVTaG93RW5kID0gbmV3IERhdGUodGhpcy5wZXJpb2RFbmQuZ2V0VGltZSgpICsgUmFhaW5EZXRhaWxzQ29tcG9uZW50LkRBWV9NUyk7XG4gICAgICAgIGdhdWdlVmFsdWVTaG93QmVnaW4uc2V0SG91cnMoMCwgMCk7XG4gICAgICAgIGdhdWdlVmFsdWVTaG93RW5kLnNldEhvdXJzKDIzLCA1OSk7XG5cbiAgICAgICAgY29uc3QgZ2F1Z2VNZWFzdXJlcyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0R2F1Z2VNZWFzdXJlcyhcbiAgICAgICAgICAgIGdhdWdlU2VsZWN0ZWQuaWQsXG4gICAgICAgICAgICBnYXVnZVZhbHVlU2hvd0JlZ2luLFxuICAgICAgICAgICAgZ2F1Z2VWYWx1ZVNob3dFbmRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZ2F1Z2VWYWx1ZXM6IHtkYXRlOiBEYXRlOyB2YWx1ZTogbnVtYmVyfVtdID0gZ2F1Z2VNZWFzdXJlcy5tYXAoKGdtKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgY29uc3QgY2FydGVzaWFuTWVhc3VyZVZhbHVlID0gbmV3IENhcnRlc2lhbk1lYXN1cmVWYWx1ZShnbS52YWx1ZXNbMF0gYXMgYW55KTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0ZTogZ20uZGF0ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2FydGVzaWFuTWVhc3VyZVZhbHVlLmdldENhcnRlc2lhblZhbHVlcygpWzBdLnZhbHVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ2F1Z2VTZWxlY3RlZFBvaW50cyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogZ2F1Z2VTZWxlY3RlZC5uYW1lLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGdhdWdlVmFsdWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25HYXVnZVNlbGVjdEluQ29tcGFyZShlOiB7cG9pbnQ6IFhZVHlwZTsgY29tcGFyZUluZGV4OiBudW1iZXJ9KSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEdhdWdlVmFsdWVzKHtpZDogZS5wb2ludC5pZCwgbmFtZTogZS5wb2ludC5uYW1lfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5zZWxlY3RHYXVnZShlLnBvaW50LmlkLCBlLmNvbXBhcmVJbmRleCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25Ub2dnbGVNYXAoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICAvLyBpZiAodGhpcy50b2dnbGVNYXApIHtcbiAgICAgICAgLy8gICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFwKCk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBvblRvZ2dsZVBpeGVsTWFya2VycygpIHtcbiAgICAgICAgLy8gVG9nZ2xlIGlzIGJvdW5kIHRvIHNob3dQaXhlbE1hcmtlcnMsIHJhYWluLW1hcCBoYW5kbGVzIG1hcmtlciBkaXNwbGF5XG4gICAgfVxuXG4gICAgYXN5bmMgb25DdW11bGF0aXZlVG9nZ2xlQ2xpY2soJGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zb2xlLmxvZygnW0N1bXVsYXRpdmVUb2dnbGVdIGNsaWNrIGV2ZW50Jywge1xuICAgICAgICAgICAgY3VycmVudFZhbHVlOiB0aGlzLnRvZ2dsZUN1bXVsYXRpdmUsXG4gICAgICAgICAgICBldmVudFR5cGU6ICRldmVudC50eXBlLFxuICAgICAgICAgICAgdGFyZ2V0OiAoJGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk/LnRhZ05hbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnRvZ2dsZUN1bXVsYXRpdmUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbQ3VtdWxhdGl2ZVRvZ2dsZV0gc2hvd2luZyBwb3B1cCwgdG9nZ2xlIHN0YXlzIE9GRicpO1xuICAgICAgICAgICAgLy8gQ3VycmVudGx5IE9GRiwgdXNlciB3YW50cyB0byBlbmFibGUgLSBzaG93IHNlbGVjdG9yIHBvcHVwXG4gICAgICAgICAgICB0aGlzLnNob3dDdW11bGF0aXZlU2VsZWN0b3IgPSB0cnVlO1xuXG4gICAgICAgICAgICAvLyBGb3JjZSByZXNldCB0aGUgdG9nZ2xlIHZpc3VhbCBzdGF0ZSBhZnRlciBpb24tdG9nZ2xlJ3MgaW50ZXJuYWwgaGFuZGxlclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VtdWxhdGl2ZVRvZ2dsZVJlZikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1bXVsYXRpdmVUb2dnbGVSZWYuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW0N1bXVsYXRpdmVUb2dnbGVdIGZvcmNlIHJlc2V0IHRvZ2dsZSB0byBPRkYnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAwKTtcblxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW0N1bXVsYXRpdmVUb2dnbGVdIHR1cm5pbmcgT0ZGJyk7XG4gICAgICAgICAgICAvLyBDdXJyZW50bHkgT04sIHVzZXIgd2FudHMgdG8gZGlzYWJsZSAtIGRpcmVjdCB0b2dnbGUgb2ZmXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUN1bXVsYXRpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoJ3JhYWluLXRvZ2dsZUN1bXVsYXRpdmUnLCBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmRhdGVTaG93biA9IHRoaXMuZ2V0RGF0ZUJhc2VkT25DdW11bGF0aXZlTW9kZSh0aGlzLnRpbWVmcmFtZURhdGVzKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzKCk7XG4gICAgICAgICAgICBpZiAodGhpcy50b2dnbGVNYXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJlZnJlc2hNYW5hZ2VyUGVyaW9kKCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0aGlzLnRvZ2dsZUFkbWluKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCdbQ3VtdWxhdGl2ZVRvZ2dsZV0gYWZ0ZXIgaGFuZGxlciwgdG9nZ2xlQ3VtdWxhdGl2ZSA9JywgdGhpcy50b2dnbGVDdW11bGF0aXZlKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkN1bXVsYXRpdmVQZXJpb2RTZWxlY3RlZChzZWxlY3Rpb246IEN1bXVsYXRpdmVTZWxlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5zaG93Q3VtdWxhdGl2ZVNlbGVjdG9yID0gZmFsc2U7XG5cbiAgICAgICAgLy8gVXBkYXRlIHBlcmlvZCB0byBtYXRjaCBzZWxlY3Rpb25cbiAgICAgICAgdGhpcy5wZXJpb2RCZWdpbiA9IHNlbGVjdGlvbi5wZXJpb2RCZWdpbjtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmQgPSBzZWxlY3Rpb24ucGVyaW9kRW5kO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kRW5kKTtcblxuICAgICAgICAvLyBDYWxjdWxhdGUgZHVyYXRpb24gaW4gaG91cnNcbiAgICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHRoaXMucGVyaW9kRW5kLmdldFRpbWUoKSAtIHRoaXMucGVyaW9kQmVnaW4uZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBkdXJhdGlvbkhvdXJzID0gZHVyYXRpb25NcyAvIFJhYWluRGV0YWlsc0NvbXBvbmVudC5IT1VSX01TO1xuICAgICAgICB0aGlzLnBlcmlvZER1cmF0aW9uQXNTdHJpbmcgPSBTdHJpbmcoZHVyYXRpb25Ib3Vycyk7XG5cbiAgICAgICAgLy8gU3RvcmUgY3VtdWxhdGl2ZSBwZXJpb2RcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kQmVnaW4nLCB0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kRW5kJywgdGhpcy5wZXJpb2RFbmQpO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1wZXJpb2REdXJhdGlvbkluSG91cnMnLCBkdXJhdGlvbkhvdXJzKTtcblxuICAgICAgICAvLyBFbmFibGUgY3VtdWxhdGl2ZSBtb2RlXG4gICAgICAgIHRoaXMudG9nZ2xlQ3VtdWxhdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoJ3JhYWluLXRvZ2dsZUN1bXVsYXRpdmUnLCB0cnVlKTtcblxuICAgICAgICB0aGlzLmRhdGVTaG93biA9IHRoaXMuZ2V0RGF0ZUJhc2VkT25DdW11bGF0aXZlTW9kZSh0aGlzLnRpbWVmcmFtZURhdGVzKTtcbiAgICAgICAgdGhpcy51cGRhdGVDdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXMoKTtcblxuICAgICAgICAvLyBSZWZyZXNoIG1hcFxuICAgICAgICBpZiAodGhpcy50b2dnbGVNYXApIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUmVmcmVzaE1hbmFnZXJQZXJpb2QoKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIucmVmcmVzaChmYWxzZSwgdGhpcy50b2dnbGVBZG1pbik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbkN1bXVsYXRpdmVTZWxlY3RvckNhbmNlbGxlZCgpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tDdW11bGF0aXZlVG9nZ2xlXSBjYW5jZWxsZWQsIHRvZ2dsZUN1bXVsYXRpdmUgPScsIHRoaXMudG9nZ2xlQ3VtdWxhdGl2ZSk7XG4gICAgICAgIHRoaXMuc2hvd0N1bXVsYXRpdmVTZWxlY3RvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICB1cGRhdGVDdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLnRvZ2dsZUN1bXVsYXRpdmUpIHtcbiAgICAgICAgICAgIC8vIEN1bXVsYXRpdmUgbW9kZTogdXNlIHBlcmlvZCBkdXJhdGlvblxuICAgICAgICAgICAgdGhpcy5jdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXMgPSBwYXJzZUZsb2F0KHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZykgKiA2MDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEdyYW51bGFyIG1vZGU6IHVzZSBzZWxlY3RlZFRpbWVTdGVwXG4gICAgICAgICAgICB0aGlzLmN1bXVsYXRpdmVEdXJhdGlvbkluTWludXRlcyA9IHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCB8fCAxMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIG9uUHJvdmlkZXJDaGFuZ2VkKCRldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb3ZpZGVyID0gKCRldmVudCBhcyBDdXN0b21FdmVudCk/LmRldGFpbD8udmFsdWU7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoJ3JhYWluLXNlbGVjdGVkUHJvdmlkZXInLCB0aGlzLnNlbGVjdGVkUHJvdmlkZXIpO1xuICAgICAgICBhd2FpdCB0aGlzLmFwcGx5UmVmcmVzaE1hbmFnZXJTZXR0aW5ncygpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uVGltZVN0ZXBDaGFuZ2VkKCRldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcmF3OiBzdHJpbmcgPSAoJGV2ZW50IGFzIEN1c3RvbUV2ZW50KT8uZGV0YWlsPy52YWx1ZTtcbiAgICAgICAgY29uc3QgW21vZGUsIHN0ZXBTdHJdID0gcmF3LnNwbGl0KCc6Jyk7XG4gICAgICAgIHRoaXMudGltZVN0ZXBNb2RlID0gbW9kZSBhcyAnZXEnIHwgJ2x0ZSc7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCA9IHBhcnNlSW50KHN0ZXBTdHIsIDEwKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tc2VsZWN0ZWRUaW1lU3RlcCcsIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCk7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoJ3JhYWluLXRpbWVTdGVwTW9kZScsIHRoaXMudGltZVN0ZXBNb2RlKTtcbiAgICAgICAgdGhpcy51cGRhdGVDdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hcHBseVJlZnJlc2hNYW5hZ2VyU2V0dGluZ3MoKTtcbiAgICB9XG5cbiAgICBhc3luYyBsb2FkUHJvdmlkZXJzKCkge1xuICAgICAgICBpZiAoIXRoaXMucmFpbk5vZGU/LmlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRQcm92aWRlcnModGhpcy5yYWluTm9kZS5pZCk7XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVByb3ZpZGVycyA9IHJlc3VsdC5wcm92aWRlcnMuc29ydCgpO1xuICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVUaW1lU3RlcHMgPSByZXN1bHQudGltZVN0ZXBJbk1pbnV0ZXMuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuXG4gICAgICAgICAgICAvLyBMb2FkIHNhdmVkIHNlbGVjdGlvbnMgb3IgdXNlIGRlZmF1bHRzXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgPVxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5nZXQoJ3JhYWluLXNlbGVjdGVkUHJvdmlkZXInKSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLmF2YWlsYWJsZVByb3ZpZGVycy5sZW5ndGggPiAwID8gdGhpcy5hdmFpbGFibGVQcm92aWRlcnNbMF0gOiAnUmFhaW4nKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCA9XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLmdldCgncmFhaW4tc2VsZWN0ZWRUaW1lU3RlcCcpIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMuYXZhaWxhYmxlVGltZVN0ZXBzLmxlbmd0aCA+IDAgPyB0aGlzLmF2YWlsYWJsZVRpbWVTdGVwc1swXSA6IDEwKTtcbiAgICAgICAgICAgIHRoaXMudGltZVN0ZXBNb2RlID0gdGhpcy5zdG9yYWdlLmdldCgncmFhaW4tdGltZVN0ZXBNb2RlJykgfHwgJ2VxJztcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gU2V0IGZhbGxiYWNrIHZhbHVlc1xuICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVQcm92aWRlcnMgPSBbJ1JhYWluJ107XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVRpbWVTdGVwcyA9IFs1LCAxMCwgMTUsIDMwLCA2MF07XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgPSAnUmFhaW4nO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRpbWVTdGVwID0gMTA7XG4gICAgICAgICAgICB0aGlzLnRpbWVTdGVwTW9kZSA9ICdlcSc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3ZlcnJpZGUgdGltZVN0ZXAgaWYgZm9yY2VkXG4gICAgICAgIGlmICh0aGlzLmZvcmNlVGltZVN0ZXApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCA9IHRoaXMuZm9yY2VUaW1lU3RlcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVpbGRUaW1lU3RlcE9wdGlvbnMoKTtcblxuICAgICAgICAvLyBTZXQgcHJvdmlkZXIgYW5kIHRpbWVTdGVwIG9uIHJlZnJlc2hNYW5hZ2VyXG4gICAgICAgIGlmICh0aGlzLnJlZnJlc2hNYW5hZ2VyKSB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnByb3ZpZGVyID0gdGhpcy5zZWxlY3RlZFByb3ZpZGVyO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci50aW1lU3RlcEluTWludXRlcyA9IHRoaXMuc2VsZWN0ZWRUaW1lU3RlcDtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaE1hbmFnZXIudGltZVN0ZXBNb2RlID0gdGhpcy50aW1lU3RlcE1vZGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZFRpbWVTdGVwT3B0aW9ucygpIHtcbiAgICAgICAgdGhpcy5hdmFpbGFibGVUaW1lU3RlcE9wdGlvbnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzdGVwIG9mIHRoaXMuYXZhaWxhYmxlVGltZVN0ZXBzKSB7XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVRpbWVTdGVwT3B0aW9ucy5wdXNoKHtsYWJlbDogYD0gJHtzdGVwfSBtaW5gLCB2YWx1ZTogYGVxOiR7c3RlcH1gfSk7XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVRpbWVTdGVwT3B0aW9ucy5wdXNoKHtsYWJlbDogYOKJpCAke3N0ZXB9IG1pbmAsIHZhbHVlOiBgbHRlOiR7c3RlcH1gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoYW5nZURldGVjdGlvblRlc3QocmFpbk5vZGU6IFJhaW5Ob2RlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFRFU1RfREVURUNUSU9OKyssICdvbkNoYW5nZURldGVjdGlvblRlc3QnKTtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHVwZGF0ZVRydW5jYXRlZEVycm9yKCkge1xuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMucmVmcmVzaE1hbmFnZXI/Lmxhc3RFcnJvciB8fCAnJztcbiAgICAgICAgaWYgKGVycm9yLmxlbmd0aCA8PSA4MCkge1xuICAgICAgICAgICAgdGhpcy50cnVuY2F0ZWRFcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHJ1bmNhdGVkRXJyb3IgPSBlcnJvci5zdWJzdHJpbmcoMCwgODApICsgJy4uLic7XG4gICAgfVxuXG4gICAgdXBkYXRlQ2FjaGVkVmFsdWVzKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVBlcmNlbnRPZkltYWdlcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVBlcmNlbnRPZkNvbXB1dGF0aW9ucygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRydW5jYXRlZEVycm9yKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVmcmVzaE1hcCgpIHtcbiAgICAgICAgdGhpcy5nYXVnZVNlbGVjdGVkUG9pbnRzID0gW107XG4gICAgICAgIHRoaXMuZGF0ZVNob3duID0gdGhpcy5nZXREYXRlQmFzZWRPbkN1bXVsYXRpdmVNb2RlKCk7XG4gICAgICAgIHRoaXMuYm9yZGVycyA9IFtdO1xuXG4gICAgICAgIHRoaXMuY29tcGFyZU1hbmFnZXIuY2xlYW5BbGwoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5zZXRHYXVnZXNJbk1hcCgpO1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJlZnJlc2goZmFsc2UsIHRoaXMudG9nZ2xlQWRtaW4pO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBhc3luYyB0cmlnZ2VyQ3VtdWxhdGl2ZUNyZWF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5jcmVhdGluZ0N1bXVsYXRpdmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNyZWF0aW5nQ3VtdWxhdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmNyZWF0ZUN1bXVsYXRpdmVQZXJpb2QodGhpcy5yYWluTm9kZS5pZCwge1xuICAgICAgICAgICAgICAgIHBlcmlvZEJlZ2luOiB0aGlzLnBlcmlvZEJlZ2luLFxuICAgICAgICAgICAgICAgIHBlcmlvZEVuZDogdGhpcy5wZXJpb2RFbmQsXG4gICAgICAgICAgICAgICAgcHJvdmlkZXI6IHRoaXMuc2VsZWN0ZWRQcm92aWRlcixcbiAgICAgICAgICAgICAgICB0aW1lU3RlcEluTWludXRlczogdGhpcy5zZWxlY3RlZFRpbWVTdGVwLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB0aGlzLnBvbGxGb3JDdW11bGF0aXZlQ29tcGxldGlvbigpO1xuXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hcCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCd0cmlnZ2VyQ3VtdWxhdGl2ZUNyZWF0aW9uOiB0aW1lb3V0IHdhaXRpbmcgZm9yIGNvbXB1dGF0aW9uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3RyaWdnZXJDdW11bGF0aXZlQ3JlYXRpb24gZXJyb3I6JywgZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0aW5nQ3VtdWxhdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBhc3luYyBzZXRQZXJpb2RPZk5vdygpIHtcbiAgICAgICAgY29uc3QgbGFzdDMwbW4gPSBuZXcgRGF0ZSgpO1xuICAgICAgICBsYXN0MzBtbi5zZXRNaW51dGVzKGxhc3QzMG1uLmdldE1pbnV0ZXMoKSAtIDMwKTtcbiAgICAgICAgdGhpcy5wZXJpb2RCZWdpbkFzU3RyaW5nID1cbiAgICAgICAgICAgIGxhc3QzMG1uLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDExKSArIGxhc3QzMG1uLnRvTG9jYWxlVGltZVN0cmluZygpLnN1YnN0cmluZygwLCA1KTtcbiAgICAgICAgdGhpcy5wZXJpb2REdXJhdGlvbkFzU3RyaW5nID0gJzEnO1xuICAgICAgICBhd2FpdCB0aGlzLm9uUGVyaW9kQmVnaW5DaGFuZ2UobnVsbCk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIucmVmcmVzaChmYWxzZSwgdGhpcy50b2dnbGVBZG1pbik7XG4gICAgfVxuXG4gICAgdXBkYXRlUGVyY2VudE9mSW1hZ2VzKCkge1xuICAgICAgICBpZiAoIXRoaXMuY291bnRzUGVyaW9kPy5wZXJjZW50SW1hZ2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucGVyY2VudE9mSW1hZ2VzID0gMDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGR1cmluZ1BlcmlvZCA9IHRoaXMuY291bnRzUGVyaW9kLnBlcmNlbnRJbWFnZXMuZmlsdGVyKFxuICAgICAgICAgICAgKGEpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJpb2RCZWdpbi5nZXRUaW1lKCkgPD0gbmV3IERhdGUoYS5uYW1lKS5nZXRUaW1lKCkgJiZcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZShhLm5hbWUpLmdldFRpbWUoKSA8PSB0aGlzLnBlcmlvZEVuZC5nZXRUaW1lKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3VtbWVkID0gZHVyaW5nUGVyaW9kLnJlZHVjZSgoYSwgYikgPT4gYSArIChiLnggPz8gMCksIDApO1xuICAgICAgICB0aGlzLnBlcmNlbnRPZkltYWdlcyA9IE1hdGgucm91bmQoc3VtbWVkIC8gZHVyaW5nUGVyaW9kLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgdXBkYXRlUGVyY2VudE9mQ29tcHV0YXRpb25zKCkge1xuICAgICAgICBjb25zdCBleHBlY3RlZENvdW50ID0gdGhpcy5yZWZyZXNoTWFuYWdlcj8uZ2V0RXhwZWN0ZWRUaW1lbGluZUNvdW50KCk7XG4gICAgICAgIGlmICghZXhwZWN0ZWRDb3VudCkge1xuICAgICAgICAgICAgdGhpcy5wZXJjZW50T2ZDb21wdXRhdGlvbnMgPSAwO1xuICAgICAgICAgICAgdGhpcy5wcmVzZW50Q29tcHV0YXRpb25Db3VudCA9IDA7XG4gICAgICAgICAgICB0aGlzLmV4cGVjdGVkQ29tcHV0YXRpb25Db3VudCA9IDA7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmVzZW50Q291bnQgPSB0aGlzLnJlZnJlc2hNYW5hZ2VyPy5nZXRQcmVzZW50VGltZWxpbmVDb3VudCgpIHx8IDA7XG4gICAgICAgIHRoaXMucHJlc2VudENvbXB1dGF0aW9uQ291bnQgPSBwcmVzZW50Q291bnQ7XG4gICAgICAgIHRoaXMuZXhwZWN0ZWRDb21wdXRhdGlvbkNvdW50ID0gZXhwZWN0ZWRDb3VudDtcbiAgICAgICAgdGhpcy5wZXJjZW50T2ZDb21wdXRhdGlvbnMgPSBNYXRoLnJvdW5kKChwcmVzZW50Q291bnQgLyBleHBlY3RlZENvdW50KSAqIDEwMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBwb2xsRm9yQ3VtdWxhdGl2ZUNvbXBsZXRpb24oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IFBPTExfVElNRU9VVF9NUyA9IDkwMDAwMDtcbiAgICAgICAgY29uc3QgUE9MTF9JTlRFUlZBTF9NUyA9IDMwMDA7XG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHdpbmRvd0luTWludXRlcyA9IE1hdGgucm91bmQoXG4gICAgICAgICAgICAodGhpcy5wZXJpb2RFbmQuZ2V0VGltZSgpIC0gdGhpcy5wZXJpb2RCZWdpbi5nZXRUaW1lKCkpIC8gNjAwMDBcbiAgICAgICAgKTtcblxuICAgICAgICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSA8IFBPTExfVElNRU9VVF9NUykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9ncmVzcyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UmFpblByb2dyZXNzKHRoaXMucmFpbk5vZGUuaWQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHByb2dyZXNzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgYmFja2dyb3VuZCBmZXRjaCBmcm9tIHJhYWluLWdyb3VuZCB2aWEgdGltZWZyYW1lQ3VtdWxhdGl2ZVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFJhaW5UaW1lZnJhbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJhaW5Ob2RlLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJpb2RCZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVyaW9kRW5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVBZG1pbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm92aWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0luTWludXRlc1xuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFZlcmlmeSBjdW11bGF0aXZlIGFjdHVhbGx5IGV4aXN0c1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldEN1bXVsYXRpdmVQZXJpb2RzKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yYWluTm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcjogdGhpcy5zZWxlY3RlZFByb3ZpZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0luTWludXRlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZWQ6IHRoaXMudG9nZ2xlQWRtaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICkpIGFzIFJhYWluQXBpUmFpbnNDdW11bGF0aXZlc0xpc3RSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3VuZCA9IHJlc3BvbnNlLnBlcmlvZHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChwKSA9PiBwLndpbmRvd0luTWludXRlcyA9PT0gd2luZG93SW5NaW51dGVzXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIFBPTExfSU5URVJWQUxfTVMpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1BvbGwgZXJyb3I6JywgZSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgUE9MTF9JTlRFUlZBTF9NUykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0ZUJhc2VkT25DdW11bGF0aXZlTW9kZShmYWxsYmFja0RhdGVzPzogRGF0ZVtdKTogRGF0ZSB7XG4gICAgICAgIGlmIChmYWxsYmFja0RhdGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlRXhpc3RzID0gZmFsbGJhY2tEYXRlcy5zb21lKChkKSA9PiBkLmdldFRpbWUoKSA9PT0gdGhpcy5kYXRlU2hvd24/LmdldFRpbWUoKSk7XG4gICAgICAgICAgICBpZiAoIWRhdGVFeGlzdHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVDdW11bGF0aXZlXG4gICAgICAgICAgICAgICAgICAgID8gZmFsbGJhY2tEYXRlc1tmYWxsYmFja0RhdGVzLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgICAgIDogZmFsbGJhY2tEYXRlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVDdW11bGF0aXZlID8gdGhpcy5wZXJpb2RFbmQgOiB0aGlzLnBlcmlvZEJlZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3VtdWxhdGl2ZUhvdXJzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZUN1bXVsYXRpdmUgPyBwYXJzZUZsb2F0KHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZykgOiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHVyYXRpb25JbkhvdXJzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVSZWZyZXNoTWFuYWdlclBlcmlvZCgpIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5jdW11bGF0aXZlID0gdGhpcy50b2dnbGVDdW11bGF0aXZlO1xuXG4gICAgICAgIC8vIEFsaWduIGRhdGVzIHRvIDUtbWludXRlIGJvdW5kYXJpZXMgKGZsb29yKSBmb3IgY29uc2lzdGVuY3kgd2l0aCByYWFpbi1ncm91bmRcbiAgICAgICAgY29uc3QgYWxpZ25UbzVtaW5GbG9vciA9IChkYXRlOiBEYXRlKTogRGF0ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgICAgICAgICBjb25zdCBhbGlnbmVkTWludXRlcyA9IE1hdGguZmxvb3IobWludXRlcyAvIDUpICogNTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgICAgICAgIGRhdGUuZ2V0RGF0ZSgpLFxuICAgICAgICAgICAgICAgIGRhdGUuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgICBhbGlnbmVkTWludXRlcyxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5wZXJpb2QgPSB7XG4gICAgICAgICAgICBiZWdpbjogYWxpZ25UbzVtaW5GbG9vcih0aGlzLnBlcmlvZEJlZ2luKSxcbiAgICAgICAgICAgIGVuZDogYWxpZ25UbzVtaW5GbG9vcih0aGlzLnBlcmlvZEVuZCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBmZXRjaEFuZFVwZGF0ZU1hcCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5mZXRjaChcbiAgICAgICAgICAgIHRoaXMuZGF0ZVNob3duLFxuICAgICAgICAgICAgdGhpcy50b2dnbGVHYXVnZU1lYXN1cmVzLFxuICAgICAgICAgICAgdGhpcy5nZXRDdW11bGF0aXZlSG91cnMoKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmN1cnJlbnRUaW1lZnJhbWVUYXJnZXQgPSB0aGlzLnJlZnJlc2hNYW5hZ2VyLmdldFRpbWVsaW5lU2VsZWN0ZWRGcmFtZVNldCgpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGFwcGx5UmVmcmVzaE1hbmFnZXJTZXR0aW5ncygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlZnJlc2hNYW5hZ2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5wcm92aWRlciA9IHRoaXMuc2VsZWN0ZWRQcm92aWRlcjtcbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci50aW1lU3RlcEluTWludXRlcyA9IHRoaXMuc2VsZWN0ZWRUaW1lU3RlcDtcbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci50aW1lU3RlcE1vZGUgPSB0aGlzLnRpbWVTdGVwTW9kZTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0aGlzLnRvZ2dsZUFkbWluKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFuQWxsKCkge1xuICAgICAgICB0aGlzLmJvcmRlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5pc0FkbWluID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGltZWZyYW1lQ29udGFpbmVycyA9IG5ldyBUaW1lZnJhbWVDb250YWluZXJzKFtdKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGltZWZyYW1lVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy50aW1lZnJhbWVEYXRlcyA9IFtdO1xuICAgICAgICB0aGlzLmNvdW50UG9pbnRzID0gW107XG4gICAgICAgIHRoaXMuY291bnRzUGVyaW9kID0ge3Byb2dyZXNzOiAwLCBxdWV1ZVJ1bm5pbmc6IDAsIHBlcmNlbnRJbWFnZXM6IFtdfTtcbiAgICAgICAgdGhpcy5nYXVnZVNlbGVjdGVkUG9pbnRzID0gW107XG5cbiAgICAgICAgdGhpcy50b2dnbGVIaXN0b3J5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9nZ2xlTWFwID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50b2dnbGVDb21wYXJlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9nZ2xlR2F1Z2VNZWFzdXJlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvZ2dsZVJlbW92ZUNvbXBhcmVEdXBsaWNhdGUgPSB0cnVlO1xuICAgICAgICB0aGlzLnRvZ2dsZUN1bXVsYXRpdmUgPSB0aGlzLnNob3dDdW11bGF0aXZlVG9nZ2xlXG4gICAgICAgICAgICA/IHRoaXMuc3RvcmFnZS5nZXQoJ3JhYWluLXRvZ2dsZUN1bXVsYXRpdmUnKVxuICAgICAgICAgICAgOiBmYWxzZTtcblxuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luID0gbmV3IERhdGUodGhpcy5zdG9yYWdlLmdldCgncmFhaW4tcGVyaW9kQmVnaW4nKSk7XG4gICAgICAgIHRoaXMucGVyaW9kRW5kID0gbmV3IERhdGUodGhpcy5zdG9yYWdlLmdldCgncmFhaW4tcGVyaW9kRW5kJykpO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kRW5kKTtcbiAgICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHRoaXMucGVyaW9kRW5kLmdldFRpbWUoKSAtIHRoaXMucGVyaW9kQmVnaW4uZ2V0VGltZSgpO1xuICAgICAgICB0aGlzLnBlcmlvZER1cmF0aW9uQXNTdHJpbmcgPSAnJyArIGR1cmF0aW9uTXMgLyBSYWFpbkRldGFpbHNDb21wb25lbnQuSE9VUl9NUztcblxuICAgICAgICB0aGlzLmRhdGVTaG93biA9IHRoaXMuZ2V0RGF0ZUJhc2VkT25DdW11bGF0aXZlTW9kZSgpO1xuICAgICAgICB0aGlzLnJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Z1bGxFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dRdWFsaXR5TW9kYWwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5xdWFsaXR5SW5kaWNhdG9ycyA9IFtdO1xuICAgICAgICB0aGlzLnF1YWxpdHlJbmRpY2F0b3JzTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY29tcGFyZU1hbmFnZXI/LmNsZWFuQWxsKCk7XG4gICAgICAgIHRoaXMucmVmcmVzaE1hbmFnZXI/LmNsZWFuQWxsKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0KCkge1xuICAgICAgICB0aGlzLmNsZWFuQWxsKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGVkVmFsdWVzKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdFJhaW4oKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0UmFpbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhaW5Ob2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzQWRtaW4gPSB0aGlzLnByb2ZpbGVTZXJ2aWNlLmlzQWRtaW4oKTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJhaW5Ob2RlID0gdGhpcy5yYWluTm9kZTtcbiAgICAgICAgdGhpcy5jb21wYXJlTWFuYWdlci5yYWluTm9kZSA9IHRoaXMucmFpbk5vZGU7XG5cbiAgICAgICAgLy8gTG9hZCBwcm92aWRlcnMgYW5kIHNldCBvbiByZWZyZXNoTWFuYWdlclxuICAgICAgICBhd2FpdCB0aGlzLmxvYWRQcm92aWRlcnMoKTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnNldE1ldGhvZHMoXG4gICAgICAgICAgICB0aGlzLm9uUmVmcmVzaEluUHJvZ3Jlc3MuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHRoaXMub25SZWZyZXNoRG9uZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdGhpcy5vbkZldGNoRG9uZS5iaW5kKHRoaXMpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgY2VudGVyID0gdGhpcy5yYWluTm9kZS5nZXRDZW50ZXIoKTtcbiAgICAgICAgdGhpcy5jb29yZGluYXRlcyA9IG5ldyBNYXBMYXRMbmcoY2VudGVyLmxhdCwgY2VudGVyLmxuZyk7XG4gICAgICAgIHRoaXMudGVhbU5vZGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFRlYW0oXG4gICAgICAgICAgICB0aGlzLnJhaW5Ob2RlLmdldExpbmsoVGVhbU5vZGUuVFlQRSkuZ2V0SWQoKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIExvYWQgYWxsIGdhdWdlcyBsaW5rZWQgdG8gdGhlIHJhaW5Ob2RlIG9uIG1hcFxuICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnNldEdhdWdlc0luTWFwKCk7XG5cbiAgICAgICAgaWYgKHRoaXMucGVyaW9kQmVnaW4gJiYgdGhpcy5wZXJpb2RFbmQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUmVmcmVzaE1hbmFnZXJQZXJpb2QoKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIucmVmcmVzaChmYWxzZSwgdGhpcy50b2dnbGVBZG1pbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIG9uUmVmcmVzaEluUHJvZ3Jlc3MoXG4gICAgICAgIGNvdW50UGVyaW9kczoge1xuICAgICAgICAgICAgcGVyY2VudEltYWdlcz86IFhZVHlwZVtdO1xuICAgICAgICAgICAgcXVldWVSdW5uaW5nPzogbnVtYmVyO1xuICAgICAgICAgICAgcHJvZ3Jlc3M/OiBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHRpbWVmcmFtZURhdGVzOiBEYXRlW11cbiAgICApIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgIHRoaXMuY291bnRzUGVyaW9kID0gY291bnRQZXJpb2RzO1xuICAgICAgICB0aGlzLnRpbWVmcmFtZURhdGVzID0gdGltZWZyYW1lRGF0ZXM7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGVkVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgb25SZWZyZXNoRG9uZSh0aW1lZnJhbWVEYXRlczogRGF0ZVtdKSB7XG4gICAgICAgIHRoaXMudGltZWZyYW1lRGF0ZXMgPSB0aW1lZnJhbWVEYXRlcztcbiAgICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlZFZhbHVlcygpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICBpZiAodGhpcy50b2dnbGVNYXAgJiYgdGltZWZyYW1lRGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5kYXRlU2hvd24gPSB0aGlzLmdldERhdGVCYXNlZE9uQ3VtdWxhdGl2ZU1vZGUodGltZWZyYW1lRGF0ZXMpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZVNob3duKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEFuZFVwZGF0ZU1hcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBvbkZldGNoRG9uZSh0aW1lZnJhbWVDb250YWluZXJzPzogVGltZWZyYW1lQ29udGFpbmVycykge1xuICAgICAgICBpZiAodGltZWZyYW1lQ29udGFpbmVycykge1xuICAgICAgICAgICAgdGhpcy50aW1lZnJhbWVDb250YWluZXJzID0gdGltZWZyYW1lQ29udGFpbmVycztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNoYW5nZShfY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICB9XG59XG4iLCI8IS0tIE1haW4gY29udGVudCBjb250YWluZXIgLS0+XG48ZGl2ICpuZ0lmPVwicmFpbk5vZGVcIiBjbGFzcz1cInJhYWluLWRldGFpbHMtY29udGFpbmVyXCI+XG5cbiAgICA8IS0tIFBlcmlvZCBzZWxlY3Rpb24gc2VjdGlvbiAtLT5cbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJwZXJpb2QtY2FyZFwiPlxuICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJpb2QtY29udHJvbHNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyaW9kLXJvd1wiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVIaXN0b3J5ID0gIXRvZ2dsZUhpc3Rvcnk7IG9uRW5hYmxlQ291bnRIaXN0b3J5VGFiKHJhaW5Ob2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNhbGVuZGFyLWNsZWFyLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cInRvZ2dsZUhpc3RvcnkgPyAnY2hldnJvbi1kb3duJyA6ICdjaGV2cm9uLWZvcndhcmQnXCIgc2xvdD1cImVuZFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyaW9kLXN0YXJ0IGlvbi1oaWRlLW1kLWRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cIm9uUGVyaW9kQmVnaW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRvZ2dsZUN1bXVsYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwZXJpb2RCZWdpbkFzU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGV0aW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZC1kdXJhdGlvbiBpb24taGlkZS1tZC1kb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdCAoaW9uRGlzbWlzcyk9XCJvblBlcmlvZER1cmF0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwZXJpb2REdXJhdGlvbkFzU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0b2dnbGVDdW11bGF0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHVyYXRpb24tc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGVyaW9kRHVyYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjAuMjVcIj4xNSBtaW51dGVzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIwLjVcIj4zMCBtaW51dGVzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIxXCI+MSBob3VyPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIyXCI+MiBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiM1wiPjMgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjRcIj40IGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCI1XCI+NSBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiNlwiPjYgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjhcIj44IGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIxMFwiPjEwIGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIxMlwiPjEyIGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gKm5nSWY9XCJpc0FkbWluXCIgdmFsdWU9XCIyNFwiPjI0IGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZC1zdGFydCBpb24taGlkZS1tZC1kb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGNoYW5nZSk9XCJvblBlcmlvZEVuZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidG9nZ2xlQ3VtdWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInBlcmlvZEVuZEFzU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGV0aW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dDdW11bGF0aXZlVG9nZ2xlXCIgKGNsaWNrKT1cIm9uQ3VtdWxhdGl2ZVRvZ2dsZUNsaWNrKCRldmVudClcIiBjbGFzcz1cInRvZ2dsZS1jdW11bGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIFtjbGFzcy50ZXh0LXByaW1hcnldPVwidG9nZ2xlQ3VtdWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRvZ2dsZUN1bXVsYXRpdmUgPyAnQ3VtdWxhdGl2ZScgOiAnR3JhbnVsYXInIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdG9nZ2xlICNjdW11bGF0aXZlVG9nZ2xlIFtjaGVja2VkXT1cInRvZ2dsZUN1bXVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEhpZGRlbiBsYWJlbCBmb3IgY2hhbmdlIGRldGVjdGlvbiAodW5jb21tZW50IHRvIGRlYnVnKVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaWRkZW4tbGFiZWxcIj57eyBvbkNoYW5nZURldGVjdGlvblRlc3QocmFpbk5vZGUpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgLS0+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBIaXN0b3JpY2FsIG1hcCBzZWN0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRvZ2dsZUhpc3RvcnlcIiBjbGFzcz1cInBlcmlvZC1jb250cm9sc1wiPlxuICAgICAgICAgICAgICAgIDxyYWFpbi1kYXRlLWR5bmFtaWMgKGNoYW5nZWREYXRlKT1cIm9uRGF0ZUNoYW5nZUluQ291bnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCIzMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZldGNoRGF0YV09XCJmZXRjaERhdGFXcmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb2ludHNdPVwiY291bnRQb2ludHNcIj5cbiAgICAgICAgICAgICAgICA8L3JhYWluLWRhdGUtZHluYW1pYz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cblxuICAgIDwhLS0gTWFwIHBlcmZvcm1hbmNlIC0tPlxuICAgIDxpb24tZ3JpZCBjbGFzcz1cIm1hcC1wZXJmb3JtYW5jZVwiPlxuICAgICAgICA8aW9uLXJvdyBpZD1cInByb2dyZXNzQW5kUmVmcmVzaFwiPlxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJwcm92aWRlci1zZWxlY3Rpb25cIiBzaXplPVwiMTJcIiBzaXplLW1kPVwiNlwiPlxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJvcGVuUXVhbGl0eU1vZGFsKClcIiBjbGFzcz1cInF1YWxpdHktaW5mby1idXR0b25cIiBmaWxsPVwiY2xlYXJcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwVmVyc2lvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImhlbHAtY2lyY2xlLW91dGxpbmVcIiBzbG90PVwiZW5kXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImF2YWlsYWJsZVByb3ZpZGVycy5sZW5ndGggPiAwIHx8IGF2YWlsYWJsZVRpbWVTdGVwcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJzZWxlY3Rpb24tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0IChpb25DaGFuZ2UpPVwib25Qcm92aWRlckNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZFByb3ZpZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiUHJvdmlkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBQcm92aWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uICpuZ0Zvcj1cImxldCBwcm92aWRlciBvZiBhdmFpbGFibGVQcm92aWRlcnNcIiBbdmFsdWVdPVwicHJvdmlkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcm92aWRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tc2VsZWN0PlxuXG4gICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0IChpb25DaGFuZ2UpPVwib25UaW1lU3RlcENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JjZVRpbWVTdGVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInRpbWVTdGVwTW9kZSArICc6JyArIHNlbGVjdGVkVGltZVN0ZXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJUaW1lIFN0ZXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBUaW1lIFN0ZXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIGF2YWlsYWJsZVRpbWVTdGVwT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHQubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXNlbGVjdD5cblxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXB1dGF0aW9uLWNvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBwcmVzZW50Q29tcHV0YXRpb25Db3VudCB9fS97eyBleHBlY3RlZENvbXB1dGF0aW9uQ291bnQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0cmlnZ2VyQ3VtdWxhdGl2ZUNyZWF0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93Q3JlYXRlTWlzc2luZ0ltYWdlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3JlYXRpbmdDdW11bGF0aXZlXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjcmVhdGVNaXNzaW5nSW1hZ2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiAqbmdJZj1cIiFjcmVhdGluZ0N1bXVsYXRpdmVcIiBuYW1lPVwicmVmcmVzaC1vdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zcGlubmVyICpuZ0lmPVwiY3JlYXRpbmdDdW11bGF0aXZlXCIgbmFtZT1cImNyZXNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdD1cImljb24tb25seVwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvdW50c1BlcmlvZD8ucHJvZ3Jlc3NcIiBjbGFzcz1cInByb2dyZXNzLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIFByb2dyZXNzOiB7eyBjb3VudHNQZXJpb2QucHJvZ3Jlc3MgfX0uLi5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIHNpemU9XCIxMlwiIHNpemUtbWQ9XCI2XCI+XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInJlZnJlc2hNYXAoKVwiIFtkaXNhYmxlZF09XCJyZWZyZXNoSW5Qcm9ncmVzc1wiIGNsYXNzPVwicmVmcmVzaC1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgUmVmcmVzaCBNYXBcbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIDwvaW9uLXJvdz5cblxuICAgICAgICA8IS0tIHN0YXR1cyB1cGRhdGUgcm93IC0tPlxuICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgIDwhLS0gUHJvZ3Jlc3MgY29sIC0tPlxuICAgICAgICAgICAgPGlvbi1wcm9ncmVzcy1iYXJcbiAgICAgICAgICAgICAgICAgICAgW2J1ZmZlcl09XCIoY291bnRzUGVyaW9kLnByb2dyZXNzIC8gKCh0aW1lZnJhbWVEYXRlcz8ubGVuZ3RoIHx8IDEwKSArMykpKzAuMDFcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJyZWZyZXNoSW5Qcm9ncmVzcyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvdW50c1BlcmlvZC5wcm9ncmVzcyAvICgodGltZWZyYW1lRGF0ZXM/Lmxlbmd0aCB8fCAxMCkgKzMpXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICA8L2lvbi1wcm9ncmVzcy1iYXI+XG5cbiAgICAgICAgICAgIDwhLS0gRXJyb3IgY29sIC0tPlxuICAgICAgICAgICAgPGlvbi1jb2wgKGNsaWNrKT1cInNob3dGdWxsRXJyb3IgPSAhc2hvd0Z1bGxFcnJvclwiICpuZ0lmPVwicmVmcmVzaE1hbmFnZXIubGFzdEVycm9yXCIgY2xhc3M9XCJlcnJvci1yb3dcIlxuICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjEyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwiZXJyb3ItaWNvblwiIG5hbWU9XCJ3YXJuaW5nLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MuZXhwYW5kZWRdPVwic2hvd0Z1bGxFcnJvclwiIGNsYXNzPVwiZXJyb3ItdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2hvd0Z1bGxFcnJvciA/IHJlZnJlc2hNYW5hZ2VyLmxhc3RFcnJvciA6IHRydW5jYXRlZEVycm9yIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cInNob3dGdWxsRXJyb3IgPyAnY2hldnJvbi11cCcgOiAnY2hldnJvbi1kb3duJ1wiIGNsYXNzPVwiZXJyb3ItY2FyZXRcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG4gICAgPC9pb24tZ3JpZD5cblxuICAgIDwhLS0gTWFwIHNlY3Rpb24gLS0+XG4gICAgPGlvbi1jYXJkIGNsYXNzPVwibWFwLWNhcmRcIj5cbiAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgY2xhc3M9XCJtYXAtY29udGVudFwiPlxuICAgICAgICAgICAgPGlvbi1ncmlkPlxuICAgICAgICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwidG9nZ2xlTWFwICYmIChwZXJjZW50T2ZJbWFnZXMgfHwgcGVyY2VudE9mQ29tcHV0YXRpb25zKVwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIE1hcCBjb21wb25lbnQgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwibWFwLWNvbHVtblwiIHNpemUtbGc9XCI3XCIgc2l6ZS1tZD1cIjEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyYWFpbi1tYXAgI3JhYWluTWFwUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlZERhdGUpPVwib25EYXRlQ2hhbmdlSW5NYXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlZFN1bSk9XCJvblN1bUNoYW5nZUluTWFwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTWFya2VyKT1cIm9uR2F1Z2VTZWxlY3RJbk1hcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb29yZGluYXRlc109XCJjb29yZGluYXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzXT1cImN1bXVsYXRpdmVEdXJhdGlvbkluTWludXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHREYXRlXT1cImRhdGVTaG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFya2Vyc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYXVnZXM6IGNvbXBhcmVNYW5hZ2VyLmdhdWdlc0luTWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhdWdlc0luQ29tcGFyZTogY29tcGFyZU1hbmFnZXIuZ2F1Z2VzSW5Db21wYXJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkR2F1Z2VzOiBjb21wYXJlTWFuYWdlci5zZWxlY3RlZEdhdWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHM6IGNvbXBhcmVNYW5hZ2VyLnNlbGVjdGVkUGl4ZWxzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsc1NvbHV0aW9uOiBjb21wYXJlTWFuYWdlci5waXhlbHNTb2x1dGlvbnM/Lmxlbmd0aCA/IGNvbXBhcmVNYW5hZ2VyLnBpeGVsc1NvbHV0aW9uc1swXSA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkczogY29tcGFyZU1hbmFnZXIuc3BlZWRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY2FsZUxhYmVsXT1cInRvZ2dsZUN1bXVsYXRpdmUgPyAnbW0nIDogc2NhbGVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd05hdmlnYXRpb25dPVwiIXRvZ2dsZUN1bXVsYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dEYXRlUmFuZ2VdPVwic2hvd0RhdGVSYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1Zpc2libGVQaXhlbE1hcmtlcnNdPVwic2hvd1BpeGVsTWFya2Vyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3VtRm5dPVwicmVmcmVzaE1hbmFnZXIuc3VtRm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1bVZhbHVlc109XCJyZWZyZXNoTWFuYWdlci5zdW1WYWx1ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbWVmcmFtZUNvbnRhaW5lcnNdPVwidGltZWZyYW1lQ29udGFpbmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGltZWZyYW1lRGF0ZXNdPVwidGltZWZyYW1lRGF0ZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JhYWluLW1hcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRlY2huaWNhbCBkZXRhaWxzIChjb2xsYXBzaWJsZSBmb3IgY2xlYW5lciBVSSkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9XCJ0ZWNobmljYWwtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT5JbWFnZSBEZXRhaWxzPC9zdW1tYXJ5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+Q29tcHV0ZWQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwRG9uZURhdGUgfCBkYXRlOid5eXl5LU1NLWRkIEhIOm1tJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlZlcnNpb246PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwVmVyc2lvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkxhdW5jaGVkIGJ5Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcExhdW5jaGVkQnkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5UaW1lIHNwZW50Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcFRpbWVTcGVudEluTXMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5EYXRlOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcERhdGU/LnRvSVNPU3RyaW5nKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB7eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBEYXRlIHwgZGF0ZToneXl5eS1NTS1kZCBISDptbScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5XYXRlciBpbiB0aGUgbWFwOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHN1bURldGFpbHMgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10b2dnbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25Ub2dnbGVQaXhlbE1hcmtlcnMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dQaXhlbE1hcmtlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogOHB4OyB0cmFuc2Zvcm06IHNjYWxlKDAuNyk7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+U291cmNlIERCWiBtaW46PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwT3JpZ2luYWxNaW4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5Tb3VyY2UgREJaIG1heDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBPcmlnaW5hbE1heCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGF0YSBwYW5lbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCIhIWNvbXBhcmVNYW5hZ2VyLmNvbXBhcmVWZXJzaW9uICYmICghdG9nZ2xlQ3VtdWxhdGl2ZSB8fCBzaG93Q3VtdWxhdGl2ZUNvbXBhcmUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWNvbHVtblwiIHNpemUtbGc9XCI1XCIgc2l6ZS1tZD1cIjEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1wYW5lbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29tcGFyZSBzdGFjayBjb21wb25lbnQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBhcmUtc3RhY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJhYWluLWNvbXBhcmUtc3RhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRQb2ludCk9XCJvbkdhdWdlU2VsZWN0SW5Db21wYXJlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wYXJlTWFuYWdlcl09XCJjb21wYXJlTWFuYWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1bXVsYXRpdmVdPVwidG9nZ2xlQ3VtdWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JhYWluLWNvbXBhcmUtc3RhY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRlY2huaWNhbCBkZXRhaWxzIChjb2xsYXBzaWJsZSBmb3IgY2xlYW5lciBVSSkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9XCJ0ZWNobmljYWwtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT5Db21wYXJlIERldGFpbHM8L3N1bW1hcnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyd3YXJuaW5nJzogcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwRG9uZURhdGU/LmdldFRpbWUoKSA+IGNvbXBhcmVNYW5hZ2VyLmN1cnJlbnRRdWFsaXR5RG9uZURhdGU/LmdldFRpbWUoKSArIDYwMDAwfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+Q29tcHV0ZWQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuY3VycmVudFF1YWxpdHlEb25lRGF0ZSB8IGRhdGU6J3l5eXktTU0tZGQgSEg6bW0nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+VmVyc2lvbjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBjb21wYXJlTWFuYWdlci5jb21wYXJlVmVyc2lvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkxhdW5jaGVkIGJ5Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmN1cnJlbnRRdWFsaXR5TGF1bmNoZWRCeSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlRpbWUgc3BlbnQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuY3VycmVudFF1YWxpdHlUaW1lU3BlbnRJbk1zIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+R2F1Z2VzOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmdhdWdlc0luQ29tcGFyZS5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5Qb2ludHM6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuZ2xvYmFsQ29tcGFyZVBvaW50cy5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZXRhaWxzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQm90dG9tIHByb2dyZXNzIGJhciAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1wcm9ncmVzcy1iYXIgKm5nSWY9XCJyZWZyZXNoSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWZmZXJdPVwiKGNvdW50c1BlcmlvZC5wcm9ncmVzcyAvICgodGltZWZyYW1lRGF0ZXM/Lmxlbmd0aCB8fCAxMCkgKzMpKSswLjAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvdW50c1BlcmlvZC5wcm9ncmVzcyAvICgodGltZWZyYW1lRGF0ZXM/Lmxlbmd0aCB8fCAxMCkgKzMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXByb2dyZXNzLWJhcj5cbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cblxuICAgIDwhLS0gR2F1Z2UgdmFsdWVzIHNlY3Rpb24gLS0+XG4gICAgPGlvbi1jYXJkICpuZ0lmPVwiZ2F1Z2VTZWxlY3RlZFBvaW50cy5sZW5ndGggJiYgZ2F1Z2VTZWxlY3RlZFBvaW50c1swXS52YWx1ZXMubGVuZ3RoXCIgY2xhc3M9XCJnYXVnZS1jYXJkXCI+XG4gICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhbmFseXRpY3Mtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgU2VsZWN0ZWQgR2F1Z2UgRGF0YVxuICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPHJhYWluLWRhdGUtZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZvY3VzRGF0ZV09XCJwZXJpb2RCZWdpblwiXG4gICAgICAgICAgICAgICAgICAgIFtmb2N1c1JhbmdlXT1cIkRhdGVSYW5nZS5EQVlcIlxuICAgICAgICAgICAgICAgICAgICBbcG9pbnRzXT1cImdhdWdlU2VsZWN0ZWRQb2ludHNcIlxuICAgICAgICAgICAgICAgICAgICBbd2l0aG91dEFsbF09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8L3JhYWluLWRhdGUtZm9jdXM+XG4gICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuXG4gICAgPCEtLSBRdWFsaXR5IFBlcmZvcm1hbmNlIE1vZGFsIC0tPlxuICAgIDxkaXYgKGNsaWNrKT1cImNsb3NlUXVhbGl0eU1vZGFsKClcIiAqbmdJZj1cInNob3dRdWFsaXR5TW9kYWxcIiBjbGFzcz1cInF1YWxpdHktbW9kYWwtb3ZlcmxheVwiPlxuICAgICAgICA8ZGl2IChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBjbGFzcz1cInF1YWxpdHktbW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YWxpdHktbW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGgyPk1vZGVsIFF1YWxpdHkgUGVyZm9ybWFuY2U8L2gyPlxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjbG9zZVF1YWxpdHlNb2RhbCgpXCIgZmlsbD1cImNsZWFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2Utb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVhbGl0eS1tb2RhbC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1YWxpdHlJbmRpY2F0b3JzTG9hZGluZ1wiIGNsYXNzPVwicXVhbGl0eS1sb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Mb2FkaW5nIGluZGljYXRvcnMuLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWFsaXR5SW5kaWNhdG9yc0xvYWRpbmcgJiYgcXVhbGl0eUluZGljYXRvcnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJxdWFsaXR5LWVtcHR5XCI+XG4gICAgICAgICAgICAgICAgICAgIE5vIHF1YWxpdHkgaW5kaWNhdG9ycyBhdmFpbGFibGUgZm9yIHRoaXMgeWVhci5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gUGVyZm9ybWFuY2UgQ2hhcnQgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWFsaXR5SW5kaWNhdG9yc0xvYWRpbmcgJiYgbW9kZWxQZXJmb3JtYW5jZURhdGEubGVuZ3RoID4gMFwiIGNsYXNzPVwicGVyZm9ybWFuY2UtY2hhcnQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjYW52YXMgI3BlcmZvcm1hbmNlQ2FudmFzPjwvY2FudmFzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBEZXRhaWxzIEFjY29yZGlvbiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXF1YWxpdHlJbmRpY2F0b3JzTG9hZGluZyAmJiBxdWFsaXR5SW5kaWNhdG9ycy5sZW5ndGggPiAwXCIgY2xhc3M9XCJxdWFsaXR5LWRldGFpbHMtc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzaG93UXVhbGl0eURldGFpbHMgPSAhc2hvd1F1YWxpdHlEZXRhaWxzXCIgY2xhc3M9XCJxdWFsaXR5LWRldGFpbHMtdG9nZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5EZXRhaWxzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cInNob3dRdWFsaXR5RGV0YWlscyA/ICdjaGV2cm9uLXVwJyA6ICdjaGV2cm9uLWRvd24nXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSAqbmdJZj1cInNob3dRdWFsaXR5RGV0YWlsc1wiIGNsYXNzPVwicXVhbGl0eS10YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Nb2RlbDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNvbXBhcmU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5HYXVnZXM8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5QZXJpb2Q8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BdmcgUXVhbGl0eTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlVwZGF0ZWQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGluZGljYXRvciBvZiBxdWFsaXR5SW5kaWNhdG9yc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpbmRpY2F0b3IuY29tcHV0aW5nVmVyc2lvbiB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGluZGljYXRvci5xdWFsaXR5VmVyc2lvbiB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGluZGljYXRvci5wcm92aWRlciB9fTxicj57eyBpbmRpY2F0b3IudGltZVN0ZXBJbk1pbnV0ZXMgfX0gbWluPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZm9ybWF0RGF0ZShpbmRpY2F0b3Iuc3RhcnREYXRlKSB9fTxicj57eyBmb3JtYXREYXRlKGluZGljYXRvci5lbmREYXRlKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGluZGljYXRvci5hdmVyYWdlUXVhbGl0eSB8IG51bWJlcjonMS4yLTInIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZm9ybWF0RGF0ZShpbmRpY2F0b3IubGFzdFVwZGF0ZWRBdCkgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEN1bXVsYXRpdmUgU2VsZWN0b3IgTW9kYWwgLS0+XG4gICAgPGN1bXVsYXRpdmUtc2VsZWN0b3IgKGNhbmNlbGxlZCk9XCJvbkN1bXVsYXRpdmVTZWxlY3RvckNhbmNlbGxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAocGVyaW9kU2VsZWN0ZWQpPVwib25DdW11bGF0aXZlUGVyaW9kU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93Q3VtdWxhdGl2ZVNlbGVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFBlcmlvZEJlZ2luXT1cInBlcmlvZEJlZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFBlcmlvZEVuZF09XCJwZXJpb2RFbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0FkbWluXT1cInRvZ2dsZUFkbWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvdmlkZXJdPVwic2VsZWN0ZWRQcm92aWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3JhaW5JZF09XCJyYWluTm9kZT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFt0aW1lU3RlcEluTWludXRlc109XCJzZWxlY3RlZFRpbWVTdGVwXCI+XG4gICAgPC9jdW11bGF0aXZlLXNlbGVjdG9yPlxuXG48L2Rpdj5cbiJdfQ==
|
|
752
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvcmFhaW4tZGV0YWlscy9yYWFpbi1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jb3JlL3NoYXJlZC9yYWFpbi1kZXRhaWxzL3JhYWluLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUlMLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQ0gscUJBQXFCLEVBSXJCLFFBQVEsR0FDWCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0gsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBRVQsNEJBQTRCLEVBQzVCLG1CQUFtQixHQUN0QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQTJCLG9CQUFvQixFQUFpQixNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7QUFNeEYsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBUXZCLE1BQU0sT0FBTyxxQkFBcUI7SUF1RzlCLFlBQ2MsT0FBZ0IsRUFDVCxHQUFzQjtRQUQ3QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ1QsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF4RnBDLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFbEIsNEJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBRS9CLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUU3QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQix5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFJNUIsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBQ2xDLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQUNsQyw2QkFBd0IsR0FBcUMsRUFBRSxDQUFDO1FBR2hFLGlCQUFZLEdBQWlCLElBQUksQ0FBQztRQXdDbEMs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U0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SW9uVG9nZ2xlfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge1Byb2ZpbGVTZXJ2aWNlfSBmcm9tICcuLi9wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBDYXJ0ZXNpYW5NZWFzdXJlVmFsdWUsXG4gICAgUXVhbGl0eUluZGljYXRvcixcbiAgICBSYWFpbkFwaVJhaW5zQ3VtdWxhdGl2ZXNMaXN0UmVzcG9uc2UsXG4gICAgUmFpbk5vZGUsXG4gICAgVGVhbU5vZGUsXG59IGZyb20gJ3JhYWluLW1vZGVsJztcbmltcG9ydCB7XG4gICAgRGF0ZVJhbmdlLFxuICAgIEVsZW1lbnRzRmFjdG9yeSxcbiAgICBNYXBMYXRMbmcsXG4gICAgTW9kZWxQZXJmb3JtYW5jZUVsZW1lbnQsXG4gICAgTW9kZWxQZXJmb3JtYW5jZUVsZW1lbnRJbnB1dCxcbiAgICBUaW1lZnJhbWVDb250YWluZXJzLFxufSBmcm9tICdyYWFpbi11aSc7XG5pbXBvcnQge0NvbXBhcmVNYW5hZ2VyLCBGcmFtZVNldCwgbWFwRGF0ZVJhbmdlVG9TdHJpbmcsIFJlZnJlc2hNYW5hZ2VyfSBmcm9tICcuLi90b29scyc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7UmFkYXJTZXJ2aWNlfSBmcm9tICcuLi9yYWRhci5zZXJ2aWNlJztcbmltcG9ydCB7U3RvcmFnZX0gZnJvbSAnLi4vc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7Q3VtdWxhdGl2ZVNlbGVjdGlvbn0gZnJvbSAnLi4vY3VtdWxhdGl2ZS1zZWxlY3Rvci9jdW11bGF0aXZlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5cbmxldCBURVNUX0RFVEVDVElPTiA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncmFhaW4tZGV0YWlscycsXG4gICAgdGVtcGxhdGVVcmw6ICdyYWFpbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsncmFhaW4tZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbkRldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSE9VUl9NUyA9IDYwICogNjAwMDA7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREFZX01TID0gMjQgKiA2MCAqIDYwICogMTAwMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRvZ2dsZUFkbWluOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJhaW5Ob2RlOiBSYWluTm9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb21wYXJlTWFuYWdlcjogQ29tcGFyZU1hbmFnZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVmcmVzaE1hbmFnZXI6IFJlZnJlc2hNYW5hZ2VyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByYWRhclNlcnZpY2U6IFJhZGFyU2VydmljZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzY2FsZUxhYmVsID0gJ21tJztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Q3JlYXRlTWlzc2luZ0ltYWdlcyA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0N1bXVsYXRpdmVDb21wYXJlID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93RGF0ZVJhbmdlID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Q3VtdWxhdGl2ZVRvZ2dsZSA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9yY2VUaW1lU3RlcDogbnVtYmVyO1xuXG4gICAgcHVibGljIGF2YWlsYWJsZVByb3ZpZGVyczogc3RyaW5nW10gPSBbXTtcbiAgICBwdWJsaWMgYXZhaWxhYmxlVGltZVN0ZXBzOiBudW1iZXJbXSA9IFtdO1xuICAgIHB1YmxpYyBhdmFpbGFibGVUaW1lU3RlcE9wdGlvbnM6IHtsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nfVtdID0gW107XG4gICAgcHVibGljIHNlbGVjdGVkUHJvdmlkZXI6IHN0cmluZztcbiAgICBwdWJsaWMgc2VsZWN0ZWRUaW1lU3RlcDogbnVtYmVyO1xuICAgIHB1YmxpYyB0aW1lU3RlcE1vZGU6ICdlcScgfCAnbHRlJyA9ICdlcSc7XG5cbiAgICBwdWJsaWMgcGVyaW9kQmVnaW46IERhdGU7XG4gICAgcHVibGljIHBlcmlvZEVuZDogRGF0ZTtcblxuICAgIC8vIHB1YmxpYyBVSSB2YXJpYWJsZXNcbiAgICBwdWJsaWMgdGVhbU5vZGU6IFRlYW1Ob2RlO1xuICAgIHB1YmxpYyBwZXJpb2RCZWdpbkFzU3RyaW5nOiBzdHJpbmc7XG4gICAgcHVibGljIHBlcmlvZEVuZEFzU3RyaW5nOiBzdHJpbmc7XG4gICAgcHVibGljIHBlcmlvZER1cmF0aW9uQXNTdHJpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgZGF0ZVNob3duOiBEYXRlO1xuICAgIHB1YmxpYyBjb29yZGluYXRlczogTWFwTGF0TG5nO1xuICAgIHB1YmxpYyBib3JkZXJzOiBNYXBMYXRMbmdbXTtcbiAgICBwdWJsaWMgdGltZWZyYW1lQ29udGFpbmVyczogVGltZWZyYW1lQ29udGFpbmVycztcbiAgICBwdWJsaWMgY3VycmVudFRpbWVmcmFtZVRhcmdldDogRnJhbWVTZXQ7XG4gICAgcHVibGljIHRpbWVmcmFtZURhdGVzOiBEYXRlW107XG4gICAgcHVibGljIGNvdW50UG9pbnRzOiB7XG4gICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgIHN0eWxlOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlczoge2RhdGU6IERhdGU7IHZhbHVlOiBudW1iZXJ9W107XG4gICAgfVtdO1xuICAgIHB1YmxpYyBjb3VudHNQZXJpb2Q6IHtcbiAgICAgICAgcGVyY2VudEltYWdlcz86IFhZVHlwZVtdO1xuICAgICAgICBxdWV1ZVJ1bm5pbmc/OiBudW1iZXI7XG4gICAgICAgIHByb2dyZXNzPzogbnVtYmVyO1xuICAgIH07XG5cbiAgICBwdWJsaWMgZ2F1Z2VTZWxlY3RlZFBvaW50czoge1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICBzdHlsZTogc3RyaW5nO1xuICAgICAgICB2YWx1ZXM6IHtkYXRlOiBEYXRlOyB2YWx1ZTogbnVtYmVyfVtdO1xuICAgIH1bXTtcbiAgICBwdWJsaWMgdG9nZ2xlSGlzdG9yeTogYm9vbGVhbjtcbiAgICBwdWJsaWMgdG9nZ2xlTWFwOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVDb21wYXJlOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVHYXVnZU1lYXN1cmVzOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVSZW1vdmVDb21wYXJlRHVwbGljYXRlOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVDdW11bGF0aXZlOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWZyZXNoSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgICBwdWJsaWMgc3VtRGV0YWlsczogc3RyaW5nO1xuICAgIHB1YmxpYyBzaG93UGl4ZWxNYXJrZXJzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzQWRtaW46IGJvb2xlYW47XG4gICAgcHVibGljIHNob3dGdWxsRXJyb3I6IGJvb2xlYW47XG4gICAgcHVibGljIHNob3dRdWFsaXR5TW9kYWw6IGJvb2xlYW47XG4gICAgcHVibGljIHF1YWxpdHlJbmRpY2F0b3JzOiBRdWFsaXR5SW5kaWNhdG9yW10gPSBbXTtcbiAgICBwdWJsaWMgcXVhbGl0eUluZGljYXRvcnNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHNob3dDdW11bGF0aXZlU2VsZWN0b3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgY3JlYXRpbmdDdW11bGF0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHNob3dRdWFsaXR5RGV0YWlsczogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBtb2RlbFBlcmZvcm1hbmNlRGF0YTogQXJyYXk8e1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIGRhdGU6IERhdGU7XG4gICAgICAgIEtQRWk6IG51bWJlciB8IG51bGw7XG4gICAgICAgIEtQRTE6IG51bWJlciB8IG51bGw7XG4gICAgfT4gPSBbXTtcbiAgICBwcml2YXRlIHBlcmZvcm1hbmNlQ2hhcnQ6IE1vZGVsUGVyZm9ybWFuY2VFbGVtZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnY3VtdWxhdGl2ZVRvZ2dsZScpIGN1bXVsYXRpdmVUb2dnbGVSZWY6IElvblRvZ2dsZTtcbiAgICBAVmlld0NoaWxkKCdwZXJmb3JtYW5jZUNhbnZhcycpIHBlcmZvcm1hbmNlQ2FudmFzUmVmOiBhbnk7XG5cbiAgICAvLyBDYWNoZWQgY29tcHV0ZWQgdmFsdWVzICh0byBhdm9pZCBtZXRob2QgY2FsbHMgaW4gdGVtcGxhdGVzKVxuICAgIHB1YmxpYyBwZXJjZW50T2ZDb21wdXRhdGlvbnM6IG51bWJlciA9IDA7XG4gICAgcHVibGljIHByZXNlbnRDb21wdXRhdGlvbkNvdW50OiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBleHBlY3RlZENvbXB1dGF0aW9uQ291bnQ6IG51bWJlciA9IDA7XG4gICAgcHVibGljIHBlcmNlbnRPZkltYWdlczogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgdHJ1bmNhdGVkRXJyb3I6IHN0cmluZyA9ICcnO1xuICAgIHB1YmxpYyBjdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXM6IG51bWJlciA9IDEwO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBEYXRlUmFuZ2UgPSBEYXRlUmFuZ2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHN0b3JhZ2U6IFN0b3JhZ2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIHByaXZhdGUgc3RhdGljIFBlcmlvZERpc3BsYXkoZGF0ZTogRGF0ZSB8IHN0cmluZykge1xuICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICBkID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgICAgICAgICBjb25zdCB1c2VyVGltZXpvbmVPZmZzZXQgPSBkLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMDtcbiAgICAgICAgICAgIGQgPSBuZXcgRGF0ZShkLmdldFRpbWUoKSAtIHVzZXJUaW1lem9uZU9mZnNldCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhhbXBsZUZvcm1hdHRlZERhdGUgPSAnMjAxNy0wNi0wMVQwODozMCc7XG4gICAgICAgIHJldHVybiBkLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGV4YW1wbGVGb3JtYXR0ZWREYXRlLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgRGF0ZVVUQyhkYXRlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgaGFzSVNPRm9ybWF0ID0gZGF0ZS5tYXRjaCgvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9VFxcZHsyfTpcXGR7Mn06XFxkezJ9XFwuXFxkezN9WiQvKTtcbiAgICAgICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAgICAgaWYgKCFoYXNJU09Gb3JtYXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXJUaW1lem9uZU9mZnNldCA9IGQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwO1xuICAgICAgICAgICAgZCA9IG5ldyBEYXRlKGQuZ2V0VGltZSgpIC0gdXNlclRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBNYXBDb3VudFRvRGF0ZVZhbHVlKGM6IFhZVHlwZSk6IHtkYXRlOiBEYXRlOyB2YWx1ZTogbnVtYmVyfSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRlOiBSYWFpbkRldGFpbHNDb21wb25lbnQuRGF0ZVVUQyhjLm5hbWUpLFxuICAgICAgICAgICAgdmFsdWU6IE1hdGgubWluKDEwMCwgYy54KSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyBvcGVuUXVhbGl0eU1vZGFsKCkge1xuICAgICAgICB0aGlzLnNob3dRdWFsaXR5TW9kYWwgPSB0cnVlO1xuICAgICAgICB0aGlzLnF1YWxpdHlJbmRpY2F0b3JzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucXVhbGl0eUluZGljYXRvcnMgPSBbXTtcbiAgICAgICAgdGhpcy5tb2RlbFBlcmZvcm1hbmNlRGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICBpZiAodGhpcy5yYWluTm9kZT8uaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0SW5kaWNhdG9ycyh0aGlzLnJhaW5Ob2RlLmlkKTtcbiAgICAgICAgICAgIHRoaXMucXVhbGl0eUluZGljYXRvcnMgPSByZXN1bHQuaW5kaWNhdG9ycztcbiAgICAgICAgICAgIHRoaXMubW9kZWxQZXJmb3JtYW5jZURhdGEgPSB0aGlzLmJ1aWxkTW9kZWxQZXJmb3JtYW5jZURhdGEocmVzdWx0LmluZGljYXRvcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5xdWFsaXR5SW5kaWNhdG9yc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubW9kZWxQZXJmb3JtYW5jZURhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlbmRlclBlcmZvcm1hbmNlQ2hhcnQoKSwgMTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlUXVhbGl0eU1vZGFsKCkge1xuICAgICAgICB0aGlzLnNob3dRdWFsaXR5TW9kYWwgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMucGVyZm9ybWFuY2VDaGFydD8uY2hhcnQpIHtcbiAgICAgICAgICAgIHRoaXMucGVyZm9ybWFuY2VDaGFydC5jaGFydC5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLnBlcmZvcm1hbmNlQ2hhcnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYnVpbGRNb2RlbFBlcmZvcm1hbmNlRGF0YShcbiAgICAgICAgaW5kaWNhdG9yczogUXVhbGl0eUluZGljYXRvcltdXG4gICAgKTogQXJyYXk8e25hbWU6IHN0cmluZzsgZGF0ZTogRGF0ZTsgS1BFaTogbnVtYmVyIHwgbnVsbDsgS1BFMTogbnVtYmVyIHwgbnVsbH0+IHtcbiAgICAgICAgLy8gR3JvdXAgYnkgdmVyc2lvbiBjb21ibyAoY29tcHV0aW5nVmVyc2lvbiArIHF1YWxpdHlWZXJzaW9uKVxuICAgICAgICBjb25zdCBncm91cGVkID0gbmV3IE1hcDxzdHJpbmcsIHtkYXRlOiBEYXRlOyBLUEVpOiBudW1iZXIgfCBudWxsOyBLUEUxOiBudW1iZXIgfCBudWxsfT4oKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGluZCBvZiBpbmRpY2F0b3JzKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBgQyR7aW5kLmNvbXB1dGluZ1ZlcnNpb259LVEke2luZC5xdWFsaXR5VmVyc2lvbn1gO1xuICAgICAgICAgICAgaWYgKCFncm91cGVkLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBlZC5zZXQoa2V5LCB7ZGF0ZTogbmV3IERhdGUoaW5kLmxhc3RVcGRhdGVkQXQpLCBLUEVpOiBudWxsLCBLUEUxOiBudWxsfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IGdyb3VwZWQuZ2V0KGtleSk7XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSBkYXRlIHRvIGxhdGVzdFxuICAgICAgICAgICAgY29uc3QgaW5kRGF0ZSA9IG5ldyBEYXRlKGluZC5sYXN0VXBkYXRlZEF0KTtcbiAgICAgICAgICAgIGlmIChpbmREYXRlLmdldFRpbWUoKSA+IGVudHJ5LmRhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgZW50cnkuZGF0ZSA9IGluZERhdGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmQudGltZVN0ZXBJbk1pbnV0ZXMgPT09IDUpIHtcbiAgICAgICAgICAgICAgICBlbnRyeS5LUEVpID0gaW5kLmF2ZXJhZ2VRdWFsaXR5O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmQudGltZVN0ZXBJbk1pbnV0ZXMgPT09IDYwKSB7XG4gICAgICAgICAgICAgICAgZW50cnkuS1BFMSA9IGluZC5hdmVyYWdlUXVhbGl0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGdyb3VwZWQuZW50cmllcygpKS5tYXAoKFtuYW1lLCBkYXRhXSkgPT4gKHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBkYXRlOiBkYXRhLmRhdGUsXG4gICAgICAgICAgICBLUEVpOiBkYXRhLktQRWksXG4gICAgICAgICAgICBLUEUxOiBkYXRhLktQRTEsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlclBlcmZvcm1hbmNlQ2hhcnQoKSB7XG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMucGVyZm9ybWFuY2VDYW52YXNSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICghY2FudmFzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBFbGVtZW50c0ZhY3RvcnkoKTtcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZUNoYXJ0ID0gZmFjdG9yeS5jcmVhdGVNb2RlbFBlcmZvcm1hbmNlKFxuICAgICAgICAgICAgY2FudmFzLFxuICAgICAgICAgICAgbmV3IE1vZGVsUGVyZm9ybWFuY2VFbGVtZW50SW5wdXQodGhpcy5tb2RlbFBlcmZvcm1hbmNlRGF0YSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3JtYXREYXRlKGRhdGVTdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCkgK1xuICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKFtdLCB7aG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0J30pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZldGNoRGF0YShmb2N1c0RhdGU6IERhdGUsIGZvY3VzUmFuZ2U6IERhdGVSYW5nZSkge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh7ZGF0ZTogbmV3IERhdGUoMjAyMCArIGksIDApLCB2YWx1ZTogMTB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmYWtlRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJyUgUmFpbnknLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBJbWFnZXMnLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBDb21wdXRhdGlvbnMnLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHJhbmdlID0gbWFwRGF0ZVJhbmdlVG9TdHJpbmcoZm9jdXNSYW5nZSk7XG4gICAgICAgIGxldCBkYXRhID0gZmFrZURhdGE7XG4gICAgICAgIGlmICghdGhpcy5yYWluTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9jdXNSYW5nZSA9PT0gRGF0ZVJhbmdlLkNFTlRVUlkpIHtcbiAgICAgICAgICAgIC8vIGZha2VcbiAgICAgICAgfSBlbHNlIGlmIChmb2N1c1JhbmdlID09PSBEYXRlUmFuZ2UuSE9VUikge1xuICAgICAgICAgICAgY29uc3QgaG91ckNvdW50cyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0Q291bnRzSG91cih0aGlzLnJhaW5Ob2RlLmlkLCB7XG4gICAgICAgICAgICAgICAgcGVyaW9kQmVnaW46IGZvY3VzRGF0ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBkYXRhID0gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdSYWlueSBDb3VudCcsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnbGluZScsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogaG91ckNvdW50cy5yYWlueUNvdW50Lm1hcChSYWFpbkRldGFpbHNDb21wb25lbnQuTWFwQ291bnRUb0RhdGVWYWx1ZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBJbWFnZXMnLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogaG91ckNvdW50cy5wZXJjZW50SW1hZ2VzLm1hcChSYWFpbkRldGFpbHNDb21wb25lbnQuTWFwQ291bnRUb0RhdGVWYWx1ZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBDb21wdXRhdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogaG91ckNvdW50cy5wZXJjZW50Q29tcHV0YXRpb25zLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIFJhYWluRGV0YWlsc0NvbXBvbmVudC5NYXBDb3VudFRvRGF0ZVZhbHVlXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnUmFpbnkgU3VtJyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBob3VyQ291bnRzLnJhaW55U3VtLm1hcChSYWFpbkRldGFpbHNDb21wb25lbnQuTWFwQ291bnRUb0RhdGVWYWx1ZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb3VudHMgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldENvdW50cyh0aGlzLnJhaW5Ob2RlLmlkLCB7XG4gICAgICAgICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgICAgICAgcGVyaW9kQmVnaW46IGZvY3VzRGF0ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBkYXRhID0gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICclIFJhaW55JyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdiYXInLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IGNvdW50cy5wZXJjZW50UmFpbnkubWFwKFJhYWluRGV0YWlsc0NvbXBvbmVudC5NYXBDb3VudFRvRGF0ZVZhbHVlKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICclIEltYWdlcycsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBjb3VudHMucGVyY2VudEltYWdlcy5tYXAoUmFhaW5EZXRhaWxzQ29tcG9uZW50Lk1hcENvdW50VG9EYXRlVmFsdWUpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJyUgQ29tcHV0YXRpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdiYXInLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IGNvdW50cy5wZXJjZW50Q29tcHV0YXRpb25zLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIFJhYWluRGV0YWlsc0NvbXBvbmVudC5NYXBDb3VudFRvRGF0ZVZhbHVlXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgZmV0Y2hEYXRhIERPTkUgJHtyYW5nZX1gLCBkYXRhKTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0aGF0IHByZXNlcnZlcyB0aGUgYXN5bmMgbmF0dXJlIG9mIGZldGNoRGF0YVxuICAgIHB1YmxpYyBmZXRjaERhdGFXcmFwcGVyID0gYXN5bmMgKGZvY3VzRGF0ZTogRGF0ZSwgZm9jdXNSYW5nZTogRGF0ZVJhbmdlKSA9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZldGNoRGF0YShmb2N1c0RhdGUsIGZvY3VzUmFuZ2UpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoYW5nZShjaGFuZ2VzKS50aGVuKChpZ25vcmVkKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xlYW5BbGwoKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkVuYWJsZUNvdW50SGlzdG9yeVRhYihyYWluOiBSYWluTm9kZSkge1xuICAgICAgICBpZiAoIXRoaXMudG9nZ2xlSGlzdG9yeSkge1xuICAgICAgICAgICAgdGhpcy5jb3VudFBvaW50cyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb25QZXJpb2RCZWdpbkNoYW5nZShldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgPz8gdGhpcy5wZXJpb2RCZWdpbkFzU3RyaW5nO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luID0gbmV3IERhdGUobmV3VmFsdWUpO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kQmVnaW4nLCB0aGlzLnBlcmlvZEJlZ2luKTtcblxuICAgICAgICBhd2FpdCB0aGlzLm9uUGVyaW9kRHVyYXRpb25DaGFuZ2UoZXZlbnQpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uUGVyaW9kRW5kQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBldmVudD8udGFyZ2V0Py52YWx1ZSA/PyB0aGlzLnBlcmlvZEVuZEFzU3RyaW5nO1xuICAgICAgICB0aGlzLnBlcmlvZEVuZCA9IG5ldyBEYXRlKG5ld1ZhbHVlKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kRW5kKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kRW5kJywgdGhpcy5wZXJpb2RFbmQpO1xuXG4gICAgICAgIHRoaXMucGVyaW9kQmVnaW4gPSBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMucGVyaW9kRW5kLmdldFRpbWUoKSAtIHRoaXMuZ2V0RHVyYXRpb25JbkhvdXJzKCkgKiBSYWFpbkRldGFpbHNDb21wb25lbnQuSE9VUl9NU1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kQmVnaW4nLCB0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy51cGRhdGVSZWZyZXNoTWFuYWdlclBlcmlvZCgpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uUGVyaW9kRHVyYXRpb25DaGFuZ2UoX2V2ZW50OiBvYmplY3QpIHtcbiAgICAgICAgY29uc3QgZHVyYXRpb25JbkhvdXJzID0gdGhpcy5nZXREdXJhdGlvbkluSG91cnMoKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmQgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMucGVyaW9kQmVnaW4uZ2V0VGltZSgpICsgZHVyYXRpb25JbkhvdXJzICogUmFhaW5EZXRhaWxzQ29tcG9uZW50LkhPVVJfTVNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kRW5kKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kRW5kJywgdGhpcy5wZXJpb2RFbmQpO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1wZXJpb2REdXJhdGlvbkluSG91cnMnLCBkdXJhdGlvbkluSG91cnMpO1xuICAgICAgICB0aGlzLnVwZGF0ZVJlZnJlc2hNYW5hZ2VyUGVyaW9kKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25EYXRlQ2hhbmdlSW5Db3VudChkYXRlQ2hhbmdlZDogRGF0ZSkge1xuICAgICAgICBjb25zdCBkYXRlU3RyaW5nID1cbiAgICAgICAgICAgIGRhdGVDaGFuZ2VkLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDExKSArXG4gICAgICAgICAgICBkYXRlQ2hhbmdlZC50b0xvY2FsZVRpbWVTdHJpbmcoKS5zdWJzdHJpbmcoMCwgNSk7XG4gICAgICAgIHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZyA9ICcxJztcblxuICAgICAgICBpZiAodGhpcy50b2dnbGVDdW11bGF0aXZlKSB7XG4gICAgICAgICAgICAvLyBDdW11bGF0aXZlOiBzZWxlY3QgcGVyaW9kRW5kXG4gICAgICAgICAgICB0aGlzLnBlcmlvZEVuZEFzU3RyaW5nID0gZGF0ZVN0cmluZztcbiAgICAgICAgICAgIGF3YWl0IHRoaXMub25QZXJpb2RFbmRDaGFuZ2UobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBHcmFudWxhcjogc2VsZWN0IHBlcmlvZEJlZ2luXG4gICAgICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBkYXRlU3RyaW5nO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5vblBlcmlvZEJlZ2luQ2hhbmdlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIucmVmcmVzaChmYWxzZSwgdGhpcy50b2dnbGVBZG1pbik7XG4gICAgfVxuXG4gICAgYXN5bmMgb25EYXRlQ2hhbmdlSW5NYXAoZGF0ZVNob3duOiBEYXRlKSB7XG4gICAgICAgIHRoaXMuZGF0ZVNob3duID0gZGF0ZVNob3duO1xuICAgICAgICBhd2FpdCB0aGlzLmZldGNoQW5kVXBkYXRlTWFwKCk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIuc2V0UmVwb3J0UGVyaW9kKHRoaXMuZGF0ZVNob3duKTtcbiAgICB9XG5cbiAgICBhc3luYyBvblN1bUNoYW5nZUluTWFwKHN1bTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3VtRGV0YWlscyA9IHN1bTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkdhdWdlU2VsZWN0SW5NYXAobWFwTGF0TG5nOiBNYXBMYXRMbmcpIHtcbiAgICAgICAgY29uc3QgZ2F1Z2VzRmlsdGVyZWQgPSB0aGlzLmNvbXBhcmVNYW5hZ2VyLmdhdWdlc0luTWFwLmZpbHRlcihcbiAgICAgICAgICAgIChnKSA9PiBnLmxhdCA9PT0gbWFwTGF0TG5nLmxhdCAmJiBnLmxuZyA9PT0gbWFwTGF0TG5nLmxuZ1xuICAgICAgICApO1xuICAgICAgICBpZiAoZ2F1Z2VzRmlsdGVyZWQubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ2F1Z2VTZWxlY3RlZCA9IGdhdWdlc0ZpbHRlcmVkWzBdO1xuXG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEdhdWdlVmFsdWVzKHtpZDogZ2F1Z2VTZWxlY3RlZC5pZCwgbmFtZTogZ2F1Z2VTZWxlY3RlZC5uYW1lfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5zZWxlY3RHYXVnZShnYXVnZVNlbGVjdGVkLmlkLCAwKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWZyZXNoR2F1Z2VWYWx1ZXMoZ2F1Z2VTZWxlY3RlZDoge2lkOiBzdHJpbmc7IG5hbWU6IHN0cmluZ30pIHtcbiAgICAgICAgY29uc3QgZ2F1Z2VWYWx1ZVNob3dCZWdpbiA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5wZXJpb2RCZWdpbi5nZXRUaW1lKCkgLSBSYWFpbkRldGFpbHNDb21wb25lbnQuREFZX01TXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGdhdWdlVmFsdWVTaG93RW5kID0gbmV3IERhdGUodGhpcy5wZXJpb2RFbmQuZ2V0VGltZSgpICsgUmFhaW5EZXRhaWxzQ29tcG9uZW50LkRBWV9NUyk7XG4gICAgICAgIGdhdWdlVmFsdWVTaG93QmVnaW4uc2V0SG91cnMoMCwgMCk7XG4gICAgICAgIGdhdWdlVmFsdWVTaG93RW5kLnNldEhvdXJzKDIzLCA1OSk7XG5cbiAgICAgICAgY29uc3QgZ2F1Z2VNZWFzdXJlcyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0R2F1Z2VNZWFzdXJlcyhcbiAgICAgICAgICAgIGdhdWdlU2VsZWN0ZWQuaWQsXG4gICAgICAgICAgICBnYXVnZVZhbHVlU2hvd0JlZ2luLFxuICAgICAgICAgICAgZ2F1Z2VWYWx1ZVNob3dFbmRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZ2F1Z2VWYWx1ZXM6IHtkYXRlOiBEYXRlOyB2YWx1ZTogbnVtYmVyfVtdID0gZ2F1Z2VNZWFzdXJlcy5tYXAoKGdtKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgY29uc3QgY2FydGVzaWFuTWVhc3VyZVZhbHVlID0gbmV3IENhcnRlc2lhbk1lYXN1cmVWYWx1ZShnbS52YWx1ZXNbMF0gYXMgYW55KTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0ZTogZ20uZGF0ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2FydGVzaWFuTWVhc3VyZVZhbHVlLmdldENhcnRlc2lhblZhbHVlcygpWzBdLnZhbHVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ2F1Z2VTZWxlY3RlZFBvaW50cyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogZ2F1Z2VTZWxlY3RlZC5uYW1lLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGdhdWdlVmFsdWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25HYXVnZVNlbGVjdEluQ29tcGFyZShlOiB7cG9pbnQ6IFhZVHlwZTsgY29tcGFyZUluZGV4OiBudW1iZXJ9KSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEdhdWdlVmFsdWVzKHtpZDogZS5wb2ludC5pZCwgbmFtZTogZS5wb2ludC5uYW1lfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5zZWxlY3RHYXVnZShlLnBvaW50LmlkLCBlLmNvbXBhcmVJbmRleCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25Ub2dnbGVNYXAoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICAvLyBpZiAodGhpcy50b2dnbGVNYXApIHtcbiAgICAgICAgLy8gICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFwKCk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBvblRvZ2dsZVBpeGVsTWFya2VycygpIHtcbiAgICAgICAgLy8gVG9nZ2xlIGlzIGJvdW5kIHRvIHNob3dQaXhlbE1hcmtlcnMsIHJhYWluLW1hcCBoYW5kbGVzIG1hcmtlciBkaXNwbGF5XG4gICAgfVxuXG4gICAgYXN5bmMgb25DdW11bGF0aXZlVG9nZ2xlQ2xpY2soJGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zb2xlLmxvZygnW0N1bXVsYXRpdmVUb2dnbGVdIGNsaWNrIGV2ZW50Jywge1xuICAgICAgICAgICAgY3VycmVudFZhbHVlOiB0aGlzLnRvZ2dsZUN1bXVsYXRpdmUsXG4gICAgICAgICAgICBldmVudFR5cGU6ICRldmVudC50eXBlLFxuICAgICAgICAgICAgdGFyZ2V0OiAoJGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk/LnRhZ05hbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnRvZ2dsZUN1bXVsYXRpdmUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbQ3VtdWxhdGl2ZVRvZ2dsZV0gc2hvd2luZyBwb3B1cCwgdG9nZ2xlIHN0YXlzIE9GRicpO1xuICAgICAgICAgICAgLy8gQ3VycmVudGx5IE9GRiwgdXNlciB3YW50cyB0byBlbmFibGUgLSBzaG93IHNlbGVjdG9yIHBvcHVwXG4gICAgICAgICAgICB0aGlzLnNob3dDdW11bGF0aXZlU2VsZWN0b3IgPSB0cnVlO1xuXG4gICAgICAgICAgICAvLyBGb3JjZSByZXNldCB0aGUgdG9nZ2xlIHZpc3VhbCBzdGF0ZSBhZnRlciBpb24tdG9nZ2xlJ3MgaW50ZXJuYWwgaGFuZGxlclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VtdWxhdGl2ZVRvZ2dsZVJlZikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1bXVsYXRpdmVUb2dnbGVSZWYuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW0N1bXVsYXRpdmVUb2dnbGVdIGZvcmNlIHJlc2V0IHRvZ2dsZSB0byBPRkYnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAwKTtcblxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW0N1bXVsYXRpdmVUb2dnbGVdIHR1cm5pbmcgT0ZGJyk7XG4gICAgICAgICAgICAvLyBDdXJyZW50bHkgT04sIHVzZXIgd2FudHMgdG8gZGlzYWJsZSAtIGRpcmVjdCB0b2dnbGUgb2ZmXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUN1bXVsYXRpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoJ3JhYWluLXRvZ2dsZUN1bXVsYXRpdmUnLCBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmRhdGVTaG93biA9IHRoaXMuZ2V0RGF0ZUJhc2VkT25DdW11bGF0aXZlTW9kZSh0aGlzLnRpbWVmcmFtZURhdGVzKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzKCk7XG4gICAgICAgICAgICBpZiAodGhpcy50b2dnbGVNYXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJlZnJlc2hNYW5hZ2VyUGVyaW9kKCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0aGlzLnRvZ2dsZUFkbWluKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCdbQ3VtdWxhdGl2ZVRvZ2dsZV0gYWZ0ZXIgaGFuZGxlciwgdG9nZ2xlQ3VtdWxhdGl2ZSA9JywgdGhpcy50b2dnbGVDdW11bGF0aXZlKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkN1bXVsYXRpdmVQZXJpb2RTZWxlY3RlZChzZWxlY3Rpb246IEN1bXVsYXRpdmVTZWxlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5zaG93Q3VtdWxhdGl2ZVNlbGVjdG9yID0gZmFsc2U7XG5cbiAgICAgICAgLy8gVXBkYXRlIHBlcmlvZCB0byBtYXRjaCBzZWxlY3Rpb25cbiAgICAgICAgdGhpcy5wZXJpb2RCZWdpbiA9IHNlbGVjdGlvbi5wZXJpb2RCZWdpbjtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmQgPSBzZWxlY3Rpb24ucGVyaW9kRW5kO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kRW5kKTtcblxuICAgICAgICAvLyBDYWxjdWxhdGUgZHVyYXRpb24gaW4gaG91cnNcbiAgICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHRoaXMucGVyaW9kRW5kLmdldFRpbWUoKSAtIHRoaXMucGVyaW9kQmVnaW4uZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBkdXJhdGlvbkhvdXJzID0gZHVyYXRpb25NcyAvIFJhYWluRGV0YWlsc0NvbXBvbmVudC5IT1VSX01TO1xuICAgICAgICB0aGlzLnBlcmlvZER1cmF0aW9uQXNTdHJpbmcgPSBTdHJpbmcoZHVyYXRpb25Ib3Vycyk7XG5cbiAgICAgICAgLy8gU3RvcmUgY3VtdWxhdGl2ZSBwZXJpb2RcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kQmVnaW4nLCB0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kRW5kJywgdGhpcy5wZXJpb2RFbmQpO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1wZXJpb2REdXJhdGlvbkluSG91cnMnLCBkdXJhdGlvbkhvdXJzKTtcblxuICAgICAgICAvLyBFbmFibGUgY3VtdWxhdGl2ZSBtb2RlXG4gICAgICAgIHRoaXMudG9nZ2xlQ3VtdWxhdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoJ3JhYWluLXRvZ2dsZUN1bXVsYXRpdmUnLCB0cnVlKTtcblxuICAgICAgICB0aGlzLmRhdGVTaG93biA9IHRoaXMuZ2V0RGF0ZUJhc2VkT25DdW11bGF0aXZlTW9kZSh0aGlzLnRpbWVmcmFtZURhdGVzKTtcbiAgICAgICAgdGhpcy51cGRhdGVDdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXMoKTtcblxuICAgICAgICAvLyBSZWZyZXNoIG1hcFxuICAgICAgICBpZiAodGhpcy50b2dnbGVNYXApIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUmVmcmVzaE1hbmFnZXJQZXJpb2QoKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIucmVmcmVzaChmYWxzZSwgdGhpcy50b2dnbGVBZG1pbik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbkN1bXVsYXRpdmVTZWxlY3RvckNhbmNlbGxlZCgpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tDdW11bGF0aXZlVG9nZ2xlXSBjYW5jZWxsZWQsIHRvZ2dsZUN1bXVsYXRpdmUgPScsIHRoaXMudG9nZ2xlQ3VtdWxhdGl2ZSk7XG4gICAgICAgIHRoaXMuc2hvd0N1bXVsYXRpdmVTZWxlY3RvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICB1cGRhdGVDdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLnRvZ2dsZUN1bXVsYXRpdmUpIHtcbiAgICAgICAgICAgIC8vIEN1bXVsYXRpdmUgbW9kZTogdXNlIHBlcmlvZCBkdXJhdGlvblxuICAgICAgICAgICAgdGhpcy5jdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXMgPSBwYXJzZUZsb2F0KHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZykgKiA2MDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEdyYW51bGFyIG1vZGU6IHVzZSBzZWxlY3RlZFRpbWVTdGVwXG4gICAgICAgICAgICB0aGlzLmN1bXVsYXRpdmVEdXJhdGlvbkluTWludXRlcyA9IHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCB8fCAxMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIG9uUHJvdmlkZXJDaGFuZ2VkKCRldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb3ZpZGVyID0gKCRldmVudCBhcyBDdXN0b21FdmVudCk/LmRldGFpbD8udmFsdWU7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoJ3JhYWluLXNlbGVjdGVkUHJvdmlkZXInLCB0aGlzLnNlbGVjdGVkUHJvdmlkZXIpO1xuICAgICAgICBhd2FpdCB0aGlzLmFwcGx5UmVmcmVzaE1hbmFnZXJTZXR0aW5ncygpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uVGltZVN0ZXBDaGFuZ2VkKCRldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcmF3OiBzdHJpbmcgPSAoJGV2ZW50IGFzIEN1c3RvbUV2ZW50KT8uZGV0YWlsPy52YWx1ZTtcbiAgICAgICAgY29uc3QgW21vZGUsIHN0ZXBTdHJdID0gcmF3LnNwbGl0KCc6Jyk7XG4gICAgICAgIHRoaXMudGltZVN0ZXBNb2RlID0gbW9kZSBhcyAnZXEnIHwgJ2x0ZSc7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCA9IHBhcnNlSW50KHN0ZXBTdHIsIDEwKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tc2VsZWN0ZWRUaW1lU3RlcCcsIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCk7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoJ3JhYWluLXRpbWVTdGVwTW9kZScsIHRoaXMudGltZVN0ZXBNb2RlKTtcbiAgICAgICAgdGhpcy51cGRhdGVDdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hcHBseVJlZnJlc2hNYW5hZ2VyU2V0dGluZ3MoKTtcbiAgICB9XG5cbiAgICBhc3luYyBsb2FkUHJvdmlkZXJzKCkge1xuICAgICAgICBpZiAoIXRoaXMucmFpbk5vZGU/LmlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRQcm92aWRlcnModGhpcy5yYWluTm9kZS5pZCk7XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVByb3ZpZGVycyA9IHJlc3VsdC5wcm92aWRlcnMuc29ydCgpO1xuICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVUaW1lU3RlcHMgPSByZXN1bHQudGltZVN0ZXBJbk1pbnV0ZXMuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuXG4gICAgICAgICAgICAvLyBMb2FkIHNhdmVkIHNlbGVjdGlvbnMgb3IgdXNlIGRlZmF1bHRzXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgPVxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5nZXQoJ3JhYWluLXNlbGVjdGVkUHJvdmlkZXInKSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLmF2YWlsYWJsZVByb3ZpZGVycy5sZW5ndGggPiAwID8gdGhpcy5hdmFpbGFibGVQcm92aWRlcnNbMF0gOiAnUmFhaW4nKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCA9XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLmdldCgncmFhaW4tc2VsZWN0ZWRUaW1lU3RlcCcpIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMuYXZhaWxhYmxlVGltZVN0ZXBzLmxlbmd0aCA+IDAgPyB0aGlzLmF2YWlsYWJsZVRpbWVTdGVwc1swXSA6IDEwKTtcbiAgICAgICAgICAgIHRoaXMudGltZVN0ZXBNb2RlID0gdGhpcy5zdG9yYWdlLmdldCgncmFhaW4tdGltZVN0ZXBNb2RlJykgfHwgJ2VxJztcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gU2V0IGZhbGxiYWNrIHZhbHVlc1xuICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVQcm92aWRlcnMgPSBbJ1JhYWluJ107XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVRpbWVTdGVwcyA9IFs1LCAxMCwgMTUsIDMwLCA2MF07XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgPSAnUmFhaW4nO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRpbWVTdGVwID0gMTA7XG4gICAgICAgICAgICB0aGlzLnRpbWVTdGVwTW9kZSA9ICdlcSc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3ZlcnJpZGUgdGltZVN0ZXAgaWYgZm9yY2VkXG4gICAgICAgIGlmICh0aGlzLmZvcmNlVGltZVN0ZXApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCA9IHRoaXMuZm9yY2VUaW1lU3RlcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVpbGRUaW1lU3RlcE9wdGlvbnMoKTtcblxuICAgICAgICAvLyBTZXQgcHJvdmlkZXIgYW5kIHRpbWVTdGVwIG9uIHJlZnJlc2hNYW5hZ2VyXG4gICAgICAgIGlmICh0aGlzLnJlZnJlc2hNYW5hZ2VyKSB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnByb3ZpZGVyID0gdGhpcy5zZWxlY3RlZFByb3ZpZGVyO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci50aW1lU3RlcEluTWludXRlcyA9IHRoaXMuc2VsZWN0ZWRUaW1lU3RlcDtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaE1hbmFnZXIudGltZVN0ZXBNb2RlID0gdGhpcy50aW1lU3RlcE1vZGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZFRpbWVTdGVwT3B0aW9ucygpIHtcbiAgICAgICAgdGhpcy5hdmFpbGFibGVUaW1lU3RlcE9wdGlvbnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzdGVwIG9mIHRoaXMuYXZhaWxhYmxlVGltZVN0ZXBzKSB7XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVRpbWVTdGVwT3B0aW9ucy5wdXNoKHtsYWJlbDogYD0gJHtzdGVwfSBtaW5gLCB2YWx1ZTogYGVxOiR7c3RlcH1gfSk7XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVRpbWVTdGVwT3B0aW9ucy5wdXNoKHtsYWJlbDogYOKJpCAke3N0ZXB9IG1pbmAsIHZhbHVlOiBgbHRlOiR7c3RlcH1gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoYW5nZURldGVjdGlvblRlc3QocmFpbk5vZGU6IFJhaW5Ob2RlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFRFU1RfREVURUNUSU9OKyssICdvbkNoYW5nZURldGVjdGlvblRlc3QnKTtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHVwZGF0ZVRydW5jYXRlZEVycm9yKCkge1xuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMucmVmcmVzaE1hbmFnZXI/Lmxhc3RFcnJvciB8fCAnJztcbiAgICAgICAgaWYgKGVycm9yLmxlbmd0aCA8PSA4MCkge1xuICAgICAgICAgICAgdGhpcy50cnVuY2F0ZWRFcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHJ1bmNhdGVkRXJyb3IgPSBlcnJvci5zdWJzdHJpbmcoMCwgODApICsgJy4uLic7XG4gICAgfVxuXG4gICAgdXBkYXRlQ2FjaGVkVmFsdWVzKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVBlcmNlbnRPZkltYWdlcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVBlcmNlbnRPZkNvbXB1dGF0aW9ucygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRydW5jYXRlZEVycm9yKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVmcmVzaE1hcCgpIHtcbiAgICAgICAgdGhpcy5nYXVnZVNlbGVjdGVkUG9pbnRzID0gW107XG4gICAgICAgIHRoaXMuZGF0ZVNob3duID0gdGhpcy5nZXREYXRlQmFzZWRPbkN1bXVsYXRpdmVNb2RlKCk7XG4gICAgICAgIHRoaXMuYm9yZGVycyA9IFtdO1xuXG4gICAgICAgIHRoaXMuY29tcGFyZU1hbmFnZXIuY2xlYW5BbGwoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5zZXRHYXVnZXNJbk1hcCgpO1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJlZnJlc2goZmFsc2UsIHRoaXMudG9nZ2xlQWRtaW4pO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBhc3luYyB0cmlnZ2VyQ3VtdWxhdGl2ZUNyZWF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5jcmVhdGluZ0N1bXVsYXRpdmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNyZWF0aW5nQ3VtdWxhdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmNyZWF0ZUN1bXVsYXRpdmVQZXJpb2QodGhpcy5yYWluTm9kZS5pZCwge1xuICAgICAgICAgICAgICAgIHBlcmlvZEJlZ2luOiB0aGlzLnBlcmlvZEJlZ2luLFxuICAgICAgICAgICAgICAgIHBlcmlvZEVuZDogdGhpcy5wZXJpb2RFbmQsXG4gICAgICAgICAgICAgICAgcHJvdmlkZXI6IHRoaXMuc2VsZWN0ZWRQcm92aWRlcixcbiAgICAgICAgICAgICAgICB0aW1lU3RlcEluTWludXRlczogdGhpcy5zZWxlY3RlZFRpbWVTdGVwLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB0aGlzLnBvbGxGb3JDdW11bGF0aXZlQ29tcGxldGlvbigpO1xuXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hcCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCd0cmlnZ2VyQ3VtdWxhdGl2ZUNyZWF0aW9uOiB0aW1lb3V0IHdhaXRpbmcgZm9yIGNvbXB1dGF0aW9uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3RyaWdnZXJDdW11bGF0aXZlQ3JlYXRpb24gZXJyb3I6JywgZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0aW5nQ3VtdWxhdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBhc3luYyBzZXRQZXJpb2RPZk5vdygpIHtcbiAgICAgICAgY29uc3QgbGFzdDMwbW4gPSBuZXcgRGF0ZSgpO1xuICAgICAgICBsYXN0MzBtbi5zZXRNaW51dGVzKGxhc3QzMG1uLmdldE1pbnV0ZXMoKSAtIDMwKTtcbiAgICAgICAgdGhpcy5wZXJpb2RCZWdpbkFzU3RyaW5nID1cbiAgICAgICAgICAgIGxhc3QzMG1uLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDExKSArIGxhc3QzMG1uLnRvTG9jYWxlVGltZVN0cmluZygpLnN1YnN0cmluZygwLCA1KTtcbiAgICAgICAgdGhpcy5wZXJpb2REdXJhdGlvbkFzU3RyaW5nID0gJzEnO1xuICAgICAgICBhd2FpdCB0aGlzLm9uUGVyaW9kQmVnaW5DaGFuZ2UobnVsbCk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIucmVmcmVzaChmYWxzZSwgdGhpcy50b2dnbGVBZG1pbik7XG4gICAgfVxuXG4gICAgdXBkYXRlUGVyY2VudE9mSW1hZ2VzKCkge1xuICAgICAgICBpZiAoIXRoaXMuY291bnRzUGVyaW9kPy5wZXJjZW50SW1hZ2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucGVyY2VudE9mSW1hZ2VzID0gMDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGR1cmluZ1BlcmlvZCA9IHRoaXMuY291bnRzUGVyaW9kLnBlcmNlbnRJbWFnZXMuZmlsdGVyKFxuICAgICAgICAgICAgKGEpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJpb2RCZWdpbi5nZXRUaW1lKCkgPD0gbmV3IERhdGUoYS5uYW1lKS5nZXRUaW1lKCkgJiZcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZShhLm5hbWUpLmdldFRpbWUoKSA8PSB0aGlzLnBlcmlvZEVuZC5nZXRUaW1lKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3VtbWVkID0gZHVyaW5nUGVyaW9kLnJlZHVjZSgoYSwgYikgPT4gYSArIChiLnggPz8gMCksIDApO1xuICAgICAgICB0aGlzLnBlcmNlbnRPZkltYWdlcyA9IE1hdGgucm91bmQoc3VtbWVkIC8gZHVyaW5nUGVyaW9kLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgdXBkYXRlUGVyY2VudE9mQ29tcHV0YXRpb25zKCkge1xuICAgICAgICBjb25zdCBleHBlY3RlZENvdW50ID0gdGhpcy5yZWZyZXNoTWFuYWdlcj8uZ2V0RXhwZWN0ZWRUaW1lbGluZUNvdW50KCk7XG4gICAgICAgIGlmICghZXhwZWN0ZWRDb3VudCkge1xuICAgICAgICAgICAgdGhpcy5wZXJjZW50T2ZDb21wdXRhdGlvbnMgPSAwO1xuICAgICAgICAgICAgdGhpcy5wcmVzZW50Q29tcHV0YXRpb25Db3VudCA9IDA7XG4gICAgICAgICAgICB0aGlzLmV4cGVjdGVkQ29tcHV0YXRpb25Db3VudCA9IDA7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmVzZW50Q291bnQgPSB0aGlzLnJlZnJlc2hNYW5hZ2VyPy5nZXRQcmVzZW50VGltZWxpbmVDb3VudCgpIHx8IDA7XG4gICAgICAgIHRoaXMucHJlc2VudENvbXB1dGF0aW9uQ291bnQgPSBwcmVzZW50Q291bnQ7XG4gICAgICAgIHRoaXMuZXhwZWN0ZWRDb21wdXRhdGlvbkNvdW50ID0gZXhwZWN0ZWRDb3VudDtcbiAgICAgICAgdGhpcy5wZXJjZW50T2ZDb21wdXRhdGlvbnMgPSBNYXRoLnJvdW5kKChwcmVzZW50Q291bnQgLyBleHBlY3RlZENvdW50KSAqIDEwMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBwb2xsRm9yQ3VtdWxhdGl2ZUNvbXBsZXRpb24oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IFBPTExfVElNRU9VVF9NUyA9IDkwMDAwMDtcbiAgICAgICAgY29uc3QgUE9MTF9JTlRFUlZBTF9NUyA9IDMwMDA7XG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHdpbmRvd0luTWludXRlcyA9IE1hdGgucm91bmQoXG4gICAgICAgICAgICAodGhpcy5wZXJpb2RFbmQuZ2V0VGltZSgpIC0gdGhpcy5wZXJpb2RCZWdpbi5nZXRUaW1lKCkpIC8gNjAwMDBcbiAgICAgICAgKTtcblxuICAgICAgICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSA8IFBPTExfVElNRU9VVF9NUykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9ncmVzcyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UmFpblByb2dyZXNzKHRoaXMucmFpbk5vZGUuaWQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHByb2dyZXNzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgYmFja2dyb3VuZCBmZXRjaCBmcm9tIHJhYWluLWdyb3VuZCB2aWEgdGltZWZyYW1lQ3VtdWxhdGl2ZVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFJhaW5UaW1lZnJhbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJhaW5Ob2RlLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJpb2RCZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVyaW9kRW5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVBZG1pbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm92aWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0luTWludXRlc1xuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFZlcmlmeSBjdW11bGF0aXZlIGFjdHVhbGx5IGV4aXN0c1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldEN1bXVsYXRpdmVQZXJpb2RzKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yYWluTm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcjogdGhpcy5zZWxlY3RlZFByb3ZpZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0luTWludXRlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZWQ6IHRoaXMudG9nZ2xlQWRtaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICkpIGFzIFJhYWluQXBpUmFpbnNDdW11bGF0aXZlc0xpc3RSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3VuZCA9IHJlc3BvbnNlLnBlcmlvZHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChwKSA9PiBwLndpbmRvd0luTWludXRlcyA9PT0gd2luZG93SW5NaW51dGVzXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIFBPTExfSU5URVJWQUxfTVMpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1BvbGwgZXJyb3I6JywgZSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgUE9MTF9JTlRFUlZBTF9NUykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0ZUJhc2VkT25DdW11bGF0aXZlTW9kZShmYWxsYmFja0RhdGVzPzogRGF0ZVtdKTogRGF0ZSB7XG4gICAgICAgIGlmIChmYWxsYmFja0RhdGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlRXhpc3RzID0gZmFsbGJhY2tEYXRlcy5zb21lKChkKSA9PiBkLmdldFRpbWUoKSA9PT0gdGhpcy5kYXRlU2hvd24/LmdldFRpbWUoKSk7XG4gICAgICAgICAgICBpZiAoIWRhdGVFeGlzdHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVDdW11bGF0aXZlXG4gICAgICAgICAgICAgICAgICAgID8gZmFsbGJhY2tEYXRlc1tmYWxsYmFja0RhdGVzLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgICAgIDogZmFsbGJhY2tEYXRlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVDdW11bGF0aXZlID8gdGhpcy5wZXJpb2RFbmQgOiB0aGlzLnBlcmlvZEJlZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3VtdWxhdGl2ZUhvdXJzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZUN1bXVsYXRpdmUgPyBwYXJzZUZsb2F0KHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZykgOiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHVyYXRpb25JbkhvdXJzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVSZWZyZXNoTWFuYWdlclBlcmlvZCgpIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5jdW11bGF0aXZlID0gdGhpcy50b2dnbGVDdW11bGF0aXZlO1xuXG4gICAgICAgIC8vIEFsaWduIGRhdGVzIHRvIDUtbWludXRlIGJvdW5kYXJpZXMgKGZsb29yKSBmb3IgY29uc2lzdGVuY3kgd2l0aCByYWFpbi1ncm91bmRcbiAgICAgICAgY29uc3QgYWxpZ25UbzVtaW5GbG9vciA9IChkYXRlOiBEYXRlKTogRGF0ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgICAgICAgICBjb25zdCBhbGlnbmVkTWludXRlcyA9IE1hdGguZmxvb3IobWludXRlcyAvIDUpICogNTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgICAgICAgIGRhdGUuZ2V0RGF0ZSgpLFxuICAgICAgICAgICAgICAgIGRhdGUuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgICBhbGlnbmVkTWludXRlcyxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5wZXJpb2QgPSB7XG4gICAgICAgICAgICBiZWdpbjogYWxpZ25UbzVtaW5GbG9vcih0aGlzLnBlcmlvZEJlZ2luKSxcbiAgICAgICAgICAgIGVuZDogYWxpZ25UbzVtaW5GbG9vcih0aGlzLnBlcmlvZEVuZCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBmZXRjaEFuZFVwZGF0ZU1hcCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5mZXRjaChcbiAgICAgICAgICAgIHRoaXMuZGF0ZVNob3duLFxuICAgICAgICAgICAgdGhpcy50b2dnbGVHYXVnZU1lYXN1cmVzLFxuICAgICAgICAgICAgdGhpcy5nZXRDdW11bGF0aXZlSG91cnMoKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmN1cnJlbnRUaW1lZnJhbWVUYXJnZXQgPSB0aGlzLnJlZnJlc2hNYW5hZ2VyLmdldFRpbWVsaW5lU2VsZWN0ZWRGcmFtZVNldCgpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGFwcGx5UmVmcmVzaE1hbmFnZXJTZXR0aW5ncygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlZnJlc2hNYW5hZ2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5wcm92aWRlciA9IHRoaXMuc2VsZWN0ZWRQcm92aWRlcjtcbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci50aW1lU3RlcEluTWludXRlcyA9IHRoaXMuc2VsZWN0ZWRUaW1lU3RlcDtcbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci50aW1lU3RlcE1vZGUgPSB0aGlzLnRpbWVTdGVwTW9kZTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0aGlzLnRvZ2dsZUFkbWluKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFuQWxsKCkge1xuICAgICAgICB0aGlzLmJvcmRlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5pc0FkbWluID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGltZWZyYW1lQ29udGFpbmVycyA9IG5ldyBUaW1lZnJhbWVDb250YWluZXJzKFtdKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGltZWZyYW1lVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy50aW1lZnJhbWVEYXRlcyA9IFtdO1xuICAgICAgICB0aGlzLmNvdW50UG9pbnRzID0gW107XG4gICAgICAgIHRoaXMuY291bnRzUGVyaW9kID0ge3Byb2dyZXNzOiAwLCBxdWV1ZVJ1bm5pbmc6IDAsIHBlcmNlbnRJbWFnZXM6IFtdfTtcbiAgICAgICAgdGhpcy5nYXVnZVNlbGVjdGVkUG9pbnRzID0gW107XG5cbiAgICAgICAgdGhpcy50b2dnbGVIaXN0b3J5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9nZ2xlTWFwID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50b2dnbGVDb21wYXJlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9nZ2xlR2F1Z2VNZWFzdXJlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvZ2dsZVJlbW92ZUNvbXBhcmVEdXBsaWNhdGUgPSB0cnVlO1xuICAgICAgICB0aGlzLnRvZ2dsZUN1bXVsYXRpdmUgPSB0aGlzLnNob3dDdW11bGF0aXZlVG9nZ2xlXG4gICAgICAgICAgICA/IHRoaXMuc3RvcmFnZS5nZXQoJ3JhYWluLXRvZ2dsZUN1bXVsYXRpdmUnKVxuICAgICAgICAgICAgOiBmYWxzZTtcblxuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luID0gbmV3IERhdGUodGhpcy5zdG9yYWdlLmdldCgncmFhaW4tcGVyaW9kQmVnaW4nKSk7XG4gICAgICAgIHRoaXMucGVyaW9kRW5kID0gbmV3IERhdGUodGhpcy5zdG9yYWdlLmdldCgncmFhaW4tcGVyaW9kRW5kJykpO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kRW5kKTtcbiAgICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHRoaXMucGVyaW9kRW5kLmdldFRpbWUoKSAtIHRoaXMucGVyaW9kQmVnaW4uZ2V0VGltZSgpO1xuICAgICAgICB0aGlzLnBlcmlvZER1cmF0aW9uQXNTdHJpbmcgPSAnJyArIGR1cmF0aW9uTXMgLyBSYWFpbkRldGFpbHNDb21wb25lbnQuSE9VUl9NUztcblxuICAgICAgICB0aGlzLmRhdGVTaG93biA9IHRoaXMuZ2V0RGF0ZUJhc2VkT25DdW11bGF0aXZlTW9kZSgpO1xuICAgICAgICB0aGlzLnJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Z1bGxFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dRdWFsaXR5TW9kYWwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5xdWFsaXR5SW5kaWNhdG9ycyA9IFtdO1xuICAgICAgICB0aGlzLnF1YWxpdHlJbmRpY2F0b3JzTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY29tcGFyZU1hbmFnZXI/LmNsZWFuQWxsKCk7XG4gICAgICAgIHRoaXMucmVmcmVzaE1hbmFnZXI/LmNsZWFuQWxsKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0KCkge1xuICAgICAgICB0aGlzLmNsZWFuQWxsKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGVkVmFsdWVzKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdFJhaW4oKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0UmFpbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhaW5Ob2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzQWRtaW4gPSB0aGlzLnByb2ZpbGVTZXJ2aWNlLmlzQWRtaW4oKTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJhaW5Ob2RlID0gdGhpcy5yYWluTm9kZTtcbiAgICAgICAgdGhpcy5jb21wYXJlTWFuYWdlci5yYWluTm9kZSA9IHRoaXMucmFpbk5vZGU7XG5cbiAgICAgICAgLy8gTG9hZCBwcm92aWRlcnMgYW5kIHNldCBvbiByZWZyZXNoTWFuYWdlclxuICAgICAgICBhd2FpdCB0aGlzLmxvYWRQcm92aWRlcnMoKTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnNldE1ldGhvZHMoXG4gICAgICAgICAgICB0aGlzLm9uUmVmcmVzaEluUHJvZ3Jlc3MuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHRoaXMub25SZWZyZXNoRG9uZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdGhpcy5vbkZldGNoRG9uZS5iaW5kKHRoaXMpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgY2VudGVyID0gdGhpcy5yYWluTm9kZS5nZXRDZW50ZXIoKTtcbiAgICAgICAgdGhpcy5jb29yZGluYXRlcyA9IG5ldyBNYXBMYXRMbmcoY2VudGVyLmxhdCwgY2VudGVyLmxuZyk7XG4gICAgICAgIHRoaXMudGVhbU5vZGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFRlYW0oXG4gICAgICAgICAgICB0aGlzLnJhaW5Ob2RlLmdldExpbmsoVGVhbU5vZGUuVFlQRSkuZ2V0SWQoKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIExvYWQgYWxsIGdhdWdlcyBsaW5rZWQgdG8gdGhlIHJhaW5Ob2RlIG9uIG1hcFxuICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnNldEdhdWdlc0luTWFwKCk7XG5cbiAgICAgICAgaWYgKHRoaXMucGVyaW9kQmVnaW4gJiYgdGhpcy5wZXJpb2RFbmQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUmVmcmVzaE1hbmFnZXJQZXJpb2QoKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIucmVmcmVzaChmYWxzZSwgdGhpcy50b2dnbGVBZG1pbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIG9uUmVmcmVzaEluUHJvZ3Jlc3MoXG4gICAgICAgIGNvdW50UGVyaW9kczoge1xuICAgICAgICAgICAgcGVyY2VudEltYWdlcz86IFhZVHlwZVtdO1xuICAgICAgICAgICAgcXVldWVSdW5uaW5nPzogbnVtYmVyO1xuICAgICAgICAgICAgcHJvZ3Jlc3M/OiBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHRpbWVmcmFtZURhdGVzOiBEYXRlW11cbiAgICApIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgIHRoaXMuY291bnRzUGVyaW9kID0gY291bnRQZXJpb2RzO1xuICAgICAgICB0aGlzLnRpbWVmcmFtZURhdGVzID0gdGltZWZyYW1lRGF0ZXM7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGVkVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgb25SZWZyZXNoRG9uZSh0aW1lZnJhbWVEYXRlczogRGF0ZVtdKSB7XG4gICAgICAgIHRoaXMudGltZWZyYW1lRGF0ZXMgPSB0aW1lZnJhbWVEYXRlcztcbiAgICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlZFZhbHVlcygpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICBpZiAodGhpcy50b2dnbGVNYXAgJiYgdGltZWZyYW1lRGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5kYXRlU2hvd24gPSB0aGlzLmdldERhdGVCYXNlZE9uQ3VtdWxhdGl2ZU1vZGUodGltZWZyYW1lRGF0ZXMpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZVNob3duKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEFuZFVwZGF0ZU1hcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBvbkZldGNoRG9uZSh0aW1lZnJhbWVDb250YWluZXJzPzogVGltZWZyYW1lQ29udGFpbmVycykge1xuICAgICAgICBpZiAodGltZWZyYW1lQ29udGFpbmVycykge1xuICAgICAgICAgICAgdGhpcy50aW1lZnJhbWVDb250YWluZXJzID0gdGltZWZyYW1lQ29udGFpbmVycztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNoYW5nZShfY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICB9XG59XG4iLCI8IS0tIE1haW4gY29udGVudCBjb250YWluZXIgLS0+XG48ZGl2ICpuZ0lmPVwicmFpbk5vZGVcIiBjbGFzcz1cInJhYWluLWRldGFpbHMtY29udGFpbmVyXCI+XG5cbiAgICA8IS0tIFBlcmlvZCBzZWxlY3Rpb24gc2VjdGlvbiAtLT5cbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJwZXJpb2QtY2FyZFwiPlxuICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJpb2QtY29udHJvbHNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyaW9kLXJvd1wiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVIaXN0b3J5ID0gIXRvZ2dsZUhpc3Rvcnk7IG9uRW5hYmxlQ291bnRIaXN0b3J5VGFiKHJhaW5Ob2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNhbGVuZGFyLWNsZWFyLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cInRvZ2dsZUhpc3RvcnkgPyAnY2hldnJvbi1kb3duJyA6ICdjaGV2cm9uLWZvcndhcmQnXCIgc2xvdD1cImVuZFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyaW9kLXN0YXJ0IGlvbi1oaWRlLW1kLWRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cIm9uUGVyaW9kQmVnaW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRvZ2dsZUN1bXVsYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwZXJpb2RCZWdpbkFzU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGV0aW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZC1kdXJhdGlvbiBpb24taGlkZS1tZC1kb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdCAoaW9uRGlzbWlzcyk9XCJvblBlcmlvZER1cmF0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwZXJpb2REdXJhdGlvbkFzU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0b2dnbGVDdW11bGF0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHVyYXRpb24tc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGVyaW9kRHVyYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjAuMjVcIj4xNSBtaW51dGVzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIwLjVcIj4zMCBtaW51dGVzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIxXCI+MSBob3VyPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIyXCI+MiBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiM1wiPjMgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjRcIj40IGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCI1XCI+NSBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiNlwiPjYgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjhcIj44IGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIxMFwiPjEwIGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIxMlwiPjEyIGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gKm5nSWY9XCJpc0FkbWluXCIgdmFsdWU9XCIyNFwiPjI0IGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZC1zdGFydCBpb24taGlkZS1tZC1kb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGNoYW5nZSk9XCJvblBlcmlvZEVuZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidG9nZ2xlQ3VtdWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInBlcmlvZEVuZEFzU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGV0aW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dDdW11bGF0aXZlVG9nZ2xlXCIgKGNsaWNrKT1cIm9uQ3VtdWxhdGl2ZVRvZ2dsZUNsaWNrKCRldmVudClcIiBjbGFzcz1cInRvZ2dsZS1jdW11bGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIFtjbGFzcy50ZXh0LXByaW1hcnldPVwidG9nZ2xlQ3VtdWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRvZ2dsZUN1bXVsYXRpdmUgPyAnQ3VtdWxhdGl2ZScgOiAnR3JhbnVsYXInIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdG9nZ2xlICNjdW11bGF0aXZlVG9nZ2xlIFtjaGVja2VkXT1cInRvZ2dsZUN1bXVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEhpZGRlbiBsYWJlbCBmb3IgY2hhbmdlIGRldGVjdGlvbiAodW5jb21tZW50IHRvIGRlYnVnKVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaWRkZW4tbGFiZWxcIj57eyBvbkNoYW5nZURldGVjdGlvblRlc3QocmFpbk5vZGUpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgLS0+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBIaXN0b3JpY2FsIG1hcCBzZWN0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRvZ2dsZUhpc3RvcnlcIiBjbGFzcz1cInBlcmlvZC1jb250cm9sc1wiPlxuICAgICAgICAgICAgICAgIDxyYWFpbi1kYXRlLWR5bmFtaWMgKGNoYW5nZWREYXRlKT1cIm9uRGF0ZUNoYW5nZUluQ291bnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCIzMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZldGNoRGF0YV09XCJmZXRjaERhdGFXcmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb2ludHNdPVwiY291bnRQb2ludHNcIj5cbiAgICAgICAgICAgICAgICA8L3JhYWluLWRhdGUtZHluYW1pYz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cblxuICAgIDwhLS0gTWFwIHBlcmZvcm1hbmNlIC0tPlxuICAgIDxpb24tZ3JpZCBjbGFzcz1cIm1hcC1wZXJmb3JtYW5jZVwiPlxuICAgICAgICA8aW9uLXJvdyBpZD1cInByb2dyZXNzQW5kUmVmcmVzaFwiPlxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJwcm92aWRlci1zZWxlY3Rpb25cIiBzaXplPVwiMTJcIiBzaXplLW1kPVwiNlwiPlxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJvcGVuUXVhbGl0eU1vZGFsKClcIiBjbGFzcz1cInF1YWxpdHktaW5mby1idXR0b25cIiBmaWxsPVwiY2xlYXJcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwVmVyc2lvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImhlbHAtY2lyY2xlLW91dGxpbmVcIiBzbG90PVwiZW5kXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImF2YWlsYWJsZVByb3ZpZGVycy5sZW5ndGggPiAwIHx8IGF2YWlsYWJsZVRpbWVTdGVwcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJzZWxlY3Rpb24tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0IChpb25DaGFuZ2UpPVwib25Qcm92aWRlckNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZFByb3ZpZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiUHJvdmlkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBQcm92aWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uICpuZ0Zvcj1cImxldCBwcm92aWRlciBvZiBhdmFpbGFibGVQcm92aWRlcnNcIiBbdmFsdWVdPVwicHJvdmlkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcm92aWRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tc2VsZWN0PlxuXG4gICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0IChpb25DaGFuZ2UpPVwib25UaW1lU3RlcENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JjZVRpbWVTdGVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInRpbWVTdGVwTW9kZSArICc6JyArIHNlbGVjdGVkVGltZVN0ZXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJUaW1lIFN0ZXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBUaW1lIFN0ZXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIGF2YWlsYWJsZVRpbWVTdGVwT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHQubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXNlbGVjdD5cblxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXB1dGF0aW9uLWNvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBwcmVzZW50Q29tcHV0YXRpb25Db3VudCB9fS97eyBleHBlY3RlZENvbXB1dGF0aW9uQ291bnQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0cmlnZ2VyQ3VtdWxhdGl2ZUNyZWF0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93Q3JlYXRlTWlzc2luZ0ltYWdlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3JlYXRpbmdDdW11bGF0aXZlXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjcmVhdGVNaXNzaW5nSW1hZ2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiAqbmdJZj1cIiFjcmVhdGluZ0N1bXVsYXRpdmVcIiBuYW1lPVwicmVmcmVzaC1vdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zcGlubmVyICpuZ0lmPVwiY3JlYXRpbmdDdW11bGF0aXZlXCIgbmFtZT1cImNyZXNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdD1cImljb24tb25seVwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvdW50c1BlcmlvZD8ucHJvZ3Jlc3NcIiBjbGFzcz1cInByb2dyZXNzLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIFByb2dyZXNzOiB7eyBjb3VudHNQZXJpb2QucHJvZ3Jlc3MgfX0uLi5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIHNpemU9XCIxMlwiIHNpemUtbWQ9XCI2XCI+XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInJlZnJlc2hNYXAoKVwiIFtkaXNhYmxlZF09XCJyZWZyZXNoSW5Qcm9ncmVzc1wiIGNsYXNzPVwicmVmcmVzaC1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgUmVmcmVzaCBNYXBcbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIDwvaW9uLXJvdz5cblxuICAgICAgICA8IS0tIHN0YXR1cyB1cGRhdGUgcm93IC0tPlxuICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgIDwhLS0gUHJvZ3Jlc3MgY29sIC0tPlxuICAgICAgICAgICAgPGlvbi1wcm9ncmVzcy1iYXJcbiAgICAgICAgICAgICAgICAgICAgW2J1ZmZlcl09XCIoY291bnRzUGVyaW9kLnByb2dyZXNzIC8gKCh0aW1lZnJhbWVEYXRlcz8ubGVuZ3RoIHx8IDEwKSArMykpKzAuMDFcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJyZWZyZXNoSW5Qcm9ncmVzcyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvdW50c1BlcmlvZC5wcm9ncmVzcyAvICgodGltZWZyYW1lRGF0ZXM/Lmxlbmd0aCB8fCAxMCkgKzMpXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICA8L2lvbi1wcm9ncmVzcy1iYXI+XG5cbiAgICAgICAgICAgIDwhLS0gRXJyb3IgY29sIC0tPlxuICAgICAgICAgICAgPGlvbi1jb2wgKGNsaWNrKT1cInNob3dGdWxsRXJyb3IgPSAhc2hvd0Z1bGxFcnJvclwiICpuZ0lmPVwicmVmcmVzaE1hbmFnZXIubGFzdEVycm9yXCIgY2xhc3M9XCJlcnJvci1yb3dcIlxuICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjEyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwiZXJyb3ItaWNvblwiIG5hbWU9XCJ3YXJuaW5nLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MuZXhwYW5kZWRdPVwic2hvd0Z1bGxFcnJvclwiIGNsYXNzPVwiZXJyb3ItdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2hvd0Z1bGxFcnJvciA/IHJlZnJlc2hNYW5hZ2VyLmxhc3RFcnJvciA6IHRydW5jYXRlZEVycm9yIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cInNob3dGdWxsRXJyb3IgPyAnY2hldnJvbi11cCcgOiAnY2hldnJvbi1kb3duJ1wiIGNsYXNzPVwiZXJyb3ItY2FyZXRcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG4gICAgPC9pb24tZ3JpZD5cblxuICAgIDwhLS0gTWFwIHNlY3Rpb24gLS0+XG4gICAgPGlvbi1jYXJkIGNsYXNzPVwibWFwLWNhcmRcIj5cbiAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgY2xhc3M9XCJtYXAtY29udGVudFwiPlxuICAgICAgICAgICAgPGlvbi1ncmlkPlxuICAgICAgICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwidG9nZ2xlTWFwICYmIChwZXJjZW50T2ZJbWFnZXMgfHwgcGVyY2VudE9mQ29tcHV0YXRpb25zKVwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIE1hcCBjb21wb25lbnQgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwibWFwLWNvbHVtblwiIHNpemUtbGc9XCI3XCIgc2l6ZS1tZD1cIjEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyYWFpbi1tYXAgI3JhYWluTWFwUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlZERhdGUpPVwib25EYXRlQ2hhbmdlSW5NYXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlZFN1bSk9XCJvblN1bUNoYW5nZUluTWFwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTWFya2VyKT1cIm9uR2F1Z2VTZWxlY3RJbk1hcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb29yZGluYXRlc109XCJjb29yZGluYXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzXT1cImN1bXVsYXRpdmVEdXJhdGlvbkluTWludXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHREYXRlXT1cImRhdGVTaG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFya2Vyc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYXVnZXM6IGNvbXBhcmVNYW5hZ2VyLmdhdWdlc0luTWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhdWdlc0luQ29tcGFyZTogY29tcGFyZU1hbmFnZXIuZ2F1Z2VzSW5Db21wYXJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkR2F1Z2VzOiBjb21wYXJlTWFuYWdlci5zZWxlY3RlZEdhdWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHM6IGNvbXBhcmVNYW5hZ2VyLnNlbGVjdGVkUGl4ZWxzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsc1NvbHV0aW9uOiBjb21wYXJlTWFuYWdlci5waXhlbHNTb2x1dGlvbnM/Lmxlbmd0aCA/IGNvbXBhcmVNYW5hZ2VyLnBpeGVsc1NvbHV0aW9uc1swXSA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkczogY29tcGFyZU1hbmFnZXIuc3BlZWRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY2FsZUxhYmVsXT1cInRvZ2dsZUN1bXVsYXRpdmUgPyAnbW0nIDogc2NhbGVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd05hdmlnYXRpb25dPVwiIXRvZ2dsZUN1bXVsYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dEYXRlUmFuZ2VdPVwic2hvd0RhdGVSYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1Zpc2libGVQaXhlbE1hcmtlcnNdPVwic2hvd1BpeGVsTWFya2Vyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3VtRm5dPVwicmVmcmVzaE1hbmFnZXIuc3VtRm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1bVZhbHVlc109XCJyZWZyZXNoTWFuYWdlci5zdW1WYWx1ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbWVmcmFtZUNvbnRhaW5lcnNdPVwidGltZWZyYW1lQ29udGFpbmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGltZWZyYW1lRGF0ZXNdPVwidGltZWZyYW1lRGF0ZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JhYWluLW1hcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRlY2huaWNhbCBkZXRhaWxzIChjb2xsYXBzaWJsZSBmb3IgY2xlYW5lciBVSSkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9XCJ0ZWNobmljYWwtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT5JbWFnZSBEZXRhaWxzPC9zdW1tYXJ5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+Q29tcHV0ZWQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwRG9uZURhdGUgfCBkYXRlOid5eXl5LU1NLWRkIEhIOm1tJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlZlcnNpb246PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwVmVyc2lvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkxhdW5jaGVkIGJ5Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcExhdW5jaGVkQnkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5UaW1lIHNwZW50Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcFRpbWVTcGVudEluTXMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5EYXRlOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcERhdGU/LnRvSVNPU3RyaW5nKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB7eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBEYXRlIHwgZGF0ZToneXl5eS1NTS1kZCBISDptbScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5XYXRlciBpbiB0aGUgbWFwOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHN1bURldGFpbHMgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10b2dnbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25Ub2dnbGVQaXhlbE1hcmtlcnMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dQaXhlbE1hcmtlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogOHB4OyB0cmFuc2Zvcm06IHNjYWxlKDAuNyk7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+U291cmNlIERCWiBtaW46PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwT3JpZ2luYWxNaW4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5Tb3VyY2UgREJaIG1heDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBPcmlnaW5hbE1heCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGF0YSBwYW5lbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCIhIWNvbXBhcmVNYW5hZ2VyLmNvbXBhcmVWZXJzaW9uICYmICghdG9nZ2xlQ3VtdWxhdGl2ZSB8fCBzaG93Q3VtdWxhdGl2ZUNvbXBhcmUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWNvbHVtblwiIHNpemUtbGc9XCI1XCIgc2l6ZS1tZD1cIjEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1wYW5lbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29tcGFyZSBzdGFjayBjb21wb25lbnQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBhcmUtc3RhY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJhYWluLWNvbXBhcmUtc3RhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRQb2ludCk9XCJvbkdhdWdlU2VsZWN0SW5Db21wYXJlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wYXJlTWFuYWdlcl09XCJjb21wYXJlTWFuYWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1bXVsYXRpdmVdPVwidG9nZ2xlQ3VtdWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JhYWluLWNvbXBhcmUtc3RhY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRlY2huaWNhbCBkZXRhaWxzIChjb2xsYXBzaWJsZSBmb3IgY2xlYW5lciBVSSkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9XCJ0ZWNobmljYWwtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT5Db21wYXJlIERldGFpbHM8L3N1bW1hcnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyd3YXJuaW5nJzogcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwRG9uZURhdGU/LmdldFRpbWUoKSA+IGNvbXBhcmVNYW5hZ2VyLmN1cnJlbnRRdWFsaXR5RG9uZURhdGU/LmdldFRpbWUoKSArIDYwMDAwfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+Q29tcHV0ZWQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuY3VycmVudFF1YWxpdHlEb25lRGF0ZSB8IGRhdGU6J3l5eXktTU0tZGQgSEg6bW0nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+VmVyc2lvbjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBjb21wYXJlTWFuYWdlci5jb21wYXJlVmVyc2lvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkxhdW5jaGVkIGJ5Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmN1cnJlbnRRdWFsaXR5TGF1bmNoZWRCeSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlRpbWUgc3BlbnQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuY3VycmVudFF1YWxpdHlUaW1lU3BlbnRJbk1zIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+R2F1Z2VzOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmdhdWdlc0luQ29tcGFyZS5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5Qb2ludHM6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuZ2xvYmFsQ29tcGFyZVBvaW50cy5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZXRhaWxzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQm90dG9tIHByb2dyZXNzIGJhciAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1wcm9ncmVzcy1iYXIgKm5nSWY9XCJyZWZyZXNoSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWZmZXJdPVwiKGNvdW50c1BlcmlvZC5wcm9ncmVzcyAvICgodGltZWZyYW1lRGF0ZXM/Lmxlbmd0aCB8fCAxMCkgKzMpKSswLjAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvdW50c1BlcmlvZC5wcm9ncmVzcyAvICgodGltZWZyYW1lRGF0ZXM/Lmxlbmd0aCB8fCAxMCkgKzMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXByb2dyZXNzLWJhcj5cbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cblxuICAgIDwhLS0gR2F1Z2UgdmFsdWVzIHNlY3Rpb24gLS0+XG4gICAgPGlvbi1jYXJkICpuZ0lmPVwiZ2F1Z2VTZWxlY3RlZFBvaW50cy5sZW5ndGggJiYgZ2F1Z2VTZWxlY3RlZFBvaW50c1swXS52YWx1ZXMubGVuZ3RoXCIgY2xhc3M9XCJnYXVnZS1jYXJkXCI+XG4gICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhbmFseXRpY3Mtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgU2VsZWN0ZWQgR2F1Z2UgRGF0YVxuICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPHJhYWluLWRhdGUtZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZvY3VzRGF0ZV09XCJwZXJpb2RCZWdpblwiXG4gICAgICAgICAgICAgICAgICAgIFtmb2N1c1JhbmdlXT1cIkRhdGVSYW5nZS5EQVlcIlxuICAgICAgICAgICAgICAgICAgICBbcG9pbnRzXT1cImdhdWdlU2VsZWN0ZWRQb2ludHNcIlxuICAgICAgICAgICAgICAgICAgICBbd2l0aG91dEFsbF09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8L3JhYWluLWRhdGUtZm9jdXM+XG4gICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuXG4gICAgPCEtLSBRdWFsaXR5IFBlcmZvcm1hbmNlIE1vZGFsIC0tPlxuICAgIDxkaXYgKGNsaWNrKT1cImNsb3NlUXVhbGl0eU1vZGFsKClcIiAqbmdJZj1cInNob3dRdWFsaXR5TW9kYWxcIiBjbGFzcz1cInF1YWxpdHktbW9kYWwtb3ZlcmxheVwiPlxuICAgICAgICA8ZGl2IChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBjbGFzcz1cInF1YWxpdHktbW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YWxpdHktbW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGgyPk1vZGVsIFF1YWxpdHkgUGVyZm9ybWFuY2U8L2gyPlxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjbG9zZVF1YWxpdHlNb2RhbCgpXCIgZmlsbD1cImNsZWFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2Utb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVhbGl0eS1tb2RhbC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1YWxpdHlJbmRpY2F0b3JzTG9hZGluZ1wiIGNsYXNzPVwicXVhbGl0eS1sb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Mb2FkaW5nIGluZGljYXRvcnMuLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWFsaXR5SW5kaWNhdG9yc0xvYWRpbmcgJiYgcXVhbGl0eUluZGljYXRvcnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJxdWFsaXR5LWVtcHR5XCI+XG4gICAgICAgICAgICAgICAgICAgIE5vIHF1YWxpdHkgaW5kaWNhdG9ycyBhdmFpbGFibGUgZm9yIHRoaXMgeWVhci5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gUGVyZm9ybWFuY2UgQ2hhcnQgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWFsaXR5SW5kaWNhdG9yc0xvYWRpbmcgJiYgbW9kZWxQZXJmb3JtYW5jZURhdGEubGVuZ3RoID4gMFwiIGNsYXNzPVwicGVyZm9ybWFuY2UtY2hhcnQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjYW52YXMgI3BlcmZvcm1hbmNlQ2FudmFzPjwvY2FudmFzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBEZXRhaWxzIEFjY29yZGlvbiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXF1YWxpdHlJbmRpY2F0b3JzTG9hZGluZyAmJiBxdWFsaXR5SW5kaWNhdG9ycy5sZW5ndGggPiAwXCIgY2xhc3M9XCJxdWFsaXR5LWRldGFpbHMtc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzaG93UXVhbGl0eURldGFpbHMgPSAhc2hvd1F1YWxpdHlEZXRhaWxzXCIgY2xhc3M9XCJxdWFsaXR5LWRldGFpbHMtdG9nZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5EZXRhaWxzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cInNob3dRdWFsaXR5RGV0YWlscyA/ICdjaGV2cm9uLXVwJyA6ICdjaGV2cm9uLWRvd24nXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSAqbmdJZj1cInNob3dRdWFsaXR5RGV0YWlsc1wiIGNsYXNzPVwicXVhbGl0eS10YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Nb2RlbDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNvbXBhcmU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5HYXVnZXM8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5QZXJpb2Q8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BdmcgUXVhbGl0eTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlVwZGF0ZWQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGluZGljYXRvciBvZiBxdWFsaXR5SW5kaWNhdG9yc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpbmRpY2F0b3IuY29tcHV0aW5nVmVyc2lvbiB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGluZGljYXRvci5xdWFsaXR5VmVyc2lvbiB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGluZGljYXRvci5wcm92aWRlciB9fTxicj57eyBpbmRpY2F0b3IudGltZVN0ZXBJbk1pbnV0ZXMgfX0gbWluPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZm9ybWF0RGF0ZShpbmRpY2F0b3Iuc3RhcnREYXRlKSB9fTxicj57eyBmb3JtYXREYXRlKGluZGljYXRvci5lbmREYXRlKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGluZGljYXRvci5hdmVyYWdlUXVhbGl0eSB8IG51bWJlcjonMS4yLTInIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZm9ybWF0RGF0ZShpbmRpY2F0b3IubGFzdFVwZGF0ZWRBdCkgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEN1bXVsYXRpdmUgU2VsZWN0b3IgTW9kYWwgLS0+XG4gICAgPGN1bXVsYXRpdmUtc2VsZWN0b3IgKGNhbmNlbGxlZCk9XCJvbkN1bXVsYXRpdmVTZWxlY3RvckNhbmNlbGxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAocGVyaW9kU2VsZWN0ZWQpPVwib25DdW11bGF0aXZlUGVyaW9kU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93Q3VtdWxhdGl2ZVNlbGVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFBlcmlvZEJlZ2luXT1cInBlcmlvZEJlZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFBlcmlvZEVuZF09XCJwZXJpb2RFbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0FkbWluXT1cInRvZ2dsZUFkbWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvdmlkZXJdPVwic2VsZWN0ZWRQcm92aWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3JhaW5JZF09XCJyYWluTm9kZT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFt0aW1lU3RlcEluTWludXRlc109XCJzZWxlY3RlZFRpbWVTdGVwXCI+XG4gICAgPC9jdW11bGF0aXZlLXNlbGVjdG9yPlxuXG48L2Rpdj5cbiJdfQ==
|