my-orders-tickets-widget 1.0.0-beta.19 → 1.0.0-beta.20
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/dist/index.js +8 -6
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -720,12 +720,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
720
720
|
|
|
721
721
|
|
|
722
722
|
|
|
723
|
-
|
|
723
|
+
let darkColor = "";
|
|
724
|
+
if (typeof window !== "undefined") {
|
|
725
|
+
// Get the root element
|
|
726
|
+
const root = document.documentElement;
|
|
724
727
|
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
const darkColor = getComputedStyle(root).getPropertyValue("--color_background_dark");
|
|
728
|
+
// Retrieve the current value of a CSS variable
|
|
729
|
+
darkColor = getComputedStyle(root).getPropertyValue("--color_background_dark");
|
|
730
|
+
}
|
|
729
731
|
const theme = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.createTheme)({
|
|
730
732
|
palette: {
|
|
731
733
|
primary: {
|
|
@@ -7148,4 +7150,4 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
7148
7150
|
/******/ })()
|
|
7149
7151
|
;
|
|
7150
7152
|
});
|
|
7151
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRnVEO0FBQzFCO0FBQ2lEO0FBQy9CO0FBQ0s7QUFNekI7QUFFcEIsTUFBTWUsV0FBVyxHQUFHLGFBQWE7QUFDakMsTUFBTUMsWUFBWSxHQUFHLGNBQWM7QUFDbkMsTUFBTUMsU0FBUyxHQUFHLFdBQVc7O0FBRXBDO0FBQ08sTUFBTUMsZUFBZSxHQUFHLFlBQVk7QUFDcEMsTUFBTUMsWUFBWSxHQUFHLGNBQWM7QUFDbkMsTUFBTUMsbUJBQW1CLEdBQUcscUJBQXFCO0FBQ2pELE1BQU1DLGtCQUFrQixHQUFHLG9CQUFvQjs7QUFFdEQ7QUFDTyxNQUFNQyxXQUFXLEdBQUcsYUFBYTtBQUNqQyxNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxjQUFjLEdBQUcsZ0JBQWdCO0FBQ3ZDLE1BQU1DLHNCQUFzQixHQUFHLHdCQUF3QjtBQUN2RCxNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxtQkFBbUIsR0FBRyxxQkFBcUI7QUFDakQsTUFBTUMsb0JBQW9CLEdBQUcsc0JBQXNCO0FBQ25ELE1BQU1DLDBCQUEwQixHQUFHLDRCQUE0QjtBQUMvRCxNQUFNQyx3QkFBd0IsR0FBRywwQkFBMEI7QUFDM0QsTUFBTUMsa0JBQWtCLEdBQUcsb0JBQW9CO0FBQy9DLE1BQU1DLHVCQUF1QixHQUFHLHlCQUF5QjtBQUN6RCxNQUFNQyxvQkFBb0IsR0FBRztFQUNsQ0MsS0FBSyxFQUFFLGdCQUFnQjtFQUN2QkMsU0FBUyxFQUFFLHFCQUFxQjtFQUNoQ0MsUUFBUSxFQUFFLG9CQUFvQjtFQUM5QkMsT0FBTyxFQUFFLGtCQUFrQjtFQUMzQkMsa0JBQWtCLEVBQUUscUJBQXFCO0VBQ3pDQyxjQUFjLEVBQUU7QUFDbEIsQ0FBQztBQUNNLE1BQU1DLCtCQUErQixHQUMxQyxpQ0FBaUM7O0FBRW5DO0FBQ08sTUFBTUMseUJBQXlCLEdBQUcsMkJBQTJCO0FBQzdELE1BQU1DLHdCQUF3QixHQUFHLDBCQUEwQjtBQUMzRCxNQUFNQyxrQkFBa0IsR0FBRyxvQkFBb0I7QUFDL0MsTUFBTUMsUUFBUSxHQUFHLFVBQVU7O0FBRWxDO0FBQ08sTUFBTUMsVUFBVSxHQUFHLFlBQVk7QUFDL0IsTUFBTUMsd0JBQXdCLEdBQUcsMEJBQTBCO0FBQzNELE1BQU1DLDBCQUEwQixHQUFHLDRCQUE0QjtBQUMvRCxNQUFNQyx3QkFBd0IsR0FBRywwQkFBMEI7QUFFM0QsTUFBTUMsVUFBVSxHQUFHQSxDQUFBLEtBQU9DLFFBQVEsSUFBSztFQUM1Q0EsUUFBUSxDQUFDaEQsMkZBQVksQ0FBQ1ksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRU0sTUFBTXFDLFdBQVcsR0FBR0EsQ0FBQSxLQUFPRCxRQUFRLElBQUs7RUFDN0NBLFFBQVEsQ0FBQ2hELDJGQUFZLENBQUNhLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVNLE1BQU1xQyxlQUFlLEdBQUdBLENBQUNDLE1BQU0sRUFBRUMsSUFBSSxLQUFNSixRQUFRLElBQUs7RUFDN0RBLFFBQVEsQ0FBQ2hELDJGQUFZLENBQUNjLFNBQVMsQ0FBQyxDQUFDO0lBQUVxQyxNQUFNO0lBQUVDO0VBQUssQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQzs7QUFFRDtBQUNPLE1BQU1DLGVBQWUsR0FBRyxpQkFBaUI7QUFDekMsTUFBTUMsdUJBQXVCLEdBQUcseUJBQXlCOztBQUVoRTtBQUNPLE1BQU1DLFdBQVcsR0FBSUMsU0FBUyxJQUFLO0VBQ3hDLE1BQU1DLE1BQU0sR0FBRyxFQUFFO0VBQ2pCLElBQUlELFNBQVMsQ0FBQ0UsSUFBSSxLQUFLTCxlQUFlLEVBQUU7SUFDdENJLE1BQU0sQ0FBQ0UsSUFBSSxJQUFBQyxNQUFBLENBQUlKLFNBQVMsQ0FBQ0ssSUFBSSxRQUFBRCxNQUFBLENBQUtKLFNBQVMsQ0FBQ00sS0FBSyxRQUFBRixNQUFBLENBQUtKLFNBQVMsQ0FBQ08sS0FBSyxDQUFFLENBQUM7RUFDMUU7RUFDQSxJQUFJUCxTQUFTLENBQUNFLElBQUksS0FBS0osdUJBQXVCLEVBQUU7SUFDOUNHLE1BQU0sQ0FBQ0UsSUFBSSxJQUFBQyxNQUFBLENBQUlKLFNBQVMsQ0FBQ0ssSUFBSSxRQUFBRCxNQUFBLENBQUtKLFNBQVMsQ0FBQ1EsS0FBSyxDQUFFLENBQUM7RUFDdEQ7RUFDQSxPQUFPUCxNQUFNO0FBQ2YsQ0FBQztBQUVNLE1BQU1RLGdCQUFnQixHQUFJQyxTQUFTLElBQ3hDQSxTQUFTLEtBQUssS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHOztBQUVqQztBQUNPLE1BQU1DLGFBQWEsR0FDeEJDLElBQUE7RUFBQSxJQUFDO0lBQ0NDLElBQUksR0FBRzdELHdEQUFVO0lBQ2pCOEQsT0FBTyxHQUFHN0Qsb0VBQXNCO0lBQ2hDZ0QsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNYYyxJQUFJLEdBQUcsQ0FBQztFQUNWLENBQUMsR0FBQUgsSUFBQTtFQUFBLE9BQ0QsT0FBT3BCLFFBQVEsRUFBRXdCLFFBQVEsRUFBQUMsS0FBQSxLQUFxQjtJQUFBLElBQW5CO01BQUVDO0lBQVcsQ0FBQyxHQUFBRCxLQUFBO0lBQ3ZDLE1BQU07TUFDSkUsV0FBVyxFQUFFO1FBQUV4QjtNQUFPO0lBQ3hCLENBQUMsR0FBR3FCLFFBQVEsQ0FBQyxDQUFDO0lBRWQsTUFBTUksV0FBVyxHQUFHLE1BQU1yRSxpRUFBb0IsQ0FBQyxDQUFDLENBQUNzRSxLQUFLLENBQUMsTUFDckRDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQ2pCLENBQUM7SUFFRC9CLFFBQVEsQ0FBQzlDLDJGQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU04RSxNQUFNLEdBQUc7TUFDYkMsWUFBWSxFQUFFTCxXQUFXO01BQ3pCTSxLQUFLLEVBQUUsS0FBSztNQUNaLFVBQVUsRUFBRSxDQUFDLGNBQWMsQ0FBQztNQUM1QkMsU0FBUyxFQUFFLE1BQU07TUFDakJkLElBQUk7TUFDSmUsUUFBUSxFQUFFZDtJQUNaLENBQUM7SUFFRCxJQUFJZSxNQUFNLENBQUNDLElBQUksQ0FBQzdCLE1BQU0sQ0FBQyxDQUFDOEIsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNsQyxNQUFNQyxPQUFPLEdBQUdqQyxXQUFXLENBQUNFLE1BQU0sQ0FBQztNQUNuQ3VCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUdBLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHUSxPQUFPLENBQUM7SUFDMUQ7SUFDQSxJQUFJSCxNQUFNLENBQUNDLElBQUksQ0FBQ2YsSUFBSSxDQUFDLENBQUNnQixNQUFNLEdBQUcsQ0FBQyxFQUFFO01BQ2hDUCxNQUFNLENBQUNFLEtBQUssTUFBQXRCLE1BQUEsQ0FBTUssZ0JBQWdCLENBQUNNLElBQUksQ0FBQ0wsU0FBUyxDQUFDLEVBQUFOLE1BQUEsQ0FBR1csSUFBSSxDQUFDVixJQUFJLENBQUU7SUFDbEU7SUFFQSxPQUFPL0QseUZBQVUsQ0FDZixJQUFJLEVBQ0pFLDJGQUFZLENBQUNlLGVBQWUsQ0FBQyxLQUFBNkMsTUFBQSxDQUMxQmMsVUFBVSxzQkFBQWQsTUFBQSxDQUFtQlQsTUFBTSxDQUFDc0MsRUFBRSxpQkFDekM1RiwyRkFDRixDQUFDLENBQUNtRixNQUFNLENBQUMsQ0FBQ2hDLFFBQVEsQ0FBQyxDQUNoQjBDLElBQUksQ0FBRUMsT0FBTyxJQUFLO01BQ2pCM0MsUUFBUSxDQUFDL0MsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsT0FBTzBGLE9BQU87SUFDaEIsQ0FBQyxDQUFDLENBQ0RkLEtBQUssQ0FBRWUsQ0FBQyxJQUFLO01BQ1o1QyxRQUFRLENBQUMvQywwRkFBVyxDQUFDLENBQUMsQ0FBQztNQUN2QixPQUFPMkYsQ0FBQztJQUNWLENBQUMsQ0FBQztFQUNOLENBQUM7QUFBQTtBQUVJLE1BQU1DLGdCQUFnQixHQUFJQyxPQUFPLElBQUssTUFBTzlDLFFBQVEsSUFDMURBLFFBQVEsQ0FBQ2hELDJGQUFZLENBQUNpQixtQkFBbUIsQ0FBQyxDQUFDNkUsT0FBTyxDQUFDLENBQUM7O0FBRXREO0FBQ08sTUFBTUMsT0FBTyxHQUFJM0MsSUFBSSxJQUFNSixRQUFRLElBQ3hDQSxRQUFRLENBQUNoRCwyRkFBWSxDQUFDMEMsUUFBUSxDQUFDLENBQUNVLElBQUksQ0FBQyxDQUFDOztBQUV4Qzs7QUFFTyxNQUFNNEMsY0FBYyxHQUN6QkMsS0FBQTtFQUFBLElBQUM7SUFBRTVCLElBQUksR0FBRzdELHdEQUFVO0lBQUU4RCxPQUFPLEdBQUc3RCxvRUFBc0JBO0VBQUMsQ0FBQyxHQUFBd0YsS0FBQTtFQUFBLE9BQ3hELE9BQU9qRCxRQUFRLEVBQUV3QixRQUFRLEVBQUEwQixLQUFBLEtBQXFCO0lBQUEsSUFBbkI7TUFBRXhCO0lBQVcsQ0FBQyxHQUFBd0IsS0FBQTtJQUN2QyxNQUFNO01BQ0pDLFNBQVMsRUFBRTtRQUFFQztNQUFZLENBQUM7TUFDMUJqRDtJQUNGLENBQUMsR0FBR3FCLFFBQVEsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxDQUFDckIsTUFBTSxFQUFFLE9BQU8yQixPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLE1BQU1ILFdBQVcsR0FBRyxNQUFNckUsaUVBQW9CLENBQUMsQ0FBQyxDQUFDc0UsS0FBSyxDQUFDLE1BQ3JEQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUNqQixDQUFDO0lBRUQsSUFBSSxDQUFDcUIsV0FBVyxDQUFDWCxFQUFFLEVBQUUsT0FBT1gsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FBQztJQUM1Qy9CLFFBQVEsQ0FBQzlDLDJGQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU04RSxNQUFNLEdBQUc7TUFDYkMsWUFBWSxFQUFFTCxXQUFXO01BQ3pCbkIsTUFBTSxFQUFFLGNBQWM7TUFDdEI0QyxNQUFNLEVBQUUsMkJBQTJCO01BQ25DbkIsS0FBSyxFQUFFLEtBQUs7TUFDWm9CLE1BQU0sRUFDSix1SEFBdUg7TUFDekhuQixTQUFTLEVBQUUsTUFBTTtNQUNqQmQsSUFBSTtNQUNKZSxRQUFRLEVBQUVkO0lBQ1osQ0FBQztJQUNELE9BQU94RSx5RkFBVSxDQUNmLElBQUksRUFDSkUsMkZBQVksQ0FBQ21CLFdBQVcsQ0FBQyxLQUFBeUMsTUFBQSxDQUN0QmMsVUFBVSxzQkFBQWQsTUFBQSxDQUFtQlQsTUFBTSxDQUFDc0MsRUFBRSw2QkFDekM1RiwyRkFDRixDQUFDLENBQUNtRixNQUFNLENBQUMsQ0FBQ2hDLFFBQVEsQ0FBQyxDQUNoQjBDLElBQUksQ0FBQyxNQUFNO01BQ1YxQyxRQUFRLENBQUMvQywwRkFBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDLENBQUMsQ0FDRDRFLEtBQUssQ0FBRWUsQ0FBQyxJQUFLO01BQ1o1QyxRQUFRLENBQUMvQywwRkFBVyxDQUFDLENBQUMsQ0FBQztNQUN2QixPQUFPMkYsQ0FBQztJQUNWLENBQUMsQ0FBQztFQUNOLENBQUM7QUFBQTtBQUVJLE1BQU1XLGlCQUFpQixHQUM1QkMsS0FBQTtFQUFBLElBQUM7SUFBRVYsT0FBTztJQUFFekIsSUFBSSxHQUFHN0Qsd0RBQVU7SUFBRThELE9BQU8sR0FBRzdELG9FQUFzQkE7RUFBQyxDQUFDLEdBQUErRixLQUFBO0VBQUEsT0FDakUsT0FBT3hELFFBQVEsRUFBRXdCLFFBQVEsRUFBQWlDLEtBQUEsS0FBcUI7SUFBQSxJQUFuQjtNQUFFL0I7SUFBVyxDQUFDLEdBQUErQixLQUFBO0lBQ3ZDekQsUUFBUSxDQUFDOUMsMkZBQVksQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTTBFLFdBQVcsR0FBRyxNQUFNckUsaUVBQW9CLENBQUMsQ0FBQyxDQUFDc0UsS0FBSyxDQUFDLE1BQ3JEQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUNqQixDQUFDO0lBRUQsTUFBTUMsTUFBTSxHQUFHO01BQ2JDLFlBQVksRUFBRUwsV0FBVztNQUN6QnlCLE1BQU0sRUFDSiw4RUFBOEU7TUFDaEZuQixLQUFLLEVBQUUsS0FBSztNQUNaYixJQUFJO01BQ0plLFFBQVEsRUFBRWQ7SUFDWixDQUFDO0lBQ0QsT0FBT3hFLHlGQUFVLENBQ2YsSUFBSSxFQUNKRSwyRkFBWSxDQUFDMEIsb0JBQW9CLENBQUMsS0FBQWtDLE1BQUEsQ0FDL0JjLFVBQVUsaUNBQUFkLE1BQUEsQ0FBOEJrQyxPQUFPLGVBQ2xEakcsMkZBQ0YsQ0FBQyxDQUFDbUYsTUFBTSxDQUFDLENBQUNoQyxRQUFRLENBQUMsQ0FDaEIwQyxJQUFJLENBQUVDLE9BQU8sSUFBSztNQUNqQjNDLFFBQVEsQ0FBQy9DLDBGQUFXLENBQUMsQ0FBQyxDQUFDO01BQ3ZCLE9BQU8wRixPQUFPO0lBQ2hCLENBQUMsQ0FBQyxDQUNEZCxLQUFLLENBQUVlLENBQUMsSUFBSztNQUNaNUMsUUFBUSxDQUFDL0MsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIrQyxRQUFRLENBQUNoRCwyRkFBWSxDQUFDMkIsMEJBQTBCLENBQUMsQ0FBQztNQUNsRCxPQUFPaUUsQ0FBQztJQUNWLENBQUMsQ0FBQztFQUNOLENBQUM7QUFBQTtBQUVJLE1BQU1jLGtCQUFrQixHQUM1QkMsTUFBTSxJQUNQLE9BQU8zRCxRQUFRLEVBQUE0RCxLQUFBLEtBQXFCO0VBQUEsSUFBbkI7SUFBRWxDO0VBQVcsQ0FBQyxHQUFBa0MsS0FBQTtFQUM3QixNQUFNaEMsV0FBVyxHQUFHLE1BQU1yRSxpRUFBb0IsQ0FBQyxDQUFDLENBQUNzRSxLQUFLLENBQUMsTUFDckRDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQ2pCLENBQUM7RUFFRCxNQUFNO0lBQUU4QjtFQUFRLENBQUMsR0FBR0YsTUFBTTtFQUUxQjNELFFBQVEsQ0FBQzlDLDJGQUFZLENBQUMsQ0FBQyxDQUFDO0VBRXhCLE1BQU00RixPQUFPLEdBQUdhLE1BQU0sQ0FBQ3pCLEtBQUssR0FBR3lCLE1BQU0sQ0FBQ3pCLEtBQUssQ0FBQ08sRUFBRSxHQUFHa0IsTUFBTSxDQUFDRyxRQUFRO0VBRWhFLE1BQU05QixNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFTDtFQUNoQixDQUFDO0VBRUQsT0FBT3pFLHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDeUIsbUJBQW1CLENBQUMsS0FBQW1DLE1BQUEsQ0FDOUJjLFVBQVUsaUNBQUFkLE1BQUEsQ0FBOEJrQyxPQUFPLGVBQUFsQyxNQUFBLENBQVkrQyxNQUFNLENBQUNsQixFQUFFLHlCQUN2RTtJQUFFb0I7RUFBUSxDQUFDLEVBQ1hoSCwyRkFDRixDQUFDLENBQUNtRixNQUFNLENBQUMsQ0FBQ2hDLFFBQVEsQ0FBQyxDQUNoQjBDLElBQUksQ0FBQyxNQUFNO0lBQ1YxQyxRQUFRLENBQUMvQywwRkFBVyxDQUFDLENBQUMsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FDRDRFLEtBQUssQ0FBRWUsQ0FBQyxJQUFLO0lBQ1o1QyxRQUFRLENBQUMvQywwRkFBVyxDQUFDLENBQUMsQ0FBQztJQUN2QixPQUFPMkYsQ0FBQztFQUNWLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFSSxNQUFNbUIsWUFBWSxHQUN2QkMsS0FBQTtFQUFBLElBQUM7SUFBRUw7RUFBTyxDQUFDLEdBQUFLLEtBQUE7RUFBQTtJQUNYO0lBQ0EsT0FBT2hFLFFBQVEsRUFBRXdCLFFBQVEsRUFBQXlDLEtBQUEsS0FBcUI7TUFBQSxJQUFuQjtRQUFFdkM7TUFBVyxDQUFDLEdBQUF1QyxLQUFBO01BQ3ZDLE1BQU1yQyxXQUFXLEdBQUcsTUFBTXJFLGlFQUFvQixDQUFDLENBQUMsQ0FBQ3NFLEtBQUssQ0FBQyxNQUNyREMsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FDakIsQ0FBQztNQUVEL0IsUUFBUSxDQUFDOUMsMkZBQVksQ0FBQyxDQUFDLENBQUM7TUFFeEIsTUFBTTRGLE9BQU8sR0FBR2EsTUFBTSxDQUFDekIsS0FBSyxHQUFHeUIsTUFBTSxDQUFDekIsS0FBSyxDQUFDTyxFQUFFLEdBQUdrQixNQUFNLENBQUNHLFFBQVE7TUFFaEUsTUFBTTlCLE1BQU0sR0FBRztRQUNiQyxZQUFZLEVBQUVMLFdBQVc7UUFDekJ5QixNQUFNLEVBQUUsNkJBQTZCO1FBQ3JDQyxNQUFNLEVBQUU7TUFDVixDQUFDO01BRUQsT0FBT3ZHLDRGQUFhLENBQ2xCLElBQUksRUFDSkMsMkZBQVksQ0FBQ3dCLGFBQWEsQ0FBQyxLQUFBb0MsTUFBQSxDQUN4QmMsVUFBVSxpQ0FBQWQsTUFBQSxDQUE4QmtDLE9BQU8sZUFBQWxDLE1BQUEsQ0FBWStDLE1BQU0sQ0FBQ2xCLEVBQUUsY0FDdkUsQ0FBQyxDQUFDLEVBQ0Y1RiwyRkFDRixDQUFDLENBQUNtRixNQUFNLENBQUMsQ0FBQ2hDLFFBQVEsQ0FBQyxDQUNoQjBDLElBQUksQ0FBRUMsT0FBTyxJQUFLO1FBQ2pCM0MsUUFBUSxDQUFDL0MsMEZBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdkIsT0FBTzBGLE9BQU87TUFDaEIsQ0FBQyxDQUFDLENBQ0RkLEtBQUssQ0FBRWUsQ0FBQyxJQUFLO1FBQ1o1QyxRQUFRLENBQUMvQywwRkFBVyxDQUFDLENBQUMsQ0FBQztRQUN2QixPQUFPMkYsQ0FBQztNQUNWLENBQUMsQ0FBQztJQUNOO0VBQUM7QUFBQTtBQUVJLE1BQU1zQixpQkFBaUIsR0FDNUJDLE1BQUE7RUFBQSxJQUFDO0lBQUVDO0VBQVEsQ0FBQyxHQUFBRCxNQUFBO0VBQUEsT0FDWixNQUFPbkUsUUFBUSxJQUFLO0lBQ2xCLE1BQU1xRSxLQUFLLEdBQUdqSCw4Q0FBTSxDQUFDTSxpRUFBbUIsQ0FBQztJQUN6QyxNQUFNNEcsb0JBQW9CLEdBQUdGLE9BQU8sQ0FBQ0csR0FBRyxDQUFFWixNQUFNLElBQzlDVSxLQUFLLENBQUMsTUFBTXJFLFFBQVEsQ0FBQytELFlBQVksQ0FBQztNQUFFSjtJQUFPLENBQUMsQ0FBQyxDQUFDLENBQ2hELENBQUM7SUFDRCxPQUFPN0IsT0FBTyxDQUFDMEMsR0FBRyxDQUFDLENBQUMsR0FBR0Ysb0JBQW9CLENBQUMsQ0FBQyxDQUMxQzVCLElBQUksQ0FBRStCLEdBQUcsSUFBSztNQUNiLE1BQU1DLHFCQUFxQixHQUFHRCxHQUFHLENBQzlCaEUsTUFBTSxDQUFFa0UsQ0FBQztRQUFBLElBQUFDLFdBQUE7UUFBQSxRQUFBQSxXQUFBLEdBQUtELENBQUMsQ0FBQ0UsUUFBUSxjQUFBRCxXQUFBLGdCQUFBQSxXQUFBLEdBQVZBLFdBQUEsQ0FBWUUsZUFBZSxjQUFBRixXQUFBLHVCQUEzQkEsV0FBQSxDQUE2QnJDLE1BQU07TUFBQSxFQUFDLENBQ2xEZ0MsR0FBRyxDQUFFSSxDQUFDLElBQUtBLENBQUMsQ0FBQ0UsUUFBUSxDQUFDO01BQ3pCLE9BQU9ILHFCQUFxQjtJQUM5QixDQUFDLENBQUMsQ0FDRDdDLEtBQUssQ0FBRWUsQ0FBQyxJQUFLQSxDQUFDLENBQUM7RUFDcEIsQ0FBQztBQUFBOztBQUVIO0FBQ08sTUFBTW1DLDRCQUE0QixHQUN0Q0Msc0JBQXNCLElBQU1oRixRQUFRLElBQ25DQSxRQUFRLENBQ05oRCwyRkFBWSxDQUFDc0MsK0JBQStCLENBQUMsQ0FBQzBGLHNCQUFzQixDQUN0RSxDQUFDOztBQUVMOztBQUVPLE1BQU1DLGlCQUFpQixHQUMzQkMsVUFBVSxJQUNYLE9BQU9sRixRQUFRLEVBQUV3QixRQUFRLEVBQUEyRCxNQUFBLEtBQXFCO0VBQUEsSUFBbkI7SUFBRXpEO0VBQVcsQ0FBQyxHQUFBeUQsTUFBQTtFQUN2QyxNQUFNO0lBQ0p4RCxXQUFXLEVBQUU7TUFBRXhCO0lBQU87RUFDeEIsQ0FBQyxHQUFHcUIsUUFBUSxDQUFDLENBQUM7RUFFZCxNQUFNSSxXQUFXLEdBQUcsTUFBTXJFLGlFQUFvQixDQUFDLENBQUMsQ0FBQ3NFLEtBQUssQ0FBQyxNQUNyREMsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FDakIsQ0FBQztFQUVELE1BQU1DLE1BQU0sR0FBRztJQUNiWCxJQUFJLEVBQUUsQ0FBQztJQUNQZSxRQUFRLEVBQUV6RSw0REFBYztJQUN4QjBGLE1BQU0sRUFBRSwyQ0FBMkM7SUFDbkRwQixZQUFZLEVBQUVMLFdBQVc7SUFDekIsVUFBVSxFQUFFO0VBQ2QsQ0FBQztFQUVELE1BQU13RCxRQUFRLE1BQUF4RSxNQUFBLENBQU1jLFVBQVUsc0JBQUFkLE1BQUEsQ0FBbUJULE1BQU0sQ0FBQ3NDLEVBQUUsaUJBQUE3QixNQUFBLENBQWNzRSxVQUFVLDZCQUEwQjtFQUU1RyxPQUFPcEkseUZBQVUsQ0FDZixJQUFJLEVBQ0pFLDJGQUFZLENBQUM4Qix1QkFBdUIsQ0FBQyxFQUNyQ3NHLFFBQVEsRUFDUnZJLDJGQUNGLENBQUMsQ0FBQ21GLE1BQU0sQ0FBQyxDQUFDaEMsUUFBUSxDQUFDLENBQUMwQyxJQUFJLENBQUMsTUFBTTtJQUM3QjFDLFFBQVEsQ0FBQy9DLDBGQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFSSxNQUFNb0ksU0FBUyxHQUNwQkEsQ0FBQ0MsUUFBUSxFQUFFeEMsT0FBTyxLQUNsQixPQUFPOUMsUUFBUSxFQUFFd0IsUUFBUSxFQUFBK0QsTUFBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUU3RDtFQUFXLENBQUMsR0FBQTZELE1BQUE7RUFDdkMsTUFBTTNELFdBQVcsR0FBRyxNQUFNckUsaUVBQW9CLENBQUMsQ0FBQyxDQUFDc0UsS0FBSyxDQUFDLE1BQ3JEQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUNqQixDQUFDO0VBRUQvQixRQUFRLENBQUM5QywyRkFBWSxDQUFDLENBQUMsQ0FBQztFQUV4QixNQUFNOEUsTUFBTSxHQUFHO0lBQ2JDLFlBQVksRUFBRUwsV0FBVztJQUN6QnlCLE1BQU0sRUFDSiw4RUFBOEU7SUFDaEZsQixTQUFTLEVBQUUscUNBQXFDO0lBQ2hEbUIsTUFBTSxFQUNKO0VBQ0osQ0FBQztFQUVELE1BQU04QixRQUFRLE1BQUF4RSxNQUFBLENBQU1jLFVBQVUsaUNBQUFkLE1BQUEsQ0FBOEJrQyxPQUFPLGVBQUFsQyxNQUFBLENBQVkwRSxRQUFRLENBQUU7RUFFekYsT0FBT3hJLHlGQUFVLENBQ2YsSUFBSSxFQUNKRSwyRkFBWSxDQUFDcUIsY0FBYyxDQUFDLEVBQzVCK0csUUFBUSxFQUNSdkksMkZBQ0YsQ0FBQyxDQUFDbUYsTUFBTSxDQUFDLENBQUNoQyxRQUFRLENBQUMsQ0FBQ3dGLE9BQU8sQ0FBQyxNQUFNO0lBQ2hDeEYsUUFBUSxDQUFDL0MsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVILE1BQU13SSxlQUFlLEdBQUlDLE1BQU0sSUFBSztFQUNsQyxNQUFNQyxnQkFBZ0IsR0FBQUMsYUFBQSxLQUFRRixNQUFNLENBQUU7RUFFdEMsSUFBSSxDQUFDQSxNQUFNLENBQUNHLGdCQUFnQixDQUFDcEQsRUFBRSxFQUFFO0lBQy9Ca0QsZ0JBQWdCLENBQUNFLGdCQUFnQixHQUFHSCxNQUFNLENBQUNHLGdCQUFnQjtFQUM3RCxDQUFDLE1BQU07SUFDTCxPQUFPRixnQkFBZ0IsQ0FBQ0UsZ0JBQWdCO0lBQ3hDRixnQkFBZ0IsQ0FBQ0csbUJBQW1CLEdBQUdKLE1BQU0sQ0FBQ0csZ0JBQWdCLENBQUNwRCxFQUFFO0VBQ25FO0VBRUEsT0FBT2tELGdCQUFnQjtBQUN6QixDQUFDO0FBRU0sTUFBTUksY0FBYyxHQUN6QkEsQ0FBQ0MsSUFBSSxFQUFFN0csT0FBTyxFQUFFOEcsV0FBVyxLQUMzQixDQUFDakcsUUFBUSxFQUFFd0IsUUFBUSxFQUFBMEUsTUFBQSxLQUF3QjtFQUFBLElBQUFDLG9CQUFBO0VBQUEsSUFBdEI7SUFBRUM7RUFBYyxDQUFDLEdBQUFGLE1BQUE7RUFDcEMsTUFBTTtJQUNKdkUsV0FBVyxFQUFFO01BQUV2QjtJQUFLO0VBQ3RCLENBQUMsR0FBR29CLFFBQVEsQ0FBQyxDQUFDO0VBQ2QsTUFBTTtJQUFFNEI7RUFBWSxDQUFDLEdBQUdoRCxJQUFJOztFQUU1QjtFQUNBO0VBQ0E7RUFDQSxNQUFNO0lBQ0ppRyxjQUFjO0lBQ2RDLG1CQUFtQjtJQUNuQkMsa0JBQWtCO0lBQ2xCVjtFQUNGLENBQUMsR0FBR0csSUFBSTtFQUNSLE1BQU1RLFVBQVUsR0FBRyxDQUFBUCxXQUFXLGFBQVhBLFdBQVcsZ0JBQUFFLG9CQUFBLEdBQVhGLFdBQVcsQ0FBRVEsT0FBTyxjQUFBTixvQkFBQSx1QkFBcEJBLG9CQUFBLENBQXNCMUQsRUFBRSxNQUFJd0QsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVTLFVBQVU7RUFDdEUsTUFBTUMsS0FBSyxHQUFHdkQsV0FBVyxDQUFDcEUsS0FBSyxLQUFLcUgsY0FBYztFQUNsRCxNQUFNTyxjQUFjLEdBQ2xCZixnQkFBZ0IsQ0FBQ2hGLElBQUksS0FBSzFCLE9BQU8sSUFDakNtSCxtQkFBbUIsS0FBS2xELFdBQVcsQ0FBQ3lELFVBQVUsSUFDOUNOLGtCQUFrQixLQUFLbkQsV0FBVyxDQUFDMEQsU0FBUztFQUU5QyxJQUFJSCxLQUFLLElBQUksQ0FBQ0gsVUFBVSxJQUFJSSxjQUFjLEVBQUU7SUFDMUMsTUFBTUcsVUFBVSxHQUFHO01BQ2pCRixVQUFVLEVBQUVQLG1CQUFtQjtNQUMvQlEsU0FBUyxFQUFFUCxrQkFBa0I7TUFDN0JwSCxPQUFPLEVBQUUwRyxnQkFBZ0IsQ0FBQ2hGLElBQUksSUFBSWdGO0lBQ3BDLENBQUM7O0lBRUQ7SUFDQU8sYUFBYSxDQUFDVyxVQUFVLENBQUM7RUFDM0I7QUFDRixDQUFDO0FBRUksTUFBTUMsaUJBQWlCLEdBQzVCQSxDQUFDckQsTUFBTSxFQUFFc0QsT0FBTyxLQUNoQixPQUFPakgsUUFBUSxFQUFFd0IsUUFBUSxFQUFBMEYsTUFBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUV4RjtFQUFXLENBQUMsR0FBQXdGLE1BQUE7RUFDdkMsTUFBTXRGLFdBQVcsR0FBRyxNQUFNckUsaUVBQW9CLENBQUMsQ0FBQyxDQUFDc0UsS0FBSyxDQUFDQyxPQUFPLENBQUNDLE1BQU0sQ0FBQztFQUV0RSxJQUFJLENBQUNILFdBQVcsRUFBRSxPQUFPRSxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUFDO0VBRXpDL0IsUUFBUSxDQUFDOUMsMkZBQVksQ0FBQyxDQUFDLENBQUM7RUFFeEIsTUFBTThFLE1BQU0sR0FBRztJQUNiQyxZQUFZLEVBQUVMLFdBQVc7SUFDekJ5QixNQUFNLEVBQ0osbUhBQW1IO0lBQ3JIbEIsU0FBUyxFQUFFLHFDQUFxQztJQUNoRG1CLE1BQU0sRUFDSjtFQUNKLENBQUM7RUFFRCxNQUFNNkQsT0FBTyxHQUFHOUosNEZBQVUsQ0FBQyxDQUFDO0VBQzVCLElBQUk4QixPQUFPLEdBQUcsRUFBRTtFQUNoQixJQUFJZ0ksT0FBTyxFQUFFO0lBQ1gsSUFBSTtNQUNGLE1BQU1DLFFBQVEsR0FBRyxJQUFJOUoseURBQWUsQ0FBQyxDQUFDO01BQ3RDLE1BQU0rSixHQUFHLEdBQUdELFFBQVEsQ0FBQ0UsTUFBTSxDQUFDSCxPQUFPLENBQUM7TUFDcENoSSxPQUFPLEdBQUdrSSxHQUFHLENBQUMxRSxPQUFPLENBQUN4RCxPQUFPO0lBQy9CLENBQUMsQ0FBQyxPQUFPeUQsQ0FBQyxFQUFFO01BQ1YyRSxPQUFPLENBQUNDLEdBQUcsQ0FBQyxPQUFPLEVBQUU1RSxDQUFDLENBQUM7TUFDdkIsT0FBT2QsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FBQztJQUN6QjtFQUNGO0VBRUEsTUFBTTRELGdCQUFnQixHQUFHRixlQUFlLENBQUN3QixPQUFPLENBQUM7RUFFakQsT0FBTzlKLHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDb0IsYUFBYSxDQUFDLEtBQUF3QyxNQUFBLENBQ3hCYyxVQUFVLDZDQUFBZCxNQUFBLENBQTBDK0MsTUFBTSxDQUFDbEIsRUFBRSxHQUNoRWtELGdCQUFnQixFQUNoQjlJLDJGQUNGLENBQUMsQ0FBQ21GLE1BQU0sQ0FBQyxDQUFDaEMsUUFBUSxDQUFDLENBQ2hCMEMsSUFBSSxDQUFDLFlBQVk7SUFDaEIxQyxRQUFRLENBQUMrRixjQUFjLENBQUNrQixPQUFPLEVBQUU5SCxPQUFPLEVBQUV3RSxNQUFNLENBQUM4RCxLQUFLLENBQUMsQ0FBQztJQUN4RHpILFFBQVEsQ0FBQy9DLDBGQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUMsQ0FBQyxDQUNENEUsS0FBSyxDQUFFZSxDQUFDLElBQUs7SUFDWjVDLFFBQVEsQ0FBQy9DLDBGQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8yRixDQUFDO0VBQ1YsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVJLE1BQU04RSxjQUFjLEdBQ3pCQSxDQUFDNUUsT0FBTyxFQUFFd0MsUUFBUSxFQUFFZSxjQUFjLEVBQUV4QyxPQUFPLEtBQzNDLE9BQU83RCxRQUFRLEVBQUV3QixRQUFRLEVBQUFtRyxNQUFBLEtBQXFCO0VBQUEsSUFBbkI7SUFBRWpHO0VBQVcsQ0FBQyxHQUFBaUcsTUFBQTtFQUN2QyxNQUFNL0YsV0FBVyxHQUFHLE1BQU1yRSxpRUFBb0IsQ0FBQyxDQUFDLENBQUNzRSxLQUFLLENBQUNDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDO0VBRXRFLElBQUksQ0FBQ0gsV0FBVyxFQUFFLE9BQU9FLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM7RUFFekMvQixRQUFRLENBQUM5QywyRkFBWSxDQUFDLENBQUMsQ0FBQztFQUV4QixNQUFNOEUsTUFBTSxHQUFHO0lBQ2JDLFlBQVksRUFBRUwsV0FBVztJQUN6QnlCLE1BQU0sRUFDSiw4RUFBOEU7SUFDaEZsQixTQUFTLEVBQUUscUNBQXFDO0lBQ2hEbUIsTUFBTSxFQUNKO0VBQ0osQ0FBQztFQUVELE9BQU9uRyx5RkFBVSxDQUNmLElBQUksRUFDSkgsMkZBQVksQ0FBQ3VCLGFBQWEsQ0FBQyxLQUFBcUMsTUFBQSxDQUN4QmMsVUFBVSxpQ0FBQWQsTUFBQSxDQUE4QmtDLE9BQU8sZUFBQWxDLE1BQUEsQ0FBWTBFLFFBQVEsZ0JBQ3RFO0lBQUVlLGNBQWM7SUFBRXhDO0VBQVEsQ0FBQyxFQUMzQmhILDJGQUNGLENBQUMsQ0FBQ21GLE1BQU0sQ0FBQyxDQUFDaEMsUUFBUSxDQUFDLENBQUN3RixPQUFPLENBQUMsTUFBTTtJQUNoQ3hGLFFBQVEsQ0FBQy9DLDBGQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFSSxNQUFNMkssY0FBYyxHQUN6QkEsQ0FBQzlFLE9BQU8sRUFBRXdDLFFBQVEsRUFBRXRHLEtBQUssRUFBRTZFLE9BQU8sS0FDbEMsT0FBTzdELFFBQVEsRUFBRXdCLFFBQVEsRUFBQXFHLE1BQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFbkc7RUFBVyxDQUFDLEdBQUFtRyxNQUFBO0VBQ3ZDLE1BQU1qRyxXQUFXLEdBQUcsTUFBTXJFLGlFQUFvQixDQUFDLENBQUMsQ0FBQ3NFLEtBQUssQ0FBQ0MsT0FBTyxDQUFDQyxNQUFNLENBQUM7RUFFdEUsSUFBSSxDQUFDSCxXQUFXLEVBQUUsT0FBT0UsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FBQztFQUV6Qy9CLFFBQVEsQ0FBQzlDLDJGQUFZLENBQUMsQ0FBQyxDQUFDO0VBRXhCLE1BQU04RSxNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFTCxXQUFXO0lBQ3pCeUIsTUFBTSxFQUFFO0VBQ1YsQ0FBQztFQUVELE9BQU90Ryw0RkFBYSxDQUNsQixJQUFJLEVBQ0pDLDJGQUFZLENBQUNzQixzQkFBc0IsQ0FBQyxLQUFBc0MsTUFBQSxDQUNqQ2MsVUFBVSxpQ0FBQWQsTUFBQSxDQUE4QmtDLE9BQU8sZUFBQWxDLE1BQUEsQ0FBWTBFLFFBQVEsZ0JBQ3RFLENBQUMsQ0FBQyxFQUNGekksMkZBQ0YsQ0FBQyxDQUFDbUYsTUFBTSxDQUFDLENBQUNoQyxRQUFRLENBQUMsQ0FBQzBDLElBQUksQ0FBQyxNQUN2QjFDLFFBQVEsQ0FBQzBILGNBQWMsQ0FBQzVFLE9BQU8sRUFBRXdDLFFBQVEsRUFBRXRHLEtBQUssRUFBRTZFLE9BQU8sQ0FBQyxDQUM1RCxDQUFDO0FBQ0gsQ0FBQztBQUVJLE1BQU1pRSxrQkFBa0IsR0FDN0JBLENBQUNuRSxNQUFNLEVBQUVzRCxPQUFPLEtBQ2hCLE9BQU9qSCxRQUFRLEVBQUV3QixRQUFRLEVBQUF1RyxNQUFBLEtBQXFCO0VBQUEsSUFBbkI7SUFBRXJHO0VBQVcsQ0FBQyxHQUFBcUcsTUFBQTtFQUN2QyxNQUFNbkcsV0FBVyxHQUFHLE1BQU1yRSxpRUFBb0IsQ0FBQyxDQUFDLENBQUNzRSxLQUFLLENBQUNDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDO0VBRXRFLElBQUksQ0FBQ0gsV0FBVyxFQUFFLE9BQU9FLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM7RUFFekMvQixRQUFRLENBQUM5QywyRkFBWSxDQUFDLENBQUMsQ0FBQztFQUV4QixNQUFNOEUsTUFBTSxHQUFHO0lBQ2JDLFlBQVksRUFBRUwsV0FBVztJQUN6QnlCLE1BQU0sRUFDSixtSEFBbUg7SUFDckhsQixTQUFTLEVBQUUscUNBQXFDO0lBQ2hEbUIsTUFBTSxFQUNKO0VBQ0osQ0FBQztFQUVELE9BQU9uRyx5RkFBVSxDQUNmLElBQUksRUFDSkgsMkZBQVksQ0FBQ29CLGFBQWEsQ0FBQyxLQUFBd0MsTUFBQSxDQUN4QmMsVUFBVSw2Q0FBQWQsTUFBQSxDQUEwQytDLE1BQU0sQ0FBQ2xCLEVBQUUsR0FDaEV3RSxPQUFPLEVBQ1BwSywyRkFDRixDQUFDLENBQUNtRixNQUFNLENBQUMsQ0FBQ2hDLFFBQVEsQ0FBQyxDQUNoQjBDLElBQUksQ0FBQyxZQUFZO0lBQ2hCMUMsUUFBUSxDQUFDL0MsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDLENBQ0Q0RSxLQUFLLENBQUVlLENBQUMsSUFBSztJQUNaNUMsUUFBUSxDQUFDL0MsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsT0FBTzJGLENBQUM7RUFDVixDQUFDLENBQUM7QUFDTixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMWpCSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDWTtBQUNYO0FBQ0Q7QUFDd0I7QUFDcEI7QUFDcUI7QUFDa0Q7QUFDaEM7QUFBQTtBQUU5RSxNQUFNbUcsWUFBWSxHQUFHM0gsSUFBQSxJQU1mO0VBQUEsSUFOZ0I7SUFDcEJ1QyxNQUFNO0lBQ054RCxNQUFNO0lBQ05kLGNBQWM7SUFDZDJKLFFBQVE7SUFDUkM7RUFDRixDQUFDLEdBQUE3SCxJQUFBO0VBQ0MsTUFBTTtJQUFFOEg7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFFOUIsTUFBTWlCLE1BQU0sR0FBR2YsaURBQVMsQ0FBQztJQUN2QmdCLGFBQWEsRUFBRVYsZ0VBQVksQ0FDekIvRSxNQUFNLENBQUM4RCxLQUFLLEVBQ1pwSSxjQUFjLEVBQ2QsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxFQUNKLEtBQUssRUFDTCxLQUFLLEVBQ0wsSUFDRixDQUFDO0lBQ0RnSyxnQkFBZ0IsRUFBRVoseUVBQXFCLENBQ3JDcEosY0FBYyxFQUNkLEtBQUssRUFDTCxLQUFLLEVBQ0xjLE1BQU0sQ0FBQ21KLGlDQUNULENBQUM7SUFDRE4sUUFBUSxFQUFHTyxNQUFNLElBQUs7TUFDcEIsTUFBTUMsZUFBZSxHQUFHZCxnRUFBWSxDQUNsQy9FLE1BQU0sQ0FBQzhELEtBQUssRUFDWnBJLGNBQWMsRUFDZGtLLE1BQU0sRUFDTixJQUFJLEVBQ0osS0FBSyxFQUNMLEtBQUssRUFDTCxJQUFJLEVBQ0osSUFDRixDQUFDO01BQ0QsT0FBT1AsUUFBUSxDQUFDUSxlQUFlLENBQUM7SUFDbEMsQ0FBQztJQUNEQyxrQkFBa0IsRUFBRTtFQUN0QixDQUFDLENBQUM7O0VBRUY7RUFDQWxCLG1FQUFnQixDQUFDWSxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7RUFFMUMsSUFBSSxDQUFBOUosY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUVrRCxNQUFNLE1BQUssQ0FBQyxFQUFFLE9BQU8sSUFBSTtFQUU3QyxvQkFDRXVHLHdEQUFBO0lBQU1FLFFBQVEsRUFBRUcsTUFBTSxDQUFDTyxZQUFhO0lBQUNDLFVBQVU7SUFBQUMsUUFBQSxnQkFDN0NkLHdEQUFBLENBQUNYLDhDQUFHO01BQUF5QixRQUFBLGdCQUNGaEIsdURBQUEsQ0FBQ1AsNkRBQW9CO1FBQUNoSixjQUFjLEVBQUVBLGNBQWU7UUFBQzhKLE1BQU0sRUFBRUE7TUFBTyxDQUFFLENBQUMsRUFDdkVoSixNQUFNLENBQUMwSiwrQkFBK0IsaUJBQ3JDakIsdURBQUEsQ0FBQ0osOEdBQXNCO1FBQ3JCVyxNQUFNLEVBQUVBLE1BQU87UUFDZlcsVUFBVSxFQUFFM0osTUFBTSxDQUFDMEosK0JBQWdDO1FBQ25ERSxVQUFVLEVBQUU1SixNQUFNLENBQUNtSjtNQUFrQyxDQUN0RCxDQUNGO0lBQUEsQ0FDRSxDQUFDLGVBQ05WLHVEQUFBLENBQUNOLG1EQUFVO01BQ1QwQixTQUFTLEVBQUVkLENBQUMsQ0FBQyx1QkFBdUIsQ0FBRTtNQUN0Q2UsV0FBVyxFQUFFZixDQUFDLENBQUMseUJBQXlCLENBQUU7TUFDMUNELE9BQU8sRUFBRUEsT0FBUTtNQUNqQmlCLFFBQVEsRUFBRWYsTUFBTSxDQUFDZ0I7SUFBYSxDQUMvQixDQUFDO0VBQUEsQ0FDRSxDQUFDO0FBRVgsQ0FBQztBQUVEcEIsWUFBWSxDQUFDcUIsU0FBUyxHQUFHO0VBQ3ZCekcsTUFBTSxFQUFFc0UsMERBQWdCLENBQUM4QixVQUFVO0VBQ25DNUosTUFBTSxFQUFFOEgsMERBQWdCLENBQUM4QixVQUFVO0VBQ25DMUssY0FBYyxFQUFFNEkseURBQWUsQ0FBQzhCLFVBQVU7RUFDMUNmLFFBQVEsRUFBRWYsd0RBQWMsQ0FBQzhCLFVBQVU7RUFDbkNkLE9BQU8sRUFBRWhCLHdEQUFjLENBQUM4QjtBQUMxQixDQUFDO0FBRUQsaUVBQWVoQixZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEdEO0FBQ1M7QUFNWjtBQUFBO0FBRXZCLE1BQU02QixZQUFZLEdBQUd4SixJQUFBO0VBQUEsSUFBQztJQUFFeUosSUFBSTtJQUFFNUIsT0FBTztJQUFFNkIsS0FBSztJQUFFQztFQUFZLENBQUMsR0FBQTNKLElBQUE7RUFBQSxvQkFDekQwSCx1REFBQSxDQUFDMEIsaURBQU07SUFDTEssSUFBSSxFQUFFQSxJQUFLO0lBQ1g1QixPQUFPLEVBQUVBLE9BQVE7SUFDakIsbUJBQWdCLG9CQUFvQjtJQUNwQyxvQkFBaUIsMEJBQTBCO0lBQUFXLFFBQUEsZ0JBRTNDaEIsc0RBQUEsQ0FBQytCLHNEQUFXO01BQUNsSSxFQUFFLEVBQUMsb0JBQW9CO01BQUFtSCxRQUFBLEVBQUVrQjtJQUFLLENBQWMsQ0FBQyxlQUMxRGxDLHNEQUFBLENBQUM2Qix3REFBYTtNQUFBYixRQUFBLGVBQ1poQixzREFBQSxDQUFDOEIsNERBQWlCO1FBQUNqSSxFQUFFLEVBQUMsMEJBQTBCO1FBQUFtSCxRQUFBLEVBQzdDbUI7TUFBVyxDQUNLO0lBQUMsQ0FDUCxDQUFDO0VBQUEsQ0FDVixDQUFDO0FBQUEsQ0FDVjtBQUVESCxZQUFZLENBQUNSLFNBQVMsR0FBRztFQUN2QlMsSUFBSSxFQUFFNUMsd0RBQWM7RUFDcEJnQixPQUFPLEVBQUVoQix3REFBYztFQUN2QjZDLEtBQUssRUFBRTdDLDBEQUFnQjtFQUN2QjhDLFdBQVcsRUFBRTlDLDBEQUFnQmdEO0FBQy9CLENBQUM7QUFFRCxpRUFBZUwsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaENEO0FBQ29CO0FBQ0s7QUFDaEI7O0FBRW5DO0FBQUE7QUFDQSxNQUFNUSxJQUFJLEdBQUdDLFFBQVEsQ0FBQ0MsZUFBZTs7QUFFckM7QUFDQSxNQUFNQyxTQUFTLEdBQUdDLGdCQUFnQixDQUFDSixJQUFJLENBQUMsQ0FBQ0ssZ0JBQWdCLENBQ3ZELHlCQUNGLENBQUM7QUFFRCxNQUFNQyxLQUFLLEdBQUdQLGlFQUFXLENBQUM7RUFDeEJRLE9BQU8sRUFBRTtJQUNQQyxPQUFPLEVBQUU7TUFDUEMsSUFBSSxFQUFFTjtJQUNSO0VBQ0Y7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNTyxXQUFXLEdBQUcxSyxJQUFBO0VBQUEsSUFBQztJQUFFd0k7RUFBUyxDQUFDLEdBQUF4SSxJQUFBO0VBQUEsb0JBQy9Cd0gsc0RBQUEsQ0FBQ3NDLHdEQUFhO0lBQUNRLEtBQUssRUFBRUEsS0FBTTtJQUFBOUIsUUFBQSxFQUFFQTtFQUFRLENBQWdCLENBQUM7QUFBQSxDQUN4RDtBQUVEa0MsV0FBVyxDQUFDMUIsU0FBUyxHQUFHO0VBQ3RCUixRQUFRLEVBQUUzQix3REFBYyxDQUFDOEI7QUFDM0IsQ0FBQztBQUVELGlFQUFlK0IsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3QkE7QUFDUztBQVFaO0FBQ29CO0FBQUE7QUFFM0MsTUFBTVUseUJBQXlCLEdBQUdwTCxJQUFBLElBVzVCO0VBQUEsSUFBQXFMLGdCQUFBO0VBQUEsSUFYNkI7TUFDakNDLFFBQVE7TUFDUkMsaUJBQWlCLEdBQUcsRUFBRTtNQUN0QkMsVUFBVSxHQUFHLEtBQUs7TUFDbEJoRCxRQUFRO01BQ1I1SSxLQUFLO01BQ0w2TCxRQUFRO01BQ1JDLGFBQWE7TUFDYkMsS0FBSztNQUNMQztJQUVGLENBQUMsR0FBQTVMLElBQUE7SUFESTZMLElBQUksR0FBQUMscUZBQUEsQ0FBQTlMLElBQUEsRUFBQStMLFNBQUE7RUFFUCxNQUFNQyxZQUFZLEdBQUdiLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdMLElBQUksRUFBRTZMLFFBQVEsQ0FBQ2pLLEVBQUUsQ0FBQztFQUN2RCxNQUFNNEssYUFBYSxHQUFHZixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTTNDLFVBQVUsR0FBRzJDLFFBQVEsQ0FBQ1ksU0FBUztFQUNyQyxNQUFNQyxpQkFBaUIsR0FBR2IsUUFBUSxDQUFDYyxtQkFBbUI7RUFFdEQsTUFBTUMsZUFBZSxHQUNuQixFQUFBaEIsZ0JBQUEsR0FBQUMsUUFBUSxDQUFDbkQsTUFBTSxjQUFBa0QsZ0JBQUEsdUJBQWZBLGdCQUFBLENBQWlCbEksR0FBRyxDQUFFbUosR0FBRyxLQUFNO0lBQzdCQyxLQUFLLEVBQUVELEdBQUcsQ0FBQ0MsS0FBSztJQUNoQjNNLEtBQUssRUFBRTBNLEdBQUcsQ0FBQ2pMLEVBQUUsQ0FBQ21MLFFBQVEsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUU7RUFFWCxNQUFNQyx3QkFBd0IsR0FBR0EsQ0FBQ0MsT0FBTyxFQUFFSixHQUFHLEtBQUs7SUFDakQsTUFBTUssVUFBVSxHQUFHL00sS0FBSyxJQUFJLEVBQUU7SUFDOUIsTUFBTWdOLG1CQUFtQixHQUFHRCxVQUFVLENBQUN4TCxNQUFNLEtBQUtnTCxpQkFBaUI7SUFDbkUsSUFBSVUsUUFBUTtJQUVaLElBQUlILE9BQU8sRUFBRTtNQUNYRyxRQUFRLEdBQUdELG1CQUFtQixHQUFHRCxVQUFVLEdBQUcsQ0FBQyxHQUFHQSxVQUFVLEVBQUVMLEdBQUcsQ0FBQztJQUNwRSxDQUFDLE1BQU07TUFDTE8sUUFBUSxHQUFHRixVQUFVLENBQUN0TixNQUFNLENBQUV5TixDQUFDLElBQUtBLENBQUMsS0FBS1IsR0FBRyxDQUFDO0lBQ2hEO0lBRUFaLGFBQWEsQ0FBQ00sWUFBWSxFQUFFYSxRQUFRLENBQUM7RUFDdkMsQ0FBQztFQUVELG9CQUNFckYsc0RBQUE7SUFFRW5HLEVBQUUsS0FBQTdCLE1BQUEsQ0FBS3dNLFlBQVksZUFBYTtJQUNoQ2UsU0FBUyxFQUFFeEIsaUJBQWtCO0lBQUEvQyxRQUFBLGVBRTdCZCx1REFBQSxDQUFDbUQsc0RBQVc7TUFDVi9CLFFBQVEsRUFBRTBDLFVBQVc7TUFDckJ3QixRQUFRLEVBQUVyRSxVQUFXO01BQ3JCc0UsU0FBUztNQUNUdEIsS0FBSyxFQUFFQSxLQUFNO01BQUFuRCxRQUFBLGdCQUViaEIsc0RBQUEsQ0FBQ3lELG9EQUFTO1FBQUF6QyxRQUFBLEVBQUV5RDtNQUFhLENBQVksQ0FBQyxFQUNyQ04sS0FBSyxpQkFBSW5FLHNEQUFBLENBQUN3RCx5REFBYztRQUFBeEMsUUFBQSxFQUFFb0QsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUMsZUFDOURwRSxzREFBQSxDQUFDdUQsb0RBQVM7UUFBQXZDLFFBQUEsRUFDUDZELGVBQWUsQ0FBQ2xKLEdBQUcsQ0FBRStKLEVBQUUsaUJBQ3RCMUYsc0RBQUEsQ0FBQ3NELDJEQUFnQjtVQUVmckwsSUFBSSxFQUFFdU0sWUFBYTtVQUNuQm1CLE9BQU8sZUFDTDNGLHNEQUFBLENBQUNvRCxtREFBUSxFQUFBcEcsYUFBQTtZQUNQa0ksT0FBTyxFQUFFOU0sS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUV3TixRQUFRLENBQUNGLEVBQUUsQ0FBQ3ROLEtBQUssQ0FBRTtZQUNuQzZMLFFBQVEsRUFBRzRCLEVBQUUsSUFDWFosd0JBQXdCLENBQUNZLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDWixPQUFPLEVBQUVRLEVBQUUsQ0FBQ3ROLEtBQUs7WUFFdEQ7VUFBQSxHQUNJaU0sSUFBSSxDQUNULENBQ0Y7VUFDRFUsS0FBSyxFQUFFVyxFQUFFLENBQUNYO1FBQU0sR0FaWFcsRUFBRSxDQUFDWCxLQWFULENBQ0Y7TUFBQyxDQUNPLENBQUMsRUFDWC9ELFFBQVE7SUFBQSxDQUNFO0VBQUMsR0FoQ1R3RCxZQWlDRixDQUFDO0FBRVYsQ0FBQztBQUVEWix5QkFBeUIsQ0FBQ3BDLFNBQVMsR0FBRztFQUNwQ3NDLFFBQVEsRUFBRXpFLDBEQUFnQixDQUFDOEIsVUFBVTtFQUNyQy9JLEtBQUssRUFBRWlILHlEQUFlO0VBQ3RCMEUsaUJBQWlCLEVBQUUxRSwwREFBZ0I7RUFDbkMyRSxVQUFVLEVBQUUzRSx3REFBYztFQUMxQjRFLFFBQVEsRUFBRTVFLHdEQUFjLENBQUM4QixVQUFVO0VBQ25DSCxRQUFRLEVBQUUzQix3REFBYztFQUN4QjZFLGFBQWEsRUFBRTdFLHdEQUFjO0VBQzdCOEUsS0FBSyxFQUFFOUUsd0RBQWM7RUFDckIrRSxVQUFVLEVBQUUvRSwwREFBZ0JnRDtBQUM5QixDQUFDO0FBRUQsaUVBQWV1Qix5QkFBeUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwR2Q7QUFDUztBQU1aO0FBQ21EO0FBQy9CO0FBQUE7QUFFM0MsTUFBTW9DLHFCQUFxQixHQUFHeE4sSUFBQSxJQVV4QjtFQUFBLElBVnlCO01BQzdCc0wsUUFBUTtNQUNSQyxpQkFBaUIsR0FBRyxFQUFFO01BQ3RCQyxVQUFVLEdBQUcsS0FBSztNQUNsQmhELFFBQVE7TUFDUjVJLEtBQUs7TUFDTCtMLEtBQUs7TUFDTEMsVUFBVTtNQUNWRjtJQUVGLENBQUMsR0FBQTFMLElBQUE7SUFESTZMLElBQUksR0FBQUMscUZBQUEsQ0FBQTlMLElBQUEsRUFBQStMLFNBQUE7RUFFUCxNQUFNQyxZQUFZLEdBQUdiLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdMLElBQUksRUFBRTZMLFFBQVEsQ0FBQ2pLLEVBQUUsQ0FBQztFQUN2RCxNQUFNNEssYUFBYSxHQUFHZixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTTNDLFVBQVUsR0FBRzJDLFFBQVEsQ0FBQ1ksU0FBUztFQUVyQyxvQkFDRTFFLHNEQUFBO0lBRUVuRyxFQUFFLEtBQUE3QixNQUFBLENBQUt3TSxZQUFZLGVBQWE7SUFDaENlLFNBQVMsRUFBRXhCLGlCQUFrQjtJQUFBL0MsUUFBQSxlQUU3QmQsdURBQUEsQ0FBQ21ELHNEQUFXO01BQUNvQyxTQUFTO01BQUN0QixLQUFLLEVBQUVBLEtBQU07TUFBQW5ELFFBQUEsZ0JBQ2xDaEIsc0RBQUEsQ0FBQ3NELDJEQUFnQjtRQUNmcUMsT0FBTyxlQUNMM0Ysc0RBQUEsQ0FBQ29ELG1EQUFRLEVBQUFwRyxhQUFBO1VBQ1AvRSxJQUFJLEVBQUV1TSxZQUFhO1VBQ25CVSxPQUFPLEVBQUUsQ0FBQyxDQUFDOU0sS0FBTTtVQUNqQjJNLEtBQUssZUFBRS9FLHNEQUFBLENBQUMrRiw0RkFBTztZQUFBL0UsUUFBQSxFQUFFeUQ7VUFBYSxDQUFVO1VBQ3hDO1FBQUEsR0FDSUosSUFBSSxDQUNULENBQ0Y7UUFDRFUsS0FBSyxlQUFFL0Usc0RBQUEsQ0FBQytGLDRGQUFPO1VBQUEvRSxRQUFBLEVBQUV5RDtRQUFhLENBQVUsQ0FBRTtRQUMxQ25ELFFBQVEsRUFBRTBDLFVBQVc7UUFDckJ3QixRQUFRLEVBQUVyRTtNQUFXLENBQ3RCLENBQUMsRUFDREgsUUFBUSxFQUNSbUQsS0FBSyxpQkFBSW5FLHNEQUFBLENBQUN3RCx5REFBYztRQUFBeEMsUUFBQSxFQUFFb0QsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUM7SUFBQSxDQUNuRDtFQUFDLEdBckJUSSxZQXNCRixDQUFDO0FBRVYsQ0FBQztBQUVEd0IscUJBQXFCLENBQUN4RSxTQUFTLEdBQUc7RUFDaENzQyxRQUFRLEVBQUV6RSwwREFBZ0IsQ0FBQzhCLFVBQVU7RUFDckMvSSxLQUFLLEVBQUVpSCx3REFBYztFQUNyQjBFLGlCQUFpQixFQUFFMUUsMERBQWdCO0VBQ25DMkUsVUFBVSxFQUFFM0Usd0RBQWM7RUFDMUIyQixRQUFRLEVBQUUzQix3REFBYztFQUN4QjZFLGFBQWEsRUFBRTdFLHdEQUFjO0VBQzdCOEUsS0FBSyxFQUFFOUUsd0RBQWM7RUFDckIrRSxVQUFVLEVBQUUvRSwwREFBZ0JnRDtBQUM5QixDQUFDO0FBRUQsaUVBQWUyRCxxQkFBcUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakVWO0FBQ1M7QUFDdUM7QUFDL0I7QUFBQTtBQUUzQyxNQUFNSSxxQkFBcUIsR0FBRzVOLElBQUEsSUFTeEI7RUFBQSxJQUFBcUwsZ0JBQUE7RUFBQSxJQVR5QjtNQUM3QkMsUUFBUTtNQUNSQyxpQkFBaUIsR0FBRyxFQUFFO01BQ3RCQyxVQUFVLEdBQUcsS0FBSztNQUNsQkUsYUFBYTtNQUNibEQsUUFBUTtNQUNSbUQsS0FBSztNQUNMQztJQUVGLENBQUMsR0FBQTVMLElBQUE7SUFESTZMLElBQUksR0FBQUMscUZBQUEsQ0FBQTlMLElBQUEsRUFBQStMLFNBQUE7RUFFUCxNQUFNQyxZQUFZLEdBQUdiLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdMLElBQUksRUFBRTZMLFFBQVEsQ0FBQ2pLLEVBQUUsQ0FBQztFQUN2RCxNQUFNNEssYUFBYSxHQUFHZixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTTNDLFVBQVUsR0FBRzJDLFFBQVEsQ0FBQ1ksU0FBUztFQUVyQyxNQUFNRyxlQUFlLEdBQ25CLEVBQUFoQixnQkFBQSxHQUFBQyxRQUFRLENBQUNuRCxNQUFNLGNBQUFrRCxnQkFBQSx1QkFBZkEsZ0JBQUEsQ0FBaUJsSSxHQUFHLENBQUVtSixHQUFHLEtBQU07SUFDN0JDLEtBQUssRUFBRUQsR0FBRyxDQUFDQyxLQUFLO0lBQ2hCM00sS0FBSyxFQUFFME0sR0FBRyxDQUFDakw7RUFDYixDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUU7RUFFWCxvQkFDRW1HLHNEQUFBO0lBRUVuRyxFQUFFLEtBQUE3QixNQUFBLENBQUt3TSxZQUFZLGVBQWE7SUFDaENlLFNBQVMsRUFBRXhCLGlCQUFrQjtJQUFBL0MsUUFBQSxlQUU3QmQsdURBQUEsQ0FBQ21ELHNEQUFXO01BQ1YvQixRQUFRLEVBQUUwQyxVQUFXO01BQ3JCd0IsUUFBUSxFQUFFckUsVUFBVztNQUNyQnNFLFNBQVM7TUFDVHRCLEtBQUssRUFBRUEsS0FBTTtNQUFBbkQsUUFBQSxnQkFFYmhCLHNEQUFBLENBQUNpRyxxREFBVTtRQUFDcE0sRUFBRSxLQUFBN0IsTUFBQSxDQUFLd00sWUFBWSxXQUFTO1FBQUF4RCxRQUFBLEVBQUV5RDtNQUFhLENBQWEsQ0FBQyxlQUNyRXpFLHNEQUFBLENBQUNtRyxpREFBTSxFQUFBbkosYUFBQSxDQUFBQSxhQUFBO1FBQ0xxSixPQUFPLEtBQUFyTyxNQUFBLENBQUt3TSxZQUFZLFdBQVM7UUFDakN2TSxJQUFJLEVBQUV1TSxZQUFhO1FBQ25CM0ssRUFBRSxFQUFFMkssWUFBYTtRQUNqQk8sS0FBSyxFQUFFTjtRQUNQO01BQUEsR0FDSUosSUFBSTtRQUNSaUMsS0FBSyxFQUFFO1VBQUVDLFlBQVksRUFBRTtRQUFHLENBQUU7UUFBQXZGLFFBQUEsRUFFM0I2RCxlQUFlLENBQUNsSixHQUFHLENBQUUrSixFQUFFLGlCQUN0QjFGLHNEQUFBLENBQUNrRyxtREFBUTtVQUFnQjlOLEtBQUssRUFBRXNOLEVBQUUsQ0FBQ3ROLEtBQU07VUFBQTRJLFFBQUEsRUFDdEMwRSxFQUFFLENBQUNYO1FBQUssR0FESVcsRUFBRSxDQUFDWCxLQUVSLENBQ1g7TUFBQyxFQUNJLENBQUMsRUFDUi9ELFFBQVE7SUFBQSxDQUNFO0VBQUMsR0EzQlR3RCxZQTRCRixDQUFDO0FBRVYsQ0FBQztBQUVENEIscUJBQXFCLENBQUM1RSxTQUFTLEdBQUc7RUFDaENzQyxRQUFRLEVBQUV6RSwwREFBZ0IsQ0FBQzhCLFVBQVU7RUFDckM0QyxpQkFBaUIsRUFBRTFFLDBEQUFnQjtFQUNuQzJFLFVBQVUsRUFBRTNFLHdEQUFjO0VBQzFCMkIsUUFBUSxFQUFFM0Isd0RBQWM7RUFDeEI4RSxLQUFLLEVBQUU5RSx3REFBYztFQUNyQitFLFVBQVUsRUFBRS9FLDBEQUFnQjtFQUM1QjZFLGFBQWEsRUFBRTdFLHdEQUFjc0M7QUFDL0IsQ0FBQztBQUVELGlFQUFleUUscUJBQXFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JFVjtBQUNTO0FBUVo7QUFDb0I7QUFBQTtBQUUzQyxNQUFNTSxzQkFBc0IsR0FBR2xPLElBQUEsSUFTekI7RUFBQSxJQUFBcUwsZ0JBQUE7RUFBQSxJQVQwQjtNQUM5QkMsUUFBUTtNQUNSQyxpQkFBaUIsR0FBRyxFQUFFO01BQ3RCQyxVQUFVLEdBQUcsS0FBSztNQUNsQmhELFFBQVE7TUFDUm1ELEtBQUs7TUFDTEMsVUFBVTtNQUNWRjtJQUVGLENBQUMsR0FBQTFMLElBQUE7SUFESTZMLElBQUksR0FBQUMscUZBQUEsQ0FBQTlMLElBQUEsRUFBQStMLFNBQUE7RUFFUCxNQUFNQyxZQUFZLEdBQUdiLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdMLElBQUksRUFBRTZMLFFBQVEsQ0FBQ2pLLEVBQUUsQ0FBQztFQUN2RCxNQUFNNEssYUFBYSxHQUFHZixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTTNDLFVBQVUsR0FBRzJDLFFBQVEsQ0FBQ1ksU0FBUztFQUVyQyxNQUFNRyxlQUFlLEdBQ25CLEVBQUFoQixnQkFBQSxHQUFBQyxRQUFRLENBQUNuRCxNQUFNLGNBQUFrRCxnQkFBQSx1QkFBZkEsZ0JBQUEsQ0FBaUJsSSxHQUFHLENBQUVtSixHQUFHLEtBQU07SUFDN0JDLEtBQUssRUFBRUQsR0FBRyxDQUFDQyxLQUFLO0lBQ2hCM00sS0FBSyxFQUFFME0sR0FBRyxDQUFDakwsRUFBRSxDQUFDbUwsUUFBUSxDQUFDO0VBQ3pCLENBQUMsQ0FBQyxDQUFDLEtBQUksRUFBRTtFQUVYLG9CQUNFaEYsc0RBQUE7SUFFRW5HLEVBQUUsS0FBQTdCLE1BQUEsQ0FBS3dNLFlBQVksZUFBYTtJQUNoQ2UsU0FBUyxFQUFFeEIsaUJBQWtCO0lBQUEvQyxRQUFBLGVBRTdCZCx1REFBQSxDQUFDbUQsc0RBQVc7TUFDVi9CLFFBQVEsRUFBRTBDLFVBQVc7TUFDckJ3QixRQUFRLEVBQUVyRSxVQUFXO01BQ3JCc0UsU0FBUztNQUNUdEIsS0FBSyxFQUFFQSxLQUFNO01BQUFuRCxRQUFBLGdCQUViaEIsc0RBQUEsQ0FBQ3lELG9EQUFTO1FBQUM1SixFQUFFLEtBQUE3QixNQUFBLENBQUt3TSxZQUFZLFdBQVM7UUFBQXhELFFBQUEsRUFBRXlEO01BQWEsQ0FBWSxDQUFDLEVBQ2xFTixLQUFLLGlCQUFJbkUsc0RBQUEsQ0FBQ3dELHlEQUFjO1FBQUF4QyxRQUFBLEVBQUVvRCxVQUFVLGFBQVZBLFVBQVUsY0FBVkEsVUFBVSxHQUFJO01BQUcsQ0FBaUIsQ0FBQyxlQUM5RHBFLHNEQUFBLENBQUN5RyxxREFBVSxFQUFBekosYUFBQSxDQUFBQSxhQUFBO1FBQ1Qsc0JBQUFoRixNQUFBLENBQW9Cd00sWUFBWSxXQUFTO1FBQ3pDdk0sSUFBSSxFQUFFdU07UUFDTjtNQUFBLEdBQ0lILElBQUk7UUFBQXJELFFBQUEsRUFFUDZELGVBQWUsQ0FBQ2xKLEdBQUcsQ0FBRStKLEVBQUUsaUJBQ3RCMUYsc0RBQUEsQ0FBQ3NELDJEQUFnQjtVQUVmbEwsS0FBSyxFQUFFc04sRUFBRSxDQUFDdE4sS0FBTTtVQUNoQnVOLE9BQU8sZUFBRTNGLHNEQUFBLENBQUN3RyxnREFBSyxJQUFFLENBQUU7VUFDbkJ6QixLQUFLLEVBQUVXLEVBQUUsQ0FBQ1g7UUFBTSxHQUhYVyxFQUFFLENBQUNYLEtBSVQsQ0FDRjtNQUFDLEVBQ1EsQ0FBQyxFQUNaL0QsUUFBUTtJQUFBLENBQ0U7RUFBQyxHQTVCVHdELFlBNkJGLENBQUM7QUFFVixDQUFDO0FBRURrQyxzQkFBc0IsQ0FBQ2xGLFNBQVMsR0FBRztFQUNqQ3NDLFFBQVEsRUFBRXpFLDBEQUFnQixDQUFDOEIsVUFBVTtFQUNyQzRDLGlCQUFpQixFQUFFMUUsMERBQWdCO0VBQ25DMkUsVUFBVSxFQUFFM0Usd0RBQWM7RUFDMUIyQixRQUFRLEVBQUUzQix3REFBYztFQUN4QjhFLEtBQUssRUFBRTlFLHdEQUFjO0VBQ3JCK0UsVUFBVSxFQUFFL0UsMERBQWdCO0VBQzVCNkUsYUFBYSxFQUFFN0Usd0RBQWNzQztBQUMvQixDQUFDO0FBRUQsaUVBQWUrRSxzQkFBc0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN0VYO0FBQ1M7QUFDa0I7QUFDVjtBQUFBO0FBRTNDLE1BQU1FLGlCQUFpQixHQUFHcE8sSUFBQSxJQU9wQjtFQUFBLElBUHFCO01BQ3pCc0wsUUFBUTtNQUNSQyxpQkFBaUIsR0FBRyxFQUFFO01BQ3RCQyxVQUFVLEdBQUcsS0FBSztNQUNsQmhELFFBQVE7TUFDUmtEO0lBRUYsQ0FBQyxHQUFBMUwsSUFBQTtJQURJNkwsSUFBSSxHQUFBQyxxRkFBQSxDQUFBOUwsSUFBQSxFQUFBK0wsU0FBQTtFQUVQLE1BQU1DLFlBQVksR0FBR2IsOENBQU0sQ0FBQ0csUUFBUSxDQUFDN0wsSUFBSSxFQUFFNkwsUUFBUSxDQUFDakssRUFBRSxDQUFDO0VBQ3ZELE1BQU00SyxhQUFhLEdBQUdmLGdEQUFRLENBQUNJLFFBQVEsQ0FBQztFQUN4QyxNQUFNM0MsVUFBVSxHQUFHMkMsUUFBUSxDQUFDWSxTQUFTO0VBRXJDLG9CQUNFMUUsc0RBQUE7SUFFRW5HLEVBQUUsS0FBQTdCLE1BQUEsQ0FBS3dNLFlBQVksZUFBYTtJQUNoQ2UsU0FBUyxFQUFFeEIsaUJBQWtCO0lBQUEvQyxRQUFBLGVBRTdCZCx1REFBQSxDQUFDcUQsb0RBQVM7TUFBQXZDLFFBQUEsZ0JBQ1JoQixzREFBQSxDQUFDMkcsb0RBQVMsRUFBQTNKLGFBQUE7UUFDUi9FLElBQUksRUFBRXVNLFlBQWE7UUFDbkJPLEtBQUssRUFBRU4sYUFBYztRQUNyQm5ELFFBQVEsRUFBRTBDLFVBQVc7UUFDckJ3QixRQUFRLEVBQUVyRSxVQUFXO1FBQ3JCc0UsU0FBUztRQUNUO01BQUEsR0FDSXBCLElBQUksQ0FDVCxDQUFDLEVBQ0RyRCxRQUFRO0lBQUEsQ0FDQTtFQUFDLEdBZlB3RCxZQWdCRixDQUFDO0FBRVYsQ0FBQztBQUVEb0MsaUJBQWlCLENBQUNwRixTQUFTLEdBQUc7RUFDNUJzQyxRQUFRLEVBQUV6RSwwREFBZ0IsQ0FBQzhCLFVBQVU7RUFDckM0QyxpQkFBaUIsRUFBRTFFLDBEQUFnQjtFQUNuQzJFLFVBQVUsRUFBRTNFLHdEQUFjO0VBQzFCMkIsUUFBUSxFQUFFM0Isd0RBQWM7RUFDeEI2RSxhQUFhLEVBQUU3RSx3REFBY3NDO0FBQy9CLENBQUM7QUFFRCxpRUFBZWlGLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekNWO0FBRWYsTUFBTU0sU0FBUyxHQUFHQSxDQUFDOU8sS0FBSyxFQUFFK08sSUFBSSxLQUFLO0VBQ3hDLE1BQU14RyxNQUFNLEdBQUd3RyxJQUFJLENBQUNDLGFBQWE7RUFFakMsSUFBSSxDQUFDaFAsS0FBSyxFQUFFLE9BQU8sS0FBSztFQUV4QixJQUFJaVAsS0FBSyxDQUFDQyxPQUFPLENBQUNsUCxLQUFLLENBQUMsRUFBRTtJQUN4QixJQUFJLENBQUNBLEtBQUssQ0FBQ3VCLE1BQU0sRUFBRSxPQUFPLEtBQUs7SUFDL0IsSUFBSWtDLEdBQUcsR0FBR3NMLElBQUksQ0FBQ0ksc0JBQXNCLEtBQUssS0FBSztJQUMvQzVHLE1BQU0sQ0FBQzZHLE9BQU8sQ0FBRWxDLENBQUMsSUFBSztNQUNwQixJQUFJNkIsSUFBSSxDQUFDSSxzQkFBc0IsS0FBSyxLQUFLLEVBQUU7UUFDekMxTCxHQUFHLEdBQUdBLEdBQUcsSUFBSXpELEtBQUssQ0FBQ3dOLFFBQVEsQ0FBQ04sQ0FBQyxDQUFDO01BQ2hDLENBQUMsTUFBTTtRQUNMO1FBQ0F6SixHQUFHLEdBQUdBLEdBQUcsSUFBSXpELEtBQUssQ0FBQ3dOLFFBQVEsQ0FBQ04sQ0FBQyxDQUFDO01BQ2hDO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsT0FBT3pKLEdBQUc7RUFDWjtFQUNBLE9BQU84RSxNQUFNLENBQUNpRixRQUFRLENBQUN4TixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTRNLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVNLE1BQU15QyxlQUFlLEdBQUdBLENBQUNOLElBQUksRUFBRU8sVUFBVSxFQUFFMUcsUUFBUSxLQUFLO0VBQzdELElBQUltRyxJQUFJLENBQUNRLFVBQVUsS0FBSyxTQUFTLEVBQUU7SUFDakMsSUFBSVIsSUFBSSxDQUFDUyxvQkFBb0IsS0FBSyxPQUFPLEVBQUU7TUFDekMsSUFBSUYsVUFBVSxFQUFFLE9BQU8xRyxRQUFRO01BQy9CLE9BQU8sSUFBSTtJQUNiO0lBQ0E7SUFDQSxJQUFJLENBQUMwRyxVQUFVLEVBQUU7TUFDZixPQUFPMUcsUUFBUTtJQUNqQjtJQUNBLE9BQU8sSUFBSTtFQUNiO0VBQ0E7RUFDQSxJQUFJbUcsSUFBSSxDQUFDUyxvQkFBb0IsS0FBSyxPQUFPLEVBQUU7SUFDekMsSUFBSSxDQUFDRixVQUFVLEVBQUUsT0FBTzFHLFFBQVE7SUFDaEMsT0FBTyxJQUFJO0VBQ2I7RUFDQSxJQUFJMEcsVUFBVSxFQUFFLE9BQU8xRyxRQUFRO0VBQy9CLE9BQU8sSUFBSTtBQUNiLENBQUM7QUFFTSxNQUFNMkMsTUFBTSxHQUFHQSxDQUFDa0UsSUFBSSxFQUFFQyxVQUFVLEtBQUs7RUFDMUMsTUFBTUMsTUFBTSxHQUFHRixJQUFJLENBQUNHLFdBQVcsQ0FBQyxDQUFDO0VBQ2pDLFVBQUFoUSxNQUFBLENBQVUrUCxNQUFNLENBQUNFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsT0FBQWpRLE1BQUEsQ0FBSThQLFVBQVU7QUFDL0QsQ0FBQztBQUVNLE1BQU1wRSxRQUFRLEdBQUl3RSxDQUFDO0VBQUEsSUFBQUMsUUFBQTtFQUFBLFFBQ3hCO0lBQ0FELENBQUMsYUFBREEsQ0FBQyxnQkFBQUMsUUFBQSxHQUFERCxDQUFDLENBQUVuRCxLQUFLLGNBQUFvRCxRQUFBLHVCQUFSQSxRQUFBLENBQVVGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUNBLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJO0VBQUM7QUFBQTtBQUV4RCxNQUFNRyxVQUFVLEdBQUlDLE1BQU0sSUFBSztFQUNwQyxJQUFJLENBQUNBLE1BQU0sRUFBRSxPQUFPLEtBQUs7RUFDekI7RUFDQSxJQUFJaEIsS0FBSyxDQUFDQyxPQUFPLENBQUNlLE1BQU0sQ0FBQyxFQUFFLE9BQU9BLE1BQU0sQ0FBQzFPLE1BQU0sR0FBRyxDQUFDO0VBQ25ELElBQUksT0FBTzBPLE1BQU0sS0FBSyxRQUFRLEVBQUUsT0FBT0EsTUFBTSxDQUFDMU8sTUFBTSxHQUFHLENBQUM7RUFDeEQsSUFBSSxPQUFPME8sTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPQSxNQUFNLEdBQUcsQ0FBQztFQUNqRCxJQUFJLE9BQU9BLE1BQU0sS0FBSyxTQUFTLEVBQUUsT0FBT0EsTUFBTTtFQUM5QyxPQUFPLEtBQUs7QUFDZCxDQUFDO0FBRU0sTUFBTUMsaUJBQWlCLEdBQUdBLENBQUNELE1BQU0sRUFBRUUsVUFBVSxLQUFLO0VBQ3ZELE1BQU1DLFdBQVcsR0FBR25CLEtBQUssQ0FBQ0MsT0FBTyxDQUFDZSxNQUFNLENBQUMsR0FBR0EsTUFBTSxHQUFHLENBQUNBLE1BQU0sQ0FBQztFQUU3RCxPQUFPRyxXQUFXLENBQUNDLElBQUksQ0FBRW5ELENBQUMsSUFBSztJQUM3QixJQUFJK0IsS0FBSyxDQUFDQyxPQUFPLENBQUNpQixVQUFVLENBQUMsRUFBRTtNQUM3QixPQUFPQSxVQUFVLENBQUMzQyxRQUFRLENBQUNOLENBQUMsQ0FBQztJQUMvQjtJQUNBLE9BQU9BLENBQUMsS0FBS2lELFVBQVU7RUFDekIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVNLE1BQU1HLG1CQUFtQixHQUFJUixDQUFDLElBQUs7RUFDeEMsUUFBUUEsQ0FBQyxDQUFDcFEsSUFBSTtJQUNaLEtBQUsrTyw2REFBcUI7TUFDeEIsT0FBTyxLQUFLO0lBQ2QsS0FBS0ksb0VBQTRCO01BQy9CLE9BQU8sSUFBSTtJQUNiLEtBQUtILGlFQUF5QjtNQUM1QixPQUFPLEVBQUU7SUFDWCxLQUFLRSxvRUFBNEI7SUFDakMsS0FBS0QsNkRBQXFCO01BQ3hCLE9BQU8sRUFBRTtJQUNYO01BQ0UsT0FBTyxFQUFFO0VBQ2I7QUFDRixDQUFDO0FBRU0sTUFBTTRCLFlBQVksR0FBR0EsQ0FBQ0MsR0FBRyxFQUFFOVEsSUFBSSxLQUFLO0VBQ3pDLFFBQVFBLElBQUk7SUFDVixLQUFLK08sNkRBQXFCO01BQ3hCLE9BQU8rQixHQUFHLEtBQUssTUFBTTtJQUN2QixLQUFLOUIsaUVBQXlCO01BQzVCLE9BQU8sQ0FBQThCLEdBQUcsYUFBSEEsR0FBRyx1QkFBSEEsR0FBRyxDQUFFQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUksRUFBRTtJQUM5QixLQUFLN0Isb0VBQTRCO0lBQ2pDLEtBQUtELDZEQUFxQjtNQUN4QixPQUFPNkIsR0FBRyxJQUFJLEVBQUU7SUFDbEIsS0FBSzNCLG9FQUE0QjtNQUMvQixPQUFPMkIsR0FBRyxJQUFJLElBQUk7SUFDcEI7TUFDRSxPQUFPQSxHQUFHO0VBQ2Q7QUFDRixDQUFDO0FBRU0sTUFBTUUscUJBQXFCLEdBQUl6SyxPQUFPLElBQUs7RUFDaEQsTUFBTTtNQUNKWixjQUFjO01BQ2RDLG1CQUFtQjtNQUNuQkMsa0JBQWtCO01BQ2xCVixnQkFBZ0I7TUFDaEI4TDtJQUVGLENBQUMsR0FBRzFLLE9BQU87SUFETjJLLGVBQWUsR0FBQTFFLHFGQUFBLENBQ2hCakcsT0FBTyxFQUFBa0csU0FBQTtFQUVYLE1BQU0wRSxXQUFXLEdBQUd4UCxNQUFNLENBQUN5UCxPQUFPLENBQUNGLGVBQWUsQ0FBQyxDQUFDck4sR0FBRyxDQUFDbkQsSUFBQTtJQUFBLElBQUMsQ0FBQzJRLEdBQUcsRUFBRS9RLEtBQUssQ0FBQyxHQUFBSSxJQUFBO0lBQUEsT0FBTTtNQUN6RTRRLFdBQVcsRUFBRUMsUUFBUSxDQUFDRixHQUFHLENBQUNOLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ1MsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7TUFDL0NqQixNQUFNLEVBQUVqUSxLQUFLLENBQUM0TSxRQUFRLENBQUM7SUFDekIsQ0FBQztFQUFBLENBQUMsQ0FBQztFQUVILE9BQU87SUFDTHZILGNBQWM7SUFDZEMsbUJBQW1CO0lBQ25CQyxrQkFBa0I7SUFDbEJWLGdCQUFnQjtJQUNoQjhMLG1CQUFtQjtJQUNuQkMsZUFBZSxFQUFFQztFQUNuQixDQUFDO0FBQ0gsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdklNLE1BQU1NLGlCQUFpQixHQUFHLE1BQU07QUFDaEMsTUFBTUMscUJBQXFCLEdBQUcsVUFBVTtBQUN4QyxNQUFNM0MscUJBQXFCLEdBQUcsVUFBVTtBQUN4QyxNQUFNSSw0QkFBNEIsR0FBRyxpQkFBaUI7QUFDdEQsTUFBTUYscUJBQXFCLEdBQUcsVUFBVTtBQUN4QyxNQUFNRCx5QkFBeUIsR0FBRyxjQUFjO0FBQ2hELE1BQU1FLDRCQUE0QixHQUFHLGlCQUFpQjtBQUN0RCxNQUFNeUMsd0JBQXdCLEdBQUcsYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNQckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBT1A7QUFTUDtBQUMwQztBQUNRO0FBQ0U7QUFDTTtBQUNSO0FBQUE7QUFFdkUsTUFBTUMseUJBQXlCLEdBQUlDLFlBQVksSUFBSztFQUNsRCxRQUFRQSxZQUFZO0lBQ2xCLEtBQUtILDZEQUFxQjtJQUMxQixLQUFLRCx5REFBaUI7TUFBRTtRQUN0QixPQUFPM0MscUVBQWlCO01BQzFCO0lBQ0EsS0FBS0MsNkRBQXFCO01BQUU7UUFDMUIsT0FBT2IseUVBQXFCO01BQzlCO0lBQ0EsS0FBS2lCLG9FQUE0QjtNQUFFO1FBQ2pDLE9BQU9QLDBFQUFzQjtNQUMvQjtJQUNBLEtBQUtJLGlFQUF5QjtNQUFFO1FBQzlCLE9BQU9sRCw2RUFBeUI7TUFDbEM7SUFDQSxLQUFLb0Qsb0VBQTRCO0lBQ2pDLEtBQUtELDZEQUFxQjtNQUFFO1FBQzFCLE9BQU9YLHlFQUFxQjtNQUM5QjtJQUNBO01BQVM7UUFDUCxPQUFPaEgsdURBQWM7TUFDdkI7RUFDRjtBQUNGLENBQUM7QUFFRCxNQUFNSyxvQkFBb0IsR0FBR2pILElBQUEsSUFPdkI7RUFBQSxJQVB3QjtJQUM1Qi9CLGNBQWM7SUFDZDhPLFNBQVMsR0FBRyxnQkFBZ0I7SUFDNUJ4QixpQkFBaUIsR0FBRyxlQUFlO0lBQ25DOEYsUUFBUSxHQUFHLEtBQUs7SUFDaEJDLFNBQVMsR0FBRyxJQUFJO0lBQ2hCdko7RUFDRixDQUFDLEdBQUEvSCxJQUFBO0VBQ0MsTUFBTXVSLFVBQVUsR0FBR0EsQ0FBQzVDLElBQUksRUFBRTNDLFlBQVksS0FDcENpRCxrRUFBZSxDQUNiTixJQUFJLEVBQ0pELDREQUFTLENBQUMzRyxNQUFNLENBQUNJLE1BQU0sQ0FBQzZELFlBQVksQ0FBQyxFQUFFMkMsSUFBSSxDQUFDO0VBQzVDO0VBQ0E2QyxjQUFjLENBQUM3QyxJQUFJLENBQUM4QyxZQUFZLENBQ2xDLENBQUM7RUFFSCxNQUFNRCxjQUFjLEdBQUk5QixDQUFDLElBQUs7SUFBQSxJQUFBZ0MscUJBQUE7SUFDNUIsTUFBTTFGLFlBQVksR0FBR2IseURBQU0sQ0FBQ3VFLENBQUMsQ0FBQ2pRLElBQUksRUFBRWlRLENBQUMsQ0FBQ3JPLEVBQUUsQ0FBQztJQUN6QztJQUNBLE1BQU1tSyxVQUFVLEdBQ2IsQ0FBQzhGLFNBQVMsSUFBSTFCLDZEQUFVLENBQUM3SCxNQUFNLENBQUNJLE1BQU0sQ0FBQzZELFlBQVksQ0FBQyxDQUFDLElBQUtxRixRQUFRO0lBQ3JFLE1BQU1NLHNCQUFzQixHQUFHVCx5QkFBeUIsQ0FBQ3hCLENBQUMsQ0FBQ3BRLElBQUksQ0FBQztJQUVoRSxNQUFNc1MsV0FBVyxHQUFHO01BQ2xCaFMsS0FBSyxFQUFFbUksTUFBTSxDQUFDSSxNQUFNLENBQUM2RCxZQUFZLENBQUM7TUFDbENQLFFBQVEsRUFBRTFELE1BQU0sQ0FBQzhKLFlBQVk7TUFDN0JDLE1BQU0sRUFBRS9KLE1BQU0sQ0FBQ2dLLFVBQVU7TUFDekJwRyxLQUFLLEVBQ0g1RCxNQUFNLENBQUNpSyxPQUFPLENBQUNoRyxZQUFZLENBQUMsSUFBSWlHLE9BQU8sQ0FBQ2xLLE1BQU0sQ0FBQ21LLE1BQU0sQ0FBQ2xHLFlBQVksQ0FBQyxDQUFDO01BQ3RFSixVQUFVLEVBQUU3RCxNQUFNLENBQUNpSyxPQUFPLENBQUNoRyxZQUFZLENBQUMsSUFBSWpFLE1BQU0sQ0FBQ21LLE1BQU0sQ0FBQ2xHLFlBQVksQ0FBQztNQUN2RU4sYUFBYSxFQUFFM0QsTUFBTSxDQUFDMkQ7SUFDeEIsQ0FBQztJQUVELG9CQUNFbEUsdURBQUEsQ0FBQ21LLHNCQUFzQixFQUFBbk4sYUFBQSxDQUFBQSxhQUFBO01BRXJCOEcsUUFBUSxFQUFFb0UsQ0FBRTtNQUNabkUsaUJBQWlCLEVBQUVBLGlCQUFrQjtNQUNyQ0MsVUFBVSxFQUFFQTtNQUNaO0lBQUEsR0FDSW9HLFdBQVc7TUFBQXBKLFFBQUEsR0FBQWtKLHFCQUFBLEdBRWRoQyxDQUFDLENBQUN5QyxrQkFBa0IsY0FBQVQscUJBQUEsdUJBQXBCQSxxQkFBQSxDQUFzQnZPLEdBQUcsQ0FBRXdMLElBQUksSUFBSzRDLFVBQVUsQ0FBQzVDLElBQUksRUFBRTNDLFlBQVksQ0FBQztJQUFDLElBUC9EQSxZQVFpQixDQUFDO0VBRTdCLENBQUM7RUFFRCxvQkFBT3hFLHVEQUFBO0lBQUt1RixTQUFTLEVBQUVBLFNBQVU7SUFBQXZFLFFBQUEsRUFBRXZLLGNBQWMsQ0FBQ2tGLEdBQUcsQ0FBQ3FPLGNBQWM7RUFBQyxDQUFNLENBQUM7QUFDOUUsQ0FBQztBQUVEdkssb0JBQW9CLENBQUMrQixTQUFTLEdBQUc7RUFDL0IvSyxjQUFjLEVBQUU0SSx5REFBZSxDQUFDOEIsVUFBVTtFQUMxQ29FLFNBQVMsRUFBRWxHLDBEQUFnQjtFQUMzQjBFLGlCQUFpQixFQUFFMUUsMERBQWdCO0VBQ25DeUssU0FBUyxFQUFFekssd0RBQWM7RUFDekJ3SyxRQUFRLEVBQUV4Syx3REFBYytDO0FBQzFCLENBQUM7QUFFRCxpRUFBZTNDLG9CQUFvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3hISztBQUNMO0FBQ0s7QUFDTztBQUNyQjtBQUNzQztBQUNnQjtBQUNwQjtBQUNWO0FBQ0Y7QUFDVTtBQUNYO0FBQUE7QUFFaEMsU0FBUzZMLGVBQWVBLENBQUE5UyxJQUFBLEVBQXdCO0VBQUEsSUFBdkI7SUFBRStTLFFBQVE7SUFBRUM7RUFBUSxDQUFDLEdBQUFoVCxJQUFBO0VBQzNELE1BQU07SUFBRThIO0VBQUUsQ0FBQyxHQUFHaEIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1tTSxHQUFHLEdBQUdYLDRDQUFLLENBQUMsQ0FBQztFQUNuQixNQUFNLENBQUNZLFNBQVMsRUFBRUMsWUFBWSxDQUFDLEdBQUdmLCtDQUFRLENBQUNhLEdBQUcsQ0FBQztFQUMvQyxNQUFNRyxZQUFZLEdBQUk5RyxHQUFHLElBQUs7SUFDNUI2RyxZQUFZLENBQUM3RyxHQUFHLENBQUM7SUFDakIsTUFBTStHLElBQUksR0FBRyxJQUFJQyxJQUFJLENBQUNoSCxHQUFHLENBQUNpSCxFQUFFLENBQUM7SUFDN0IsTUFBTTtNQUFFN1QsS0FBSztNQUFFQztJQUFNLENBQUMsR0FBR2dULG9FQUEyQixDQUFDVSxJQUFJLENBQUM7SUFDMUROLFFBQVEsQ0FBQztNQUNQelQsSUFBSSxFQUFFTCxxREFBZTtNQUNyQlEsSUFBSSxFQUFFLFNBQVM7TUFDZjRULElBQUk7TUFDSjNULEtBQUs7TUFDTEM7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDO0VBQ0QsTUFBTTZULGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0lBQzFCUixPQUFPLENBQUMsQ0FBQztJQUNURyxZQUFZLENBQUNGLEdBQUcsQ0FBQztFQUNuQixDQUFDO0VBQ0Qsb0JBQ0V2TCx3REFBQSxDQUFBbUwsd0RBQUE7SUFBQXJLLFFBQUEsZ0JBQ0VoQix1REFBQTtNQUFLdUYsU0FBUyxFQUFFNkYsaUVBQXVCO01BQUFwSyxRQUFBLEVBQUVWLENBQUMsQ0FBQyxxQkFBcUI7SUFBQyxDQUFNLENBQUMsZUFDeEVKLHdEQUFBLENBQUMySyw0REFBSztNQUNKcUIsVUFBVSxFQUFDLFFBQVE7TUFDbkI1VCxTQUFTLEVBQUMsS0FBSztNQUNmNlQsRUFBRSxFQUFFO1FBQUVDLEVBQUUsRUFBRSxDQUFDO1FBQUVDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFDckI5RyxTQUFTLEVBQUU2RixxRUFBMkI7TUFBQXBLLFFBQUEsZ0JBRXRDaEIsdURBQUEsQ0FBQ2tMLGtFQUFTO1FBQ1JxQixRQUFRLEVBQUMsT0FBTztRQUNoQmhILFNBQVMsRUFBRTZGLGlFQUF1QjtRQUNsQ3FCLE9BQU8sRUFBRVQ7TUFBYyxDQUN4QixDQUFDLGVBQ0ZoTSx1REFBQSxDQUFDZ0wsMEZBQW9CO1FBQUMwQixXQUFXLEVBQUUzQiwwRUFBYTtRQUFBL0osUUFBQSxlQUM5Q2hCLHVEQUFBLENBQUNpTCxzRUFBVTtVQUNUMUYsU0FBUyxFQUFFNkYsaUVBQXVCO1VBQ2xDbkgsUUFBUSxFQUFFMkgsWUFBYTtVQUN2QnhULEtBQUssRUFBRXNUO1FBQVUsQ0FDbEI7TUFBQyxDQUNrQixDQUFDO0lBQUEsQ0FDbEIsQ0FBQztFQUFBLENBQ1IsQ0FBQztBQUVQO0FBRUFKLGVBQWUsQ0FBQzlKLFNBQVMsR0FBRztFQUMxQitKLFFBQVEsRUFBRWxNLHdEQUFjO0VBQ3hCbU0sT0FBTyxFQUFFbk0sd0RBQWNzQztBQUN6QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5RDBEO0FBQ3hCO0FBQ0s7QUFDb0I7QUFDeEI7QUFDVztBQUNKO0FBQ0k7QUFBQTtBQUUvQyxTQUFTb0wsTUFBTUEsQ0FBQXZVLElBQUEsRUFBd0I7RUFBQSxJQUF2QjtJQUFFK1MsUUFBUTtJQUFFQztFQUFRLENBQUMsR0FBQWhULElBQUE7RUFDbkMsTUFBTTtJQUFFOEg7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDME4sY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHckMsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFDM0QsTUFBTSxDQUFDc0MsY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHdkMsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFDM0QsTUFBTSxDQUFDd0MsZUFBZSxFQUFFQyxrQkFBa0IsQ0FBQyxHQUFHekMsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFDN0QsTUFBTTBDLFNBQVMsR0FBR1YsNkNBQU0sQ0FBQyxJQUFJLENBQUM7RUFDOUIsTUFBTVcsd0JBQXdCLEdBQUlDLEtBQUssSUFBSztJQUMxQyxJQUFJRixTQUFTLENBQUNHLE9BQU8sSUFBSSxDQUFDSCxTQUFTLENBQUNHLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDRixLQUFLLENBQUMxSCxNQUFNLENBQUMsRUFBRTtNQUNsRSxJQUFJa0gsY0FBYyxFQUFFO1FBQ2xCQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7UUFDeEJFLGlCQUFpQixDQUFDLEtBQUssQ0FBQztNQUMxQjtJQUNGO0VBQ0YsQ0FBQztFQUNETixnREFBUyxDQUFDLE1BQU07SUFDZHBLLFFBQVEsQ0FBQ2tMLGdCQUFnQixDQUFDLE9BQU8sRUFBRUosd0JBQXdCLEVBQUUsS0FBSyxDQUFDO0lBQ25FLE9BQU8sTUFBTTtNQUNYOUssUUFBUSxDQUFDbUwsbUJBQW1CLENBQUMsT0FBTyxFQUFFTCx3QkFBd0IsRUFBRSxLQUFLLENBQUM7SUFDeEUsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDUCxjQUFjLENBQUMsQ0FBQztFQUVwQixNQUFNYSxNQUFNLEdBQUdBLENBQUEsS0FBTTtJQUNuQlosaUJBQWlCLENBQUMsQ0FBQ0QsY0FBYyxDQUFDO0lBQ2xDRyxpQkFBaUIsQ0FBQyxDQUFDRCxjQUFjLENBQUM7RUFDcEMsQ0FBQztFQUNELG9CQUNFaE4sdURBQUEsQ0FBQ1gsOENBQUc7SUFBQ2dHLFNBQVMsRUFBRTZGLGdFQUF1QjtJQUFDMkMsR0FBRyxFQUFFVCxTQUFVO0lBQUF0TSxRQUFBLGdCQUNyRGQsdURBQUEsQ0FBQzJLLDREQUFLO01BQ0pxQixVQUFVLEVBQUMsUUFBUTtNQUNuQjVULFNBQVMsRUFBQyxLQUFLO01BQ2Y2VCxFQUFFLEVBQUU7UUFBRUMsRUFBRSxFQUFFLENBQUM7UUFBRUMsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUNyQkksT0FBTyxFQUFFb0IsTUFBTztNQUFBN00sUUFBQSxnQkFFaEJoQixzREFBQSxDQUFDOE0sdUVBQWM7UUFBQ1AsUUFBUSxFQUFDLE9BQU87UUFBQ2hILFNBQVMsRUFBRTZGLDJEQUFpQjRDO01BQUMsQ0FBRSxDQUFDLEVBRWhFWixlQUFlLGlCQUFJcE4sc0RBQUE7UUFBS3VGLFNBQVMsRUFBRTZGLGdFQUF1QjtRQUFBcEssUUFBQSxFQUFDO01BQUMsQ0FBSyxDQUFDLGVBQ25FaEIsc0RBQUE7UUFBTXVGLFNBQVMsRUFBRTZGLDREQUFtQjtRQUFBcEssUUFBQSxFQUFFVixDQUFDLENBQUMsZUFBZTtNQUFDLENBQU8sQ0FBQztJQUFBLENBQzNELENBQUMsZUFDUk4sc0RBQUEsQ0FBQ1QsOENBQUc7TUFDRmdHLFNBQVMsS0FBQXZOLE1BQUEsQ0FBS29ULG9FQUEwQixPQUFBcFQsTUFBQSxDQUFJb1QsMERBQWdCLE9BQUFwVCxNQUFBLENBQzFEZ1YsY0FBYyxHQUFHNUIsK0RBQXFCLEdBQUcsRUFBRSxDQUMxQztNQUFBcEssUUFBQSxlQUVIaEIsc0RBQUEsQ0FBQ3NMLG1EQUFlO1FBQ2RFLE9BQU8sRUFBRUEsQ0FBQSxLQUFNO1VBQ2JBLE9BQU8sQ0FBQyxDQUFDO1VBQ1Q2QixrQkFBa0IsQ0FBQyxLQUFLLENBQUM7VUFDekJRLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBRTtRQUNGdEMsUUFBUSxFQUFHMVQsTUFBTSxJQUFLO1VBQ3BCMFQsUUFBUSxDQUFDMVQsTUFBTSxDQUFDO1VBQ2hCd1Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDO1FBQzFCO01BQUUsQ0FDSDtJQUFDLENBQ0MsQ0FBQztFQUFBLENBQ0gsQ0FBQztBQUVWO0FBRUFOLE1BQU0sQ0FBQ3ZMLFNBQVMsR0FBRztFQUNqQitKLFFBQVEsRUFBRWxNLHdEQUFjc0M7QUFDMUIsQ0FBQztBQUVELGlFQUFlb0wsTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEVtQjtBQUNMO0FBQ1c7QUFDTTtBQUNGO0FBQ0Y7QUFDWjtBQUNXO0FBQ1M7QUFBQTtBQUV4RCxNQUFNeUIsZUFBZSxHQUFHSCw0REFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU87RUFDM0NJLFFBQVEsRUFBRSxVQUFVO0VBQ3BCQyxXQUFXLEVBQUUsR0FBRztFQUNoQkMsVUFBVSxFQUFFLEdBQUc7RUFDZkMsS0FBSyxFQUFFLE1BQU07RUFDYkMsT0FBTyxFQUFFO0FBQ1gsQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNQyxpQkFBaUIsR0FBR1QsNERBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPO0VBQzdDVSxNQUFNLEVBQUUsTUFBTTtFQUNkTixRQUFRLEVBQUUsVUFBVTtFQUNwQkksT0FBTyxFQUFFLE1BQU07RUFDZjNDLFVBQVUsRUFBRSxRQUFRO0VBQ3BCOEMsY0FBYyxFQUFFO0FBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0gsTUFBTUMsZUFBZSxHQUFHWiw0REFBTSxDQUFDRSxnRUFBUyxDQUFDLENBQUMsT0FBTztFQUMvQ1csS0FBSyxFQUFFLFNBQVM7RUFDaEJDLFlBQVksRUFBRSwrQkFBK0I7RUFDN0NDLFdBQVcsRUFBRSxNQUFNO0VBQ25CQyxZQUFZLEVBQUUsTUFBTTtFQUNwQjlDLFFBQVEsRUFBRTtBQUNaLENBQUMsQ0FBQyxDQUFDO0FBQ0gsTUFBTStDLGdCQUFnQixHQUFHakIsNERBQU0sQ0FBQ25ELGtFQUFTLENBQUMsQ0FBQyxPQUFPO0VBQ2hEcUUsT0FBTyxFQUFFLEtBQUs7RUFDZGhELFFBQVEsRUFBRSxPQUFPO0VBQ2pCd0MsTUFBTSxFQUFFLE1BQU07RUFDZE4sUUFBUSxFQUFFLFVBQVU7RUFDcEJlLEdBQUcsRUFBRSxHQUFHO0VBQ1JDLEtBQUssRUFBRSxHQUFHO0VBQ1ZaLE9BQU8sRUFBRSxNQUFNO0VBQ2YzQyxVQUFVLEVBQUUsUUFBUTtFQUNwQjhDLGNBQWMsRUFBRSxRQUFRO0VBQ3hCVSxNQUFNLEVBQUUsU0FBUztFQUNqQkMsTUFBTSxFQUFFO0FBQ1YsQ0FBQyxDQUFDLENBQUM7QUFFSCxTQUFTQyxNQUFNQSxDQUFBcFgsSUFBQSxFQUF3QjtFQUFBLElBQXZCO0lBQUVxWCxRQUFRO0lBQUVyRTtFQUFRLENBQUMsR0FBQWhULElBQUE7RUFDbkMsTUFBTTtJQUFFOEg7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDd1EsU0FBUyxFQUFFQyxZQUFZLENBQUMsR0FBR25GLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQ2pELE1BQU0sQ0FBQ29GLFdBQVcsRUFBRUMsY0FBYyxDQUFDLEdBQUdyRiwrQ0FBUSxDQUFDLEVBQUUsQ0FBQztFQUNsRCxNQUFNc0YsU0FBUyxHQUFJMUMsS0FBSyxJQUFLO0lBQzNCLE1BQU07TUFDSnJFLEdBQUc7TUFDSGdILFdBQVcsRUFBRTtRQUNYckssTUFBTSxFQUFFO1VBQUUxTjtRQUFNO01BQ2xCO0lBQ0YsQ0FBQyxHQUFHb1YsS0FBSztJQUNULElBQUlyRSxHQUFHLEtBQUssT0FBTyxFQUFFO01BQ25CMEcsUUFBUSxDQUFDO1FBQ1B6WCxLQUFLO1FBQ0xILElBQUksRUFBRSxRQUFRO1FBQ2RILElBQUksRUFBRUosNkRBQXVCQTtNQUMvQixDQUFDLENBQUM7TUFDRnFZLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDcEI7RUFDRixDQUFDO0VBQ0QsTUFBTUssV0FBVyxHQUFHQSxDQUFBLEtBQU07SUFDeEJILGNBQWMsQ0FBQyxFQUFFLENBQUM7SUFDbEJGLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDbkJ2RSxPQUFPLENBQUMsQ0FBQztFQUNYLENBQUM7RUFDRCxvQkFDRXhMLHNEQUFBLENBQUNULDhDQUFHO0lBQUF5QixRQUFBLGVBQ0ZkLHVEQUFBLENBQUNzTyxlQUFlO01BQUF4TixRQUFBLEdBQ2I4TyxTQUFTLGlCQUNSOVAsc0RBQUEsQ0FBQ3NQLGdCQUFnQjtRQUFDN0MsT0FBTyxFQUFFMkQsV0FBWTtRQUFBcFAsUUFBQSxlQUNyQ2hCLHNEQUFBLENBQUNrTCxrRUFBUyxJQUFFO01BQUMsQ0FDRyxDQUNuQixlQUNEbEwsc0RBQUEsQ0FBQzhPLGlCQUFpQjtRQUFBOU4sUUFBQSxlQUNoQmhCLHNEQUFBLENBQUNzTyxtRUFBVSxJQUFFO01BQUMsQ0FDRyxDQUFDLGVBQ3BCdE8sc0RBQUEsQ0FBQ2lQLGVBQWU7UUFDZG9CLFdBQVcsRUFBRS9QLENBQUMsQ0FBQywyQkFBMkIsQ0FBRTtRQUM1Q2dRLFVBQVUsRUFBRTtVQUFFLFlBQVksRUFBRTtRQUFTLENBQUU7UUFDdkNsWSxLQUFLLEVBQUU0WCxXQUFZO1FBQ25CL0wsUUFBUSxFQUFHakssQ0FBQyxJQUFLaVcsY0FBYyxDQUFDalcsQ0FBQyxDQUFDOEwsTUFBTSxDQUFDMU4sS0FBSyxDQUFFO1FBQ2hEOFgsU0FBUyxFQUFFQTtNQUFVLENBQ3RCLENBQUM7SUFBQSxDQUNhO0VBQUMsQ0FDZixDQUFDO0FBRVY7QUFFQU4sTUFBTSxDQUFDcE8sU0FBUyxHQUFHO0VBQ2pCcU8sUUFBUSxFQUFFeFEsd0RBQWM7RUFDeEJtTSxPQUFPLEVBQUVuTSx3REFBY3NDO0FBQ3pCLENBQUM7QUFFRCxpRUFBZWlPLE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xHc0M7QUFDbkI7QUFDSTtBQUNvQjtBQUNqQjtBQUNBO0FBQUE7QUFFL0MsU0FBU2EsSUFBSUEsQ0FBQWpZLElBQUEsRUFBYTtFQUFBLElBQVo7SUFBRWtZO0VBQU8sQ0FBQyxHQUFBbFksSUFBQTtFQUN0QixNQUFNO0lBQUU4SDtFQUFFLENBQUMsR0FBR2hCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUNxUixRQUFRLEVBQUVDLFdBQVcsQ0FBQyxHQUFHaEcsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFDL0MsTUFBTWlHLE9BQU8sR0FBR2pFLDZDQUFNLENBQUMsSUFBSSxDQUFDO0VBQzVCLE1BQU1rRSxzQkFBc0IsR0FBSXRELEtBQUssSUFBSztJQUN4QyxJQUFJcUQsT0FBTyxDQUFDcEQsT0FBTyxJQUFJLENBQUNvRCxPQUFPLENBQUNwRCxPQUFPLENBQUNDLFFBQVEsQ0FBQ0YsS0FBSyxDQUFDMUgsTUFBTSxDQUFDLEVBQUU7TUFDOUQ4SyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ3BCO0VBQ0YsQ0FBQztFQUNEL0QsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2RwSyxRQUFRLENBQUNrTCxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVtRCxzQkFBc0IsRUFBRSxLQUFLLENBQUM7SUFDakUsT0FBTyxNQUFNO01BQ1hyTyxRQUFRLENBQUNtTCxtQkFBbUIsQ0FBQyxPQUFPLEVBQUVrRCxzQkFBc0IsRUFBRSxLQUFLLENBQUM7SUFDdEUsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDSCxRQUFRLENBQUMsQ0FBQztFQUVkLE1BQU05QyxNQUFNLEdBQUdBLENBQUEsS0FBTTtJQUNuQitDLFdBQVcsQ0FBQyxDQUFDRCxRQUFRLENBQUM7RUFDeEIsQ0FBQztFQUNELG9CQUNFelEsdURBQUEsQ0FBQ1gsOENBQUc7SUFBQ2dHLFNBQVMsRUFBRTZGLDhEQUFxQjtJQUFDcUIsT0FBTyxFQUFFb0IsTUFBTztJQUFBN00sUUFBQSxnQkFDcERkLHVEQUFBLENBQUMySyw0REFBSztNQUNKa0QsR0FBRyxFQUFFOEMsT0FBUTtNQUNiM0UsVUFBVSxFQUFDLFFBQVE7TUFDbkI1VCxTQUFTLEVBQUMsS0FBSztNQUNmNlQsRUFBRSxFQUFFO1FBQUVDLEVBQUUsRUFBRSxDQUFDO1FBQUVDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQXJMLFFBQUEsZ0JBRXJCaEIsc0RBQUEsQ0FBQ3dRLHlFQUFnQjtRQUFDakUsUUFBUSxFQUFDLE9BQU87UUFBQ2hILFNBQVMsRUFBRTZGLHlEQUFlNEY7TUFBQyxDQUFFLENBQUMsZUFDakVoUixzREFBQTtRQUFNdUYsU0FBUyxFQUFFNkYsMERBQWlCO1FBQUFwSyxRQUFBLEVBQUVWLENBQUMsQ0FBQyxXQUFXO01BQUMsQ0FBTyxDQUFDO0lBQUEsQ0FDckQsQ0FBQyxFQUNQcVEsUUFBUSxpQkFDUHpRLHVEQUFBLENBQUNYLDhDQUFHO01BQUNnRyxTQUFTLEtBQUF2TixNQUFBLENBQUtvVCxrRUFBd0IsT0FBQXBULE1BQUEsQ0FBSW9ULDBEQUFnQixDQUFHO01BQUFwSyxRQUFBLGdCQUNoRWhCLHNEQUFBLENBQUN1USxpREFBTTtRQUFDaEwsU0FBUyxFQUFFNkYsc0RBQWE7UUFBQ3FCLE9BQU8sRUFBRUEsQ0FBQSxLQUFNaUUsTUFBTSxDQUFDLE1BQU0sQ0FBRTtRQUFBMVAsUUFBQSxFQUM1RFYsQ0FBQyxDQUFDLGdCQUFnQjtNQUFDLENBQ2QsQ0FBQyxlQUNUTixzREFBQSxDQUFDdVEsaURBQU07UUFBQ2hMLFNBQVMsRUFBRTZGLHNEQUFhO1FBQUNxQixPQUFPLEVBQUVBLENBQUEsS0FBTWlFLE1BQU0sQ0FBQyxLQUFLLENBQUU7UUFBQTFQLFFBQUEsRUFDM0RWLENBQUMsQ0FBQyxnQkFBZ0I7TUFBQyxDQUNkLENBQUM7SUFBQSxDQUNOLENBQ047RUFBQSxDQUNFLENBQUM7QUFFVjtBQUVBLGlFQUFlbVEsSUFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuRE87QUFDUztBQUNFO0FBQ1A7QUFDSjtBQUNJO0FBQ2lCO0FBQUE7QUFFL0MsU0FBU1csZ0JBQWdCQSxDQUFBNVksSUFBQSxFQUEwQztFQUFBLElBQXpDO0lBQUUrUyxRQUFRO0lBQUVtRixNQUFNO0lBQUViLFFBQVE7SUFBRXJFO0VBQVEsQ0FBQyxHQUFBaFQsSUFBQTtFQUMvRCxvQkFDRTBILHVEQUFBLENBQUNpUiwrQ0FBSTtJQUFDaEQsU0FBUztJQUFDa0QsT0FBTyxFQUFDLFVBQVU7SUFBQ25GLFVBQVUsRUFBQyxRQUFRO0lBQUFsTCxRQUFBLGdCQUNwRGQsdURBQUEsQ0FBQ2lSLCtDQUFJO01BQ0hHLElBQUk7TUFDSkMsRUFBRSxFQUFFLENBQUU7TUFDTnBELFNBQVM7TUFDVG9CLE9BQU8sRUFBRSxDQUFFO01BQ1hpQyxHQUFHLEVBQUUsQ0FBRTtNQUNQak0sU0FBUyxFQUFFNkYsb0VBQTJCO01BQ3RDZSxFQUFFLEVBQUU7UUFBRUMsRUFBRSxFQUFFLENBQUM7UUFBRUMsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBckwsUUFBQSxnQkFFckJoQixzREFBQSxDQUFDbVIsK0NBQUk7UUFBQ0csSUFBSTtRQUFBdFEsUUFBQSxlQUNSaEIsc0RBQUEsQ0FBQytNLCtDQUFNO1VBQUN4QixRQUFRLEVBQUVBLFFBQVM7VUFBQ0MsT0FBTyxFQUFFQTtRQUFRLENBQUU7TUFBQyxDQUM1QyxDQUFDLGVBQ1B4TCxzREFBQSxDQUFDbVIsK0NBQUk7UUFBQ0csSUFBSTtRQUFBdFEsUUFBQSxlQUNSaEIsc0RBQUEsQ0FBQ3lRLDZDQUFJO1VBQUNDLE1BQU0sRUFBRUE7UUFBTyxDQUFFO01BQUMsQ0FDcEIsQ0FBQztJQUFBLENBQ0gsQ0FBQyxlQUNQMVEsc0RBQUEsQ0FBQ21SLCtDQUFJO01BQUNHLElBQUk7TUFBQ0MsRUFBRSxFQUFFLENBQUU7TUFBQ3BELFNBQVM7TUFBQ2EsY0FBYyxFQUFDLFVBQVU7TUFBQWhPLFFBQUEsZUFDbkRoQixzREFBQSxDQUFDNFAsK0NBQU07UUFBQ0MsUUFBUSxFQUFFQSxRQUFTO1FBQUNyRSxPQUFPLEVBQUVBO01BQVEsQ0FBRTtJQUFDLENBQzVDLENBQUM7RUFBQSxDQUNILENBQUM7QUFFWDtBQUVBNEYsZ0JBQWdCLENBQUM1UCxTQUFTLEdBQUc7RUFDM0IrSixRQUFRLEVBQUVsTSx3REFBYztFQUN4QnFSLE1BQU0sRUFBRXJSLHdEQUFjO0VBQ3RCd1EsUUFBUSxFQUFFeFEsd0RBQWM7RUFDeEJtTSxPQUFPLEVBQUVuTSx3REFBY3NDO0FBQ3pCLENBQUM7QUFFRCxpRUFBZXlQLGdCQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN6Qy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQUNTO0FBRUc7QUFBQTtBQUUvQyxNQUFNMVIsVUFBVSxHQUFHbEgsSUFBQTtFQUFBLElBQUM7SUFBRTRJLFNBQVM7SUFBRUMsV0FBVztJQUFFaEIsT0FBTztJQUFFaUI7RUFBUyxDQUFDLEdBQUE5SSxJQUFBO0VBQUEsb0JBQy9EMEgsdURBQUEsQ0FBQ1gsOENBQUc7SUFBQ2dHLFNBQVMsRUFBRTZGLHVEQUFjO0lBQUFwSyxRQUFBLGdCQUM1QmhCLHNEQUFBLENBQUN1USxpREFBTTtNQUNMaEwsU0FBUyxFQUFFNkYsMERBQWlCO01BQzVCOEQsS0FBSyxFQUFDLFNBQVM7TUFDZjBDLElBQUksRUFBQyxPQUFPO01BQ1pDLE9BQU8sRUFBQyxVQUFVO01BQ2xCcEYsT0FBTyxFQUFFcE0sT0FBUTtNQUNqQmlCLFFBQVEsRUFBRUEsUUFBUztNQUFBTixRQUFBLEVBRWxCSztJQUFXLENBQ04sQ0FBQyxlQUNUckIsc0RBQUEsQ0FBQ3VRLGlEQUFNO01BQ0x6WSxJQUFJLEVBQUMsUUFBUTtNQUNieU4sU0FBUyxFQUFFNkYsd0RBQWU7TUFDMUJ5RyxPQUFPLEVBQUMsV0FBVztNQUNuQjNDLEtBQUssRUFBQyxTQUFTO01BQ2YwQyxJQUFJLEVBQUMsT0FBTztNQUNadFEsUUFBUSxFQUFFQSxRQUFTO01BQUFOLFFBQUEsRUFFbEJJO0lBQVMsQ0FDSixDQUFDO0VBQUEsQ0FDTixDQUFDO0FBQUEsQ0FDUDtBQUVEMUIsVUFBVSxDQUFDOEIsU0FBUyxHQUFHO0VBQ3JCSixTQUFTLEVBQUUvQiwwREFBZ0I7RUFDM0JnQyxXQUFXLEVBQUVoQywwREFBZ0I7RUFDN0JnQixPQUFPLEVBQUVoQix3REFBYztFQUN2QmlDLFFBQVEsRUFBRWpDLHdEQUFjK0M7QUFDMUIsQ0FBQztBQUVELGlFQUFlMUMsVUFBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkRDO0FBQ3dCO0FBQ0g7QUFBQTtBQUUvQyxTQUFTc1MsVUFBVUEsQ0FBQXhaLElBQUEsRUFBNkM7RUFBQSxJQUE1QztJQUFFeUMsT0FBTztJQUFFaVUsS0FBSztJQUFFK0MsVUFBVTtJQUFFQztFQUFXLENBQUMsR0FBQTFaLElBQUE7RUFDNUQsb0JBQ0UwSCx1REFBQTtJQUNFcUYsU0FBUyxLQUFBdk4sTUFBQSxDQUFLb1QsMkRBQWlCLE9BQUFwVCxNQUFBLENBQUlpYSxVQUFVLElBQUlBLFVBQVUsQ0FBRztJQUM5RDNMLEtBQUssRUFBRTtNQUFFNEk7SUFBTSxDQUFFO0lBQ2pCLGVBQWFnRCxVQUFXO0lBQUFsUixRQUFBLGdCQUV4QmhCLHNEQUFBLENBQUMrUixrRUFBUztNQUFDNUYsRUFBRSxFQUFFO1FBQUUrQztNQUFNO0lBQUUsQ0FBRSxDQUFDLEVBQzNCalUsT0FBTztFQUFBLENBQ0osQ0FBQztBQUVYO0FBRUEsaUVBQWUrVyxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqQkM7QUFDUztBQUNPO0FBQ0E7QUFDUTtBQUNIO0FBQUE7QUFFL0MsTUFBTU0sZUFBZSxHQUFHOVosSUFBQTtFQUFBLElBQUM7SUFBRXdJLFFBQVE7SUFBRWlCLElBQUk7SUFBRXNRO0VBQWMsQ0FBQyxHQUFBL1osSUFBQTtFQUFBLG9CQUN0RHdILHNEQUFBLENBQUNvUyw2REFBTTtJQUNMSSxNQUFNLEVBQUMsT0FBTztJQUNkdlEsSUFBSSxFQUFFQSxJQUFLO0lBQ1g1QixPQUFPLEVBQUVrUyxhQUFjO0lBQ3ZCak0sS0FBSyxFQUFFO01BQUVxSixNQUFNLEVBQUU7SUFBSyxDQUFFO0lBQ3hCOEMsVUFBVSxFQUFFO01BQ1Z0RyxFQUFFLEVBQUU7UUFDRnlDLEtBQUssRUFBRTtNQUNUO0lBQ0YsQ0FBRTtJQUFBNU4sUUFBQSxlQUVGZCx1REFBQSxDQUFDbVMsb0RBQVM7TUFBQzlNLFNBQVMsRUFBRTZGLG1FQUEwQjtNQUFBcEssUUFBQSxnQkFDOUNoQixzREFBQSxDQUFDa0wsa0VBQVM7UUFDUnFCLFFBQVEsRUFBQyxPQUFPO1FBQ2hCaEgsU0FBUyxFQUFFNkYsbUVBQTBCO1FBQ3JDcUIsT0FBTyxFQUFFOEYsYUFBYztRQUN2QixlQUFZO01BQWMsQ0FDM0IsQ0FBQyxFQUNEdlIsUUFBUTtJQUFBLENBQ0E7RUFBQyxDQUNOLENBQUM7QUFBQSxDQUNWO0FBRUhzUixlQUFlLENBQUM5USxTQUFTLEdBQUc7RUFDMUJSLFFBQVEsRUFBRTNCLHdEQUFjO0VBQ3hCNEMsSUFBSSxFQUFFNUMsd0RBQWM7RUFDcEJrVCxhQUFhLEVBQUVsVCx3REFBY3NDO0FBQy9CLENBQUM7QUFFRCxpRUFBZTJRLGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JDcUI7QUFDa0I7QUFDdEI7QUFDWDtBQUN5QjtBQUNYO0FBQ1o7QUFDd0I7QUFDTjtBQUNMO0FBQ1g7QUFDTztBQUFBO0FBRS9DLE1BQU1hLGVBQWUsR0FBR0EsQ0FBQSxLQUFNO0VBQzVCLE1BQU07SUFBRTdTO0VBQUUsQ0FBQyxHQUFHaEIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1sSSxRQUFRLEdBQUd3Yix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUNKcmIsTUFBTTtJQUNONmIsWUFBWTtJQUNaQyxtQkFBbUI7SUFDbkJDLGdCQUFnQjtJQUNoQkMsZUFBZTtJQUNmQztFQUNGLENBQUMsR0FBR1gsd0RBQVcsQ0FBRVksS0FBSyxJQUFLQSxLQUFLLENBQUMxYSxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQUUrWixxREFBWSxDQUFDO0VBQ2pFLE1BQU0sQ0FBQ2piLE1BQU0sRUFBRTZiLFNBQVMsQ0FBQyxHQUFHOUksK0NBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUN4QyxNQUFNLENBQUNqUyxJQUFJLEVBQUVnYixPQUFPLENBQUMsR0FBRy9JLCtDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFFcEMsTUFBTVksT0FBTyxHQUFHQSxDQUFBLEtBQU07SUFDcEJtSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDWEQsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2J0YyxRQUFRLENBQUNDLHFEQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUM7RUFFRCxNQUFNdWMsU0FBUyxHQUFHLE1BQU9uYixJQUFJLElBQUs7SUFDaENyQixRQUFRLENBQ05tQix1REFBYSxDQUFDO01BQ1pFLElBQUk7TUFDSkMsT0FBTyxFQUFFNmEsZUFBZTtNQUN4QjFiLE1BQU07TUFDTmM7SUFDRixDQUFDLENBQ0gsQ0FBQztFQUNILENBQUM7RUFFRGtVLGdEQUFTLENBQUMsTUFBTTtJQUNkK0csU0FBUyxDQUFDUCxtQkFBbUIsQ0FBQztFQUNoQyxDQUFDLEVBQUUsQ0FBQ3hiLE1BQU0sQ0FBQyxDQUFDO0VBRVosTUFBTTBULFFBQVEsR0FBSTFULE1BQU0sSUFBSztJQUMzQjhiLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNYRCxTQUFTLENBQUM3YixNQUFNLENBQUM7RUFDbkIsQ0FBQztFQUNELE1BQU02WSxNQUFNLEdBQUlwWSxTQUFTLElBQUs7SUFDNUJvYixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDYkMsT0FBTyxDQUFDO01BQUVyYixTQUFTO01BQUVMLElBQUksRUFBRTtJQUFVLENBQUMsQ0FBQztFQUN6QyxDQUFDO0VBRUQsb0JBQ0VpSSx3REFBQSxDQUFDZ0QscURBQVc7SUFBQWxDLFFBQUEsZ0JBQ1ZoQix1REFBQSxDQUFDb1IseURBQWdCO01BQ2Y3RixRQUFRLEVBQUVBLFFBQVM7TUFDbkJtRixNQUFNLEVBQUVBLE1BQU87TUFDZmIsUUFBUSxFQUFFdEUsUUFBUztNQUNuQkMsT0FBTyxFQUFFQTtJQUFRLENBQ2xCLENBQUMsZUFDRnRMLHdEQUFBLENBQUNYLDhDQUFHO01BQ0ZnRyxTQUFTLEVBQUU2Riw4REFBb0I7TUFDL0JlLEVBQUUsRUFBRTtRQUFFb0QsT0FBTyxFQUFFO1VBQUVnQyxFQUFFLEVBQUUsQ0FBQztVQUFFdUMsRUFBRSxFQUFFLENBQUM7VUFBRUMsRUFBRSxFQUFFO1FBQUU7TUFBRSxDQUFFO01BQ3pDLGVBQVkseUJBQXlCO01BQUEvUyxRQUFBLGdCQUVyQ2hCLHVEQUFBO1FBQUl1RixTQUFTLEVBQUU2RixpRUFBdUI7UUFBQXBLLFFBQUEsRUFBRXpKLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFVTtNQUFJLENBQUssQ0FBQyxlQUMxRCtILHVEQUFBO1FBQUl1RixTQUFTLEVBQUU2RixpRUFBdUI7UUFBQXBLLFFBQUEsRUFDbkNpUywwRUFBc0IsQ0FBQzFiLE1BQU07TUFBQyxDQUM3QixDQUFDO0lBQUEsQ0FDRixDQUFDLEVBQ0w2YixZQUFZLGFBQVpBLFlBQVksZUFBWkEsWUFBWSxDQUFFelosTUFBTSxnQkFDbkJxRyx1REFBQSxDQUFDK1Msd0VBQWM7TUFDYmtCLFVBQVUsRUFBRVQsWUFBYTtNQUN6QlUsSUFBSSxFQUFFQSxDQUFBLEtBQU1OLFNBQVMsQ0FBQ1AsbUJBQW1CLEdBQUdILDJEQUFhLENBQUU7TUFDM0RpQixPQUFPLEVBQUVkLG1CQUFtQixHQUFHQyxnQkFBaUI7TUFDaERjLGVBQWUsRUFBRSxDQUFFO01BQUFwVCxRQUFBLEVBRWxCb1MsWUFBWSxhQUFaQSxZQUFZLHVCQUFaQSxZQUFZLENBQUV6WCxHQUFHLENBQUVyQyxLQUFLLGlCQUN2QjBHLHVEQUFBLENBQUNnVCxtREFBVTtRQUVUMVosS0FBSyxFQUFFQSxLQUFNO1FBQ2IvQixNQUFNLEVBQUVBO01BQU8sR0FGVitCLEtBQUssQ0FBQythLE1BQU0sR0FBRy9hLEtBQUssQ0FBQ08sRUFHM0IsQ0FDRjtJQUFDLENBQ1ksQ0FBQyxnQkFFakJtRyx1REFBQSxDQUFDVCw4Q0FBRztNQUFDZ0csU0FBUyxFQUFFNkYsK0RBQXFCO01BQUFwSyxRQUFBLEVBQUVWLENBQUMsQ0FBQyxrQkFBa0I7SUFBQyxDQUFNLENBQ25FO0VBQUEsQ0FDVSxDQUFDO0FBRWxCLENBQUM7QUFDRCxpRUFBZTZTLGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoR0o7QUFDUztBQUNZO0FBQ0w7QUFDRTtBQUN1QjtBQUNwQjtBQUFBO0FBRS9DLFNBQVN1QixpQkFBaUJBLENBQUFsYyxJQUFBLEVBQTZCO0VBQUEsSUFBNUI7SUFBRWMsS0FBSztJQUFFL0IsTUFBTTtJQUFFaUU7RUFBUSxDQUFDLEdBQUFoRCxJQUFBO0VBQ25ELE1BQU07SUFBRThIO0VBQUUsQ0FBQyxHQUFHaEIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFBRXFWLGFBQWE7SUFBRUMsV0FBVztJQUFFQyxVQUFVO0lBQUVDLFdBQVc7SUFBRUM7RUFBYyxDQUFDLEdBQzFFUCw0REFBb0IsQ0FBQztJQUFFbGIsS0FBSztJQUFFL0IsTUFBTTtJQUFFaUU7RUFBUSxDQUFDLENBQUM7RUFDbEQsTUFBTXdaLE9BQU8sR0FBRyxHQUFHO0VBRW5CLG9CQUNFOVUsdURBQUEsQ0FBQ1gsOENBQUc7SUFBQ2dHLFNBQVMsRUFBRTZGLGtFQUF5QjtJQUFBcEssUUFBQSxHQUN0QyxDQUFBK1QsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUVwYixNQUFNLElBQUcsQ0FBQyxpQkFDeEJxRyxzREFBQSxDQUFBcUwsdURBQUE7TUFBQXJLLFFBQUEsRUFDRytULGFBQWEsQ0FBQ3BaLEdBQUcsQ0FBRVosTUFBTSxJQUFLO1FBQzdCLE1BQU1tYSxXQUFXLEdBQ2RuYSxNQUFNLENBQUNvYSxHQUFHLElBQUlwYSxNQUFNLENBQUNxYSxXQUFXLENBQUNDLElBQUksR0FBR0wsT0FBTyxDQUFDLEdBQUlBLE9BQU87UUFFOUQsb0JBQ0U5VSx1REFBQSxDQUFDaVIsK0NBQUk7VUFDSGhELFNBQVM7VUFFVGhDLEVBQUUsRUFBRTtZQUFFRSxFQUFFLEVBQUU7VUFBRSxDQUFFO1VBQ2QsZUFBWSx3QkFBd0I7VUFBQXJMLFFBQUEsZ0JBRXBDaEIsc0RBQUEsQ0FBQ21SLCtDQUFJO1lBQUNJLEVBQUUsRUFBRSxDQUFFO1lBQUNELElBQUk7WUFBQXRRLFFBQUEsZUFDZmQsdURBQUE7Y0FBQWMsUUFBQSxHQUFNLEdBQ0gsRUFBQ2pHLE1BQU0sQ0FBQ29hLEdBQUcsRUFBQyxHQUFDLEVBQUNwYSxNQUFNLENBQUNxYSxXQUFXLENBQUNuZCxJQUFJO1lBQUEsQ0FDbEM7VUFBQyxDQUNILENBQUMsZUFDUCtILHNEQUFBLENBQUNtUiwrQ0FBSTtZQUFDSSxFQUFFLEVBQUUsQ0FBRTtZQUFDRCxJQUFJO1lBQUNnRSxLQUFLLEVBQUMsT0FBTztZQUFBdFUsUUFBQSxFQUM1QnlULHNEQUFjLENBQUNTLFdBQVcsRUFBRTtjQUFFSyxRQUFRLEVBQUVqYyxLQUFLLENBQUNpYztZQUFTLENBQUM7VUFBQyxDQUN0RCxDQUFDO1FBQUEsZUFBQXZkLE1BQUEsQ0FYVStDLE1BQU0sQ0FBQ3FhLFdBQVcsQ0FBQ0ksT0FBTyxDQVl2QyxDQUFDO01BRVgsQ0FBQztJQUFDLENBQ0YsQ0FDSCxFQUNBbGMsS0FBSyxDQUFDbWMsZUFBZSxHQUFHLENBQUMsaUJBQ3hCdlYsdURBQUEsQ0FBQ2lSLCtDQUFJO01BQUNoRCxTQUFTO01BQUNoQyxFQUFFLEVBQUU7UUFBRUUsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBckwsUUFBQSxnQkFDNUJoQixzREFBQSxDQUFDbVIsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFBdFEsUUFBQSxFQUNkVixDQUFDLENBQUMseUJBQXlCO01BQUMsQ0FDekIsQ0FBQyxlQUNQSix1REFBQSxDQUFDaVIsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFDZ0UsS0FBSyxFQUFDLE9BQU87UUFBQXRVLFFBQUEsR0FBQyxHQUM3QixFQUFDMlQsYUFBYTtNQUFBLENBQ1gsQ0FBQztJQUFBLENBQ0gsQ0FDUCxFQUNBcmIsS0FBSyxDQUFDb2MsWUFBWSxHQUFHLENBQUMsaUJBQ3JCeFYsdURBQUEsQ0FBQ2lSLCtDQUFJO01BQUNoRCxTQUFTO01BQUNoQyxFQUFFLEVBQUU7UUFBRUUsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBckwsUUFBQSxnQkFDNUJoQixzREFBQSxDQUFDbVIsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFBdFEsUUFBQSxFQUNkVixDQUFDLENBQUMscUJBQXFCO01BQUMsQ0FDckIsQ0FBQyxlQUNQTixzREFBQSxDQUFDbVIsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFDZ0UsS0FBSyxFQUFDLE9BQU87UUFBQXRVLFFBQUEsRUFDNUI2VDtNQUFVLENBQ1AsQ0FBQztJQUFBLENBQ0gsQ0FDUCxFQUNBdmIsS0FBSyxDQUFDcWMsTUFBTSxLQUFLLE1BQU0saUJBQ3RCelYsdURBQUEsQ0FBQ2lSLCtDQUFJO01BQUNoRCxTQUFTO01BQUNoQyxFQUFFLEVBQUU7UUFBRUUsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBckwsUUFBQSxnQkFDNUJoQixzREFBQSxDQUFDbVIsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFBdFEsUUFBQSxFQUNkVixDQUFDLENBQUMsMkJBQTJCO01BQUMsQ0FDM0IsQ0FBQyxlQUNQSix1REFBQSxDQUFDaVIsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFDZ0UsS0FBSyxFQUFDLE9BQU87UUFBQXRVLFFBQUEsR0FBQyxHQUM3QixFQUFDOFQsV0FBVztNQUFBLENBQ1QsQ0FBQztJQUFBLENBQ0gsQ0FDUCxFQUNBRixXQUFXLEdBQUcsQ0FBQyxpQkFDZDFVLHVEQUFBLENBQUNpUiwrQ0FBSTtNQUFDaEQsU0FBUztNQUFDaEMsRUFBRSxFQUFFO1FBQUVFLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQXJMLFFBQUEsZ0JBQzVCaEIsc0RBQUEsQ0FBQ21SLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQXRRLFFBQUEsRUFDZFYsQ0FBQyxDQUFDLHVCQUF1QjtNQUFDLENBQ3ZCLENBQUMsZUFDUE4sc0RBQUEsQ0FBQ21SLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQ2dFLEtBQUssRUFBQyxPQUFPO1FBQUF0VSxRQUFBLEVBQzVCNFQ7TUFBVyxDQUNSLENBQUM7SUFBQSxDQUNILENBQ1AsZUFDRDVVLHNEQUFBLENBQUN1VSw4REFBTyxJQUFFLENBQUMsZUFDWHJVLHVEQUFBLENBQUNpUiwrQ0FBSTtNQUFDaEQsU0FBUztNQUFDaEMsRUFBRSxFQUFFO1FBQUVDLEVBQUUsRUFBRSxDQUFDO1FBQUVDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQXJMLFFBQUEsZ0JBQ25DaEIsc0RBQUEsQ0FBQ21SLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQXRRLFFBQUEsRUFDZFYsQ0FBQyxDQUFDLHFCQUFxQjtNQUFDLENBQ3JCLENBQUMsZUFDUE4sc0RBQUEsQ0FBQ21SLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQ2dFLEtBQUssRUFBQyxPQUFPO1FBQUF0VSxRQUFBLEVBQzVCMUgsS0FBSyxDQUFDcWMsTUFBTSxLQUFLLE1BQU0sR0FBRyxPQUFPLEdBQUdiO01BQVcsQ0FDNUMsQ0FBQztJQUFBLENBQ0gsQ0FBQztFQUFBLENBQ0osQ0FBQztBQUVWO0FBRUFKLGlCQUFpQixDQUFDbFQsU0FBUyxHQUFHO0VBQzVCbEksS0FBSyxFQUFFK0YsdURBQWUsQ0FBQztJQUNyQmtXLFFBQVEsRUFBRWxXLDBEQUFnQjtJQUMxQm9XLGVBQWUsRUFBRXBXLDBEQUFnQjtJQUNqQ3FXLFlBQVksRUFBRXJXLDBEQUFnQjtJQUM5QnNXLE1BQU0sRUFBRXRXLDBEQUFnQmdEO0VBQzFCLENBQUMsQ0FBQztFQUNGOUssTUFBTSxFQUFFOEgsMERBQWdCO0VBQ3hCN0QsT0FBTyxFQUFFNkQseURBQWlCLENBQUM1RixNQUFNO0FBQ25DLENBQUM7QUFFRCxpRUFBZWliLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUdOO0FBQ1M7QUFDWTtBQUNSO0FBQ0Y7QUFDdUI7QUFDYjtBQUFBO0FBRS9DLFNBQVNzQixrQkFBa0JBLENBQUF4ZCxJQUFBLEVBU3hCO0VBQUEsSUFUeUI7SUFDMUJqQixNQUFNO0lBQ04wZSxlQUFlO0lBQ2Z6YSxPQUFPO0lBQ1AwYSxlQUFlO0lBQ2ZDLGFBQWE7SUFDYkMsYUFBYTtJQUNiQyxtQkFBbUI7SUFDbkJDO0VBQ0YsQ0FBQyxHQUFBOWQsSUFBQTtFQUNDLE1BQU07SUFBRThIO0VBQUUsQ0FBQyxHQUFHaEIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1tTSxHQUFHLEdBQUdxSyw4Q0FBTSxDQUFDLENBQUM7RUFDcEIsTUFBTVMsb0JBQW9CLEdBQ3hCaGYsTUFBTSxDQUFDaWYsNkNBQTZDLEdBQUcvSyxHQUFHO0VBQzVELE1BQU1nTCwwQkFBMEIsR0FBR1YscUVBQWlCLENBQUN2YSxPQUFPLENBQUM7RUFDN0QsTUFBTWtiLFlBQVksR0FBRyxDQUFDLEVBQUVILG9CQUFvQixJQUFJRSwwQkFBMEIsQ0FBQztFQUMzRSxvQkFDRXZXLHVEQUFBLENBQUFtTCx1REFBQTtJQUFBckssUUFBQSxHQUNHMFYsWUFBWSxpQkFDWDFXLHNEQUFBLENBQUN1USxpREFBTTtNQUNMLGNBQVcsdUJBQXVCO01BQ2xDb0csSUFBSSxFQUFDLFFBQVE7TUFDYnBSLFNBQVMsS0FBQXZOLE1BQUEsQ0FBS29ULG1FQUF5QixPQUFBcFQsTUFBQSxDQUNyQ2llLGVBQWUsSUFBSUMsZUFBZSxDQUFDdmMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDd2MsYUFBYSxHQUM3RC9LLCtEQUFxQixHQUNyQixFQUFFLENBQ0w7TUFDSHlHLE9BQU8sRUFBQyxVQUFVO01BQ2xCRCxJQUFJLEVBQUMsT0FBTztNQUNabkYsT0FBTyxFQUFFMkosYUFBYztNQUN2QjlVLFFBQVEsRUFDTjJVLGVBQWUsSUFBSUMsZUFBZSxDQUFDdmMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDd2MsYUFDckQ7TUFBQW5WLFFBQUEsRUFFQVYsQ0FBQyxDQUFDLDhCQUE4QjtJQUFDLENBQzVCLENBQ1QsZUFDRE4sc0RBQUEsQ0FBQ3VRLGlEQUFNO01BQ0wsY0FBVyx1QkFBdUI7TUFDbENvRyxJQUFJLEVBQUMsUUFBUTtNQUNicFIsU0FBUyxFQUFFNkYsbUVBQTBCO01BQ3JDeUcsT0FBTyxFQUFDLFVBQVU7TUFDbEJELElBQUksRUFBQyxPQUFPO01BQ1puRixPQUFPLEVBQUU0SixtQkFBb0I7TUFBQXJWLFFBQUEsRUFFNUJWLENBQUMsQ0FBQyw4QkFBOEI7SUFBQyxDQUM1QixDQUFDLGVBQ1ROLHNEQUFBLENBQUN1USxpREFBTTtNQUNMLGNBQVcsc0JBQXNCO01BQ2pDb0csSUFBSSxFQUFDLFFBQVE7TUFDYnBSLFNBQVMsRUFBRTZGLG1FQUEwQjtNQUNyQ3lHLE9BQU8sRUFBQyxVQUFVO01BQ2xCRCxJQUFJLEVBQUMsT0FBTztNQUNabkYsT0FBTyxFQUFFNkosbUJBQW9CO01BQUF0VixRQUFBLEVBRTVCVixDQUFDLENBQUMsMEJBQTBCO0lBQUMsQ0FDeEIsQ0FBQztFQUFBLENBQ1QsQ0FBQztBQUVQO0FBRUEwVixrQkFBa0IsQ0FBQ3hVLFNBQVMsR0FBRztFQUM3QjRVLGFBQWEsRUFBRS9XLHdEQUFjO0VBQzdCZ1gsbUJBQW1CLEVBQUVoWCx3REFBYztFQUNuQ2lYLG1CQUFtQixFQUFFalgsd0RBQWNzQztBQUNyQyxDQUFDO0FBRUQsaUVBQWVxVSxrQkFBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNFUDtBQUNTO0FBQ087QUFDSztBQUNLO0FBQ0U7QUFDUDtBQUFBO0FBRS9DLFNBQVNjLFlBQVlBLENBQUF0ZSxJQUFBLEVBUWxCO0VBQUEsSUFSbUI7SUFDcEJjLEtBQUs7SUFDTC9CLE1BQU07SUFDTmlFLE9BQU87SUFDUDRhLGFBQWE7SUFDYkgsZUFBZTtJQUNmQyxlQUFlO0lBQ2ZDO0VBQ0YsQ0FBQyxHQUFBM2QsSUFBQTtFQUNDLE1BQU07SUFBRThIO0VBQUUsQ0FBQyxHQUFHaEIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLG9CQUNFWSx1REFBQSxDQUFBbUwsdURBQUE7SUFBQXJLLFFBQUEsZ0JBQ0VkLHVEQUFBLENBQUNYLDhDQUFHO01BQ0ZnRyxTQUFTLEVBQUU2RixvRUFBMkI7TUFDdENlLEVBQUUsRUFBRTtRQUFFQyxFQUFFLEVBQUUsQ0FBQztRQUFFNEssRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUNyQixlQUFZLHlCQUF5QjtNQUFBaFcsUUFBQSxnQkFFckNoQixzREFBQTtRQUFBZ0IsUUFBQSxFQUFLVixDQUFDLENBQUMsNkJBQTZCO01BQUMsQ0FBSyxDQUFDLGVBQzNDTixzREFBQSxDQUFDbVIsK0NBQUk7UUFBQ2hELFNBQVM7UUFBQW5OLFFBQUEsZUFDYmhCLHNEQUFBLENBQUNtUiwrQ0FBSTtVQUNISSxFQUFFLEVBQUUsRUFBRztVQUNQaE0sU0FBUyxFQUFFNkYsMEVBQWlDO1VBQzVDZSxFQUFFLEVBQUU7WUFBRUUsRUFBRSxFQUFFO1VBQUUsQ0FBRTtVQUNkaUYsSUFBSTtVQUFBdFEsUUFBQSxlQUVKaEIsc0RBQUEsQ0FBQzBVLDBEQUFpQjtZQUNoQnBiLEtBQUssRUFBRUEsS0FBTTtZQUNiL0IsTUFBTSxFQUFFQSxNQUFPO1lBQ2ZpRSxPQUFPLEVBQUVBO1VBQVEsQ0FDbEI7UUFBQyxDQUNFO01BQUMsQ0FDSCxDQUFDO0lBQUEsQ0FDSixDQUFDLGVBQ053RSxzREFBQSxDQUFDVCw4Q0FBRztNQUFDZ1MsRUFBRSxFQUFFLEVBQUc7TUFBQ3BGLEVBQUUsRUFBRTtRQUFFRSxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUFyTCxRQUFBLGVBQ3pCaEIsc0RBQUEsQ0FBQ2dXLDJEQUFrQjtRQUNqQnplLE1BQU0sRUFBRUEsTUFBTztRQUNmMGUsZUFBZSxFQUFFQSxlQUFnQjtRQUNqQ3phLE9BQU8sRUFBRUEsT0FBUTtRQUNqQjBhLGVBQWUsRUFBRUEsZUFBZ0I7UUFDakNDLGFBQWEsRUFBRUEsYUFBYztRQUM3QkMsYUFBYSxFQUFFQSxhQUFjO1FBQzdCQyxtQkFBbUIsRUFBRUEsQ0FBQSxLQUFNLENBQUMsQ0FBRTtRQUM5QkMsbUJBQW1CLEVBQUVBLENBQUEsS0FBTSxDQUFDO01BQUUsQ0FDL0I7SUFBQyxDQUNDLENBQUM7RUFBQSxDQUNOLENBQUM7QUFFUDtBQUVBUSxZQUFZLENBQUN0VixTQUFTLEdBQUc7RUFDdkJsSSxLQUFLLEVBQUUrRiwwREFBZ0I7RUFDdkI5SCxNQUFNLEVBQUU4SCwwREFBZ0I7RUFDeEI3RCxPQUFPLEVBQUU2RCx5REFBaUIsQ0FBQzVGLE1BQU07QUFDbkMsQ0FBQztBQUVELGlFQUFlcWQsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9ERDtBQUNTO0FBQ1k7QUFDWDtBQUNXO0FBQUE7QUFFL0MsU0FBU0ksY0FBY0EsQ0FBQTFlLElBQUEsRUFBYTtFQUFBLElBQUEyZSxhQUFBLEVBQUFDLGNBQUE7RUFBQSxJQUFaO0lBQUVyYztFQUFPLENBQUMsR0FBQXZDLElBQUE7RUFDaEMsTUFBTTtJQUFFOEg7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsT0FBTyxDQUFBNlgsYUFBQSxHQUFBcGMsTUFBTSxDQUFDOEQsS0FBSyxjQUFBc1ksYUFBQSxlQUFaQSxhQUFBLENBQWMvZ0IsS0FBSyxnQkFDeEI4Six1REFBQSxDQUFDWCw4Q0FBRztJQUFDZ0csU0FBUyxFQUFFNkYsc0RBQWE7SUFBQXBLLFFBQUEsR0FDMUJWLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxFQUFDLEdBQ2hDLGVBQUFKLHVEQUFBO01BQ0VxRixTQUFTLEVBQUU2RixpRUFBd0I7TUFDbkMsZUFBWSwwQkFBMEI7TUFBQXBLLFFBQUEsR0FFckMsR0FBRyxHQUFBb1csY0FBQSxHQUNIcmMsTUFBTSxDQUFDOEQsS0FBSyxjQUFBdVksY0FBQSx1QkFBWkEsY0FBQSxDQUFjaGhCLEtBQUs7SUFBQSxDQUNoQixDQUFDO0VBQUEsQ0FDSixDQUFDLEdBRU4yRSxNQUFNLENBQUN1YyxTQUFTLGlCQUNkdFgsc0RBQUE7SUFDRXVGLFNBQVMsRUFBRTZGLGlFQUF3QjtJQUNuQyxlQUFZLDRCQUE0QjtJQUFBcEssUUFBQSxFQUV2Q1YsQ0FBQyxDQUFDLDBDQUEwQztFQUFDLENBQzFDLENBRVQ7QUFDSDtBQUVBNFcsY0FBYyxDQUFDMVYsU0FBUyxHQUFHO0VBQ3pCekcsTUFBTSxFQUFFc0UsdURBQWUsQ0FBQztJQUN0QlIsS0FBSyxFQUFFUSx1REFBZSxDQUFDO01BQ3JCakosS0FBSyxFQUFFaUosMERBQWdCZ0Q7SUFDekIsQ0FBQyxDQUFDO0lBQ0ZpVixTQUFTLEVBQUVqWSx3REFBYytDO0VBQzNCLENBQUM7QUFDSCxDQUFDO0FBRUQsaUVBQWU4VSxjQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4Q1c7QUFDTDtBQUNZO0FBQ1I7QUFDVztBQUNlO0FBQ2xCO0FBQUE7QUFFL0MsU0FBU08sYUFBYUEsQ0FBQWpmLElBQUEsRUFRbkI7RUFBQSxJQVJvQjtJQUNyQmdELE9BQU87SUFDUGtjLEtBQUs7SUFDTEMsZUFBZTtJQUNmcGdCLE1BQU07SUFDTjBlLGVBQWU7SUFDZkMsZUFBZTtJQUNmMEI7RUFDRixDQUFDLEdBQUFwZixJQUFBO0VBQ0MsTUFBTTtJQUFFOEg7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDdVksY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHbE4sK0NBQVEsQ0FDbEQ0TSxzRUFDRixDQUFDO0VBQ0QsTUFBTU8sYUFBYSxHQUFHdmMsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUV3YyxLQUFLLENBQUMsQ0FBQyxFQUFFSCxjQUFjLENBQUM7RUFDdkQsTUFBTUksVUFBVSxHQUFHQSxDQUFBLEtBQU07SUFDdkIsSUFBSVAsS0FBSyxHQUFHbGMsT0FBTyxDQUFDN0IsTUFBTSxFQUFFO01BQzFCZ2UsZUFBZSxDQUFDLENBQUM7SUFDbkI7SUFDQUcsaUJBQWlCLENBQUNELGNBQWMsR0FBR0wsc0VBQXdCLENBQUM7RUFDOUQsQ0FBQztFQUVELE1BQU1VLFVBQVUsR0FBR0EsQ0FBQSxLQUFNSixpQkFBaUIsQ0FBQ04sc0VBQXdCLENBQUM7RUFFcEUsb0JBQ0V0WCx1REFBQSxDQUFBbUwsdURBQUE7SUFBQXJLLFFBQUEsR0FDRytXLGFBQWEsYUFBYkEsYUFBYSx1QkFBYkEsYUFBYSxDQUFFcGMsR0FBRyxDQUFFWixNQUFNLGlCQUN6QmlGLHNEQUFBLENBQUN1WCx5REFBZ0I7TUFFZnhjLE1BQU0sRUFBRUEsTUFBTztNQUNmeEQsTUFBTSxFQUFFQSxNQUFPO01BQ2YwZSxlQUFlLEVBQUVBLGVBQWdCO01BQ2pDa0Msa0JBQWtCLEVBQUUsQ0FBQyxDQUFDakMsZUFBZSxDQUFDa0MsSUFBSSxDQUFFOVgsQ0FBQyxJQUFLQSxDQUFDLENBQUN6RyxFQUFFLEtBQUtrQixNQUFNLENBQUNsQixFQUFFLENBQUU7TUFDdEUrZCxjQUFjLEVBQUVBO0lBQWUsR0FMMUI3YyxNQUFNLENBQUNsQixFQU1iLENBQ0YsQ0FBQyxFQUNELENBQUEyQixPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTdCLE1BQU0sS0FBSWtlLGNBQWMsSUFBSSxDQUFBcmMsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUU3QixNQUFNLE1BQUsrZCxLQUFLLGdCQUM3RDFYLHNEQUFBLENBQUN1USxpREFBTTtNQUNMLGNBQVcsa0JBQWtCO01BQzdCb0csSUFBSSxFQUFDLFFBQVE7TUFDYnBSLFNBQVMsRUFBRTZGLCtEQUFzQjtNQUNqQ3FCLE9BQU8sRUFBRXdMLFVBQVc7TUFBQWpYLFFBQUEsRUFFbkJWLENBQUMsQ0FBQywwQkFBMEI7SUFBQyxDQUN4QixDQUFDLEdBRVQsRUFDRCxFQUNBLENBQUF5WCxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRXBlLE1BQU0sSUFBRzZkLHNFQUF3QixJQUNqRCxDQUFBTyxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRXBlLE1BQU0sTUFBSytkLEtBQUssZ0JBQzdCMVgsc0RBQUEsQ0FBQ3VRLGlEQUFNO01BQ0wsY0FBVyxrQkFBa0I7TUFDN0JvRyxJQUFJLEVBQUMsUUFBUTtNQUNicFIsU0FBUyxFQUFFNkYsK0RBQXNCO01BQ2pDcUIsT0FBTyxFQUFFeUwsVUFBVztNQUFBbFgsUUFBQSxFQUVuQlYsQ0FBQyxDQUFDLDBCQUEwQjtJQUFDLENBQ3hCLENBQUMsR0FFVCxFQUNEO0VBQUEsQ0FDRCxDQUFDO0FBRVA7QUFFQW1YLGFBQWEsQ0FBQ2pXLFNBQVMsR0FBRztFQUN4QmhHLE9BQU8sRUFBRTZELHlEQUFpQixDQUFDNUYsTUFBTTtBQUNuQyxDQUFDO0FBRUQsaUVBQWVnZSxhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNUVZO0FBQ0w7QUFDWTtBQUNGO0FBQ0w7QUFDTTtBQUNDO0FBQ0o7QUFDSDtBQUN3QjtBQUMzQjtBQUNTO0FBQ0g7QUFDcUI7QUFDakI7QUFBQTtBQUUvQyxNQUFNbUIsVUFBVSxHQUFHO0VBQ2pCQyxNQUFNLEVBQUUsUUFBUTtFQUNoQkMsUUFBUSxFQUFFO0FBQ1osQ0FBQztBQUVELE1BQU1DLFVBQVUsR0FBR3ZnQixJQUFBLElBS2I7RUFBQSxJQUxjO0lBQ2xCd2dCLFlBQVk7SUFDWkMsWUFBWTtJQUNaQyxjQUFjO0lBQ2RDO0VBQ0YsQ0FBQyxHQUFBM2dCLElBQUE7RUFDQyxNQUFNO0lBQUU4SDtFQUFFLENBQUMsR0FBR2hCLDZEQUFjLENBQUMsQ0FBQztFQUU5QixJQUFJMlosWUFBWSxFQUFFO0lBQ2hCLG9CQUNFalosdURBQUEsQ0FBQ3VRLGlEQUFNO01BQUNoTCxTQUFTLEVBQUU2RixtRUFBMEI7TUFBQXBLLFFBQUEsRUFDMUNWLENBQUMsQ0FBQyw2QkFBNkI7SUFBQyxDQUMzQixDQUFDO0VBRWI7RUFFQSxvQkFDRUosd0RBQUEsQ0FBQzJLLDREQUFLO0lBQ0pzQixFQUFFLEVBQUU7TUFDRjZDLGNBQWMsRUFBRSxlQUFlO01BQy9CSixLQUFLLEVBQUU7SUFDVCxDQUFFO0lBQ0YxQyxVQUFVLEVBQUMsUUFBUTtJQUNuQjVULFNBQVMsRUFBQyxLQUFLO0lBQUEwSSxRQUFBLGdCQUVmaEIsdURBQUEsQ0FBQ3VRLGlEQUFNO01BQ0xoTCxTQUFTLEVBQUU2Rix1RUFBOEI7TUFDekNxQixPQUFPLEVBQUVBLENBQUEsS0FBTTBNLFdBQVcsQ0FBQ1AsVUFBVSxDQUFDQyxNQUFNLENBQUU7TUFBQTdYLFFBQUEsRUFFN0NnWSxZQUFZLEdBQ1QxWSxDQUFDLENBQUMsNkJBQTZCLENBQUMsR0FDaENBLENBQUMsQ0FBQywyQkFBMkI7SUFBQyxDQUM1QixDQUFDLEVBQ1I0WSxjQUFjLGlCQUNibFosdURBQUEsQ0FBQ3VRLGlEQUFNO01BQ0wsY0FBVyx3QkFBd0I7TUFDbkNvRyxJQUFJLEVBQUMsUUFBUTtNQUNicFIsU0FBUyxFQUFFNkYsK0RBQXNCO01BQ2pDcUIsT0FBTyxFQUFFQSxDQUFBLEtBQU0wTSxXQUFXLENBQUNQLFVBQVUsQ0FBQ0UsUUFBUSxDQUFFO01BQUE5WCxRQUFBLEVBRS9DVixDQUFDLENBQUMsK0JBQStCO0lBQUMsQ0FDN0IsQ0FDVDtFQUFBLENBQ0ksQ0FBQztBQUVaLENBQUM7QUFFRCxNQUFNaVgsZ0JBQWdCLEdBQUcxZSxLQUFBLElBTW5CO0VBQUEsSUFBQTBnQixtQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxrQkFBQTtFQUFBLElBTm9CO0lBQ3hCMWUsTUFBTTtJQUNOeEQsTUFBTTtJQUNOMGUsZUFBZTtJQUNma0Msa0JBQWtCO0lBQ2xCUDtFQUNGLENBQUMsR0FBQS9lLEtBQUE7RUFDQyxNQUFNO0lBQUV5SDtFQUFFLENBQUMsR0FBR2hCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNbU0sR0FBRyxHQUFHcUssK0NBQU0sQ0FBQyxDQUFDO0VBQ3BCLE1BQU07SUFBRVksWUFBWTtJQUFFdUMsWUFBWTtJQUFFRCxZQUFZO0lBQUVVO0VBQVksQ0FBQyxHQUM3RGhCLDBFQUFnQixDQUFDM2QsTUFBTSxDQUFDO0VBQzFCLE1BQU0sQ0FBQzRlLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUdoUCwrQ0FBUSxDQUFDLElBQUksQ0FBQztFQUNsRCxNQUFNLENBQUNpUCxTQUFTLEVBQUVDLFlBQVksQ0FBQyxHQUFHbFAsK0NBQVEsQ0FBQyxJQUFJLENBQUM7RUFDaEQsTUFBTW1QLFlBQVksR0FBR3ZCLHlFQUFxQixDQUFDamhCLE1BQU0sQ0FBQztFQUNsRCxNQUFNMmhCLGNBQWMsR0FBR2EsWUFBWSxHQUFHdE8sR0FBRztFQUV6QyxNQUFNdU8sZ0JBQWdCLEdBQUdBLENBQUEsS0FBTTtJQUM3QkosYUFBYSxDQUFDLElBQUksQ0FBQztJQUNuQkUsWUFBWSxDQUFDLElBQUksQ0FBQztFQUNwQixDQUFDO0VBRUQsTUFBTUcsZUFBZSxHQUFJQyxJQUFJLElBQUs7SUFDaENOLGFBQWEsQ0FBQzdlLE1BQU0sQ0FBQztJQUNyQitlLFlBQVksQ0FBQ0ksSUFBSSxDQUFDO0VBQ3BCLENBQUM7RUFFRCxvQkFDRWhhLHdEQUFBLENBQUNpUiwrQ0FBSTtJQUVINUwsU0FBUyxFQUFFNkYsNkRBQW9CO0lBQy9CK0MsU0FBUztJQUNULGVBQVksbUJBQW1CO0lBQUFuTixRQUFBLGdCQUUvQmhCLHVEQUFBLENBQUNtUiwrQ0FBSTtNQUNISSxFQUFFLEVBQUUsQ0FBRTtNQUNOaEMsT0FBTyxFQUFFLENBQUU7TUFDWCtCLElBQUk7TUFDSi9MLFNBQVMsRUFBRTZGLGlFQUF3QjtNQUNuQ2lHLE9BQU8sRUFBQyxlQUFlO01BQUFyUSxRQUFBLGVBRXZCZCx3REFBQSxDQUFDMkssNERBQUs7UUFDSnNCLEVBQUUsRUFBRTtVQUNGNkMsY0FBYyxFQUFFO1FBQ2xCLENBQUU7UUFDRjFXLFNBQVMsRUFBQyxLQUFLO1FBQUEwSSxRQUFBLEdBRWRpVixlQUFlLElBQUlTLFlBQVksaUJBQzlCMVcsdURBQUEsQ0FBQ29ELCtEQUFRO1VBQ1AsY0FBVyx3QkFBd0I7VUFDbkN1VCxJQUFJLEVBQUMsVUFBVTtVQUNmelIsT0FBTyxFQUFFaVQsa0JBQW1CO1VBQzVCbFUsUUFBUSxFQUFHakssQ0FBQyxJQUFLNGQsY0FBYyxDQUFDNWQsQ0FBQyxFQUFFZSxNQUFNO1FBQUUsQ0FDNUMsQ0FDRixlQUNEaUYsdURBQUE7VUFBQWdCLFFBQUEsR0FBQXVZLG1CQUFBLEdBQUt4ZSxNQUFNLENBQUNxYSxXQUFXLGNBQUFtRSxtQkFBQSx1QkFBbEJBLG1CQUFBLENBQW9CdGhCO1FBQUksQ0FBSyxDQUFDO01BQUEsQ0FDOUI7SUFBQyxDQUNKLENBQUMsZUFDUCtILHVEQUFBLENBQUNtUiwrQ0FBSTtNQUFDSSxFQUFFLEVBQUUsQ0FBRTtNQUFDaEMsT0FBTyxFQUFFLENBQUU7TUFBQytCLElBQUk7SUFBQSxDQUV2QixDQUFDLGVBQ1BwUix3REFBQSxDQUFDaVIsK0NBQUk7TUFBQ0ksRUFBRSxFQUFFLEVBQUc7TUFBQ3BGLEVBQUUsRUFBRTtRQUFFNkssRUFBRSxFQUFFLENBQUM7UUFBRTNLLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQ2lGLElBQUk7TUFBQXRRLFFBQUEsZ0JBQ3RDaEIsdURBQUEsQ0FBQ2tYLHdEQUFjO1FBQUNuYyxNQUFNLEVBQUVBO01BQU8sQ0FBRSxDQUFDLGVBQ2xDbUYsd0RBQUE7UUFBTXFGLFNBQVMsRUFBRTZGLHlEQUFnQjtRQUFBcEssUUFBQSxHQUM5QlYsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLEVBQUMsR0FBQyxFQUFDLEdBQUcsZUFDbkNOLHVEQUFBLENBQUN1WSxvREFBVztVQUFDbEUsTUFBTSxFQUFFdFosTUFBTSxDQUFDc1osTUFBTztVQUFDaUcsSUFBSTtVQUFDQyxTQUFTO1FBQUEsQ0FBRSxDQUFDO01BQUEsQ0FDakQsQ0FBQztJQUFBLENBQ0gsQ0FBQyxlQUNQcmEsd0RBQUEsQ0FBQ2lSLCtDQUFJO01BQUNoRCxTQUFTO01BQUFuTixRQUFBLGdCQUNiaEIsdURBQUEsQ0FBQ21SLCtDQUFJO1FBQUNoRCxTQUFTO1FBQUM3VixTQUFTLEVBQUMsS0FBSztRQUFDaVosRUFBRSxFQUFFLEVBQUc7UUFBQ3dDLEVBQUUsRUFBRSxDQUFFO1FBQUM3SCxVQUFVLEVBQUMsUUFBUTtRQUFDb0YsSUFBSTtRQUFBdFEsUUFBQSxlQUNyRWhCLHVEQUFBLENBQUNzWSxxREFBWTtVQUFDdmQsTUFBTSxFQUFFQTtRQUFPLENBQUU7TUFBQyxDQUM1QixDQUFDLGVBQ1BpRix1REFBQSxDQUFDbVIsK0NBQUk7UUFBQzVCLE9BQU8sRUFBRSxDQUFFO1FBQUNnQyxFQUFFLEVBQUUsRUFBRztRQUFDd0MsRUFBRSxFQUFFLENBQUU7UUFBQzVGLFNBQVM7UUFBQ21ELElBQUk7UUFBQXRRLFFBQUEsZUFDN0NoQix1REFBQSxDQUFDbVIsK0NBQUk7VUFDSEcsSUFBSTtVQUNKbkQsU0FBUztVQUNUbUgsS0FBSyxFQUFDLFFBQVE7VUFDZG5KLEVBQUUsRUFBRTtZQUNGNkMsY0FBYyxFQUFFO1VBQ2xCLENBQUU7VUFDRnpKLFNBQVMsRUFBRTZGLG9FQUEyQjtVQUFBcEssUUFBQSxFQUVyQ2pHLE1BQU0sQ0FBQ3VjLFNBQVMsaUJBQ2Z0WCx1REFBQSxDQUFDK1ksVUFBVTtZQUNURSxZQUFZLEVBQUVBLFlBQWE7WUFDM0JELFlBQVksRUFBRUEsWUFBYTtZQUMzQkUsY0FBYyxFQUFFQSxjQUFjLElBQUlRLFdBQVk7WUFDOUNQLFdBQVcsRUFBRWM7VUFBZ0IsQ0FDOUI7UUFDRixDQUNHO01BQUMsQ0FDSCxDQUFDO0lBQUEsQ0FDSCxDQUFDLGVBQ1BqYSx1REFBQSxDQUFDeVksc0RBQVk7TUFDWGxoQixNQUFNLEVBQUVBLE1BQU87TUFDZm1GLFFBQVEsRUFBRWlkLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFOWYsRUFBRztNQUN6QkssT0FBTyxFQUFFeWYsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUV6ZSxRQUFTO01BQzlCdWYsT0FBTyxFQUFFZCxVQUFVLGFBQVZBLFVBQVUsZ0JBQUFILGlCQUFBLEdBQVZHLFVBQVUsQ0FBRTlhLEtBQUssY0FBQTJhLGlCQUFBLHVCQUFqQkEsaUJBQUEsQ0FBbUIzZixFQUFHO01BQy9Cb0ksSUFBSSxFQUFFNFgsU0FBUyxLQUFLakIsVUFBVSxDQUFDQyxNQUFPO01BQ3RDeFksT0FBTyxFQUFFMlo7SUFBaUIsQ0FDM0IsQ0FBQyxlQUNGaGEsdURBQUEsQ0FBQzJZLHdEQUFjO01BQ2JwaEIsTUFBTSxFQUFFQSxNQUFPO01BQ2ZtRixRQUFRLEVBQUVpZCxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRTlmLEVBQUc7TUFDekJLLE9BQU8sRUFBRXlmLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFemUsUUFBUztNQUM5QnVmLE9BQU8sRUFBRWQsVUFBVSxhQUFWQSxVQUFVLGdCQUFBRixrQkFBQSxHQUFWRSxVQUFVLENBQUU5YSxLQUFLLGNBQUE0YSxrQkFBQSx1QkFBakJBLGtCQUFBLENBQW1CNWYsRUFBRztNQUMvQm9JLElBQUksRUFBRTRYLFNBQVMsS0FBS2pCLFVBQVUsQ0FBQ0UsUUFBUztNQUN4Q3pZLE9BQU8sRUFBRTJaO0lBQWlCLENBQzNCLENBQUM7RUFBQSxHQS9FR2pmLE1BQU0sQ0FBQ2xCLEVBZ0ZSLENBQUM7QUFFWCxDQUFDO0FBRUQwZCxnQkFBZ0IsQ0FBQy9WLFNBQVMsR0FBRztFQUMzQnpHLE1BQU0sRUFBRXNFLHVEQUFlLENBQUM7SUFDdEJ4RixFQUFFLEVBQUV3RiwwREFBZ0I7SUFDcEJSLEtBQUssRUFBRVEsdURBQWUsQ0FBQztNQUNyQmpKLEtBQUssRUFBRWlKLDBEQUFnQmdEO0lBQ3pCLENBQUMsQ0FBQztJQUNGZ1MsTUFBTSxFQUFFaFYsMERBQWdCO0lBQ3hCcWIscUJBQXFCLEVBQUVyYiwwREFBZ0I7SUFDdkMrVixXQUFXLEVBQUUvVix1REFBZSxDQUFDO01BQzNCcEgsSUFBSSxFQUFFb0gsMERBQWdCZ0Q7SUFDeEIsQ0FBQztFQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsaUVBQWVrVixnQkFBZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbE1MO0FBQ1M7QUFDMkI7QUFDZjtBQUFBO0FBRS9DLE1BQU1xRCxZQUFZLEdBQUcsRUFBRTtBQUV2QixTQUFTckMsV0FBV0EsQ0FBQS9mLElBQUEsRUFNakI7RUFBQSxJQU5rQjtJQUNuQjZiLE1BQU07SUFDTmlHLElBQUksR0FBRyxLQUFLO0lBQ1pDLFNBQVMsR0FBRyxLQUFLO0lBQ2pCTSxRQUFRLEdBQUcsS0FBSztJQUNoQmpNLEtBQUssR0FBR2dNO0VBQ1YsQ0FBQyxHQUFBcGlCLElBQUE7RUFDQyxNQUFNeVosVUFBVSxNQUFBamEsTUFBQSxDQUFNdWlCLFNBQVMsSUFBSW5QLDJFQUFpQyxPQUFBcFQsTUFBQSxDQUNsRTZpQixRQUFRLElBQUl6UCx5REFBZSxDQUMzQjtFQUNGLG9CQUNFbEwsdURBQUE7SUFBS3FGLFNBQVMsRUFBRTZGLHVFQUE4QjtJQUFBcEssUUFBQSxnQkFDNUNoQixzREFBQTtNQUFNdUYsU0FBUyxFQUFFME0sVUFBVztNQUFDM0wsS0FBSyxFQUFFO1FBQUVzSTtNQUFNLENBQUU7TUFBQTVOLFFBQUEsRUFDM0NxVDtJQUFNLENBQ0gsQ0FBQyxFQUNOaUcsSUFBSSxpQkFDSHRhLHNEQUFBLENBQUMyYSx3RUFBZTtNQUNkcFYsU0FBUyxFQUFFNkYseURBQWdCO01BQzNCcUIsT0FBTyxFQUFFQSxDQUFBLEtBQU13TyxTQUFTLENBQUNDLFNBQVMsQ0FBQ0MsU0FBUyxDQUFDOUcsTUFBTSxDQUFFO01BQ3JELGVBQVk7SUFBb0IsQ0FDakMsQ0FDRjtFQUFBLENBQ0UsQ0FBQztBQUVWO0FBRUFrRSxXQUFXLENBQUMvVyxTQUFTLEdBQUc7RUFDdEI2UyxNQUFNLEVBQUVoViwwREFBZ0I7RUFDeEJpYixJQUFJLEVBQUVqYix3REFBYztFQUNwQmtiLFNBQVMsRUFBRWxiLHdEQUFjO0VBQ3pCd2IsUUFBUSxFQUFFeGIsd0RBQWM7RUFDeEJ1UCxLQUFLLEVBQUV2UCwwREFBZ0JnVjtBQUN6QixDQUFDO0FBRUQsaUVBQWVrRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekNjO0FBQ087QUFDRztBQUNWO0FBQ0Y7QUFDRjtBQUNRO0FBQ0Q7QUFDUztBQUNOO0FBQ2U7QUFDZDtBQUFBO0FBRS9DLFNBQVNpRCxRQUFRQSxDQUFDQyxLQUFLLEVBQUU7RUFDdkIsTUFBTTtJQUFFemEsUUFBUTtJQUFFNUksS0FBSztJQUFFc2pCO0VBQU0sQ0FBQyxHQUFHRCxLQUFLO0VBQ3hDLG9CQUNFemIsdURBQUE7SUFDRTJXLElBQUksRUFBQyxVQUFVO0lBQ2ZnRixNQUFNLEVBQUV2akIsS0FBSyxLQUFLc2pCLEtBQU07SUFDeEI3aEIsRUFBRSxjQUFBN0IsTUFBQSxDQUFjMGpCLEtBQUssQ0FBRztJQUN4QiwwQkFBQTFqQixNQUFBLENBQXdCMGpCLEtBQUssQ0FBRztJQUFBMWEsUUFBQSxFQUUvQjVJLEtBQUssS0FBS3NqQixLQUFLLElBQUkxYTtFQUFRLENBQ3pCLENBQUM7QUFFVjtBQUVBLFNBQVM0YSx1QkFBdUJBLENBQUFwakIsSUFBQSxFQVE3QjtFQUFBLElBUjhCO0lBQy9CcWpCLFFBQVE7SUFDUnRrQixNQUFNO0lBQ05pRSxPQUFPO0lBQ1BsQyxLQUFLO0lBQ0xvZSxLQUFLO0lBQ0xvRSxlQUFlO0lBQ2ZuRTtFQUNGLENBQUMsR0FBQW5mLElBQUE7RUFDQyxNQUFNO0lBQUU4SDtFQUFFLENBQUMsR0FBR2hCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUNsSCxLQUFLLEVBQUUyakIsUUFBUSxDQUFDLEdBQUduUiwrQ0FBUSxDQUFDLENBQUMsQ0FBQztFQUNyQyxNQUFNUCxZQUFZLEdBQUdBLENBQUMyUixDQUFDLEVBQUUzVyxRQUFRLEtBQUs7SUFDcEMwVyxRQUFRLENBQUMxVyxRQUFRLENBQUM7RUFDcEIsQ0FBQztFQUNELE1BQU0sQ0FBQzRRLGVBQWUsRUFBRWdHLGtCQUFrQixDQUFDLEdBQUdyUiwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUM3RCxNQUFNLENBQUNzTCxlQUFlLEVBQUVnRyxrQkFBa0IsQ0FBQyxHQUFHdFIsK0NBQVEsQ0FBQyxFQUFFLENBQUM7RUFDMUQsTUFBTSxDQUFDdUwsYUFBYSxFQUFFZ0csZ0JBQWdCLENBQUMsR0FBR3ZSLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBRXpELE1BQU13TCxhQUFhLEdBQUdBLENBQUEsS0FBTTtJQUMxQixJQUFJRixlQUFlLENBQUN2YyxNQUFNLEtBQUssQ0FBQyxFQUFFO01BQ2hDc2lCLGtCQUFrQixDQUFDLElBQUksQ0FBQztJQUMxQixDQUFDLE1BQU07TUFDTEUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0lBQ3hCO0VBQ0YsQ0FBQztFQUNELE1BQU1DLHFCQUFxQixHQUFJcmhCLE1BQU0sSUFBSztJQUN4QyxNQUFNc2hCLGNBQWMsR0FBR25HLGVBQWUsQ0FBQ3JlLE1BQU0sQ0FBRXlJLENBQUMsSUFBS0EsQ0FBQyxDQUFDekcsRUFBRSxLQUFLa0IsTUFBTSxDQUFDbEIsRUFBRSxDQUFDO0lBQ3hFcWlCLGtCQUFrQixDQUFDRyxjQUFjLENBQUM7RUFDcEMsQ0FBQztFQUNELE1BQU16RSxjQUFjLEdBQUdBLENBQUM1ZCxDQUFDLEVBQUVlLE1BQU0sS0FBSztJQUNwQyxNQUFNO01BQUVtSztJQUFRLENBQUMsR0FBR2xMLENBQUMsQ0FBQzhMLE1BQU07SUFDNUIsSUFBSVosT0FBTyxFQUFFO01BQ1gsTUFBTW9YLGNBQWMsR0FBRzlnQixPQUFPLENBQUM0YyxJQUFJLENBQUU5WCxDQUFDLElBQUtBLENBQUMsQ0FBQ3pHLEVBQUUsS0FBS2tCLE1BQU0sQ0FBQ2xCLEVBQUUsQ0FBQztNQUM5RHFpQixrQkFBa0IsQ0FBQyxDQUFDLEdBQUdoRyxlQUFlLEVBQUVvRyxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU07TUFDTEYscUJBQXFCLENBQUNyaEIsTUFBTSxDQUFDO0lBQy9CO0VBQ0YsQ0FBQztFQUNELE1BQU13aEIscUJBQXFCLEdBQUdBLENBQUEsS0FBTTtJQUNsQ04sa0JBQWtCLENBQUMsS0FBSyxDQUFDO0lBQ3pCQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7RUFDeEIsQ0FBQztFQUVELE1BQU1NLGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDN0IsTUFBTUMsaUJBQWlCLEdBQUdqaEIsT0FBTyxDQUFDM0QsTUFBTSxDQUNyQ2tELE1BQU0sSUFBS3dnQix1RUFBa0IsQ0FBQ3hnQixNQUFNLENBQUMsS0FBSyxJQUM3QyxDQUFDO0lBQ0RtaEIsa0JBQWtCLENBQUNPLGlCQUFpQixDQUFDO0VBQ3ZDLENBQUM7RUFFRCxNQUFNQyxzQkFBc0IsR0FBR0EsQ0FBQSxLQUFNO0lBQ25DVCxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7SUFDekJFLGdCQUFnQixDQUFDLEtBQUssQ0FBQztJQUN2QkQsa0JBQWtCLENBQUMsRUFBRSxDQUFDO0VBQ3hCLENBQUM7RUFFRCxNQUFNUyxXQUFXLEdBQUdBLENBQUEsS0FDbEJiLGVBQWUsaUJBQ2I5Yix1REFBQSxDQUFDZ1MsMERBQVU7SUFDVC9XLE9BQU8sRUFBRXFGLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBRTtJQUNwRDRPLEtBQUssRUFBQyxTQUFTO0lBQ2ZnRCxVQUFVLEVBQUM7RUFBb0IsQ0FDaEMsQ0FDRjtFQUVILE9BQU8ySixRQUFRLGdCQUNiM2Isd0RBQUEsQ0FBQ1gsOENBQUc7SUFDRmdHLFNBQVMsRUFBRTZGLHFFQUEyQjtJQUN0QyxlQUFZLDhCQUE4QjtJQUFBcEssUUFBQSxnQkFFMUNoQix1REFBQSxDQUFDVCw4Q0FBRztNQUFDNE0sRUFBRSxFQUFFO1FBQUUwUSxXQUFXLEVBQUUsU0FBUztRQUFFeFEsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBckwsUUFBQSxlQUN6Q2Qsd0RBQUEsQ0FBQ2tiLDJEQUFJO1FBQ0hoakIsS0FBSyxFQUFFQSxLQUFNO1FBQ2I2TCxRQUFRLEVBQUVvRyxZQUFhO1FBQ3ZCeVMsU0FBUyxFQUFDLE1BQU07UUFDaEIsY0FBVyxtQkFBbUI7UUFDOUJDLGlCQUFpQixFQUFFO1VBQ2pCelcsS0FBSyxFQUFFO1lBQ0wwVyxVQUFVLEVBQUU7VUFDZDtRQUNGLENBQUU7UUFBQWhjLFFBQUEsZ0JBRUZoQix1REFBQSxDQUFDcWIsMERBQUc7VUFBQ3RXLEtBQUssRUFBRXpFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBRTtVQUFDaUYsU0FBUyxFQUFFNkYsNERBQWlCNlI7UUFBQyxDQUFFLENBQUMsZUFDakVqZCx1REFBQSxDQUFDcWIsMERBQUc7VUFBQ3RXLEtBQUssRUFBRXpFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBRTtVQUFDaUYsU0FBUyxFQUFFNkYsNERBQWlCNlI7UUFBQyxDQUFFLENBQUM7TUFBQSxDQUM3RDtJQUFDLENBQ0osQ0FBQyxFQUNMTixXQUFXLENBQUMsQ0FBQyxlQUNkM2MsdURBQUEsQ0FBQ3diLFFBQVE7TUFBQ3BqQixLQUFLLEVBQUVBLEtBQU07TUFBQ3NqQixLQUFLLEVBQUUsQ0FBRTtNQUFBMWEsUUFBQSxlQUMvQmhCLHVEQUFBLENBQUN5WCxzREFBYTtRQUNabmUsS0FBSyxFQUFFQSxLQUFNO1FBQ2JrQyxPQUFPLEVBQUVBLE9BQVE7UUFDakJrYyxLQUFLLEVBQUVBLEtBQU07UUFDYkMsZUFBZSxFQUFFQSxlQUFnQjtRQUNqQ3BnQixNQUFNLEVBQUVBLE1BQU87UUFDZjBlLGVBQWUsRUFBRUEsZUFBZ0I7UUFDakNDLGVBQWUsRUFBRUEsZUFBZ0I7UUFDakMwQixjQUFjLEVBQUVBLGNBQWU7UUFDL0J6QixhQUFhLEVBQUVBLGFBQWM7UUFDN0JpRyxxQkFBcUIsRUFBRUE7TUFBc0IsQ0FDOUM7SUFBQyxDQUNNLENBQUMsZUFDWHBjLHVEQUFBLENBQUN3YixRQUFRO01BQUNwakIsS0FBSyxFQUFFQSxLQUFNO01BQUNzakIsS0FBSyxFQUFFLENBQUU7TUFBQTFhLFFBQUEsZUFDL0JoQix1REFBQSxDQUFDOFcscURBQVk7UUFDWHhkLEtBQUssRUFBRUEsS0FBTTtRQUNiL0IsTUFBTSxFQUFFQSxNQUFPO1FBQ2ZpRSxPQUFPLEVBQUVBLE9BQVE7UUFDakI0YSxhQUFhLEVBQUVBLGFBQWM7UUFDN0JGLGVBQWUsRUFBRUEsZUFBZ0I7UUFDakNELGVBQWUsRUFBRUEsZUFBZ0I7UUFDakNFLGFBQWEsRUFBRUE7TUFBYyxDQUM5QjtJQUFDLENBQ00sQ0FBQztFQUFBLENBQ1IsQ0FBQyxnQkFFTmpXLHdEQUFBLENBQUFtTCx3REFBQTtJQUFBckssUUFBQSxnQkFDRWhCLHVEQUFBLENBQUNtUiwrQ0FBSTtNQUFDRyxJQUFJO01BQUN3QyxFQUFFLEVBQUUsRUFBRztNQUFBOVMsUUFBQSxFQUNmMmIsV0FBVyxDQUFDO0lBQUMsQ0FDVixDQUFDLEVBQ04xRyxlQUFlLGlCQUNkL1Ysd0RBQUEsQ0FBQ2lSLCtDQUFJO01BQUNHLElBQUk7TUFBQ3dDLEVBQUUsRUFBRSxFQUFHO01BQUE5UyxRQUFBLGdCQUNoQmhCLHVEQUFBO1FBQUFnQixRQUFBLEVBQU9WLENBQUMsQ0FBQyxvQ0FBb0M7TUFBQyxDQUFPLENBQUMsZUFDdERKLHdEQUFBLENBQUMySyw0REFBSztRQUNKc0IsRUFBRSxFQUFFO1VBQ0Y2QyxjQUFjLEVBQUU7UUFDbEIsQ0FBRTtRQUNGOUMsVUFBVSxFQUFDLFFBQVE7UUFDbkI1VCxTQUFTLEVBQUMsS0FBSztRQUFBMEksUUFBQSxnQkFFZmhCLHVEQUFBLENBQUN1USxpREFBTTtVQUNMc0IsT0FBTyxFQUFDLFVBQVU7VUFDbEJELElBQUksRUFBQyxRQUFRO1VBQ2JyTSxTQUFTLEVBQUU2RiwrREFBcUI7VUFDaENxQixPQUFPLEVBQUUrUCxnQkFBaUI7VUFBQXhiLFFBQUEsRUFFekJWLENBQUMsQ0FBQywwQkFBMEI7UUFBQyxDQUN4QixDQUFDLGVBQ1ROLHVEQUFBLENBQUN1USxpREFBTTtVQUNMc0IsT0FBTyxFQUFDLFVBQVU7VUFDbEJELElBQUksRUFBQyxRQUFRO1VBQ2JyTSxTQUFTLEVBQUU2RiwrREFBcUI7VUFDaENxQixPQUFPLEVBQUU4UCxxQkFBc0I7VUFBQXZiLFFBQUEsRUFFOUJWLENBQUMsQ0FBQyw2QkFBNkI7UUFBQyxDQUMzQixDQUFDO01BQUEsQ0FDSixDQUFDO0lBQUEsQ0FDSixDQUNQLGVBQ0ROLHVEQUFBLENBQUNtUiwrQ0FBSTtNQUNINUIsT0FBTyxFQUFFLENBQUU7TUFDWCtCLElBQUk7TUFDSndDLEVBQUUsRUFBRSxDQUFFO01BQ054YSxLQUFLLEVBQUU7UUFBRXdhLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFDakJ2TyxTQUFTLEVBQUU2RixxRUFBMkI7TUFDdEMsZUFBWSwrQkFBK0I7TUFBQXBLLFFBQUEsZUFFM0NoQix1REFBQSxDQUFDeVgsc0RBQWE7UUFDWm5lLEtBQUssRUFBRUEsS0FBTTtRQUNia0MsT0FBTyxFQUFFQSxPQUFRO1FBQ2pCa2MsS0FBSyxFQUFFQSxLQUFNO1FBQ2JDLGVBQWUsRUFBRUEsZUFBZ0I7UUFDakNwZ0IsTUFBTSxFQUFFQSxNQUFPO1FBQ2YwZSxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDQyxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDMEIsY0FBYyxFQUFFQSxjQUFlO1FBQy9CekIsYUFBYSxFQUFFQSxhQUFjO1FBQzdCaUcscUJBQXFCLEVBQUVBO01BQXNCLENBQzlDO0lBQUMsQ0FDRSxDQUFDLGVBQ1BwYyx1REFBQSxDQUFDbVIsK0NBQUk7TUFBQzVCLE9BQU8sRUFBRSxDQUFFO01BQUMrQixJQUFJO01BQUN3QyxFQUFFLEVBQUUsQ0FBRTtNQUFDeGEsS0FBSyxFQUFFO1FBQUV3YSxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUE5UyxRQUFBLGVBQzdDaEIsdURBQUEsQ0FBQzhXLHFEQUFZO1FBQ1h4ZCxLQUFLLEVBQUVBLEtBQU07UUFDYi9CLE1BQU0sRUFBRUEsTUFBTztRQUNmaUUsT0FBTyxFQUFFQSxPQUFRO1FBQ2pCNGEsYUFBYSxFQUFFQSxhQUFjO1FBQzdCRixlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDRCxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDRSxhQUFhLEVBQUVBO01BQWMsQ0FDOUI7SUFBQyxDQUNFLENBQUMsZUFDUG5XLHVEQUFBLENBQUNzYix1REFBbUI7TUFDbEI5ZixPQUFPLEVBQUUwYSxlQUFnQjtNQUN6QmpVLElBQUksRUFBRWtVLGFBQWM7TUFDcEJnSCw2QkFBNkIsRUFBRWYscUJBQXNCO01BQ3JEZ0Isb0JBQW9CLEVBQUVBLENBQUEsS0FBTVYsc0JBQXNCLENBQUMsQ0FBRTtNQUNyRG5LLGFBQWEsRUFBRUEsQ0FBQSxLQUFNNEosZ0JBQWdCLENBQUMsS0FBSztJQUFFLENBQzlDLENBQUM7RUFBQSxDQUNGLENBQ0g7QUFDSDtBQUVBLGlFQUFlUCx1QkFBdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pOYTtBQUNoQjtBQUNrQztBQUN0QjtBQUNHO0FBQ0Y7QUFDUTtBQUNOO0FBQ2M7QUFDVjtBQUNkO0FBQ087QUFDaUI7QUFBQTtBQUVoRSxTQUFTNUksVUFBVUEsQ0FBQ3lJLEtBQUssRUFBRTtFQUFBLElBQUFnQyxvQkFBQTtFQUN6QixNQUFNO0lBQUVsbUIsTUFBTTtJQUFFK0I7RUFBTSxDQUFDLEdBQUdtaUIsS0FBSztFQUMvQixNQUFNO0lBQUVuYjtFQUFFLENBQUMsR0FBR2hCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNbEksUUFBUSxHQUFHd2Isd0RBQVcsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFBRXBaLFFBQVE7SUFBRWtrQixTQUFTO0lBQUV0SztFQUFhLENBQUMsR0FBR1Asd0RBQVcsQ0FDdERZLEtBQUssSUFBS0EsS0FBSyxDQUFDMWEsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUNsQytaLHFEQUNGLENBQUM7RUFDRCxNQUFNaFEsS0FBSyxHQUFHdWEsOERBQVEsQ0FBQyxDQUFDO0VBQ3hCLE1BQU14QixRQUFRLEdBQUd5QixrRUFBYSxDQUFDeGEsS0FBSyxDQUFDNmEsV0FBVyxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDNUQsTUFBTSxDQUFDQyxnQkFBZ0IsRUFBRUMsaUJBQWlCLENBQUMsR0FBR2xULCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQzdELE1BQU1rUixlQUFlLElBQUEyQixvQkFBQSxHQUFHbmtCLEtBQUssQ0FBQ3lrQixhQUFhLGNBQUFOLG9CQUFBLHVCQUFuQkEsb0JBQUEsQ0FBcUJyRixJQUFJLENBQzlDcmQsTUFBTTtJQUFBLElBQUFvYyxhQUFBO0lBQUEsT0FBSyxFQUFBQSxhQUFBLEdBQUFwYyxNQUFNLENBQUM4RCxLQUFLLGNBQUFzWSxhQUFBLHVCQUFaQSxhQUFBLENBQWN4QixNQUFNLE1BQUssWUFBWTtFQUFBLENBQ25ELENBQUM7RUFDRCxNQUFNcUksbUJBQW1CLEdBQUcsTUFBQUEsQ0FBQSxLQUFZO0lBQ3RDLE1BQU01bUIsUUFBUSxDQUNadUQsMkRBQWlCLENBQUM7TUFDaEJULE9BQU8sRUFBRVosS0FBSyxDQUFDTyxFQUFFO01BQ2pCb2tCLFlBQVksRUFBRVAsU0FBUztNQUN2QmhsQixPQUFPLEVBQUVjO0lBQ1gsQ0FBQyxDQUNILENBQUMsQ0FBQ1AsS0FBSyxDQUFFZSxDQUFDLElBQUs7TUFDYjJFLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDNUUsQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRDZTLGdEQUFTLENBQUMsTUFBTTtJQUNkbVIsbUJBQW1CLENBQUMsQ0FBQztFQUN2QixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sTUFBTXJHLGVBQWUsR0FBR0EsQ0FBQSxLQUN0QnZnQixRQUFRLENBQ051RCwyREFBaUIsQ0FBQztJQUNoQlQsT0FBTyxFQUFFWixLQUFLLENBQUNPLEVBQUU7SUFDakJwQixJQUFJLEVBQUVhLEtBQUssQ0FBQzRrQixvQkFBb0IsR0FBR2hMLDJEQUFhO0lBQ2hEeGEsT0FBTyxFQUFFYyxRQUFRO0lBQ2pCMGEsSUFBSSxFQUFFO0VBQ1IsQ0FBQyxDQUNILENBQUM7RUFFSCxvQkFDRWhVLHdEQUFBLENBQUFtTCx3REFBQTtJQUFBckssUUFBQSxnQkFDRWQsd0RBQUEsQ0FBQ1gsOENBQUc7TUFDRjRNLEVBQUUsRUFBRTtRQUNGb0QsT0FBTyxFQUFFO1VBQ1BnQyxFQUFFLEVBQUUsQ0FBQztVQUNMdUMsRUFBRSxFQUFFLENBQUM7VUFDTEMsRUFBRSxFQUFFO1FBQ047TUFDRixDQUFFO01BQ0Z4TyxTQUFTLEVBQUU2RiwwRUFBZ0M7TUFBQXBLLFFBQUEsZ0JBRTNDZCx3REFBQTtRQUNFcUYsU0FBUyxFQUFFNkYsaUVBQXVCO1FBQ2xDLGVBQVksNkJBQTZCO1FBQUFwSyxRQUFBLEdBRXhDVixDQUFDLENBQUMsa0JBQWtCLENBQUMsRUFBQyxJQUFFLEVBQUNrZCx3REFBZ0IsQ0FBQ2xrQixLQUFLLENBQUNrYyxPQUFPLENBQUMsRUFBQyxJQUFFLEVBQUMsR0FBRyxFQUMvRGxWLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFDLEdBQUMsRUFBQyxHQUFHLGVBQ2xDTix1REFBQSxDQUFDdVkscURBQVc7VUFBQ2xFLE1BQU0sRUFBRS9hLEtBQUssQ0FBQythLE1BQU87VUFBQ2lHLElBQUk7VUFBQ0MsU0FBUztRQUFBLENBQUUsQ0FBQztNQUFBLENBQ2hELENBQUMsRUFDTnNCLFFBQVEsaUJBQ1A3Yix1REFBQSxDQUFDdVEsaURBQU07UUFDTHBFLEVBQUUsRUFBRTtVQUFFb0QsT0FBTyxFQUFFO1FBQUUsQ0FBRTtRQUNuQmhLLFNBQVMsRUFBRTZGLDZEQUFtQjtRQUM5QnFCLE9BQU8sRUFBRUEsQ0FBQSxLQUFNcVIsaUJBQWlCLENBQUMsQ0FBQ0QsZ0JBQWdCLENBQUU7UUFBQTdjLFFBQUEsRUFFbkQ2YyxnQkFBZ0IsR0FDYnZkLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxHQUMvQkEsQ0FBQyxDQUFDLDRCQUE0QjtNQUFDLENBQzdCLENBQ1Q7SUFBQSxDQUNFLENBQUMsZUFDTk4sdURBQUEsQ0FBQ21SLCtDQUFJO01BRUhoRCxTQUFTO01BQ1RtUSxVQUFVLEVBQUUsQ0FBRTtNQUNkQyxhQUFhLEVBQUU7UUFBRWhOLEVBQUUsRUFBRSxDQUFDO1FBQUVpTixFQUFFLEVBQUUsQ0FBQztRQUFFMUssRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUN2Q3ZPLFNBQVMsS0FBQXZOLE1BQUEsQ0FBS29ULHNFQUEyQixPQUFBcFQsTUFBQSxDQUN2QzZqQixRQUFRLElBQUksQ0FBQ2dDLGdCQUFnQixHQUFHelMsOERBQW1CLEdBQUcsRUFBRSxDQUN2RDtNQUNIZSxFQUFFLEVBQUU7UUFDRndTLGFBQWEsRUFBRTtVQUNiN0ssRUFBRSxFQUFFLEtBQUs7VUFDVEMsRUFBRSxFQUFFO1FBQ04sQ0FBQztRQUNEeEUsT0FBTyxFQUFFO1VBQ1BnQyxFQUFFLEVBQUUsQ0FBQztVQUNMdUMsRUFBRSxFQUFFLENBQUM7VUFDTEMsRUFBRSxFQUFFO1FBQ047TUFDRixDQUFFO01BQUEvUyxRQUFBLGVBRUZoQix1REFBQSxDQUFDNGIsaUVBQXVCO1FBQ3RCQyxRQUFRLEVBQUVBLFFBQVM7UUFDbkJ0a0IsTUFBTSxFQUFFQSxNQUFPO1FBQ2YrQixLQUFLLEVBQUVBLEtBQU07UUFDYmtDLE9BQU8sRUFBRStoQix1REFBZSxDQUFDbkssWUFBWSxFQUFFOVosS0FBSyxDQUFDTyxFQUFFLENBQUU7UUFDakQ2ZCxLQUFLLEVBQUVwZSxLQUFLLENBQUNzbEIsYUFBYztRQUMzQjlDLGVBQWUsRUFBRUEsZUFBZ0I7UUFDakNuRSxlQUFlLEVBQUVBO01BQWdCLENBQ2xDO0lBQUMsR0EzQkdyZSxLQUFLLENBQUNPLEVBNEJQLENBQUM7RUFBQSxDQUNQLENBQUM7QUFFUDtBQUVBbVosVUFBVSxDQUFDeFIsU0FBUyxHQUFHO0VBQ3JCakssTUFBTSxFQUFFOEgsMERBQWdCO0VBQ3hCL0YsS0FBSyxFQUFFK0YsMERBQWdCb0M7QUFDekIsQ0FBQztBQUVELGlFQUFldVIsVUFBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzdIQztBQUNTO0FBQ1k7QUFDVjtBQUNHO0FBQzBCO0FBQ1I7QUFDTjtBQUNMO0FBQUE7QUFFL0MsU0FBUzhMLHFCQUFxQkEsQ0FBQXRtQixJQUFBLEVBQXVCO0VBQUEsSUFBQStnQixtQkFBQTtFQUFBLElBQXRCO0lBQUV4ZSxNQUFNO0lBQUVna0I7RUFBUyxDQUFDLEdBQUF2bUIsSUFBQTtFQUNqRCxNQUFNO0lBQUU4SDtFQUFFLENBQUMsR0FBR2hCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixvQkFDRVksdURBQUEsQ0FBQ2lSLCtDQUFJO0lBQ0hoRCxTQUFTO0lBQ1Q1SSxTQUFTLEVBQUU2Rix5RUFBZ0M7SUFDM0MsZUFBWSxtQ0FBbUM7SUFBQXBLLFFBQUEsZ0JBRS9DaEIsc0RBQUEsQ0FBQ21SLCtDQUFJO01BQUNJLEVBQUUsRUFBRSxFQUFHO01BQUNoQyxPQUFPLEVBQUUsQ0FBRTtNQUFDK0IsSUFBSTtNQUFDRCxPQUFPLEVBQUMsZUFBZTtNQUFBclEsUUFBQSxlQUNwRGQsdURBQUEsQ0FBQzJLLDREQUFLO1FBQ0pzQixFQUFFLEVBQUU7VUFDRjZDLGNBQWMsRUFBRTtRQUNsQixDQUFFO1FBQ0YxVyxTQUFTLEVBQUMsS0FBSztRQUFBMEksUUFBQSxnQkFFZmhCLHNEQUFBO1VBQUFnQixRQUFBLEdBQUF1WSxtQkFBQSxHQUFLeGUsTUFBTSxDQUFDcWEsV0FBVyxjQUFBbUUsbUJBQUEsdUJBQWxCQSxtQkFBQSxDQUFvQnRoQjtRQUFJLENBQUssQ0FBQyxlQUNuQytILHNEQUFBLENBQUM2ZSwwRUFBaUI7VUFDaEIsZUFBWSxzQkFBc0I7VUFDbEN0WixTQUFTLEVBQUU2RiwyREFBa0I7VUFDN0JxQixPQUFPLEVBQUVBLENBQUEsS0FBTXNTLFFBQVEsQ0FBQ2hrQixNQUFNO1FBQUUsQ0FDakMsQ0FBQztNQUFBLENBQ0c7SUFBQyxDQUNKLENBQUMsZUFDUG1GLHVEQUFBLENBQUNpUiwrQ0FBSTtNQUFDSSxFQUFFLEVBQUUsRUFBRztNQUFDaEMsT0FBTyxFQUFFLENBQUU7TUFBQytCLElBQUk7TUFBQXRRLFFBQUEsZ0JBQzVCaEIsc0RBQUEsQ0FBQ2tYLGtFQUFjO1FBQUNuYyxNQUFNLEVBQUVBO01BQU8sQ0FBRSxDQUFDLGVBQ2xDbUYsdURBQUE7UUFBTXFGLFNBQVMsRUFBRTZGLHlEQUFnQjtRQUFBcEssUUFBQSxHQUM5QlYsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLEVBQUMsR0FBQyxFQUFDLEdBQUcsZUFDbkNOLHNEQUFBLENBQUN1WSwrREFBVztVQUFDbEUsTUFBTSxFQUFFdFosTUFBTSxDQUFDc1osTUFBTztVQUFDa0csU0FBUztRQUFBLENBQUUsQ0FBQztNQUFBLENBQzVDLENBQUM7SUFBQSxDQUNILENBQUM7RUFBQSxDQUNILENBQUM7QUFFWDtBQUVBdUUscUJBQXFCLENBQUN0ZCxTQUFTLEdBQUc7RUFDaEN6RyxNQUFNLEVBQUVzRSwwREFBZ0I7RUFDeEIwZixRQUFRLEVBQUUxZix3REFBY3NDO0FBQzFCLENBQUM7QUFFRCxpRUFBZW1kLHFCQUFxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pESTtBQUNMO0FBQ1k7QUFDTDtBQUN5QjtBQUNMO0FBQ2I7QUFDVztBQUNkO0FBQ2tDO0FBQ3JCO0FBQ1o7QUFBQTtBQUUvQyxTQUFTeEQsbUJBQW1CQSxDQUFBOWlCLElBQUEsRUFNekI7RUFBQSxJQU4wQjtJQUMzQmdELE9BQU87SUFDUHlHLElBQUk7SUFDSmtiLDZCQUE2QjtJQUM3QkMsb0JBQW9CO0lBQ3BCN0s7RUFDRixDQUFDLEdBQUEvWixJQUFBO0VBQ0MsTUFBTTtJQUFFOEg7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTWxJLFFBQVEsR0FBR3diLHdEQUFXLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUMwTSxJQUFJLEVBQUVDLE9BQU8sQ0FBQyxHQUFHM1UsK0NBQVEsQ0FBQ3dVLHVEQUFRLENBQUM7RUFDMUMsTUFBTSxDQUFDSSxRQUFRLEVBQUVDLFdBQVcsQ0FBQyxHQUFHN1UsK0NBQVEsQ0FBQyxFQUFFLENBQUM7RUFDNUMsTUFBTSxDQUFDOFUsYUFBYSxFQUFFQyxnQkFBZ0IsQ0FBQyxHQUFHL1UsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFFekQsTUFBTWdWLFdBQVcsR0FBR0EsQ0FBQSxLQUFNO0lBQ3hCSCxXQUFXLENBQUMsRUFBRSxDQUFDO0lBQ2ZsTixhQUFhLENBQUMsQ0FBQztJQUNmZ04sT0FBTyxDQUFDSCx1REFBUSxDQUFDO0lBQ2pCLElBQUlNLGFBQWEsRUFBRTtNQUNqQnRDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ3hCdUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQ3pCO0VBQ0YsQ0FBQztFQUVELE1BQU1FLGFBQWEsR0FBRyxNQUFBQSxDQUFBLEtBQVk7SUFDaEN6b0IsUUFBUSxDQUFDa0UsMkRBQWlCLENBQUM7TUFBRUU7SUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDMUIsSUFBSSxDQUFFK0IsR0FBRyxJQUFLO01BQ3JEekUsUUFBUSxDQUFDK0Usc0VBQTRCLENBQUNOLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUM3QyxJQUFJLENBQUFBLEdBQUcsYUFBSEEsR0FBRyx1QkFBSEEsR0FBRyxDQUFFbEMsTUFBTSxNQUFLNkIsT0FBTyxDQUFDN0IsTUFBTSxFQUFFO1FBQ2xDNGxCLE9BQU8sQ0FBQ0YsdURBQVEsQ0FBQyxDQUFDLENBQUM7UUFDbkJNLGdCQUFnQixDQUFDLElBQUksQ0FBQztNQUN4QixDQUFDLE1BQU07UUFDTEYsV0FBVyxDQUFDbmYsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUM7TUFDOUM7SUFDRixDQUFDLENBQUM7SUFDRm1mLFdBQVcsQ0FBQyxFQUFFLENBQUM7RUFDakIsQ0FBQztFQUVELE1BQU1LLGFBQWEsR0FBR0EsQ0FBQSxrQkFDcEI1Zix3REFBQSxDQUFBbUwsd0RBQUE7SUFBQXJLLFFBQUEsZ0JBQ0VoQix1REFBQTtNQUFJdUYsU0FBUyxFQUFFNkYsNERBQWtCO01BQUFwSyxRQUFBLEVBQzlCVixDQUFDLENBQUMsb0NBQW9DO0lBQUMsQ0FDdEMsQ0FBQyxFQUNKa2YsUUFBUSxpQkFDUHhmLHVEQUFBLENBQUNnUywwREFBVTtNQUNUQyxVQUFVLEVBQUU3RyxnRUFBc0I7TUFDbEM4RCxLQUFLLEVBQUMsU0FBUztNQUNmZ0QsVUFBVSxFQUFDLHVCQUF1QjtNQUNsQ2pYLE9BQU8sRUFBRXVrQjtJQUFTLENBQ25CLENBQ0YsZUFDRHhmLHVEQUFBLENBQUNULDhDQUFHO01BQUF5QixRQUFBLEVBQ0R4RixPQUFPLENBQUNHLEdBQUcsQ0FBRVosTUFBTSxpQkFDbEJpRix1REFBQSxDQUFDOGUsOERBQXFCO1FBRXBCL2pCLE1BQU0sRUFBRUEsTUFBTztRQUNmZ2tCLFFBQVEsRUFBRTVCO01BQThCLEdBRm5DcGlCLE1BQU0sQ0FBQ2xCLEVBR2IsQ0FDRjtJQUFDLENBQ0MsQ0FBQyxlQUNOcUcsd0RBQUEsQ0FBQ1gsOENBQUc7TUFBQ2dHLFNBQVMsRUFBRTZGLCtEQUFxQjtNQUFBcEssUUFBQSxnQkFDbkNoQix1REFBQSxDQUFDdVEsaURBQU07UUFDTCxjQUFXLHNCQUFzQjtRQUNqQ29HLElBQUksRUFBQyxRQUFRO1FBQ2JwUixTQUFTLEVBQUU2Riw4REFBb0I7UUFDL0JxQixPQUFPLEVBQUVtVCxXQUFZO1FBQUE1ZSxRQUFBLEVBRXBCVixDQUFDLENBQUMsZ0JBQWdCO01BQUMsQ0FDZCxDQUFDLGVBQ1ROLHVEQUFBLENBQUN1USxpREFBTTtRQUNMLGNBQVcsd0JBQXdCO1FBQ25Db0csSUFBSSxFQUFDLFFBQVE7UUFDYnBSLFNBQVMsRUFBRTZGLGdFQUFzQjtRQUNqQ3FCLE9BQU8sRUFBRW9ULGFBQWM7UUFBQTdlLFFBQUEsRUFFdEJWLENBQUMsQ0FBQyxrQkFBa0I7TUFBQyxDQUNoQixDQUFDO0lBQUEsQ0FDTixDQUFDO0VBQUEsQ0FDTixDQUNIO0VBRUQsTUFBTThmLGFBQWEsR0FBR0EsQ0FBQSxrQkFDcEJsZ0Isd0RBQUEsQ0FBQ1gsOENBQUc7SUFDRmdHLFNBQVMsRUFBRTZGLGtFQUF3QjtJQUNuQyxlQUFZLDJCQUEyQjtJQUFBcEssUUFBQSxnQkFFdkNoQix1REFBQSxDQUFDbWYsd0VBQWU7TUFBQ2hULEVBQUUsRUFBRTtRQUFFK0MsS0FBSyxFQUFFO01BQVU7SUFBRSxDQUFFLENBQUMsZUFDN0NsUCx1REFBQTtNQUFNdUYsU0FBUyxFQUFFNkYsNERBQWtCO01BQUFwSyxRQUFBLEVBQ2hDVixDQUFDLENBQUMsa0NBQWtDO0lBQUMsQ0FDbEMsQ0FBQyxlQUNQTix1REFBQTtNQUFNdUYsU0FBUyxFQUFFNkYsNkRBQW1CO01BQUFwSyxRQUFBLEVBQ2pDVixDQUFDLENBQUMsa0NBQWtDO0lBQUMsQ0FDbEMsQ0FBQyxlQUNQTix1REFBQSxDQUFDdVEsaURBQU07TUFDTCxjQUFXLHNCQUFzQjtNQUNqQ29HLElBQUksRUFBQyxRQUFRO01BQ2JwUixTQUFTLEVBQUU2RixnRUFBc0I7TUFDakNxQixPQUFPLEVBQUVtVCxXQUFZO01BQUE1ZSxRQUFBLEVBRXBCVixDQUFDLENBQUMsZ0JBQWdCO0lBQUMsQ0FDZCxDQUFDO0VBQUEsQ0FDTixDQUNOO0VBRUQsTUFBTWtnQixXQUFXLEdBQUdBLENBQUEsS0FBTTtJQUN4QixRQUFRbEIsSUFBSTtNQUNWLEtBQUtGLHVEQUFRO1FBQ1gsT0FBT1UsYUFBYSxDQUFDLENBQUM7TUFDeEIsS0FBS1QsdURBQVE7UUFDWCxPQUFPZSxhQUFhLENBQUMsQ0FBQztNQUN4QjtRQUNFLE9BQU9OLGFBQWEsQ0FBQyxDQUFDO0lBQzFCO0VBQ0YsQ0FBQztFQUNELG9CQUNFOWYsdURBQUEsQ0FBQ2tmLCtEQUFvQjtJQUFDdUIsV0FBVztJQUFBemYsUUFBQSxlQUMvQmQsd0RBQUEsQ0FBQ29TLHdEQUFlO01BQUNyUSxJQUFJLEVBQUVBLElBQUs7TUFBQ3NRLGFBQWEsRUFBRXFOLFdBQVk7TUFBQTVlLFFBQUEsZ0JBQ3REaEIsdURBQUEsQ0FBQ1QsOENBQUc7UUFDRmdHLFNBQVMsRUFBRTZGLCtEQUFxQjtRQUNoQyxlQUFZLHNCQUFzQjtRQUFBcEssUUFBQSxlQUVsQ2hCLHVEQUFBO1VBQUFnQixRQUFBLEVBQUtWLENBQUMsQ0FBQyw4QkFBOEI7UUFBQyxDQUFLO01BQUMsQ0FDekMsQ0FBQyxFQUNMa2dCLFdBQVcsQ0FBQyxDQUFDO0lBQUEsQ0FDQztFQUFDLENBQ0UsQ0FBQztBQUUzQjtBQUVBbEYsbUJBQW1CLENBQUM5WixTQUFTLEdBQUc7RUFDOUJoRyxPQUFPLEVBQUU2RCx5REFBZXFDO0FBQzFCLENBQUM7QUFFRCxpRUFBZTRaLG1CQUFtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hKbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ2lDO0FBQ1g7QUFDVjtBQUFBO0FBRS9DLE1BQU13RixXQUFXLEdBQUd0b0IsSUFBQTtFQUFBLElBQUM7SUFDbkJxQixFQUFFO0lBQ0ZxSSxLQUFLO0lBQ0w2ZSxRQUFRO0lBQ1JDLFVBQVU7SUFDVmhnQixRQUFRO0lBQ1JpQixJQUFJO0lBQ0o1QixPQUFPO0lBQ1BrRjtFQUNGLENBQUMsR0FBQS9NLElBQUE7RUFBQSxvQkFDQzBILHVEQUFBLENBQUNrUyxpREFBTTtJQUNMdlksRUFBRSxFQUFFQSxFQUFHO0lBQ1BvSSxJQUFJLEVBQUVBLElBQUs7SUFDWDVCLE9BQU8sRUFBRUEsT0FBUTtJQUNqQm1TLE1BQU0sRUFBQyxPQUFPO0lBQ2R5TyxVQUFVLEVBQUU7TUFBRUMsV0FBVyxFQUFFO0lBQU0sQ0FBRTtJQUNuQzNiLFNBQVMsS0FBQXZOLE1BQUEsQ0FBS29ULHdEQUFjLE9BQUFwVCxNQUFBLENBQUl1TixTQUFTLENBQUc7SUFBQXZFLFFBQUEsZ0JBRTVDZCx1REFBQSxDQUFDWCw4Q0FBRztNQUFDZ0csU0FBUyxFQUFFNkYsdURBQWM7TUFBQXBLLFFBQUEsZ0JBQzVCaEIsc0RBQUEsQ0FBQzJnQixxREFBVTtRQUNUcGIsU0FBUyxFQUFFNkYseURBQWdCO1FBQzNCcUIsT0FBTyxFQUFFcE0sT0FBUTtRQUNqQjhMLEVBQUUsRUFBRTtVQUFFbVYsS0FBSyxFQUFFO1FBQVEsQ0FBRTtRQUN2Qi9VLFFBQVEsRUFBQyxPQUFPO1FBQUF2TCxRQUFBLGVBRWhCaEIsc0RBQUEsQ0FBQ2tMLHNEQUFTLElBQUU7TUFBQyxDQUNILENBQUMsZUFDYmxMLHNEQUFBLENBQUM0Z0IscURBQVU7UUFBQy9PLE9BQU8sRUFBQyxJQUFJO1FBQUMwUCxZQUFZO1FBQUNoYyxTQUFTLEVBQUU2RixzREFBYTtRQUFBcEssUUFBQSxFQUMzRGtCO01BQUssQ0FDSSxDQUFDLGVBQ2JsQyxzREFBQSxDQUFDNGdCLHFEQUFVO1FBQUMvTyxPQUFPLEVBQUMsSUFBSTtRQUFDMFAsWUFBWTtRQUFDaGMsU0FBUyxFQUFFNkYseURBQWdCO1FBQUFwSyxRQUFBLEVBQzlEK2Y7TUFBUSxDQUNDLENBQUMsZUFDYi9nQixzREFBQSxDQUFDNGdCLHFEQUFVO1FBQUMvTyxPQUFPLEVBQUMsT0FBTztRQUFDMFAsWUFBWTtRQUFDaGMsU0FBUyxFQUFFNkYsMkRBQWtCO1FBQUFwSyxRQUFBLEVBQ25FZ2dCO01BQVUsQ0FDRCxDQUFDO0lBQUEsQ0FDVixDQUFDLEVBQ0xoZ0IsUUFBUTtFQUFBLENBQ0gsQ0FBQztBQUFBLENBQ1Y7QUFFRDhmLFdBQVcsQ0FBQ3RmLFNBQVMsR0FBRztFQUN0QjNILEVBQUUsRUFBRXdGLDBEQUFnQixDQUFDOEIsVUFBVTtFQUMvQmUsS0FBSyxFQUFFN0MsMkRBQW1CLENBQUMsQ0FBQ0EsMERBQWdCLEVBQUVBLHdEQUFjLENBQUMsQ0FBQztFQUM5RDBoQixRQUFRLEVBQUUxaEIsMkRBQW1CLENBQUMsQ0FBQ0EsMERBQWdCLEVBQUVBLHdEQUFjLENBQUMsQ0FBQztFQUNqRTJoQixVQUFVLEVBQUUzaEIsMkRBQW1CLENBQUMsQ0FBQ0EsMERBQWdCLEVBQUVBLHdEQUFjLENBQUMsQ0FBQztFQUNuRTJCLFFBQVEsRUFBRTNCLHdEQUFjO0VBQ3hCNEMsSUFBSSxFQUFFNUMsd0RBQWM7RUFDcEJnQixPQUFPLEVBQUVoQix3REFBYztFQUN2QmtHLFNBQVMsRUFBRWxHLDBEQUFnQmdEO0FBQzdCLENBQUM7QUFFRCxpRUFBZXllLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ1k7QUFDcUI7QUFDNkI7QUFDMUM7QUFBQTtBQUV2RCxNQUFNYSxZQUFZLEdBQUducEIsSUFBQSxJQUFzQztFQUFBLElBQXJDO0lBQUUrSCxNQUFNO0lBQUVxaEIsUUFBUTtJQUFFemdCO0VBQVcsQ0FBQyxHQUFBM0ksSUFBQTtFQUNwRCxNQUFNO0lBQUU4SDtFQUFFLENBQUMsR0FBR2hCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUN1aUIsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRzFpQixxREFBYyxDQUFDLEVBQUUsQ0FBQztFQUN0RCxNQUFNLENBQUMyaUIsT0FBTyxFQUFFQyxVQUFVLENBQUMsR0FBRzVpQixxREFBYyxDQUFDLEVBQUUsQ0FBQztFQUNoRCxNQUFNO0lBQUVzTCxNQUFNO0lBQUUvSixNQUFNO0lBQUU2SixPQUFPO0lBQUV5WCxlQUFlO0lBQUUvZDtFQUFjLENBQUMsR0FBRzNELE1BQU07RUFDMUUsTUFBTXRJLElBQUksR0FBRzlCLDREQUFvQixDQUFDSSxPQUFPO0VBQ3pDLE1BQU02QixLQUFLLEdBQUd1SSxNQUFNLENBQUMxSSxJQUFJLENBQUM7RUFDMUIsTUFBTWtNLEtBQUssR0FBR3FHLE9BQU8sQ0FBQ3ZTLElBQUksQ0FBQyxJQUFJd1MsT0FBTyxDQUFDQyxNQUFNLENBQUN6UyxJQUFJLENBQUMsQ0FBQztFQUNwRCxNQUFNbU0sVUFBVSxHQUFHb0csT0FBTyxDQUFDdlMsSUFBSSxDQUFDLElBQUl5UyxNQUFNLENBQUN6UyxJQUFJLENBQUM7RUFFaERtSCxzREFBZSxDQUFDLE1BQU07SUFDcEIsSUFBSXlpQixVQUFVLEtBQUssRUFBRSxFQUFFO01BQ3JCRyxVQUFVLENBQUM1cEIsS0FBSyxHQUFHLENBQUNBLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztNQUNoQyxPQUFPOHBCLFNBQVM7SUFDbEI7SUFFQVIsK0dBQTBCLENBQUNFLFFBQVEsRUFBRUMsVUFBVSxFQUFHTSxPQUFPLElBQUs7TUFDNUQsSUFBSUMsVUFBVSxHQUFHLEVBQUU7TUFFbkIsSUFBSWhxQixLQUFLLEVBQUU7UUFDVGdxQixVQUFVLEdBQUcsQ0FBQ2hxQixLQUFLLENBQUM7TUFDdEI7TUFFQSxJQUFJK3BCLE9BQU8sRUFBRTtRQUNYQyxVQUFVLEdBQUcsQ0FBQyxHQUFHQSxVQUFVLEVBQUUsR0FBR0QsT0FBTyxDQUFDO01BQzFDO01BRUFILFVBQVUsQ0FBQ0ksVUFBVSxDQUFDO0lBQ3hCLENBQUMsQ0FBQztJQUNGLE9BQU9GLFNBQVM7RUFDbEIsQ0FBQyxFQUFFLENBQUM5cEIsS0FBSyxFQUFFeXBCLFVBQVUsQ0FBQyxDQUFDO0VBRXZCLG9CQUNFN2hCLHNEQUFBLENBQUN5aEIsdURBQVk7SUFDWHhwQixJQUFJLEVBQUVBLElBQUs7SUFDWDhwQixPQUFPLEVBQUVBLE9BQVE7SUFDakJNLFlBQVk7SUFDWkMsUUFBUTtJQUNSQyxrQkFBa0I7SUFDbEJDLHFCQUFxQjtJQUNyQnBxQixLQUFLLEVBQUVBLEtBQU07SUFDYmtTLE1BQU0sRUFBRUEsQ0FBQSxLQUFNMlgsZUFBZSxDQUFDaHFCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFFO0lBQ2hEd3FCLGNBQWMsRUFBR0MsTUFBTSxJQUFLO01BQzFCO01BQ0EsSUFBSSxPQUFPQSxNQUFNLEtBQUssUUFBUSxFQUFFO1FBQzlCLE9BQU9BLE1BQU07TUFDZjtNQUNBO01BQ0EsSUFBSUEsTUFBTSxDQUFDYixVQUFVLEVBQUU7UUFDckIsT0FBT2EsTUFBTSxDQUFDYixVQUFVO01BQzFCO01BQ0E7TUFDQSxPQUFPYSxNQUFNLENBQUN6cUIsSUFBSTtJQUNwQixDQUFFO0lBQ0ZnTSxRQUFRLEVBQUVBLENBQUN1SixLQUFLLEVBQUVuSSxRQUFRLEtBQUs7TUFDN0IsTUFBTXNkLFFBQVEsR0FBRyxDQUFBdGQsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUV3YyxVQUFVLEtBQUl4YyxRQUFRO01BQ2pEMmMsVUFBVSxDQUFDVyxRQUFRLEdBQUcsQ0FBQ0EsUUFBUSxFQUFFLEdBQUdaLE9BQU8sQ0FBQyxHQUFHQSxPQUFPLENBQUM7TUFDdkQ3ZCxhQUFhLENBQUNqTSxJQUFJLEVBQUUwcUIsUUFBUSxDQUFDO0lBQy9CLENBQUU7SUFDRkMsYUFBYSxFQUFFQSxDQUFDcFYsS0FBSyxFQUFFcVYsYUFBYSxLQUFLO01BQ3ZDZixhQUFhLENBQUNlLGFBQWEsQ0FBQztJQUM5QixDQUFFO0lBQ0ZDLGFBQWEsRUFBRUEsQ0FBQ2YsT0FBTyxFQUFFM29CLE1BQU0sS0FBSztNQUNsQyxNQUFNO1FBQUV5b0I7TUFBVyxDQUFDLEdBQUd6b0IsTUFBTTtNQUM3QixNQUFNMnBCLFFBQVEsR0FBRyxDQUFDLEdBQUdoQixPQUFPLENBQUM7TUFDN0I7TUFDQSxNQUFNaUIsVUFBVSxHQUFHakIsT0FBTyxDQUFDdFosSUFBSSxDQUM1QmlhLE1BQU0sSUFBS2IsVUFBVSxLQUFLYSxNQUFNLENBQUN4Z0IsS0FDcEMsQ0FBQztNQUNELElBQUkyZixVQUFVLEtBQUssRUFBRSxJQUFJLENBQUNtQixVQUFVLEVBQUU7UUFDcENELFFBQVEsQ0FBQ2hyQixJQUFJLENBQUM7VUFDWjhwQixVQUFVO1VBQ1Y1cEIsSUFBSSxjQUFBRCxNQUFBLENBQWE2cEIsVUFBVTtRQUM3QixDQUFDLENBQUM7TUFDSjtNQUVBLE9BQU9rQixRQUFRO0lBQ2pCLENBQUU7SUFDRkUsV0FBVyxFQUFHN3BCLE1BQU0saUJBQ2xCNEcsc0RBQUEsQ0FBQzJHLG9EQUFTQTtJQUNSLDZEQUFBM0osYUFBQSxDQUFBQSxhQUFBLEtBQ0k1RCxNQUFNO01BQ1YyTCxLQUFLLEVBQUV6RSxDQUFDLENBQUMsZ0NBQWdDLENBQUU7TUFDM0NtRixTQUFTO01BQ1RELFFBQVEsRUFBRXJFLFVBQVc7TUFDckJpRCxVQUFVLEVBQUVBLFVBQVc7TUFDdkJELEtBQUssRUFBRUE7SUFBTSxFQUNkLENBQ0Q7SUFDRitlLFlBQVksRUFBRUEsQ0FBQ3pILEtBQUssRUFBRWlILE1BQU0sS0FBSztNQUMvQixNQUFNO1VBQUV2WjtRQUFvQixDQUFDLEdBQUdzUyxLQUFLO1FBQXJCMEgsV0FBVyxHQUFBN2UscUZBQUEsQ0FBS21YLEtBQUssRUFBQWxYLFNBQUE7TUFDckM7UUFBQTtRQUNFO1FBQ0F2RSxzREFBQSxPQUFBaEQsYUFBQSxDQUFBQSxhQUFBLEtBQWtCbW1CLFdBQVc7VUFBQW5pQixRQUFBLGVBQzNCaEIsc0RBQUEsQ0FBQzRnQixxREFBVTtZQUFDL08sT0FBTyxFQUFDLE9BQU87WUFBQzFGLEVBQUUsRUFBRTtjQUFFK0MsS0FBSyxFQUFFO1lBQWlCLENBQUU7WUFBQWxPLFFBQUEsRUFDekQwaEIsTUFBTSxDQUFDenFCO1VBQUksQ0FDRjtRQUFDLElBSE5rUixHQUlMO01BQUM7SUFFVDtFQUFFLENBQ0gsQ0FBQztBQUVOLENBQUM7QUFFRHdZLFlBQVksQ0FBQ25nQixTQUFTLEdBQUc7RUFDdkJqQixNQUFNLEVBQUVsQiwwREFBZ0IsQ0FBQzhCLFVBQVU7RUFDbkN5Z0IsUUFBUSxFQUFFdmlCLDBEQUFnQixDQUFDOEI7QUFDN0IsQ0FBQztBQUVELGlFQUFld2dCLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaklEO0FBQ1M7QUFPWjtBQUNtRDtBQUNuQjtBQUVSO0FBQUE7QUFFL0MsTUFBTS9oQixzQkFBc0IsR0FBR3BILElBQUEsSUFLekI7RUFBQSxJQUwwQjtJQUM5QjBJLFVBQVU7SUFDVlgsTUFBTTtJQUNOeUQsVUFBVSxHQUFHLEtBQUs7SUFDbEI3QyxVQUFVLEdBQUc7RUFDZixDQUFDLEdBQUEzSSxJQUFBO0VBQ0MsTUFBTVAsSUFBSSxHQUFHOUIsNERBQW9CLENBQUNLLGtCQUFrQjtFQUNwRCxNQUFNO0lBQUVrVSxNQUFNO0lBQUUvSixNQUFNO0lBQUU2SixPQUFPO0lBQUVILFlBQVk7SUFBRUU7RUFBVyxDQUFDLEdBQUdoSyxNQUFNO0VBQ3BFLE1BQU1uSSxLQUFLLEdBQUd1SSxNQUFNLENBQUMxSSxJQUFJLENBQUM7RUFDMUIsTUFBTWtNLEtBQUssR0FBR3FHLE9BQU8sQ0FBQ3ZTLElBQUksQ0FBQyxJQUFJd1MsT0FBTyxDQUFDQyxNQUFNLENBQUN6UyxJQUFJLENBQUMsQ0FBQztFQUNwRCxNQUFNbU0sVUFBVSxHQUFHb0csT0FBTyxDQUFDdlMsSUFBSSxDQUFDLElBQUl5UyxNQUFNLENBQUN6UyxJQUFJLENBQUM7RUFFaEQsb0JBQ0UrSCxzREFBQSxDQUFDVCw4Q0FBRztJQUFDZ0csU0FBUyxFQUFFNkYsd0RBQWU7SUFBQXBLLFFBQUEsZUFDN0JkLHVEQUFBLENBQUNtRCxzREFBVztNQUFDb0MsU0FBUztNQUFDdEIsS0FBSyxFQUFFQSxLQUFNO01BQUFuRCxRQUFBLGdCQUNsQ2hCLHNEQUFBLENBQUNzRCwyREFBZ0I7UUFDZnFDLE9BQU8sZUFDTDNGLHNEQUFBLENBQUNvRCxtREFBUTtVQUNQbkwsSUFBSSxFQUFFQSxJQUFLO1VBQ1hpTixPQUFPLEVBQUUsQ0FBQyxDQUFDOU0sS0FBTTtVQUNqQjJNLEtBQUssZUFBRS9FLHNEQUFBLENBQUMrRiw0RkFBTztZQUFBL0UsUUFBQSxFQUFFRTtVQUFVLENBQVUsQ0FBRTtVQUN2QytDLFFBQVEsRUFBRW9HLFlBQWE7VUFDdkJDLE1BQU0sRUFBRUM7UUFBVyxDQUNwQixDQUNGO1FBQ0R4RixLQUFLLGVBQUUvRSxzREFBQSxDQUFDK0YsNEZBQU87VUFBQS9FLFFBQUEsRUFBRUU7UUFBVSxDQUFVLENBQUU7UUFDdkNJLFFBQVEsRUFBRTBDLFVBQVc7UUFDckJ3QixRQUFRLEVBQUVyRTtNQUFXLENBQ3RCLENBQUMsRUFDRGdELEtBQUssaUJBQUluRSxzREFBQSxDQUFDd0QseURBQWM7UUFBQXhDLFFBQUEsRUFBRW9ELFVBQVUsYUFBVkEsVUFBVSxjQUFWQSxVQUFVLEdBQUk7TUFBRyxDQUFpQixDQUFDO0lBQUEsQ0FDbkQ7RUFBQyxDQUNYLENBQUM7QUFFVixDQUFDO0FBRUR4RSxzQkFBc0IsQ0FBQzRCLFNBQVMsR0FBRztFQUNqQ04sVUFBVSxFQUFFN0IsMERBQWdCLENBQUM4QixVQUFVO0VBQ3ZDWixNQUFNLEVBQUVsQiwwREFBZ0IsQ0FBQzhCLFVBQVU7RUFDbkM2QyxVQUFVLEVBQUUzRSx3REFBYztFQUMxQjhCLFVBQVUsRUFBRTlCLHdEQUFjK0M7QUFDNUIsQ0FBQztBQUVELGlFQUFleEMsc0JBQXNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4RHJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQUNPO0FBQ0s7QUFBQTtBQUUvQyxNQUFNd2pCLHNCQUFzQixHQUFHNXFCLElBQUEsSUFBZ0I7RUFBQSxJQUFmO0lBQUUrSDtFQUFPLENBQUMsR0FBQS9ILElBQUE7RUFDeEMsTUFBTTtJQUFFOEg7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFFOUIsb0JBQ0VZLHVEQUFBLENBQUFtTCx1REFBQTtJQUFBckssUUFBQSxnQkFDRWhCLHNEQUFBLENBQUMyRyxvREFBUztNQUNSbEIsU0FBUztNQUNUNUwsRUFBRSxFQUFDLHNCQUFzQjtNQUN6QmtMLEtBQUssRUFBRXpFLENBQUMsQ0FBQywwQkFBMEIsQ0FBRTtNQUNyQ2xJLEtBQUssRUFBRW1JLE1BQU0sQ0FBQ0ksTUFBTSxDQUFDMGlCLG9CQUFxQjtNQUMxQ3BmLFFBQVEsRUFBRTFELE1BQU0sQ0FBQzhKLFlBQWE7TUFDOUJDLE1BQU0sRUFBRS9KLE1BQU0sQ0FBQ2dLLFVBQVc7TUFDMUJwRyxLQUFLLEVBQ0g1RCxNQUFNLENBQUNpSyxPQUFPLENBQUM2WSxvQkFBb0IsSUFDbkM1WSxPQUFPLENBQUNsSyxNQUFNLENBQUNtSyxNQUFNLENBQUMyWSxvQkFBb0IsQ0FDM0M7TUFDRGpmLFVBQVUsRUFDUjdELE1BQU0sQ0FBQ2lLLE9BQU8sQ0FBQzZZLG9CQUFvQixJQUNuQzlpQixNQUFNLENBQUNtSyxNQUFNLENBQUMyWTtJQUNmLENBQ0YsQ0FBQyxlQUNGcmpCLHNEQUFBLENBQUMyRyxvREFBUztNQUNSbEIsU0FBUztNQUNUNUwsRUFBRSxFQUFDLHFCQUFxQjtNQUN4QmtMLEtBQUssRUFBRXpFLENBQUMsQ0FBQyx5QkFBeUIsQ0FBRTtNQUNwQ2xJLEtBQUssRUFBRW1JLE1BQU0sQ0FBQ0ksTUFBTSxDQUFDMmlCLG1CQUFvQjtNQUN6Q3JmLFFBQVEsRUFBRTFELE1BQU0sQ0FBQzhKLFlBQWE7TUFDOUJDLE1BQU0sRUFBRS9KLE1BQU0sQ0FBQ2dLLFVBQVc7TUFDMUJwRyxLQUFLLEVBQ0g1RCxNQUFNLENBQUNpSyxPQUFPLENBQUM4WSxtQkFBbUIsSUFDbEM3WSxPQUFPLENBQUNsSyxNQUFNLENBQUNtSyxNQUFNLENBQUM0WSxtQkFBbUIsQ0FDMUM7TUFDRGxmLFVBQVUsRUFDUjdELE1BQU0sQ0FBQ2lLLE9BQU8sQ0FBQzhZLG1CQUFtQixJQUNsQy9pQixNQUFNLENBQUNtSyxNQUFNLENBQUM0WTtJQUNmLENBQ0YsQ0FBQztFQUFBLENBQ0YsQ0FBQztBQUVQLENBQUM7QUFFREYsc0JBQXNCLENBQUM1aEIsU0FBUyxHQUFHO0VBQ2pDakIsTUFBTSxFQUFFbEIsMERBQWdCLENBQUM4QjtBQUMzQixDQUFDO0FBRUQsaUVBQWVpaUIsc0JBQXNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9EckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ1k7QUFDQztBQUNiO0FBQzhCO0FBS1Q7QUFFTztBQUNWO0FBQ2lDO0FBQ3pDO0FBQ3FCO0FBSTNCO0FBRVk7QUFBQTtBQUVuRCxNQUFNSSxVQUFVLEdBQUdockIsSUFBQSxJQU9iO0VBQUEsSUFBQStnQixtQkFBQSxFQUFBcEMsYUFBQTtFQUFBLElBUGM7SUFDbEJwYyxNQUFNO0lBQ050RSxjQUFjO0lBQ2RjLE1BQU07SUFDTmtzQixPQUFPO0lBQ1ByakIsUUFBUTtJQUNSQztFQUNGLENBQUMsR0FBQTdILElBQUE7RUFDQyxNQUFNO0lBQUU4SDtFQUFFLENBQUMsR0FBR2hCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNb2tCLGFBQWEsR0FBRzNvQixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRThDLE9BQU87RUFDckM7RUFDQSxNQUFNOGxCLGdCQUFnQixHQUFHLENBQUE1b0IsTUFBTSxhQUFOQSxNQUFNLGdCQUFBd2UsbUJBQUEsR0FBTnhlLE1BQU0sQ0FBRXFhLFdBQVcsY0FBQW1FLG1CQUFBLHVCQUFuQkEsbUJBQUEsQ0FBcUJxSyxrQkFBa0IsS0FBSSxLQUFLO0VBQ3pFLE1BQU12bEIsT0FBTyxHQUFHdEQsTUFBTSxhQUFOQSxNQUFNLGdCQUFBb2MsYUFBQSxHQUFOcGMsTUFBTSxDQUFFOEQsS0FBSyxjQUFBc1ksYUFBQSx1QkFBYkEsYUFBQSxDQUFlbk8sZUFBZSxDQUFDNmEsTUFBTSxDQUFDLENBQUNob0IsR0FBRyxFQUFFK00sR0FBRyxLQUFLO0lBQ2xFLE1BQU1wRSxZQUFZLEdBQUdiLDhFQUFNLENBQUNpRixHQUFHLENBQUM5RSxRQUFRLENBQUM3TCxJQUFJLEVBQUUyUSxHQUFHLENBQUM5RSxRQUFRLENBQUNqSyxFQUFFLENBQUM7SUFDL0RnQyxHQUFHLENBQUMySSxZQUFZLENBQUMsR0FBR21FLG9GQUFZLENBQUNDLEdBQUcsQ0FBQ3hRLEtBQUssRUFBRXdRLEdBQUcsQ0FBQzlFLFFBQVEsQ0FBQ2hNLElBQUksQ0FBQztJQUM5RCxPQUFPK0QsR0FBRztFQUNaLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUVOLE1BQU0wRSxNQUFNLEdBQUdmLGlEQUFTLENBQUM7SUFDdkJnQixhQUFhLEVBQUVWLGlFQUFZLENBQ3pCL0UsTUFBTSxDQUFDOEQsS0FBSyxFQUNacEksY0FBYyxFQUNkNEgsT0FBTyxFQUNQcWxCLGFBQWEsRUFDYkMsZ0JBQWdCLEVBQ2hCLElBQUksRUFDSixJQUNGLENBQUM7SUFDRGxqQixnQkFBZ0IsRUFBRVosMEVBQXFCLENBQ3JDcEosY0FBYyxFQUNka3RCLGdCQUFnQixFQUNoQixJQUFJLEVBQ0pwc0IsTUFBTSxDQUFDbUosaUNBQ1QsQ0FBQztJQUNETixRQUFRLEVBQUdPLE1BQU0sSUFBSztNQUNwQixNQUFNQyxlQUFlLEdBQUdkLGlFQUFZLENBQ2xDL0UsTUFBTSxDQUFDOEQsS0FBSyxFQUNacEksY0FBYyxFQUNka0ssTUFBTSxFQUNOK2lCLGFBQWEsRUFDYkMsZ0JBQWdCLEVBQ2hCLElBQUksRUFDSixJQUFJLEVBQ0osSUFDRixDQUFDO01BRUQsT0FBT3ZqQixRQUFRLENBQUNRLGVBQWUsQ0FBQztJQUNsQyxDQUFDO0lBQ0RDLGtCQUFrQixFQUFFO0VBQ3RCLENBQUMsQ0FBQzs7RUFFRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBO0VBQ0FsQixvRUFBZ0IsQ0FBQ1ksTUFBTSxFQUFFLGVBQWUsQ0FBQztFQUV6QyxvQkFDRUwsd0RBQUE7SUFBTUUsUUFBUSxFQUFFRyxNQUFNLENBQUNPLFlBQWE7SUFBQ0MsVUFBVTtJQUFBQyxRQUFBLGdCQUM3Q2hCLHVEQUFBLENBQUN1akIsMERBQWlCO01BQ2hCaGpCLE1BQU0sRUFBRUEsTUFBTztNQUNmMUIsS0FBSyxFQUFFOUQsTUFBTSxDQUFDOEQsS0FBTTtNQUNwQitpQixRQUFRLEVBQUVycUIsTUFBTSxDQUFDc0MsRUFBRztNQUNwQnlILFFBQVEsRUFBRSxDQUFDbWlCO0lBQVEsQ0FDcEIsQ0FBQyxFQUVERSxnQkFBZ0IsaUJBQ2Z6akIsd0RBQUEsQ0FBQ1gsOENBQUc7TUFBQXlCLFFBQUEsZ0JBQ0ZoQix1REFBQSxDQUFDNGdCLHFEQUFVO1FBQ1QvTyxPQUFPLEVBQUMsV0FBVztRQUNuQjBQLFlBQVk7UUFDWmhjLFNBQVMsRUFBRTZGLDZEQUFtQjtRQUFBcEssUUFBQSxFQUU3QlYsQ0FBQyxDQUFDLDRCQUE0QjtNQUFDLENBQ3RCLENBQUMsZUFDYk4sdURBQUEsQ0FBQ29qQiwrREFBc0I7UUFBQzdpQixNQUFNLEVBQUVBO01BQU8sQ0FBRSxDQUFDO0lBQUEsQ0FDdkMsQ0FDTixFQUVBLENBQUE5SixjQUFjLGFBQWRBLGNBQWMsdUJBQWRBLGNBQWMsQ0FBRWtELE1BQU0sSUFBRyxDQUFDLGlCQUN6QnVHLHdEQUFBLENBQUNYLDhDQUFHO01BQUF5QixRQUFBLGdCQUNGaEIsdURBQUE7UUFBSXVGLFNBQVMsRUFBRTZGLG1FQUF5QjtRQUFBcEssUUFBQSxFQUNyQ1YsQ0FBQyxDQUFDLGlDQUFpQztNQUFDLENBQ25DLENBQUMsZUFDTE4sdURBQUEsQ0FBQ1AsNkRBQW9CO1FBQ25CaEosY0FBYyxFQUFFQSxjQUFlO1FBQy9CcVQsU0FBUyxFQUFFMlosT0FBUTtRQUNuQmxqQixNQUFNLEVBQUVBO01BQU8sQ0FDaEIsQ0FBQztJQUFBLENBQ0MsQ0FDTixFQUVBaEosTUFBTSxDQUFDMEosK0JBQStCLGlCQUNyQ2pCLHVEQUFBLENBQUNKLHNGQUFzQjtNQUNyQlcsTUFBTSxFQUFFQSxNQUFPO01BQ2ZXLFVBQVUsRUFBRTNKLE1BQU0sQ0FBQzBKLCtCQUFnQztNQUNuREUsVUFBVSxFQUFFNUosTUFBTSxDQUFDbUosaUNBQWtDO01BQ3JEc0QsVUFBVSxFQUFFLENBQUN5ZjtJQUFRLENBQ3RCLENBQ0YsZUFDRHpqQix1REFBQSxDQUFDTixvREFBVTtNQUNUMEIsU0FBUyxFQUFFZCxDQUFDLENBQUMsb0JBQW9CLENBQUU7TUFDbkNlLFdBQVcsRUFBRWYsQ0FBQyxDQUFDLHNCQUFzQixDQUFFO01BQ3ZDRCxPQUFPLEVBQUVBLE9BQVE7TUFDakJpQixRQUFRLEVBQUVmLE1BQU0sQ0FBQ2dCO0lBQWEsQ0FDL0IsQ0FBQztFQUFBLENBQ0UsQ0FBQztBQUVYLENBQUM7QUFFRGlpQixVQUFVLENBQUNoaUIsU0FBUyxHQUFHO0VBQ3JCekcsTUFBTSxFQUFFc0UsMERBQWdCO0VBQ3hCNUksY0FBYyxFQUFFNEkseURBQWUsQ0FBQzhCLFVBQVU7RUFDMUM1SixNQUFNLEVBQUU4SCwwREFBZ0IsQ0FBQzhCLFVBQVU7RUFDbkNzaUIsT0FBTyxFQUFFcGtCLHdEQUFjO0VBQ3ZCZSxRQUFRLEVBQUVmLHdEQUFjLENBQUM4QixVQUFVO0VBQ25DZCxPQUFPLEVBQUVoQix3REFBYyxDQUFDOEI7QUFDMUIsQ0FBQztBQUVELGlFQUFlcWlCLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xLekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ1k7QUFDQTtBQUVBO0FBQ1E7QUFDWjtBQUFBO0FBRTNDLE1BQU1ELGlCQUFpQixHQUFHL3FCLElBQUEsSUFBb0M7RUFBQSxJQUFuQztJQUFFK0gsTUFBTTtJQUFFcWhCLFFBQVE7SUFBRXRnQjtFQUFTLENBQUMsR0FBQTlJLElBQUE7RUFDdkQsTUFBTTtJQUFFOEg7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUFFb0wsTUFBTTtJQUFFL0osTUFBTTtJQUFFNkosT0FBTztJQUFFSCxZQUFZO0lBQUVFO0VBQVcsQ0FBQyxHQUFHaEssTUFBTTtFQUVwRSxvQkFDRUwsdURBQUEsQ0FBQ1gsOENBQUc7SUFBQ2dHLFNBQVMsRUFBRTZGLHdEQUFlO0lBQUFwSyxRQUFBLGdCQUM3QmhCLHNEQUFBLENBQUMyRyxvREFBUztNQUNSbEIsU0FBUztNQUNUeE4sSUFBSSxFQUFFOUIsNERBQW9CLENBQUNDLEtBQU07TUFDakMyTyxLQUFLLEVBQUV6RSxDQUFDLENBQUMscUJBQXFCLENBQUU7TUFDaENnQixRQUFRO01BQ1JsSixLQUFLLEVBQUV1SSxNQUFNLENBQUN4Syw0REFBb0IsQ0FBQ0MsS0FBSztJQUFFLENBQzNDLENBQUMsRUFDRCxDQUFDRCw0REFBb0IsQ0FBQ0UsU0FBUyxFQUFFRiw0REFBb0IsQ0FBQ0csUUFBUSxDQUFDLENBQUNxRixHQUFHLENBQ2pFMUQsSUFBSSxpQkFDSCtILHNEQUFBLENBQUMyRyxvREFBUztNQUNSbEIsU0FBUztNQUVUeE4sSUFBSSxFQUFFQSxJQUFLO01BQ1g4TSxLQUFLLEVBQUV6RSxDQUFDLGtCQUFBdEksTUFBQSxDQUFrQkMsSUFBSSxDQUFFLENBQUU7TUFDbENHLEtBQUssRUFBRXVJLE1BQU0sQ0FBQzFJLElBQUksQ0FBRTtNQUNwQnFKLFFBQVEsRUFBRUEsUUFBUztNQUNuQjJDLFFBQVEsRUFBRW9HLFlBQWE7TUFDdkJDLE1BQU0sRUFBRUMsVUFBVztNQUNuQnBHLEtBQUssRUFBRXFHLE9BQU8sQ0FBQ3ZTLElBQUksQ0FBQyxJQUFJd1MsT0FBTyxDQUFDQyxNQUFNLENBQUN6UyxJQUFJLENBQUMsQ0FBRTtNQUM5Q21NLFVBQVUsRUFBRTdELE1BQU0sQ0FBQ2lLLE9BQU8sQ0FBQ3ZTLElBQUksQ0FBQyxJQUFJc0ksTUFBTSxDQUFDbUssTUFBTSxDQUFDelMsSUFBSSxDQUFFO01BQ3hEdU4sUUFBUTtJQUFBLEdBVEh2TixJQVVOLENBRUwsQ0FBQyxlQUNEK0gsc0RBQUEsQ0FBQzJoQixxREFBWTtNQUFDcGhCLE1BQU0sRUFBRUEsTUFBTztNQUFDcWhCLFFBQVEsRUFBRUEsUUFBUztNQUFDemdCLFVBQVU7SUFBQSxDQUFFLENBQUMsZUFDL0RuQixzREFBQSxDQUFDVCw4Q0FBRztNQUFDZ0csU0FBUyxFQUFFNkYseURBQWdCO01BQUFwSyxRQUFBLEVBQUVWLENBQUMsQ0FBQyx5QkFBeUI7SUFBQyxDQUFNLENBQUM7RUFBQSxDQUNsRSxDQUFDO0FBRVYsQ0FBQztBQUVEaWpCLGlCQUFpQixDQUFDL2hCLFNBQVMsR0FBRztFQUM1QmpCLE1BQU0sRUFBRWxCLDBEQUFnQixDQUFDOEI7QUFDM0IsQ0FBQztBQUVELGlFQUFlb2lCLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7QUM5RHpCLE1BQU1wdEIsb0JBQW9CLEdBQUc7RUFDbENDLEtBQUssRUFBRSxnQkFBZ0I7RUFDdkJDLFNBQVMsRUFBRSxxQkFBcUI7RUFDaENDLFFBQVEsRUFBRSxvQkFBb0I7RUFDOUJDLE9BQU8sRUFBRSxrQkFBa0I7RUFDM0JDLGtCQUFrQixFQUFFO0FBQ3RCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTmtEO0FBQ2hCO0FBQ29CO0FBQ1I7QUFDWjtBQUN5QztBQUsvQztBQUN1QjtBQUNZO0FBQ2Y7QUFDK0I7QUFFakM7QUFDa0M7QUFDekI7QUFDYjtBQUFBO0FBRTNDLE1BQU1paUIsWUFBWSxHQUFHamdCLElBQUEsSUFPZjtFQUFBLElBQUErckIsYUFBQSxFQUFBcE4sYUFBQSxFQUFBb0MsbUJBQUEsRUFBQW5DLGNBQUEsRUFBQW9OLGNBQUE7RUFBQSxJQVBnQjtJQUNwQmp0QixNQUFNO0lBQ05tRixRQUFRO0lBQ1J4QyxPQUFPO0lBQ1B1Z0IsT0FBTztJQUNQeFksSUFBSTtJQUNKNUI7RUFDRixDQUFDLEdBQUE3SCxJQUFBO0VBQ0MsTUFBTTtJQUFFOEg7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTWxJLFFBQVEsR0FBR3diLHdEQUFXLENBQUMsQ0FBQztFQUM5QixNQUFNO0lBQ0pwYixJQUFJLEVBQUU7TUFBRWdEO0lBQVksQ0FBQztJQUNyQi9ELGNBQWM7SUFDZGd1QixhQUFhLEVBQUUxcEI7RUFDakIsQ0FBQyxHQUFHOFgsd0RBQVcsQ0FBRVksS0FBSyxJQUFLQSxLQUFLLENBQUMxYSxXQUFXLENBQUM7RUFDN0MsTUFBTSxDQUFDMnJCLFdBQVcsRUFBRUMsY0FBYyxDQUFDLEdBQUcvWiwrQ0FBUSxDQUFDLElBQUksQ0FBQztFQUNwRCxNQUFNZ2EsZ0JBQWdCLEdBQUcsQ0FBQTdwQixNQUFNLGFBQU5BLE1BQU0sZ0JBQUF3cEIsYUFBQSxHQUFOeHBCLE1BQU0sQ0FBRXpCLEtBQUssY0FBQWlyQixhQUFBLHVCQUFiQSxhQUFBLENBQWVNLFFBQVEsT0FBS3JxQixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRVgsRUFBRTtFQUNwRSxNQUFNaXJCLGlCQUFpQixHQUFHLENBQUEvcEIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBb2MsYUFBQSxHQUFOcGMsTUFBTSxDQUFFOEQsS0FBSyxjQUFBc1ksYUFBQSx1QkFBYkEsYUFBQSxDQUFlL2dCLEtBQUssT0FBS29FLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFcEUsS0FBSztFQUNyRSxNQUFNMnVCLGlCQUFpQixHQUNyQixDQUFDRCxpQkFBaUIsSUFBSUYsZ0JBQWdCLEtBQ3RDcnRCLE1BQU0sQ0FBQ3l0QixxQ0FBcUM7RUFDOUMsTUFBTTtJQUFFQztFQUFXLENBQUMsR0FBR3ZNLHlFQUFnQixDQUFDM2QsTUFBTSxDQUFDO0VBRS9DLE1BQU1tcUIsTUFBTSxHQUFJcGdCLEdBQUcsSUFBSztJQUN0QixNQUFNekcsT0FBTyxHQUFHeUssOEZBQXFCLENBQUNoRSxHQUFHLENBQUM7SUFFMUMsT0FBTzFOLFFBQVEsQ0FBQ2dILDREQUFpQixDQUFDckQsTUFBTSxFQUFFc0QsT0FBTyxDQUFDLENBQUMsQ0FDaER2RSxJQUFJLENBQUMsTUFBTTtNQUNWNnFCLGNBQWMsQ0FBQztRQUNiemlCLEtBQUssRUFBRTVCLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQztRQUN4QzZCLFdBQVcsRUFBRTdCLENBQUMsQ0FBQywwQ0FBMEM7TUFDM0QsQ0FBQyxDQUFDO01BQ0YsT0FBT3BILE9BQU8sQ0FBQ2lzQixPQUFPLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FDRGxzQixLQUFLLENBQUVtc0IsR0FBRyxJQUFLO01BQ2RULGNBQWMsQ0FBQztRQUNiemlCLEtBQUssRUFBRTVCLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQztRQUN0QzZCLFdBQVcsRUFBRWlqQixHQUFHLENBQUNwZ0IsUUFBUSxDQUFDO01BQzVCLENBQUMsQ0FBQztNQUNGLE9BQU85TCxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQztFQUNOLENBQUM7RUFFRCxNQUFNa3NCLGtCQUFrQixHQUFHQSxDQUFBLEtBQU07SUFDL0JWLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDcEJXLFVBQVUsQ0FBQ2psQixPQUFPLEVBQUVpa0IsOERBQWUsQ0FBQztFQUN0QyxDQUFDO0VBRUR6WCxnREFBUyxDQUFDLE1BQU07SUFDZCxJQUFJblEsUUFBUSxJQUFJeEMsT0FBTyxJQUFJdWdCLE9BQU8sRUFBRTtNQUNsQ3JqQixRQUFRLENBQUNpRiw0REFBaUIsQ0FBQ29lLE9BQU8sQ0FBQyxDQUFDO01BQ3BDcmpCLFFBQVEsQ0FBQ3FGLG9EQUFTLENBQUNDLFFBQVEsRUFBRXhDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDO0VBQ0YsQ0FBQyxFQUFFLENBQUN3QyxRQUFRLEVBQUV4QyxPQUFPLEVBQUV1Z0IsT0FBTyxDQUFDLENBQUM7RUFFaEMsb0JBQ0V2YSx3REFBQSxDQUFBbUwsd0RBQUE7SUFBQXJLLFFBQUEsZ0JBQ0VkLHdEQUFBLENBQUNrUyxpREFBTTtNQUNMdlksRUFBRSxFQUFDLGVBQWU7TUFDbEJvSSxJQUFJLEVBQUVBLElBQUs7TUFDWDVCLE9BQU8sRUFBRUEsT0FBUTtNQUNqQm1TLE1BQU0sRUFBQyxPQUFPO01BQ2R5TyxVQUFVLEVBQUU7UUFBRUMsV0FBVyxFQUFFO01BQU0sQ0FBRTtNQUNuQzNiLFNBQVMsRUFBRTZGLHVFQUE2QjtNQUFBcEssUUFBQSxnQkFFeENkLHdEQUFBLENBQUNYLDhDQUFHO1FBQUNnRyxTQUFTLEVBQUU2Rix3REFBYztRQUFBcEssUUFBQSxnQkFDNUJoQix1REFBQSxDQUFDMmdCLHFEQUFVO1VBQ1RwYixTQUFTLEVBQUU2RiwwREFBZ0I7VUFDM0JxQixPQUFPLEVBQUVwTSxPQUFRO1VBQ2pCOEwsRUFBRSxFQUFFO1lBQUVtVixLQUFLLEVBQUU7VUFBUSxDQUFFO1VBQ3ZCL1UsUUFBUSxFQUFDLE9BQU87VUFBQXZMLFFBQUEsZUFFaEJoQix1REFBQSxDQUFDa0wsc0RBQVMsSUFBRTtRQUFDLENBQ0gsQ0FBQyxlQUNibEwsdURBQUEsQ0FBQzRnQixxREFBVTtVQUFDL08sT0FBTyxFQUFDLElBQUk7VUFBQzBQLFlBQVk7VUFBQ2hjLFNBQVMsRUFBRTZGLHVEQUFhO1VBQUFwSyxRQUFBLEVBQzNEakcsTUFBTSxhQUFOQSxNQUFNLGdCQUFBd2UsbUJBQUEsR0FBTnhlLE1BQU0sQ0FBRXFhLFdBQVcsY0FBQW1FLG1CQUFBLHVCQUFuQkEsbUJBQUEsQ0FBcUJ0aEI7UUFBSSxDQUNoQixDQUFDLGVBQ2JpSSx3REFBQSxDQUFDMGdCLHFEQUFVO1VBQUMvTyxPQUFPLEVBQUMsT0FBTztVQUFDMFAsWUFBWTtVQUFDaGMsU0FBUyxFQUFFNkYsMERBQWdCO1VBQUFwSyxRQUFBLEdBQ2pFVixDQUFDLENBQUMsNEJBQTRCLENBQUMsRUFBQyxHQUFDLEVBQUN2RixNQUFNLGFBQU5BLE1BQU0sZ0JBQUFxYyxjQUFBLEdBQU5yYyxNQUFNLENBQUU4RCxLQUFLLGNBQUF1WSxjQUFBLHVCQUFiQSxjQUFBLENBQWVoaEIsS0FBSztRQUFBLENBQzdDLENBQUMsRUFFWjZ1QixVQUFVLGlCQUNUL2tCLHdEQUFBLENBQUFtTCx3REFBQTtVQUFBckssUUFBQSxnQkFDRWhCLHVEQUFBLENBQUNULDhDQUFHO1lBQUNnRyxTQUFTLEVBQUU2Rix3REFBYztZQUFBcEssUUFBQSxlQUM1QmhCLHVEQUFBLENBQUNpa0Isc0RBQU07Y0FDTHJTLElBQUksRUFBRSxHQUFJO2NBQ1Z0TCxLQUFLLEVBQUU7Z0JBQUV5SSxNQUFNLEVBQUUsTUFBTTtnQkFBRTBXLFFBQVEsRUFBRSxNQUFNO2dCQUFFN1csS0FBSyxFQUFFO2NBQU8sQ0FBRTtjQUMzRHhXLEtBQUssRUFBRTJDLE1BQU0sQ0FBQzJxQixPQUFRO2NBQ3RCQyxPQUFPLEVBQUM7WUFBYSxDQUN0QjtVQUFDLENBQ0MsQ0FBQyxlQUNOM2xCLHVEQUFBO1lBQUd1RixTQUFTLEVBQUU2Rix3REFBYztZQUFBcEssUUFBQSxFQUFFVixDQUFDLENBQUMsc0JBQXNCO1VBQUMsQ0FBSSxDQUFDLGVBQzVETix1REFBQSxDQUFDNGdCLHFEQUFVO1lBQ1QvTyxPQUFPLEVBQUMsT0FBTztZQUNmMFAsWUFBWTtZQUNaaGMsU0FBUyxFQUFFNkYsd0RBQWM7WUFBQXBLLFFBQUEsRUFFeEJWLENBQUMsQ0FBQyx1QkFBdUI7VUFBQyxDQUNqQixDQUFDO1FBQUEsQ0FDYixDQUNILEVBRUEsRUFBQy9JLE1BQU0sYUFBTkEsTUFBTSxlQUFOQSxNQUFNLENBQUVzdUIsVUFBVSxLQUFJWixVQUFVLGlCQUNoQy9rQix3REFBQSxDQUFDWCw4Q0FBRztVQUFDZ0csU0FBUyxFQUFFNkYsd0VBQThCO1VBQUFwSyxRQUFBLGdCQUM1Q2Qsd0RBQUEsQ0FBQ3FRLGlEQUFNO1lBQ0xoTCxTQUFTLEVBQUU2Riw2REFBbUI7WUFDOUJ5RyxPQUFPLEVBQUMsV0FBVztZQUNuQjNDLEtBQUssRUFBQyxTQUFTO1lBQUFsTyxRQUFBLGdCQUVmaEIsdURBQUEsQ0FBQ21rQixxRUFBWTtjQUFDNVgsUUFBUSxFQUFDO1lBQU8sQ0FBRSxDQUFDLEVBQ2hDak0sQ0FBQyxDQUFDLHdCQUF3QixDQUFDO1VBQUEsQ0FDdEIsQ0FBQyxlQUNUSix3REFBQSxDQUFDcVEsaURBQU07WUFBQ2hMLFNBQVMsRUFBRTZGLHlEQUFlO1lBQUFwSyxRQUFBLGdCQUNoQ2hCLHVEQUFBLENBQUNxa0IsOERBQVM7Y0FBQzlYLFFBQVEsRUFBQztZQUFPLENBQUUsQ0FBQyxFQUM3QmpNLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztVQUFBLENBQ2xCLENBQUM7UUFBQSxDQUNOLENBQ04sZUFFRE4sdURBQUE7VUFBS3VGLFNBQVMsRUFBRTZGLDZEQUFtQjtVQUFBcEssUUFBQSxlQUNqQ2hCLHVEQUFBLENBQUN1WSwrREFBVztZQUNWbEUsTUFBTSxFQUFFdFosTUFBTSxhQUFOQSxNQUFNLGdCQUFBeXBCLGNBQUEsR0FBTnpwQixNQUFNLENBQUV6QixLQUFLLGNBQUFrckIsY0FBQSx1QkFBYkEsY0FBQSxDQUFlblEsTUFBTztZQUM5QmlHLElBQUk7WUFDSkMsU0FBUztZQUNUTSxRQUFRO1lBQ1JqTSxLQUFLLEVBQUU7VUFBSSxDQUNaO1FBQUMsQ0FDQyxDQUFDO01BQUEsQ0FDSCxDQUFDLGVBRU4xTyx3REFBQSxDQUFDWCw4Q0FBRztRQUFDZ0csU0FBUyxFQUFFNkYsbUVBQXlCO1FBQUFwSyxRQUFBLGdCQUN2Q2hCLHVEQUFBLENBQUM0Z0IscURBQVU7VUFDVC9PLE9BQU8sRUFBQyxJQUFJO1VBQ1owUCxZQUFZO1VBQ1poYyxTQUFTLEVBQUU2RixtRUFBeUI7VUFBQXBLLFFBQUEsRUFFbkNWLENBQUMsQ0FBQyxvQ0FBb0M7UUFBQyxDQUM5QixDQUFDLEVBQ1p2RixNQUFNLGlCQUNMaUYsdURBQUEsQ0FBQ3dqQiw4REFBVTtVQUNUem9CLE1BQU0sRUFBRUEsTUFBTztVQUNmdEUsY0FBYyxFQUFFQSxjQUFlO1VBQy9CYyxNQUFNLEVBQUVBLE1BQU87VUFDZmtzQixPQUFPLEVBQUVzQixpQkFBa0I7VUFDM0Iza0IsUUFBUSxFQUFFOGtCLE1BQU87VUFDakI3a0IsT0FBTyxFQUFFQTtRQUFRLENBQ2xCLENBQ0Y7TUFBQSxDQUNFLENBQUM7SUFBQSxDQUNBLENBQUMsZUFDVEwsdURBQUEsQ0FBQ2dDLHNEQUFZO01BQ1hDLElBQUksRUFBRSxDQUFDLENBQUN5aUIsV0FBWTtNQUNwQnJrQixPQUFPLEVBQUVnbEIsa0JBQW1CO01BQzVCbmpCLEtBQUssRUFBRXdpQixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRXhpQixLQUFNO01BQzFCQyxXQUFXLEVBQUV1aUIsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUV2aUI7SUFBWSxDQUN2QyxDQUFDO0VBQUEsQ0FDRixDQUFDO0FBRVAsQ0FBQztBQUVEc1csWUFBWSxDQUFDalgsU0FBUyxHQUFHO0VBQ3ZCakssTUFBTSxFQUFFOEgsMERBQWdCO0VBQ3hCM0MsUUFBUSxFQUFFMkMsMERBQWdCO0VBQzFCbkYsT0FBTyxFQUFFbUYsMERBQWdCO0VBQ3pCb2IsT0FBTyxFQUFFcGIsMERBQWdCO0VBQ3pCZ0IsT0FBTyxFQUFFaEIsd0RBQWNzQztBQUN6QixDQUFDO0FBRUQsaUVBQWU4VyxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzdMM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ1k7QUFDTDtBQUNQO0FBQ1I7QUFFa0I7QUFBQTtBQUU3QyxNQUFNNE4sWUFBWSxHQUFHN3RCLElBQUEsSUFBMkI7RUFBQSxJQUExQjtJQUFFNEgsUUFBUTtJQUFFQztFQUFRLENBQUMsR0FBQTdILElBQUE7RUFDekMsTUFBTTtJQUFFOEg7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFFOUIsTUFBTWlCLE1BQU0sR0FBR2YsaURBQVMsQ0FBQztJQUN2QmdCLGFBQWEsRUFBRTtNQUNiOGxCLGtCQUFrQixFQUFFLEVBQUU7TUFDdEJDLGdCQUFnQixFQUFFO0lBQ3BCLENBQUM7SUFDRDlsQixnQkFBZ0IsRUFBRTJsQix1Q0FBVSxDQUFDO01BQzNCRSxrQkFBa0IsRUFBRUYsdUNBQ1gsQ0FBQyxzQkFBc0IsQ0FBQyxDQUM5Qmh3QixLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FDdENvUCxRQUFRLENBQUMsZ0NBQWdDLENBQUM7TUFDN0MrZ0IsZ0JBQWdCLEVBQUVILHVDQUFVLENBQUMsWUFBWTtJQUMzQyxDQUFDLENBQUM7SUFDRmhtQjtFQUNGLENBQUMsQ0FBQztFQUVGLG9CQUNFRix1REFBQTtJQUFNRSxRQUFRLEVBQUVHLE1BQU0sQ0FBQ08sWUFBYTtJQUFDQyxVQUFVO0lBQUFDLFFBQUEsZ0JBQzdDaEIsc0RBQUEsQ0FBQzJHLG9EQUFTO01BQ1JsQixTQUFTO01BQ1R4TixJQUFJLEVBQUMsb0JBQW9CO01BQ3pCOE0sS0FBSyxFQUFFekUsQ0FBQyxDQUFDLG9DQUFvQyxDQUFFO01BQy9DbEksS0FBSyxFQUFFbUksTUFBTSxDQUFDSSxNQUFNLENBQUMybEIsa0JBQW1CO01BQ3hDcmlCLFFBQVEsRUFBRTFELE1BQU0sQ0FBQzhKLFlBQWE7TUFDOUJDLE1BQU0sRUFBRS9KLE1BQU0sQ0FBQ2dLLFVBQVc7TUFDMUJwRyxLQUFLLEVBQ0g1RCxNQUFNLENBQUNpSyxPQUFPLENBQUM4YixrQkFBa0IsSUFDakM3YixPQUFPLENBQUNsSyxNQUFNLENBQUNtSyxNQUFNLENBQUM0YixrQkFBa0IsQ0FDekM7TUFDRGxpQixVQUFVLEVBQ1I3RCxNQUFNLENBQUNpSyxPQUFPLENBQUM4YixrQkFBa0IsSUFBSS9sQixNQUFNLENBQUNtSyxNQUFNLENBQUM0YixrQkFDcEQ7TUFDRDlnQixRQUFRO0lBQUEsQ0FDVCxDQUFDLGVBQ0Z4RixzREFBQSxDQUFDMkcsb0RBQVM7TUFDUmxCLFNBQVM7TUFDVHhOLElBQUksRUFBQyxrQkFBa0I7TUFDdkI4TSxLQUFLLEVBQUV6RSxDQUFDLENBQUMsa0NBQWtDLENBQUU7TUFDN0NsSSxLQUFLLEVBQUVtSSxNQUFNLENBQUNJLE1BQU0sQ0FBQzRsQixnQkFBaUI7TUFDdENDLFNBQVM7TUFDVEMsT0FBTyxFQUFFLENBQUU7TUFDWHhpQixRQUFRLEVBQUUxRCxNQUFNLENBQUM4SixZQUFhO01BQzlCQyxNQUFNLEVBQUUvSixNQUFNLENBQUNnSyxVQUFXO01BQzFCcEcsS0FBSyxFQUNINUQsTUFBTSxDQUFDaUssT0FBTyxDQUFDK2IsZ0JBQWdCLElBQy9COWIsT0FBTyxDQUFDbEssTUFBTSxDQUFDbUssTUFBTSxDQUFDNmIsZ0JBQWdCLENBQ3ZDO01BQ0RuaUIsVUFBVSxFQUNSN0QsTUFBTSxDQUFDaUssT0FBTyxDQUFDK2IsZ0JBQWdCLElBQUlobUIsTUFBTSxDQUFDbUssTUFBTSxDQUFDNmI7SUFDbEQsQ0FDRixDQUFDLGVBQ0Z2bUIsc0RBQUEsQ0FBQ04sbURBQVU7TUFDVDBCLFNBQVMsRUFBRWQsQ0FBQyxDQUFDLHNCQUFzQixDQUFFO01BQ3JDZSxXQUFXLEVBQUVmLENBQUMsQ0FBQyx3QkFBd0IsQ0FBRTtNQUN6Q0QsT0FBTyxFQUFFQSxPQUFRO01BQ2pCaUIsUUFBUSxFQUFFZixNQUFNLENBQUNnQjtJQUFhLENBQy9CLENBQUM7RUFBQSxDQUNFLENBQUM7QUFFWCxDQUFDO0FBRUQ4a0IsWUFBWSxDQUFDN2tCLFNBQVMsR0FBRztFQUN2QnBCLFFBQVEsRUFBRWYsd0RBQWMsQ0FBQzhCLFVBQVU7RUFDbkNkLE9BQU8sRUFBRWhCLHdEQUFjLENBQUM4QjtBQUMxQixDQUFDO0FBRUQsaUVBQWVrbEIsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFGd0I7QUFDaEI7QUFDb0I7QUFDUjtBQUNDO0FBTXpCO0FBQzhCO0FBQ1o7QUFFRTtBQUNzQztBQUN0QztBQUNhO0FBQ1Q7QUFBQTtBQUUvQyxNQUFNMU4sY0FBYyxHQUFHbmdCLElBQUEsSUFPakI7RUFBQSxJQUFBa3VCLFlBQUE7RUFBQSxJQVBrQjtJQUN0Qm52QixNQUFNO0lBQ05tRixRQUFRO0lBQ1J4QyxPQUFPO0lBQ1B1Z0IsT0FBTztJQUNQeFksSUFBSTtJQUNKNUI7RUFDRixDQUFDLEdBQUE3SCxJQUFBO0VBQ0MsTUFBTTtJQUFFOEg7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTWxJLFFBQVEsR0FBR3diLHdEQUFXLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUM4UixXQUFXLEVBQUVDLGNBQWMsQ0FBQyxHQUFHL1osK0NBQVEsQ0FBQyxJQUFJLENBQUM7RUFDcEQsTUFBTSxDQUFDK2IsZ0JBQWdCLEVBQUVDLG1CQUFtQixDQUFDLEdBQUdoYywrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUMvRCxNQUFNO0lBQUU2WixhQUFhLEVBQUUxcEIsTUFBTTtJQUFFdEU7RUFBZSxDQUFDLEdBQUdvYyx3REFBVyxDQUMxRFksS0FBSyxJQUFLQSxLQUFLLENBQUMxYSxXQUNuQixDQUFDO0VBRUQ4VCxnREFBUyxDQUFDLE1BQU07SUFDZCxJQUFJblEsUUFBUSxJQUFJeEMsT0FBTyxJQUFJdWdCLE9BQU8sRUFBRTtNQUNsQ3JqQixRQUFRLENBQUNxRixtREFBUyxDQUFDQyxRQUFRLEVBQUV4QyxPQUFPLENBQUMsQ0FBQztNQUN0QzlDLFFBQVEsQ0FBQ2lGLDJEQUFpQixDQUFDb2UsT0FBTyxDQUFDLENBQUM7SUFDdEM7RUFDRixDQUFDLEVBQUUsQ0FBQy9kLFFBQVEsRUFBRXhDLE9BQU8sRUFBRXVnQixPQUFPLENBQUMsQ0FBQztFQUVoQyxNQUFNb00sVUFBVSxHQUFJL2hCLEdBQUcsSUFBSztJQUMxQixNQUFNO01BQUV3aEIsa0JBQWtCO01BQUVDO0lBQWlCLENBQUMsR0FBR3poQixHQUFHO0lBQ3BELE9BQU8xTixRQUFRLENBQ2I0SCx3REFBYyxDQUFDOUUsT0FBTyxFQUFFd0MsUUFBUSxFQUFFNHBCLGtCQUFrQixFQUFFQyxnQkFBZ0IsQ0FDeEUsQ0FBQyxDQUFDenNCLElBQUksQ0FBQyxNQUFNO01BQ1g4c0IsbUJBQW1CLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxNQUFNRSxhQUFhLEdBQUdBLENBQUEsS0FBTTtJQUMxQkYsbUJBQW1CLENBQUMsS0FBSyxDQUFDO0lBQzFCdm1CLE9BQU8sQ0FBQyxDQUFDO0VBQ1gsQ0FBQztFQUVELE1BQU1nbEIsa0JBQWtCLEdBQUdBLENBQUEsS0FBTTtJQUMvQlYsY0FBYyxDQUFDLElBQUksQ0FBQztJQUNwQmlDLG1CQUFtQixDQUFDLEtBQUssQ0FBQztJQUMxQnRCLFVBQVUsQ0FBQ2psQixPQUFPLEVBQUVpa0IsOERBQWUsQ0FBQztFQUN0QyxDQUFDO0VBRUQsTUFBTXlDLFFBQVEsR0FBSWppQixHQUFHLElBQUs7SUFDeEIsTUFBTXpHLE9BQU8sR0FBR3lLLDZGQUFxQixDQUFDaEUsR0FBRyxDQUFDO0lBRTFDLE9BQU8xTixRQUFRLENBQUM4SCw0REFBa0IsQ0FBQ25FLE1BQU0sRUFBRXNELE9BQU8sQ0FBQyxDQUFDLENBQ2pEdkUsSUFBSSxDQUFDLE1BQU07TUFDVjZxQixjQUFjLENBQUM7UUFDYnppQixLQUFLLEVBQUU1QixDQUFDLENBQUMsZ0NBQWdDLENBQUM7UUFDMUM2QixXQUFXLEVBQUU3QixDQUFDLENBQUMsNENBQTRDO01BQzdELENBQUMsQ0FBQztNQUNGLE9BQU9wSCxPQUFPLENBQUNpc0IsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQ0Rsc0IsS0FBSyxDQUFFbXNCLEdBQUcsSUFBSztNQUNkVCxjQUFjLENBQUM7UUFDYnppQixLQUFLLEVBQUU1QixDQUFDLENBQUMsOEJBQThCLENBQUM7UUFDeEM2QixXQUFXLEVBQUVpakIsR0FBRyxDQUFDcGdCLFFBQVEsQ0FBQztNQUM1QixDQUFDLENBQUM7TUFDRixPQUFPOUwsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FBQztJQUN6QixDQUFDLENBQUM7RUFDTixDQUFDO0VBRUQsTUFBTTZ0QixTQUFTLEdBQUdBLENBQUEsS0FBTTtJQUFBLElBQUE1UCxjQUFBO0lBQ3RCLElBQUl1UCxnQkFBZ0IsRUFBRTtNQUFBLElBQUF4UCxhQUFBO01BQ3BCLE9BQU87UUFDTGpWLEtBQUssRUFBRTVCLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQztRQUMzQ3lnQixRQUFRLEtBQUEvb0IsTUFBQSxDQUFLc0ksQ0FBQyxDQUFDLCtCQUErQixDQUFDLE9BQUF0SSxNQUFBLENBQzdDK0MsTUFBTSxhQUFOQSxNQUFNLGdCQUFBb2MsYUFBQSxHQUFOcGMsTUFBTSxDQUFFOEQsS0FBSyxjQUFBc1ksYUFBQSx1QkFBYkEsYUFBQSxDQUFlL2dCLEtBQUssQ0FDcEI7UUFDRjRxQixVQUFVLEVBQUUxZ0IsQ0FBQyxDQUFDLCtCQUErQjtNQUMvQyxDQUFDO0lBQ0g7SUFFQSxPQUFPO01BQ0w0QixLQUFLLEVBQUU1QixDQUFDLENBQUMsaUNBQWlDLENBQUM7TUFDM0N5Z0IsUUFBUSxlQUNON2dCLHdEQUFBLENBQUFtTCx3REFBQTtRQUFBckssUUFBQSxHQUNHVixDQUFDLENBQUMsNkJBQTZCLENBQUMsZUFDakNOLHVEQUFBLFNBQUssQ0FBQyxFQUNMakYsTUFBTSxhQUFOQSxNQUFNLGdCQUFBcWMsY0FBQSxHQUFOcmMsTUFBTSxDQUFFOEQsS0FBSyxjQUFBdVksY0FBQSx1QkFBYkEsY0FBQSxDQUFlaGhCLEtBQUs7TUFBQSxDQUNyQixDQUNIO01BQ0Q0cUIsVUFBVSxFQUFFMWdCLENBQUMsQ0FBQyxrQ0FBa0M7SUFDbEQsQ0FBQztFQUNILENBQUM7RUFFRCxNQUFNO0lBQUU0QixLQUFLO0lBQUU2ZSxRQUFRO0lBQUVDO0VBQVcsQ0FBQyxHQUFHZ0csU0FBUyxDQUFDLENBQUM7RUFFbkQsb0JBQ0U5bUIsd0RBQUEsQ0FBQW1MLHdEQUFBO0lBQUFySyxRQUFBLGdCQUNFaEIsdURBQUEsQ0FBQzhnQixvREFBVztNQUNWam5CLEVBQUUsRUFBQyxnQkFBZ0I7TUFDbkJxSSxLQUFLLEVBQUVBLEtBQU07TUFDYjZlLFFBQVEsRUFBRUEsUUFBUztNQUNuQkMsVUFBVSxFQUFFQSxVQUFXO01BQ3ZCL2UsSUFBSSxFQUFFQSxJQUFLO01BQ1g1QixPQUFPLEVBQUVBLE9BQVE7TUFDakJrRixTQUFTLEVBQUU2Rix5RUFBK0I7TUFBQXBLLFFBQUEsZUFFMUNkLHdEQUFBLENBQUNYLDhDQUFHO1FBQUNnRyxTQUFTLEVBQUU2RixtRUFBeUI7UUFBQXBLLFFBQUEsZ0JBQ3ZDaEIsdURBQUEsQ0FBQzRnQixxREFBVTtVQUNUL08sT0FBTyxFQUFDLElBQUk7VUFDWjBQLFlBQVk7VUFDWmhjLFNBQVMsRUFBRTZGLG1FQUF5QjtVQUFBcEssUUFBQSxFQUVuQ2pHLE1BQU0sYUFBTkEsTUFBTSxnQkFBQTJyQixZQUFBLEdBQU4zckIsTUFBTSxDQUFFakQsSUFBSSxjQUFBNHVCLFlBQUEsdUJBQVpBLFlBQUEsQ0FBY3p1QjtRQUFJLENBQ1QsQ0FBQyxFQUNaOEMsTUFBTSxJQUFJLENBQUM0ckIsZ0JBQWdCLGlCQUMxQjNtQix1REFBQSxDQUFDcW1CLGdFQUFZO1VBQ1h0ckIsTUFBTSxFQUFFQSxNQUFPO1VBQ2Z4RCxNQUFNLEVBQUVBLE1BQU87VUFDZjZJLFFBQVEsRUFBRXltQixVQUFXO1VBQ3JCeG1CLE9BQU8sRUFBRUE7UUFBUSxDQUNsQixDQUNGLEVBQ0F0RixNQUFNLElBQUk0ckIsZ0JBQWdCLGlCQUN6QjNtQix1REFBQSxDQUFDRyxxREFBWTtVQUNYcEYsTUFBTSxFQUFFQSxNQUFPO1VBQ2Z4RCxNQUFNLEVBQUVBLE1BQU87VUFDZmQsY0FBYyxFQUFFQSxjQUFlO1VBQy9CMkosUUFBUSxFQUFFMm1CLFFBQVM7VUFDbkIxbUIsT0FBTyxFQUFFeW1CO1FBQWMsQ0FDeEIsQ0FDRjtNQUFBLENBQ0U7SUFBQyxDQUNLLENBQUMsZUFDZDltQix1REFBQSxDQUFDZ0Msc0RBQVk7TUFDWEMsSUFBSSxFQUFFLENBQUMsQ0FBQ3lpQixXQUFZO01BQ3BCcmtCLE9BQU8sRUFBRWdsQixrQkFBbUI7TUFDNUJuakIsS0FBSyxFQUFFd2lCLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFeGlCLEtBQU07TUFDMUJDLFdBQVcsRUFBRXVpQixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRXZpQjtJQUFZLENBQ3ZDLENBQUM7RUFBQSxDQUNGLENBQUM7QUFFUCxDQUFDO0FBRUR3VyxjQUFjLENBQUNuWCxTQUFTLEdBQUc7RUFDekJqSyxNQUFNLEVBQUU4SCwwREFBZ0I7RUFDeEIzQyxRQUFRLEVBQUUyQywwREFBZ0I7RUFDMUJuRixPQUFPLEVBQUVtRiwwREFBZ0I7RUFDekJvYixPQUFPLEVBQUVwYiwwREFBZ0I7RUFDekJnQixPQUFPLEVBQUVoQix3REFBY3NDO0FBQ3pCLENBQUM7QUFFRCxpRUFBZWdYLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcktIO0FBQ1M7QUFDWTtBQUNHO0FBQ2M7QUFFakI7QUFBQTtBQUUvQyxNQUFNTCxZQUFZLEdBQUc5ZixJQUFBLElBQWdCO0VBQUEsSUFBQTB1QixxQkFBQTtFQUFBLElBQWY7SUFBRW5zQjtFQUFPLENBQUMsR0FBQXZDLElBQUE7RUFDOUIsTUFBTTtJQUFFOEg7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTZuQixRQUFRLEdBQUdwc0IsTUFBTSxDQUFDdWMsU0FBUztFQUNqQyxNQUFNOFAsY0FBYyxJQUFBRixxQkFBQSxHQUFHbnNCLE1BQU0sQ0FBQ21CLGVBQWUsY0FBQWdyQixxQkFBQSx1QkFBdEJBLHFCQUFBLENBQXdCOU8sSUFBSSxDQUNoRHJjLENBQUMsSUFBS0EsQ0FBQyxDQUFDNFosTUFBTSxLQUFLLFdBQ3RCLENBQUM7RUFDRCxNQUFNO0lBQUVxRCxZQUFZO0lBQUVDLFlBQVk7SUFBRWdNO0VBQVcsQ0FBQyxHQUFHdk0seUVBQWdCLENBQUMzZCxNQUFNLENBQUM7RUFFM0Usb0JBQ0VpRixzREFBQSxDQUFDcVMsb0RBQVM7SUFBQzlNLFNBQVMsRUFBRTZGLHNFQUE2QjtJQUFBcEssUUFBQSxFQUNoRG1tQixRQUFRLGdCQUNQam5CLHVEQUFBLENBQUFtTCx1REFBQTtNQUFBckssUUFBQSxHQUNHb21CLGNBQWMsaUJBQ2JwbkIsc0RBQUEsQ0FBQ3VRLGlEQUFNO1FBQ0xvRyxJQUFJLEVBQUMsUUFBUTtRQUNiLGNBQVcsZ0NBQWdDO1FBQzNDcFIsU0FBUyxLQUFBdk4sTUFBQSxDQUFLb1QsMkRBQWlCLE9BQUFwVCxNQUFBLENBQUlvVCxzRUFBNEIsQ0FBRztRQUFBcEssUUFBQSxFQUVqRVYsQ0FBQyxDQUFDLHVDQUF1QztNQUFDLENBQ3JDLENBQ1QsRUFDQTBZLFlBQVksaUJBQ1hoWixzREFBQSxDQUFDdVEsaURBQU07UUFDTG9HLElBQUksRUFBQyxRQUFRO1FBQ2IsY0FBVywwQkFBMEI7UUFDckNwUixTQUFTLEtBQUF2TixNQUFBLENBQUtvVCwyREFBaUIsT0FBQXBULE1BQUEsQ0FBSW9ULGlFQUF1QixDQUFHO1FBQUFwSyxRQUFBLEVBRTVEVixDQUFDLENBQUMsaUNBQWlDO01BQUMsQ0FDL0IsQ0FDVCxFQUNBMlksWUFBWSxpQkFDWGpaLHNEQUFBLENBQUN1USxpREFBTTtRQUNMb0csSUFBSSxFQUFDLFFBQVE7UUFDYixjQUFXLDBCQUEwQjtRQUNyQ3BSLFNBQVMsS0FBQXZOLE1BQUEsQ0FBS29ULDJEQUFpQixPQUFBcFQsTUFBQSxDQUFJb1QsaUVBQXVCLENBQUc7UUFBQXBLLFFBQUEsRUFFNURWLENBQUMsQ0FBQyxpQ0FBaUM7TUFBQyxDQUMvQixDQUNULEVBQ0Eya0IsVUFBVSxpQkFDVGpsQixzREFBQSxDQUFDdVEsaURBQU07UUFDTG9HLElBQUksRUFBQyxRQUFRO1FBQ2IsY0FBVyx3QkFBd0I7UUFDbkNwUixTQUFTLEtBQUF2TixNQUFBLENBQUtvVCwyREFBaUIsT0FBQXBULE1BQUEsQ0FBSW9ULCtEQUFxQixDQUFHO1FBQUFwSyxRQUFBLEVBRTFEVixDQUFDLENBQUMsK0JBQStCO01BQUMsQ0FDN0IsQ0FDVDtJQUFBLENBQ0QsQ0FBQyxnQkFFSE4sc0RBQUEsQ0FBQ3VRLGlEQUFNO01BQ0xvRyxJQUFJLEVBQUMsUUFBUTtNQUNiLGNBQVcseUJBQXlCO01BQ3BDcFIsU0FBUyxLQUFBdk4sTUFBQSxDQUFLb1QsMkRBQWlCLE9BQUFwVCxNQUFBLENBQUlvVCxnRUFBc0IsQ0FBRztNQUFBcEssUUFBQSxFQUUzRFYsQ0FBQyxDQUFDLGdDQUFnQztJQUFDLENBQzlCO0VBQ1QsQ0FDUSxDQUFDO0FBRWhCLENBQUM7QUFFRGdZLFlBQVksQ0FBQzlXLFNBQVMsR0FBRztFQUN2QnpHLE1BQU0sRUFBRXNFLHVEQUFlLENBQUM7SUFDdEJSLEtBQUssRUFBRVEsdURBQWUsQ0FBQztNQUNyQnNXLE1BQU0sRUFBRXRXLDBEQUFnQmdEO0lBQzFCLENBQUMsQ0FBQztJQUNGK2tCLGNBQWMsRUFBRS9uQix5REFBaUIsQ0FBQzVGLE1BQU07RUFDMUMsQ0FBQztBQUNILENBQUM7QUFFRCxpRUFBZTZlLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvRU87O0FBRWxDO0FBQ0EsU0FBU3NQLGNBQWNBLENBQUN6WixTQUFTLEVBQUUwWixlQUFlLEVBQUVDLFFBQVEsRUFBRTtFQUM1RCxNQUFNQyxjQUFjLEdBQUc1WixTQUFTLENBQUM2WixTQUFTO0VBQzFDLE1BQU1DLFFBQVEsR0FBR0osZUFBZSxHQUFHRSxjQUFjO0VBQ2pELElBQUlHLFNBQVMsR0FBRyxJQUFJO0VBRXBCLFNBQVNDLGFBQWFBLENBQUNDLFNBQVMsRUFBRTtJQUNoQyxJQUFJLENBQUNGLFNBQVMsRUFBRUEsU0FBUyxHQUFHRSxTQUFTO0lBQ3JDLE1BQU1DLE9BQU8sR0FBR0QsU0FBUyxHQUFHRixTQUFTOztJQUVyQztJQUNBLE1BQU1JLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQUNILE9BQU8sR0FBR1AsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNoRCxNQUFNVyxhQUFhO0lBQ2pCO0lBQ0FILFFBQVEsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHQSxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBRXZFbmEsU0FBUyxDQUFDNlosU0FBUyxHQUFHRCxjQUFjLEdBQUdFLFFBQVEsR0FBR1EsYUFBYTtJQUUvRCxJQUFJSixPQUFPLEdBQUdQLFFBQVEsRUFBRTtNQUN0QlkscUJBQXFCLENBQUNQLGFBQWEsQ0FBQztJQUN0QztFQUNGO0VBRUFPLHFCQUFxQixDQUFDUCxhQUFhLENBQUM7QUFDdEM7QUFFQSxNQUFNeG9CLGdCQUFnQixHQUFHQSxDQUFDWSxNQUFNLEVBQUVvb0IsV0FBVyxLQUFLO0VBQ2hELE1BQU07SUFBRWplLE1BQU07SUFBRWtlLE9BQU87SUFBRXJuQjtFQUFhLENBQUMsR0FBR2hCLE1BQU07RUFDaEQsTUFBTXNvQixVQUFVLEdBQUdwdkIsTUFBTSxDQUFDQyxJQUFJLENBQUNnUixNQUFNLENBQUM7RUFDdEMsTUFBTW9lLFVBQVUsR0FBR0QsVUFBVSxDQUFDbHZCLE1BQU07RUFFcENrVCxnREFBUyxDQUFDLE1BQU07SUFDZCxJQUFJK2IsT0FBTyxJQUFJRSxVQUFVLEtBQUssQ0FBQyxFQUFFOztJQUVqQztJQUNBLE1BQU1DLGNBQWMsR0FBR0YsVUFBVSxDQUM5Qmx0QixHQUFHLENBQUV3SSxLQUFLLElBQUs7TUFDZCxNQUFNNmtCLE9BQU8sR0FBR3ZtQixRQUFRLENBQUN3bUIsYUFBYSxnQkFBQWp4QixNQUFBLENBQWdCbU0sS0FBSyxPQUFJLENBQUM7TUFDaEUsTUFBTStrQixNQUFNLEdBQUdGLE9BQU8sQ0FBQ0cscUJBQXFCLENBQUMsQ0FBQztNQUU5QyxPQUFPO1FBQUVILE9BQU87UUFBRTdrQixLQUFLO1FBQUVxTCxHQUFHLEVBQUUwWixNQUFNLENBQUMxWjtNQUFJLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQ0Q3VyxJQUFJLENBQUMsQ0FBQ3l3QixDQUFDLEVBQUVDLENBQUMsS0FBS0QsQ0FBQyxDQUFDNVosR0FBRyxHQUFHNlosQ0FBQyxDQUFDN1osR0FBRyxDQUFDO0lBRWhDLElBQUl1WixjQUFjLENBQUNwdkIsTUFBTSxLQUFLLENBQUMsRUFBRTtJQUVqQyxNQUFNd1UsU0FBUyxHQUFHMUwsUUFBUSxDQUN2QjZtQixjQUFjLENBQUNYLFdBQVcsQ0FBQyxDQUMzQk0sYUFBYSxDQUFDLGtCQUFrQixDQUFDO0lBQ3BDLE1BQU1uakIsTUFBTSxHQUFHaWpCLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFaEMsSUFBSTVhLFNBQVMsQ0FBQ1QsUUFBUSxDQUFDNUgsTUFBTSxDQUFDa2pCLE9BQU8sQ0FBQyxFQUFFO01BQ3RDLE1BQU1PLGFBQWEsR0FBR3BiLFNBQVMsQ0FBQ2diLHFCQUFxQixDQUFDLENBQUM7O01BRXZEO01BQ0EsTUFBTUssVUFBVSxHQUFHLEdBQUc7TUFDdEIsTUFBTUMsaUJBQWlCLEdBQUcsR0FBRztNQUM3QixNQUFNekIsU0FBUyxHQUNibGlCLE1BQU0sQ0FBQzBKLEdBQUcsR0FBRytaLGFBQWEsQ0FBQy9aLEdBQUcsR0FBR3JCLFNBQVMsQ0FBQzZaLFNBQVMsR0FBR3dCLFVBQVU7O01BRW5FO01BQ0E1QixjQUFjLENBQUN6WixTQUFTLEVBQUU2WixTQUFTLEVBQUV5QixpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDM0Q7RUFDRixDQUFDLEVBQUUsQ0FBQ2xvQixZQUFZLENBQUMsQ0FBQztBQUNwQixDQUFDO0FBRUQsaUVBQWU1QixnQkFBZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwRTJCO0FBRW5ELE1BQU0rcEIsZUFBZSxHQUFHLFVBQVU7QUFDbEMsTUFBTUMsaUJBQWlCLEdBQUcsWUFBWTtBQUN0QyxNQUFNQyxnQkFBZ0IsR0FBRyxXQUFXO0FBQ3BDLE1BQU1DLGlCQUFpQixHQUFHLFlBQVk7QUFFdEMsTUFBTW5SLGdCQUFnQixHQUFJM2QsTUFBTSxJQUFLO0VBQUEsSUFBQXdlLG1CQUFBLEVBQUF1USxrQkFBQSxFQUFBQyxjQUFBLEVBQUFDLGNBQUE7RUFDMUMsTUFBTUMsU0FBUyxHQUFHQSxDQUFBLEtBQU07SUFBQSxJQUFBOVMsYUFBQSxFQUFBQyxjQUFBO0lBQ3RCLElBQUksQ0FBQ3JjLE1BQU0sQ0FBQ3VjLFNBQVMsRUFBRSxPQUFPc1MsZ0JBQWdCO0lBQzlDLElBQUk3dUIsTUFBTSxDQUFDOHBCLFFBQVEsS0FBSyxDQUFDLEVBQUUsT0FBT2dGLGlCQUFpQjtJQUNuRCxJQUFJLEdBQUExUyxhQUFBLEdBQUNwYyxNQUFNLENBQUM4RCxLQUFLLGNBQUFzWSxhQUFBLGVBQVpBLGFBQUEsQ0FBY2xaLFVBQVUsS0FBSSxHQUFBbVosY0FBQSxHQUFDcmMsTUFBTSxDQUFDOEQsS0FBSyxjQUFBdVksY0FBQSxlQUFaQSxjQUFBLENBQWNsWixTQUFTLEdBQ3ZELE9BQU95ckIsaUJBQWlCO0lBQzFCLE9BQU81dUIsTUFBTSxDQUFDOEQsS0FBSyxDQUFDOFcsTUFBTTtFQUM1QixDQUFDO0VBRUQsSUFBSSxDQUFDNWEsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBRXRCLE1BQU00YSxNQUFNLEdBQUdzVSxTQUFTLENBQUMsQ0FBQztFQUMxQixNQUFNOUMsUUFBUSxHQUFHcHNCLE1BQU0sQ0FBQ3VjLFNBQVMsSUFBSTNCLE1BQU0sS0FBS2lVLGdCQUFnQjtFQUNoRSxNQUFNbFQsWUFBWSxHQUFHNkUsc0VBQWtCLENBQUN4Z0IsTUFBTSxDQUFDO0VBQy9DLE1BQU1tdkIsY0FBYyxHQUNsQixDQUFDLENBQUFudkIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBd2UsbUJBQUEsR0FBTnhlLE1BQU0sQ0FBRXFhLFdBQVcsY0FBQW1FLG1CQUFBLHVCQUFuQkEsbUJBQUEsQ0FBcUJxSyxrQkFBa0IsTUFDdEM3b0IsTUFBTSxhQUFOQSxNQUFNLGdCQUFBK3VCLGtCQUFBLEdBQU4vdUIsTUFBTSxDQUFFb3ZCLFVBQVUsY0FBQUwsa0JBQUEsdUJBQWxCQSxrQkFBQSxDQUFvQmxHLGtCQUFrQixNQUN4Q2pPLE1BQU0sS0FBS2tVLGlCQUFpQixJQUM1QixHQUFBRSxjQUFBLEdBQUNodkIsTUFBTSxDQUFDOEQsS0FBSyxjQUFBa3JCLGNBQUEsZ0JBQUFBLGNBQUEsR0FBWkEsY0FBQSxDQUFjbHNCLE9BQU8sY0FBQWtzQixjQUFBLGVBQXJCQSxjQUFBLENBQXVCbHdCLEVBQUUsS0FDMUIsR0FBQW13QixjQUFBLEdBQUNqdkIsTUFBTSxDQUFDOEQsS0FBSyxjQUFBbXJCLGNBQUEsZUFBWkEsY0FBQSxDQUFjbHNCLFVBQVU7RUFDM0IsTUFBTW1uQixVQUFVLEdBQUd0UCxNQUFNLEtBQUsrVCxlQUFlO0VBQzdDLE1BQU16USxZQUFZLEdBQUd0RCxNQUFNLEtBQUtrVSxpQkFBaUI7RUFDakQsTUFBTTdRLFlBQVksR0FBR3JELE1BQU0sS0FBS2dVLGlCQUFpQjtFQUNqRCxNQUFNalEsV0FBVyxHQUFHLENBQUNULFlBQVksSUFBSWxlLE1BQU0sQ0FBQ3FhLFdBQVcsQ0FBQ2dWLGtCQUFrQixLQUFLLENBQUNydkIsTUFBTSxDQUFDb3ZCLFVBQVUsSUFBSXB2QixNQUFNLENBQUNvdkIsVUFBVSxDQUFDQyxrQkFBa0IsQ0FBQztFQUUxSSxPQUFPO0lBQ0x6VSxNQUFNO0lBQ05zUCxVQUFVO0lBQ1ZoTSxZQUFZO0lBQ1pELFlBQVk7SUFDWm1PLFFBQVE7SUFDUnpRLFlBQVk7SUFDWndULGNBQWM7SUFDZHhRO0VBQ0YsQ0FBQztBQUNILENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQzBCO0FBQ3NCO0FBQ2U7QUFDN0I7QUFDQTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUEyUSxrREFPTSxDQUFDRSx5RUFBZ0I7QUFDckI7QUFBQSxDQUNDRyxHQUFHLENBQUNKLDJEQUFnQjtBQUNyQjtBQUNBO0FBQUEsQ0FDQ0ssSUFBSSxDQUFDO0VBQ0pDLFdBQVcsRUFBRSxJQUFJO0VBQ2pCQyxLQUFLLEVBQUUsS0FBSztFQUNaQyxTQUFTLEVBQUU7SUFDVE4sRUFBRSxFQUFFO01BQUVPLFdBQVcsRUFBRVAsNkNBQUVBO0lBQUMsQ0FBQztJQUN2QkMsRUFBRSxFQUFFO01BQUVNLFdBQVcsRUFBRU4sNkNBQUVBO0lBQUM7RUFDeEIsQ0FBQztFQUNETyxhQUFhLEVBQUU7SUFDYkMsV0FBVyxFQUFFLEtBQUssQ0FBQztFQUNyQjtBQUNGLENBQUMsQ0FBQztBQUVKLGlFQUFlWixnREFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUMrRTtBQWE1RDtBQUM0QjtBQUUvQyxNQUFNYyxhQUFhLEdBQUc7RUFDcEI1ekIsTUFBTSxFQUFFLElBQUk7RUFDWkMsSUFBSSxFQUFFLENBQUMsQ0FBQztFQUNSNHpCLGFBQWEsRUFBRSxLQUFLO0VBQ3BCaFksWUFBWSxFQUFFLEVBQUU7RUFDaEIzYyxjQUFjLEVBQUUsRUFBRTtFQUNsQmd1QixhQUFhLEVBQUUsSUFBSTtFQUNuQi9aLE1BQU0sRUFBRSxDQUFDLENBQUM7RUFDVjJnQixPQUFPLEVBQUUsS0FBSztFQUNkQyxjQUFjLEVBQUUsS0FBSztFQUNyQmpZLG1CQUFtQixFQUFFLENBQUM7RUFDdEJDLGdCQUFnQixFQUFFLENBQUM7RUFDbkJDLGVBQWUsRUFBRSxDQUFDO0VBQ2xCQyxZQUFZLEVBQUUsQ0FBQztFQUNmK1gsbUJBQW1CLEVBQUUsQ0FBQztFQUN0QkMsZ0JBQWdCLEVBQUUsQ0FBQztFQUNuQkMsZUFBZSxFQUFFLENBQUM7RUFDbEJDLFlBQVksRUFBRTtBQUNoQixDQUFDO0FBRUQsTUFBTUMsYUFBYSxHQUFHLFNBQUFBLENBQUEsRUFBbUQ7RUFBQSxJQUFsRGxZLEtBQUssR0FBQW1ZLFNBQUEsQ0FBQWp5QixNQUFBLFFBQUFpeUIsU0FBQSxRQUFBMUosU0FBQSxHQUFBMEosU0FBQSxNQUFHVCxhQUFhO0VBQUEsSUFBRTtJQUFFcnpCLElBQUk7SUFBRWlDO0VBQVEsQ0FBQyxHQUFBNnhCLFNBQUEsQ0FBQWp5QixNQUFBLFFBQUFpeUIsU0FBQSxRQUFBMUosU0FBQSxHQUFBMEosU0FBQSxNQUFHLENBQUMsQ0FBQztFQUNsRSxRQUFROXpCLElBQUk7SUFDVixLQUFLb3pCLHlGQUFXO01BQ2QsT0FBT0MsYUFBYTtJQUN0QixLQUFLbjJCLGlEQUFXO01BQ2QsT0FBT20yQixhQUFhO0lBQ3RCLEtBQUtsMkIsa0RBQVk7TUFDZixPQUFBK0gsYUFBQSxDQUFBQSxhQUFBLEtBQ0t5VyxLQUFLO1FBQ1JKLG1CQUFtQixFQUFFLENBQUM7UUFDdEJDLGdCQUFnQixFQUFFO01BQUM7SUFFdkIsS0FBS3BlLCtDQUFTO01BQ1osT0FBQThILGFBQUEsQ0FBQUEsYUFBQSxLQUFZeVcsS0FBSyxHQUFLMVosT0FBTztJQUMvQixLQUFLakQsOENBQVE7TUFDWCxPQUFBa0csYUFBQSxDQUFBQSxhQUFBLEtBQVl5VyxLQUFLO1FBQUVqYyxJQUFJLEVBQUV1QztNQUFPO0lBQ2xDLEtBQUs1RSxxREFBZTtNQUFFO1FBQ3BCLE1BQU07VUFBRWllO1FBQWEsQ0FBQyxHQUFHSyxLQUFLO1FBQzlCLE1BQU07VUFBRXJXLElBQUk7VUFBRXNhLEtBQUs7VUFBRXVHLFlBQVk7VUFBRVA7UUFBVSxDQUFDLEdBQUczakIsT0FBTyxDQUFDa0MsUUFBUTtRQUNqRSxPQUFBZSxhQUFBLENBQUFBLGFBQUEsS0FDS3lXLEtBQUs7VUFDUkwsWUFBWSxFQUNWNkssWUFBWSxLQUFLcnBCLHdEQUFVLEdBQUd3SSxJQUFJLEdBQUcsQ0FBQyxHQUFHZ1csWUFBWSxFQUFFLEdBQUdoVyxJQUFJLENBQUM7VUFDakVvVyxZQUFZLEVBQUVrRSxLQUFLO1VBQ25CckUsbUJBQW1CLEVBQUU0SyxZQUFZO1VBQ2pDM0ssZ0JBQWdCLEVBQUVvSztRQUFTO01BRS9CO0lBQ0EsS0FBSzVuQiwwREFBb0I7TUFBRTtRQUN6QixNQUFNO1VBQUVzZDtRQUFhLENBQUMsR0FBR0ssS0FBSztRQUM5QixNQUFNO1VBQUVyVyxJQUFJO1VBQUVzYSxLQUFLO1VBQUV1RyxZQUFZO1VBQUVQO1FBQVUsQ0FBQyxHQUFHM2pCLE9BQU8sQ0FBQ2tDLFFBQVE7UUFDakUsTUFBTTR2QixXQUFXLEdBQUd6WSxZQUFZLENBQUNnRixJQUFJLENBQUUwVCxDQUFDO1VBQUEsSUFBQUMsTUFBQTtVQUFBLE9BQUtELENBQUMsQ0FBQ2p5QixFQUFFLE9BQUFreUIsTUFBQSxHQUFLM3VCLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBQTJ1QixNQUFBLHVCQUFQQSxNQUFBLENBQVM3d0IsUUFBUTtRQUFBLEVBQUM7UUFFeEUsTUFBTTh3QixZQUFZLEdBQUFodkIsYUFBQSxDQUFBQSxhQUFBLEtBQ2I2dUIsV0FBVztVQUNkOU4sYUFBYSxFQUNYRSxZQUFZLEtBQUtycEIsd0RBQVUsR0FDdkJ3SSxJQUFJLEdBQ0osQ0FBQyxHQUFHeXVCLFdBQVcsQ0FBQzlOLGFBQWEsRUFBRSxHQUFHM2dCLElBQUksQ0FBQztVQUM3QzhnQixvQkFBb0IsRUFBRUQsWUFBWTtVQUNsQ2dPLGlCQUFpQixFQUFFdk8sU0FBUztVQUM1QmtCLGFBQWEsRUFBRWxIO1FBQUssRUFDckI7UUFDRCxPQUFBMWEsYUFBQSxDQUFBQSxhQUFBLEtBQ0t5VyxLQUFLO1VBQ1JMLFlBQVksRUFBRUEsWUFBWSxDQUFDelgsR0FBRyxDQUFFdXdCLEVBQUUsSUFDaENBLEVBQUUsQ0FBQ3J5QixFQUFFLEtBQUtteUIsWUFBWSxDQUFDbnlCLEVBQUUsR0FBR215QixZQUFZLEdBQUdFLEVBQzdDO1FBQUM7TUFFTDtJQUNBLEtBQUt4MUIscUVBQStCO01BQUU7UUFDcEMsTUFBTTtVQUFFMGM7UUFBYSxDQUFDLEdBQUdLLEtBQUs7UUFDOUIsTUFBTXJYLHNCQUFzQixHQUFHckMsT0FBTztRQUN0QyxNQUFNVCxLQUFLLEdBQUc4WixZQUFZLENBQUNnRixJQUFJLENBQzVCMFQsQ0FBQztVQUFBLElBQUFLLHFCQUFBO1VBQUEsT0FBS0wsQ0FBQyxDQUFDanlCLEVBQUUsT0FBQXN5QixxQkFBQSxHQUFLL3ZCLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxjQUFBK3ZCLHFCQUFBLHVCQUF6QkEscUJBQUEsQ0FBMkJqeEIsUUFBUTtRQUFBLENBQ3JELENBQUM7UUFDRCxNQUFNa3hCLGNBQWMsR0FBRzl5QixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXlrQixhQUFhLENBQUNwaUIsR0FBRyxDQUM1Q1osTUFBTSxJQUNMcUIsc0JBQXNCLENBQUNnYyxJQUFJLENBQUVpVSxHQUFHLElBQUtBLEdBQUcsQ0FBQ3h5QixFQUFFLEtBQUtrQixNQUFNLENBQUNsQixFQUFFLENBQUMsSUFBSWtCLE1BQ2xFLENBQUM7UUFDRCxNQUFNaXhCLFlBQVksR0FBQWh2QixhQUFBLENBQUFBLGFBQUEsS0FDYjFELEtBQUs7VUFDUnlrQixhQUFhLEVBQUVxTztRQUFjLEVBQzlCO1FBQ0QsT0FBQXB2QixhQUFBLENBQUFBLGFBQUEsS0FDS3lXLEtBQUs7VUFDUkwsWUFBWSxFQUFFQSxZQUFZLENBQUN6WCxHQUFHLENBQUV1d0IsRUFBRSxJQUNoQ0EsRUFBRSxDQUFDcnlCLEVBQUUsS0FBS215QixZQUFZLENBQUNueUIsRUFBRSxHQUFHbXlCLFlBQVksR0FBR0UsRUFDN0M7UUFBQztNQUVMO0lBQ0EsS0FBS3YyQixtREFBYTtJQUNsQixLQUFLRixvREFBYztNQUFFO1FBQ25CLE1BQU1zRixNQUFNLEdBQUdoQixPQUFPLENBQUNrQyxRQUFRO1FBQy9CLE9BQUFlLGFBQUEsQ0FBQUEsYUFBQSxLQUFZeVcsS0FBSztVQUFFZ1IsYUFBYSxFQUFFMXBCO1FBQU07TUFDMUM7SUFDQSxLQUFLN0UsNkRBQXVCO01BQUU7UUFDNUIsTUFBTTtVQUFFa0g7UUFBSyxDQUFDLEdBQUdyRCxPQUFPLENBQUNrQyxRQUFRO1FBQ2pDLE9BQUFlLGFBQUEsQ0FBQUEsYUFBQSxLQUFZeVcsS0FBSztVQUFFaGQsY0FBYyxFQUFFMkc7UUFBSTtNQUN6QztJQUNBLEtBQUs1SCxtREFBYTtNQUFFO1FBQ2xCLE1BQU04MkIsVUFBVSxHQUFHdnlCLE9BQU8sQ0FBQ2tDLFFBQVE7UUFDbkMsTUFBTXN3QixTQUFTLEdBQUc5WSxLQUFLLENBQUNMLFlBQVksQ0FBQ3pYLEdBQUcsQ0FBRXJDLEtBQUssSUFBSztVQUNsRCxNQUFNa3pCLFVBQVUsR0FBR2x6QixLQUFLLENBQUN5a0IsYUFBYSxDQUFDcGlCLEdBQUcsQ0FBRVosTUFBTSxJQUFLO1lBQ3JELElBQUlBLE1BQU0sQ0FBQ2xCLEVBQUUsS0FBS3l5QixVQUFVLENBQUN6eUIsRUFBRSxFQUFFO2NBQy9CLE9BQU95eUIsVUFBVTtZQUNuQjtZQUNBLE9BQU92eEIsTUFBTTtVQUNmLENBQUMsQ0FBQztVQUVGLE9BQUFpQyxhQUFBLENBQUFBLGFBQUEsS0FBWTFELEtBQUs7WUFBRXlrQixhQUFhLEVBQUV5TztVQUFVO1FBQzlDLENBQUMsQ0FBQztRQUVGLE9BQUF4dkIsYUFBQSxDQUFBQSxhQUFBLEtBQVl5VyxLQUFLO1VBQUVMLFlBQVksRUFBRW1aO1FBQVM7TUFDNUM7SUFDQTtNQUNFLE9BQU85WSxLQUFLO0VBQ2hCO0FBQ0YsQ0FBQztBQUVELGlFQUFla1ksYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwSkk7QUFDa0I7QUFVM0I7QUFDeUI7QUFDUjtBQUNGO0FBRS9CLE1BQU0wQixRQUFRLEdBQUc3MEIsSUFBQSxJQU1sQjtFQUFBLElBTm1CO0lBQ3ZCODBCLFFBQVE7SUFDUkMsUUFBUTtJQUNSaDJCLE1BQU07SUFDTnVCLFVBQVU7SUFDVjBFO0VBQ0YsQ0FBQyxHQUFBaEYsSUFBQTtFQUNDO0VBQ0EsTUFBTWcxQixRQUFRLEdBQUdKLHNEQUFlLENBQUM7SUFDL0JyMEIsV0FBVyxFQUFFNHlCLGdEQUFhQTtFQUM1QixDQUFDLENBQUM7RUFFRixNQUFNOEIsS0FBSyxHQUFHZixnRUFBYyxDQUFDO0lBQzNCZ0IsT0FBTyxFQUFFZCw2REFBYyxDQUNyQjtNQUNFempCLEdBQUcsNEJBQUFuUixNQUFBLENBQTRCczFCLFFBQVEsQ0FBRTtNQUN6Q0gsT0FBT0Esb0VBQUFBO0lBQ1QsQ0FBQyxFQUNESyxRQUNGLENBQUM7SUFDREcsVUFBVSxFQUFHQyxvQkFBb0IsSUFDL0JBLG9CQUFvQixDQUFDO01BQ25CQyxLQUFLLEVBQUU7UUFDTEMsYUFBYSxFQUFFO1VBQ2JSLFFBQVE7VUFDUngwQixVQUFVO1VBQ1Z2QixNQUFNO1VBQ05nMkIsUUFBUTtVQUNSL3ZCO1FBQ0Y7TUFDRixDQUFDO01BQ0R1d0IsY0FBYyxFQUFFLEtBQUs7TUFDckJDLGlCQUFpQixFQUFFO1FBQ2pCQyxjQUFjLEVBQUUsQ0FBQ3BCLGdEQUFLLEVBQUVDLG9EQUFTLEVBQUVDLGdEQUFLLEVBQUVDLGtEQUFPLEVBQUVDLGdEQUFLLEVBQUVDLG1EQUFRO01BQ3BFO0lBQ0YsQ0FBQztFQUNMLENBQUMsQ0FBQztFQUVGLE9BQU9PLEtBQUs7QUFDZCxDQUFDO0FBRU0sTUFBTVMsWUFBWSxHQUFJQyxNQUFNLElBQUs7RUFDdEMsTUFBTVYsS0FBSyxHQUFHaEIsOENBQU8sQ0FBQyxNQUFNWSxRQUFRLENBQUNjLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUNqRCxNQUFNQyxTQUFTLEdBQUczQiw4Q0FBTyxDQUFDLE1BQU1FLDJEQUFZLENBQUNjLEtBQUssQ0FBQyxFQUFFLENBQUNBLEtBQUssQ0FBQyxDQUFDO0VBRTdELE9BQU87SUFDTEEsS0FBSztJQUNMVztFQUNGLENBQUM7QUFDSCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5RHlEO0FBQ2xCO0FBRWpDLE1BQU16NUIsb0JBQW9CLEdBQUcsTUFBQUEsQ0FBQSxLQUFZO0VBQzlDLElBQUk7SUFDRixPQUFPLE1BQU0yNUIsZ0dBQWMsQ0FBQyxDQUFDO0VBQy9CLENBQUMsQ0FBQyxPQUFPdDBCLENBQUMsRUFBRTtJQUNWMkUsT0FBTyxDQUFDQyxHQUFHLENBQUMsd0RBQXdELEVBQUU1RSxDQUFDLENBQUM7SUFDeEV1MEIsMkRBQXVCLENBQUN2MEIsQ0FBQyxDQUFDO0lBQzFCcTBCLDRGQUFVLENBQUMsQ0FBQztJQUNaLE9BQU9uMUIsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FBQztFQUN6QjtBQUNGLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNmTSxNQUFNczFCLG9CQUFvQixHQUFHLEVBQUU7QUFDL0IsTUFBTUMsbUJBQW1CLEdBQUcsRUFBRTtBQUM5QixNQUFNeGIsYUFBYSxHQUFHLENBQUM7QUFDdkIsTUFBTW9SLGVBQWUsR0FBRyxJQUFJO0FBQzVCLE1BQU1xSyxPQUFPLEdBQUcsQ0FBQztBQUNqQixNQUFNOTVCLHNCQUFzQixHQUFHLENBQUM7QUFDaEMsTUFBTUQsVUFBVSxHQUFHLENBQUM7QUFDcEIsTUFBTTRpQix3QkFBd0IsR0FBRyxDQUFDO0FBQ2xDLE1BQU00SCxRQUFRLEdBQUcsQ0FBQztBQUNsQixNQUFNQyxRQUFRLEdBQUcsQ0FBQztBQUVsQixNQUFNcUssZUFBZSxHQUFHLGlCQUFpQjtBQUN6QyxNQUFNQyxpQkFBaUIsR0FBRyxtQkFBbUI7QUFDN0MsTUFBTWlGLGNBQWMsR0FBRyxnQkFBZ0I7QUFDdkMsTUFBTWhGLGdCQUFnQixHQUFHLGtCQUFrQjtBQUMzQyxNQUFNaUYsWUFBWSxHQUFHLGNBQWM7QUFDbkMsTUFBTUMsaUJBQWlCLEdBQUcsbUJBQW1CO0FBQzdDLE1BQU1qRixpQkFBaUIsR0FBRyxtQkFBbUI7QUFFN0MsTUFBTWtGLHdCQUF3QixHQUFHLEtBQUs7QUFFdEMsTUFBTUMsUUFBUSxHQUFHLENBQUM7QUFDbEIsTUFBTUMsUUFBUSxHQUFHLENBQUM7QUFDbEIsTUFBTUMsU0FBUyxHQUFHLENBQUM7QUFDbkIsTUFBTUMsUUFBUSxHQUFHLENBQUM7QUFFbEIsTUFBTXI2QixtQkFBbUIsR0FBRyxFQUFFO0FBQzlCLE1BQU1DLGNBQWMsR0FBRyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNCSztBQUNLO0FBS3JCO0FBRWQsTUFBTTBmLGNBQWMsR0FBR0EsQ0FBQ3JjLEtBQUssRUFBQUksSUFBQSxLQUF1QztFQUFBLElBQXJDO01BQUU2MkIsTUFBTSxHQUFHO0lBQW9CLENBQUMsR0FBQTcyQixJQUFBO0lBQVR1cEIsT0FBTyxHQUFBemQscUZBQUEsQ0FBQTlMLElBQUEsRUFBQStMLFNBQUE7RUFDbEUsTUFBTStxQixjQUFjLEdBQUc7SUFDckIvWixRQUFRLEVBQUUsS0FBSztJQUNmZ2EscUJBQXFCLEVBQUUsQ0FBQztJQUN4QkMscUJBQXFCLEVBQUU7RUFDekIsQ0FBQztFQUVELE1BQU1DLFNBQVMsR0FBRyxJQUFJQyxJQUFJLENBQUNDLFlBQVksQ0FBQ04sTUFBTSxFQUFBcnlCLGFBQUEsQ0FBQUEsYUFBQTtJQUM1Q3NKLEtBQUssRUFBRTtFQUFVLEdBQ2RncEIsY0FBYyxHQUNkdk4sT0FBTyxDQUNYLENBQUM7RUFFRixPQUFPME4sU0FBUyxDQUFDRyxNQUFNLENBQUN4M0IsS0FBSyxDQUFDO0FBQ2hDLENBQUM7QUFFTSxNQUFNb2xCLGdCQUFnQixHQUFHQSxDQUFDcVMsUUFBUSxFQUFFQyxRQUFRLEtBQUs7RUFDdEQsSUFBSUEsUUFBUSxFQUNWLE9BQU9WLHlEQUNGLENBQUNTLFFBQVEsR0FBR3ZMLHVEQUFlLEVBQUV3TCxRQUFRLENBQUMsQ0FDeENGLE1BQU0sQ0FBQyxlQUFlLENBQUM7RUFFNUIsT0FBT1IsMkRBQVcsQ0FBQ1MsUUFBUSxDQUFDLENBQUNELE1BQU0sQ0FBQyxlQUFlLENBQUM7QUFDdEQsQ0FBQztBQUVNLE1BQU1wYixvQkFBb0IsR0FBRzNiLEtBQUEsSUFBZ0M7RUFBQSxJQUEvQjtJQUFFUyxLQUFLO0lBQUUvQixNQUFNO0lBQUVpRTtFQUFRLENBQUMsR0FBQTNDLEtBQUE7RUFDN0QsSUFBSSxDQUFDUyxLQUFLLElBQUksQ0FBQy9CLE1BQU0sSUFBSSxDQUFDaUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBRTVDLE1BQU07SUFBRXkwQixlQUFlO0lBQUV4YSxlQUFlO0lBQUVDLFlBQVk7SUFBRXdhO0VBQU8sQ0FBQyxHQUFHNTJCLEtBQUs7RUFDeEUsTUFBTTtJQUFFNjJCO0VBQWEsQ0FBQyxHQUFHNTRCLE1BQU07RUFFL0IsTUFBTXdkLGFBQWEsR0FBRyxFQUFFO0VBQ3hCLElBQUlxYixtQkFBbUIsR0FBRyxDQUFDO0VBRTNCLE1BQU1DLGNBQWMsR0FBRztJQUFFOWEsUUFBUSxFQUFFamMsS0FBSyxDQUFDaWM7RUFBUyxDQUFDO0VBRW5EOWIsTUFBTSxDQUFDQyxJQUFJLENBQUNKLEtBQUssQ0FBQ2czQiw4QkFBOEIsQ0FBQyxDQUFDMzBCLEdBQUcsQ0FBRVosTUFBTSxJQUFLO0lBQ2hFLE1BQU13MUIsVUFBVSxHQUFHSixZQUFZLGFBQVpBLFlBQVksdUJBQVpBLFlBQVksQ0FBRS9YLElBQUksQ0FBRW9ZLEVBQUUsSUFBS0EsRUFBRSxDQUFDdjRCLElBQUksS0FBSzhDLE1BQU0sQ0FBQztJQUNqRSxJQUFJLENBQUN3MUIsVUFBVSxFQUFFLE9BQU8sSUFBSTtJQUM1QnhiLGFBQWEsQ0FBQ2hkLElBQUksQ0FBQztNQUNqQjA0QixjQUFjLEVBQUVGLFVBQVUsQ0FBQzEyQixFQUFFO01BQzdCdWIsV0FBVyxFQUFFbWIsVUFBVTtNQUN2QnQ0QixJQUFJLEVBQUU4QyxNQUFNO01BQ1pvYSxHQUFHLEVBQUU3YixLQUFLLENBQUNnM0IsOEJBQThCLENBQUN2MUIsTUFBTTtJQUNsRCxDQUFDLENBQUM7SUFDRnExQixtQkFBbUIsSUFDakJHLFVBQVUsQ0FBQ2xiLElBQUksR0FBRy9iLEtBQUssQ0FBQ2czQiw4QkFBOEIsQ0FBQ3YxQixNQUFNLENBQUM7SUFFaEUsT0FBT2dhLGFBQWE7RUFDdEIsQ0FBQyxDQUFDO0VBRUYsTUFBTTJiLGFBQWEsR0FBR2pjLGNBQWMsQ0FBQzJiLG1CQUFtQixFQUFFQyxjQUFjLENBQUM7RUFFekUsTUFBTTFiLGFBQWEsR0FBR0YsY0FBYyxDQUFDZ0IsZUFBZSxFQUFFNGEsY0FBYyxDQUFDO0VBQ3JFLE1BQU16YixXQUFXLEdBQUdILGNBQWMsQ0FBQ3diLGVBQWUsRUFBRUksY0FBYyxDQUFDO0VBQ25FLE1BQU14YixVQUFVLEdBQUdKLGNBQWMsQ0FBQ2lCLFlBQVksRUFBRTJhLGNBQWMsQ0FBQztFQUMvRCxNQUFNdmIsV0FBVyxHQUFHcmIsTUFBTSxDQUFDazNCLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUN2M0IsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUNyRW1iLGNBQWMsQ0FBQ3liLE1BQU0sRUFBRUcsY0FBYyxDQUFDLEdBQ3RDNWIsY0FBYyxDQUFDaWMsYUFBYSxFQUFFTCxjQUFjLENBQUM7RUFFakQsT0FBTztJQUNMMWIsYUFBYTtJQUNiQyxXQUFXO0lBQ1hDLFVBQVU7SUFDVkMsV0FBVztJQUNYQztFQUNGLENBQUM7QUFDSCxDQUFDO0FBRU0sTUFBTXdJLGVBQWUsR0FBR0EsQ0FBQ25LLFlBQVksRUFBRWxaLE9BQU8sS0FBSztFQUFBLElBQUE0MkIsUUFBQTtFQUN4RCxNQUFNQyxNQUFNLEdBQUczZCxZQUFZLENBQUN2YixNQUFNLENBQUVpMEIsQ0FBQyxJQUFLQSxDQUFDLENBQUNqeUIsRUFBRSxLQUFLSyxPQUFPLENBQUM7RUFDM0QsUUFBQTQyQixRQUFBLEdBQU9DLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBQUQsUUFBQSx1QkFBVEEsUUFBQSxDQUFXL1MsYUFBYTtBQUNqQyxDQUFDO0FBRU0sTUFBTTVTLDJCQUEyQixHQUFJNmxCLEVBQUUsSUFBSztFQUNqRCxNQUFNOTRCLEtBQUssR0FBRzg0QixFQUFFLENBQUNDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRzNNLHVEQUFlO0VBQ3ZELE1BQU1uc0IsS0FBSyxHQUNUNjRCLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDeEMsNERBQW9CLEVBQUVDLDJEQUFtQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FDNURwSyx1REFBZTtFQUNqQixPQUFPO0lBQ0xwc0IsS0FBSztJQUNMQztFQUNGLENBQUM7QUFDSCxDQUFDO0FBRU0sTUFBTSs0QixrQkFBa0IsR0FBR0EsQ0FBQSxLQUNoQzNJLElBQUksQ0FBQzRJLEtBQUssQ0FBQyxDQUFDLElBQUlybEIsSUFBSSxDQUFDLENBQUMsR0FBR3dZLHVEQUFlLENBQUM7QUFFcEMsTUFBTThNLE1BQU0sR0FBR0EsQ0FBQSxLQUFNLENBQUNoNkIsUUFBUSxFQUFFd0IsUUFBUSxLQUFLO0VBQ2xELE1BQU07SUFBRXk0QjtFQUFXLENBQUMsR0FBR3o0QixRQUFRLENBQUMsQ0FBQztFQUNqQyxPQUFPLENBQUF5NEIsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVDLE1BQU0sS0FBSSxJQUFJLEdBQUdKLGtCQUFrQixDQUFDLENBQUMsR0FBR0csVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVDLE1BQU07QUFDL0UsQ0FBQztBQUVNLE1BQU14YixNQUFNLEdBQUdBLENBQUEsS0FBTTtFQUMxQixNQUFNMWUsUUFBUSxHQUFHd2Isd0RBQVcsQ0FBQyxDQUFDO0VBRTlCLE9BQU94YixRQUFRLENBQUNnNkIsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN6R29DO0FBQ2tCO0FBQzVCO0FBRXBCLE1BQU1HLGVBQWUsR0FBR0EsQ0FBQ2g2QixNQUFNLEVBQUVrVSxHQUFHLEtBQUs7RUFDOUMsSUFBSSxDQUFDbFUsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUV4QixNQUFNaTZCLGFBQWEsR0FDakJqNkIsTUFBTSxhQUFOQSxNQUFNLGVBQU5BLE1BQU0sQ0FBRWs2Qix5QkFBeUIsSUFDakNsNkIsTUFBTSxDQUFDazZCLHlCQUF5QixHQUFHbDZCLE1BQU0sQ0FBQ202QixRQUFRLEdBQzlDbjZCLE1BQU0sQ0FBQ2s2Qix5QkFBeUIsR0FDaENsNkIsTUFBTSxDQUFDbTZCLFFBQVE7RUFFckIsT0FBT2ptQixHQUFHLEdBQUcrbEIsYUFBYTtBQUM1QixDQUFDO0FBRU0sTUFBTUcsa0JBQWtCLEdBQUdBLENBQUNwNkIsTUFBTSxFQUFFa1UsR0FBRyxLQUFLO0VBQ2pELElBQUksQ0FBQ2xVLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFFeEIsT0FBT0EsTUFBTSxDQUFDcTZCLFVBQVUsR0FBR25tQixHQUFHO0FBQ2hDLENBQUM7QUFFTSxNQUFNb21CLGlCQUFpQixHQUFJdDZCLE1BQU0sSUFBSztFQUMzQyxJQUFJLENBQUNBLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFDeEIsTUFBTXU2QixRQUFRLEdBQUcxQyxzREFBTSxDQUFDNzNCLE1BQU0sQ0FBQ3E2QixVQUFVLEdBQUd0Tix1REFBZSxDQUFDLENBQUN5TCxFQUFFLENBQzdEeDRCLE1BQU0sQ0FBQ3c2QixZQUNULENBQUM7RUFDRCxNQUFNQyxNQUFNLEdBQUc1QyxzREFBTSxDQUFDNzNCLE1BQU0sQ0FBQ202QixRQUFRLEdBQUdwTix1REFBZSxDQUFDLENBQUN5TCxFQUFFLENBQ3pEeDRCLE1BQU0sQ0FBQ3c2QixZQUNULENBQUM7RUFDRCxNQUFNRSxJQUFJLEdBQUdELE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFRSxJQUFJLENBQUNKLFFBQVEsRUFBRSxNQUFNLENBQUM7RUFDM0MsT0FBTztJQUNMQSxRQUFRO0lBQ1JFLE1BQU07SUFDTkM7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU1oZixzQkFBc0IsR0FBSTFiLE1BQU0sSUFBSztFQUNoRCxJQUFJLENBQUNBLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFDeEIsTUFBTTtJQUFFdTZCLFFBQVE7SUFBRUUsTUFBTTtJQUFFQztFQUFLLENBQUMsR0FBR0osaUJBQWlCLENBQUN0NkIsTUFBTSxDQUFDO0VBQzVELElBQUksQ0FBQ3U2QixRQUFRLElBQUksQ0FBQ0UsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUNyQyxJQUFJRyxlQUFlLEdBQUcsZUFBZTtFQUNyQyxJQUFJQyxhQUFhLEdBQUcsZUFBZTtFQUNuQyxJQUFJTixRQUFRLENBQUNPLElBQUksQ0FBQyxDQUFDLEtBQUtMLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLENBQUMsRUFBRUYsZUFBZSxHQUFHLFNBQVM7RUFDbEUsSUFBSUwsUUFBUSxDQUFDUSxLQUFLLENBQUMsQ0FBQyxLQUFLTixNQUFNLENBQUNNLEtBQUssQ0FBQyxDQUFDLEVBQUVGLGFBQWEsR0FBRyxVQUFVO0VBRW5FLE1BQU1HLFNBQVMsR0FBR1QsUUFBUSxDQUFDbEMsTUFBTSxDQUFDdUMsZUFBZSxDQUFDO0VBQ2xELE1BQU1LLE9BQU8sR0FBR1IsTUFBTSxDQUFDcEMsTUFBTSxDQUFDd0MsYUFBYSxDQUFDO0VBRTVDLElBQUlILElBQUksR0FBR3RELCtDQUFPLEVBQUUsVUFBQTMyQixNQUFBLENBQVV1NkIsU0FBUyxTQUFBdjZCLE1BQUEsQ0FBTXc2QixPQUFPO0VBRXBELE9BQU9ELFNBQVM7QUFDbEIsQ0FBQztBQUVNLE1BQU1FLGlCQUFpQixHQUFJbDdCLE1BQU0sSUFBSztFQUFBLElBQUFtN0IsaUJBQUE7RUFDM0MsSUFBSSxDQUFDbjdCLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFFeEIsTUFBTW83QixRQUFRLElBQUFELGlCQUFBLEdBQUduN0IsTUFBTSxDQUFDcTdCLFNBQVMsY0FBQUYsaUJBQUEsdUJBQWhCQSxpQkFBQSxDQUFrQnRhLElBQUksQ0FDcEN5YSxDQUFDLElBQUtBLENBQUMsQ0FBQ0MsVUFBVSxLQUFLLGFBQWEsSUFBSUQsQ0FBQyxDQUFDRSxPQUFPLEtBQUssSUFDekQsQ0FBQztFQUVELElBQUksQ0FBQ0osUUFBUSxFQUFFLE9BQU8sSUFBSTtFQUUxQixVQUFBMzZCLE1BQUEsQ0FBVTI2QixRQUFRLENBQUNLLElBQUksUUFBQWg3QixNQUFBLENBQUsyNkIsUUFBUSxDQUFDTSxPQUFPO0FBQzlDLENBQUM7QUFFTSxNQUFNemEscUJBQXFCLEdBQUlqaEIsTUFBTSxJQUFLO0VBQy9DLElBQUksQ0FBQ0EsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUV4QixPQUFPQSxNQUFNLENBQUNrNkIseUJBQXlCLElBQ3JDbDZCLE1BQU0sQ0FBQ2s2Qix5QkFBeUIsR0FBR2w2QixNQUFNLENBQUNtNkIsUUFBUSxHQUNoRG42QixNQUFNLENBQUNrNkIseUJBQXlCLEdBQ2hDbDZCLE1BQU0sQ0FBQ202QixRQUFRO0FBQ3JCLENBQUM7QUFFTSxNQUFNd0IsZ0JBQWdCLEdBQUcxNkIsSUFBQSxJQUFnQjtFQUFBLElBQUEyNkIsaUJBQUEsRUFBQUMsa0JBQUE7RUFBQSxJQUFmO0lBQUU3N0I7RUFBTyxDQUFDLEdBQUFpQixJQUFBO0VBQ3pDLE1BQU1pVCxHQUFHLEdBQUdxSyx5Q0FBTSxDQUFDLENBQUM7RUFFcEIsSUFBSSxDQUFDdmUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBRXRCLE1BQU1vN0IsUUFBUSxHQUFHRixpQkFBaUIsQ0FBQ2w3QixNQUFNLENBQUM7RUFDMUMsTUFBTTg3QixhQUFhLEdBQUdwZ0Isc0JBQXNCLENBQUMxYixNQUFNLENBQUM7RUFDcEQsTUFBTXdpQixZQUFZLEdBQUd2QixxQkFBcUIsQ0FBQ2poQixNQUFNLENBQUM7RUFDbEQsTUFBTSs3QixxQkFBcUIsR0FBR2xFLHlEQUFTLENBQ3JDclYsWUFBWSxHQUFBb1osaUJBQUEsR0FDWjU3QixNQUFNLENBQUNnOEIsU0FBUyxjQUFBSixpQkFBQSx1QkFBaEJBLGlCQUFBLENBQWtCcEIsWUFDcEIsQ0FBQztFQUNELE1BQU15Qix5QkFBeUIsR0FBRzNCLGlCQUFpQixDQUNqRHBtQixHQUFHLEVBQ0hzTyxZQUFZLEdBQUFxWixrQkFBQSxHQUNaNzdCLE1BQU0sQ0FBQ2c4QixTQUFTLGNBQUFILGtCQUFBLHVCQUFoQkEsa0JBQUEsQ0FBa0JuN0IsSUFDcEIsQ0FBQztFQUVELE1BQU13N0IsTUFBTSxHQUFHbEMsZUFBZSxDQUFDaDZCLE1BQU0sRUFBRWtVLEdBQUcsQ0FBQztFQUMzQyxNQUFNaW9CLFNBQVMsR0FBRy9CLGtCQUFrQixDQUFDcDZCLE1BQU0sRUFBRWtVLEdBQUcsQ0FBQztFQUNqRCxNQUFNeU4sY0FBYyxHQUFHYSxZQUFZLEdBQUd0TyxHQUFHO0VBRXpDLE9BQU87SUFDTHhULElBQUksRUFBRVYsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVVLElBQUk7SUFDbEJ3VCxHQUFHO0lBQ0hrbkIsUUFBUTtJQUNSVSxhQUFhO0lBQ2J0WixZQUFZO0lBQ1p1WixxQkFBcUI7SUFDckJFLHlCQUF5QjtJQUN6QkMsTUFBTTtJQUNOQyxTQUFTO0lBQ1R4YTtFQUNGLENBQUM7QUFDSCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5RzBCO0FBQ0E7QUFNTjtBQUN1RDtBQUtmO0FBT1A7QUFFL0MsTUFBTXlhLFVBQVUsR0FBRztFQUN4QixDQUFDOUoseURBQWlCLEdBQUc7SUFDbkIveEIsSUFBSSxFQUFFK3hCLHlEQUFpQjtJQUN2QmhpQixJQUFJLEVBQUV3aUIsNkNBQUksQ0FBQy9wQixDQUFDLENBQUMsMEJBQTBCO0VBQ3pDLENBQUM7RUFDRCxDQUFDcXBCLHlEQUFpQixHQUFHO0lBQ25CN3hCLElBQUksRUFBRTZ4Qix5REFBaUI7SUFDdkI5aEIsSUFBSSxFQUFFd2lCLDZDQUFJLENBQUMvcEIsQ0FBQyxDQUFDLDBCQUEwQjtFQUN6QyxDQUFDO0VBQ0QsQ0FBQ29wQix1REFBZSxHQUFHO0lBQ2pCNXhCLElBQUksRUFBRTR4Qix1REFBZTtJQUNyQjdoQixJQUFJLEVBQUV3aUIsNkNBQUksQ0FBQy9wQixDQUFDLENBQUMsd0JBQXdCO0VBQ3ZDLENBQUM7RUFDRCxDQUFDc3BCLHdEQUFnQixHQUFHO0lBQ2xCOXhCLElBQUksRUFBRTh4Qix3REFBZ0I7SUFDdEIvaEIsSUFBSSxFQUFFd2lCLDZDQUFJLENBQUMvcEIsQ0FBQyxDQUFDLHlCQUF5QjtFQUN4QztBQUNGLENBQUM7QUFDTSxNQUFNc3pCLGtCQUFrQixHQUFJNzRCLE1BQU0sSUFBSztFQUFBLElBQUFvYyxhQUFBLEVBQUFDLGNBQUEsRUFBQTJTLGNBQUEsRUFBQUMsY0FBQTtFQUM1QyxJQUFJLENBQUNqdkIsTUFBTSxDQUFDdWMsU0FBUyxFQUFFLE9BQU9zUyx3REFBZ0I7RUFFOUMsSUFBSTd1QixNQUFNLENBQUM4cEIsUUFBUSxLQUFLLENBQUMsRUFBRSxPQUFPZ0YseURBQWlCO0VBRW5ELElBQUksR0FBQTFTLGFBQUEsR0FBQ3BjLE1BQU0sQ0FBQzhELEtBQUssY0FBQXNZLGFBQUEsZUFBWkEsYUFBQSxDQUFjbFosVUFBVSxLQUFJLEdBQUFtWixjQUFBLEdBQUNyYyxNQUFNLENBQUM4RCxLQUFLLGNBQUF1WSxjQUFBLGVBQVpBLGNBQUEsQ0FBY2xaLFNBQVMsR0FDdkQsT0FBT3lyQix5REFBaUI7RUFFMUIsSUFBSTV1QixNQUFNLENBQUM4RCxLQUFLLElBQUksRUFBQWtyQixjQUFBLEdBQUFodkIsTUFBTSxDQUFDOEQsS0FBSyxjQUFBa3JCLGNBQUEsdUJBQVpBLGNBQUEsQ0FBY3BVLE1BQU0sTUFBSyxZQUFZLEVBQ3ZELE9BQU9nVSx5REFBaUI7RUFFMUIsSUFBSTV1QixNQUFNLENBQUM4RCxLQUFLLElBQUksRUFBQW1yQixjQUFBLEdBQUFqdkIsTUFBTSxDQUFDOEQsS0FBSyxjQUFBbXJCLGNBQUEsdUJBQVpBLGNBQUEsQ0FBY3JVLE1BQU0sTUFBSyxVQUFVLEVBQ3JELE9BQU8rVCx1REFBZTtFQUV4QixPQUFPQyx5REFBaUI7QUFDMUIsQ0FBQztBQUVNLE1BQU1rSyxtQkFBbUIsR0FBR0EsQ0FBQzk0QixNQUFNLEVBQUUrNEIsWUFBWSxLQUN0REgsVUFBVSxDQUFDQyxrQkFBa0IsQ0FBQzc0QixNQUFNLEVBQUUrNEIsWUFBWSxDQUFDLENBQUM7QUFFL0MsTUFBTUMsYUFBYSxHQUFJaDVCLE1BQU0sSUFBSztFQUN2QyxJQUFJLENBQUNBLE1BQU0sQ0FBQ2k1QixLQUFLLEVBQUUsT0FBTyxJQUFJO0VBRTlCLE1BQU07SUFBRUM7RUFBUyxDQUFDLEdBQUdsNUIsTUFBTSxDQUFDaTVCLEtBQUs7RUFFakMsSUFBSUMsUUFBUSxDQUFDdDZCLE1BQU0sR0FBRyxDQUFDLEVBQ3JCLE9BQU9zNkIsUUFBUSxDQUFDdDRCLEdBQUcsQ0FBRXU0QixPQUFPLElBQUtBLE9BQU8sQ0FBQ2o4QixJQUFJLENBQUMsQ0FBQ2s4QixJQUFJLENBQUMsSUFBSSxDQUFDO0VBRTNELE9BQU8sSUFBSTtBQUNiLENBQUM7QUFFTSxNQUFNQyxhQUFhLEdBQUdBLENBQUNyNUIsTUFBTSxFQUFFeEQsTUFBTSxLQUMxQ0EsTUFBTSxDQUFDNDRCLFlBQVksQ0FBQy9YLElBQUksQ0FBRXRnQixJQUFJLElBQUtBLElBQUksQ0FBQytCLEVBQUUsS0FBS2tCLE1BQU0sQ0FBQzAxQixjQUFjLENBQUM7QUFFaEUsTUFBTWxWLGtCQUFrQixHQUFJeGdCLE1BQU07RUFBQSxJQUFBbXNCLHFCQUFBO0VBQUEsT0FDdkMsQ0FBQW5zQixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXM1QixZQUFZLElBQUcsQ0FBQyxJQUN4QixDQUFBdDVCLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFczVCLFlBQVksS0FBR3Q1QixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRWsxQixlQUFlLEtBQzlDLEVBQUNsMUIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBbXNCLHFCQUFBLEdBQU5uc0IsTUFBTSxDQUFFbUIsZUFBZSxjQUFBZ3JCLHFCQUFBLGVBQXZCQSxxQkFBQSxDQUF5QnplLElBQUksQ0FBRTZyQixFQUFFLElBQUtBLEVBQUUsQ0FBQzNlLE1BQU0sS0FBSyxXQUFXLENBQUM7QUFBQTtBQUU1RCxNQUFNSSxpQkFBaUIsR0FBSXZhLE9BQU8sSUFDdkMsQ0FBQUEsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUUzRCxNQUFNLENBQUVrRCxNQUFNLElBQUt3Z0Isa0JBQWtCLENBQUN4Z0IsTUFBTSxDQUFDLENBQUMsQ0FBQ3BCLE1BQU0sS0FBSSxDQUFDO0FBRTlELE1BQU00NkIsaUJBQWlCLEdBQUdBLENBQUN6OEIsSUFBSSxFQUFFRyxJQUFJLEVBQUVrSixVQUFVLEtBQUs7RUFDM0QsSUFBSXF6QixNQUFNO0VBQ1YsUUFBUTE4QixJQUFJO0lBQ1YsS0FBSytPLDZGQUFxQjtNQUN4QjJ0QixNQUFNLEdBQUdwTyxxQ0FBUSxDQUFDLENBQUMsQ0FBQ3FPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLHVCQUF1QixDQUFDO01BQzFEO0lBQ0YsS0FBS3h0QixvR0FBNEI7TUFDL0J1dEIsTUFBTSxHQUFHcE8sdUNBQVUsVUFBQXB1QixNQUFBLENBQVVDLElBQUksQ0FBRSxDQUFDO01BQ3BDO0lBQ0YsS0FBSzZPLGlHQUF5QjtNQUM1QjB0QixNQUFNLEdBQUdwTyxzQ0FBUyxDQUFDLENBQUMsQ0FBQ3NPLEVBQUUsQ0FBQ3RPLHVDQUFVLENBQUMsQ0FBQyxDQUFDO01BQ3JDO0lBQ0YsS0FBS3BmLG9HQUE0QjtJQUNqQyxLQUFLRCw2RkFBcUI7TUFDeEJ5dEIsTUFBTSxHQUFHcE8sdUNBQVUsVUFBQXB1QixNQUFBLENBQVVDLElBQUksQ0FBRSxDQUFDO01BQ3BDO0lBQ0Y7TUFDRXU4QixNQUFNLEdBQUdwTyx1Q0FBVSxVQUFBcHVCLE1BQUEsQ0FBVUMsSUFBSSxDQUFFLENBQUM7TUFDcEM7RUFDSjtFQUVBLElBQUlrSixVQUFVLEVBQUU7SUFDZHF6QixNQUFNLEdBQUdBLE1BQU0sQ0FBQ2h2QixRQUFRLElBQUF4TixNQUFBLENBQUlDLElBQUksaUJBQWMsQ0FBQztFQUNqRDtFQUVBLE9BQU91OEIsTUFBTTtBQUNmLENBQUM7QUFFTSxNQUFNMTBCLFlBQVksR0FBRyxTQUFBQSxDQUMxQmpCLEtBQUssRUFDTHBJLGNBQWMsRUFDZDRILE9BQU8sRUFDUFIsT0FBTyxFQUNQODJCLGlCQUFpQixFQUNqQkMsbUJBQW1CLEVBQ25CQyxpQkFBaUIsRUFFZDtFQUFBLElBREhDLFlBQVksR0FBQWxKLFNBQUEsQ0FBQWp5QixNQUFBLFFBQUFpeUIsU0FBQSxRQUFBMUosU0FBQSxHQUFBMEosU0FBQSxNQUFHLEtBQUs7RUFFcEIsTUFBTXByQixhQUFhLEdBQUcsQ0FBQyxDQUFDO0VBRXhCLElBQUlvMEIsbUJBQW1CLEVBQUU7SUFDdkJwMEIsYUFBYSxDQUFDckssb0ZBQW9CLENBQUNDLEtBQUssQ0FBQyxHQUN2Q2lJLE9BQU8sQ0FBQ2xJLG9GQUFvQixDQUFDQyxLQUFLLENBQUMsSUFBSXlJLEtBQUssQ0FBQ3pJLEtBQUs7SUFDcERvSyxhQUFhLENBQUNySyxvRkFBb0IsQ0FBQ0UsU0FBUyxDQUFDLEdBQzNDZ0ksT0FBTyxDQUFDbEksb0ZBQW9CLENBQUNFLFNBQVMsQ0FBQyxJQUFJd0ksS0FBSyxDQUFDWixVQUFVO0lBQzdEdUMsYUFBYSxDQUFDckssb0ZBQW9CLENBQUNHLFFBQVEsQ0FBQyxHQUMxQytILE9BQU8sQ0FBQ2xJLG9GQUFvQixDQUFDRyxRQUFRLENBQUMsSUFBSXVJLEtBQUssQ0FBQ1gsU0FBUztJQUMzRHNDLGFBQWEsQ0FBQ3JLLG9GQUFvQixDQUFDSSxPQUFPLENBQUMsR0FDekM4SCxPQUFPLENBQUNsSSxvRkFBb0IsQ0FBQ0ksT0FBTyxDQUFDLElBQUlzSSxLQUFLLENBQUN0SSxPQUFPO0VBQzFEO0VBRUEsSUFBSXMrQixpQkFBaUIsRUFBRTtJQUNyQnIwQixhQUFhLENBQUNySyxvRkFBb0IsQ0FBQ0ssa0JBQWtCLENBQUMsR0FDcEQ2SCxPQUFPLENBQUNsSSxvRkFBb0IsQ0FBQ0ssa0JBQWtCLENBQUMsSUFDaERxSSxLQUFLLENBQUNrSyxtQkFBbUI7RUFDN0I7RUFFQSxJQUFJNHJCLGlCQUFpQixFQUFFO0lBQ3JCbjBCLGFBQWEsQ0FBQzZpQixvQkFBb0IsR0FDaENobEIsT0FBTyxDQUFDZ2xCLG9CQUFvQixLQUFJeGxCLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFSSxVQUFVLEtBQUksRUFBRTtJQUMzRHVDLGFBQWEsQ0FBQzhpQixtQkFBbUIsR0FDL0JqbEIsT0FBTyxDQUFDaWxCLG1CQUFtQixLQUFJemxCLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFSyxTQUFTLEtBQUksRUFBRTtFQUMzRDtFQUVBekgsY0FBYyxDQUFDK1EsT0FBTyxDQUFFVSxDQUFDLElBQUs7SUFBQSxJQUFBZ0MscUJBQUE7SUFDNUIsTUFBTTFGLFlBQVksR0FBR2IseUZBQU0sQ0FBQ3VFLENBQUMsQ0FBQ2pRLElBQUksRUFBRWlRLENBQUMsQ0FBQ3JPLEVBQUUsQ0FBQztJQUN6QyxNQUFNd08sTUFBTSxHQUFHaEssT0FBTyxDQUFDbUcsWUFBWSxDQUFDO0lBQ3BDaEUsYUFBYSxDQUFDZ0UsWUFBWSxDQUFDLEdBQUc2RCxNQUFNLElBQUlLLHNHQUFtQixDQUFDUixDQUFDLENBQUM7SUFFOUQsSUFBSSxFQUFBZ0MscUJBQUEsR0FBQWhDLENBQUMsQ0FBQ3lDLGtCQUFrQixjQUFBVCxxQkFBQSx1QkFBcEJBLHFCQUFBLENBQXNCdlEsTUFBTSxJQUFHLENBQUMsRUFBRTtNQUNwQ3VPLENBQUMsQ0FBQ3lDLGtCQUFrQixDQUFDbkQsT0FBTyxDQUFFTCxJQUFJLElBQUs7UUFDckMsTUFBTTR0QixlQUFlLEdBQUdweEIseUZBQU0sQ0FDNUJ3RCxJQUFJLENBQUM4QyxZQUFZLENBQUNoUyxJQUFJLEVBQ3RCa1AsSUFBSSxDQUFDOEMsWUFBWSxDQUFDcFEsRUFDcEIsQ0FBQztRQUNELE1BQU1tN0IsU0FBUyxHQUFHMzJCLE9BQU8sQ0FBQzAyQixlQUFlLENBQUM7UUFDMUMsTUFBTUUsS0FBSyxHQUFHM3NCLG9HQUFpQixDQUFDRCxNQUFNLEVBQUVsQixJQUFJLENBQUNDLGFBQWEsQ0FBQztRQUUzRCxJQUFJLENBQUMwdEIsWUFBWSxJQUFJRyxLQUFLLEVBQUU7VUFDMUJ6MEIsYUFBYSxDQUFDdTBCLGVBQWUsQ0FBQyxHQUM1QkMsU0FBUyxJQUFJdHNCLHNHQUFtQixDQUFDdkIsSUFBSSxDQUFDOEMsWUFBWSxDQUFDO1FBQ3ZEO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDLENBQUM7RUFFRixPQUFPekosYUFBYTtBQUN0QixDQUFDO0FBRU0sTUFBTVgscUJBQXFCLEdBQUdBLENBQ25DcEosY0FBYyxFQUNkbStCLG1CQUFtQixFQUNuQmpSLGdCQUFnQixFQUNoQnVSLG1CQUFtQixLQUNoQjtFQUNILE1BQU1WLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFFakIsSUFBSUksbUJBQW1CLEVBQUU7SUFDdkJKLE1BQU0sQ0FBQ3IrQixvRkFBb0IsQ0FBQ0MsS0FBSyxDQUFDLEdBQUdnd0IsdUNBQzVCLENBQUMsYUFBYSxDQUFDLENBQ3JCaHdCLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FDdEJvUCxRQUFRLENBQUMsbUJBQW1CLENBQUM7SUFDaENndkIsTUFBTSxDQUFDcitCLG9GQUFvQixDQUFDRSxTQUFTLENBQUMsR0FBRyt2Qix1Q0FDaEMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUMxQjVnQixRQUFRLENBQUMsd0JBQXdCLENBQUM7SUFDckNndkIsTUFBTSxDQUFDcitCLG9GQUFvQixDQUFDRyxRQUFRLENBQUMsR0FBRzh2Qix1Q0FDL0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUN6QjVnQixRQUFRLENBQUMsdUJBQXVCLENBQUM7SUFDcENndkIsTUFBTSxDQUFDcitCLG9GQUFvQixDQUFDSSxPQUFPLENBQUMsR0FBRzZ2QixxQ0FBUSxDQUFFaHVCLEtBQUssSUFDcEQsT0FBT0EsS0FBSyxLQUFLLFFBQVEsR0FDckJndUIsdUNBQ1MsQ0FBQyxDQUFDLENBQ1I1Z0IsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQy9CNHZCLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUM5QmhQLHVDQUFVLENBQUMsQ0FBQyxDQUFDNWdCLFFBQVEsQ0FBQyxxQkFBcUIsQ0FDakQsQ0FBQztFQUNIO0VBRUEsSUFBSTB2QixtQkFBbUIsRUFBRTtJQUN2QlYsTUFBTSxDQUFDcitCLG9GQUFvQixDQUFDSyxrQkFBa0IsQ0FBQyxHQUFHNHZCLHFDQUMzQyxDQUFDLENBQUMsQ0FDTnFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLHVCQUF1QixDQUFDO0VBQzNDO0VBRUEsSUFBSTlRLGdCQUFnQixFQUFFO0lBQ3BCNlEsTUFBTSxDQUFDblIsb0JBQW9CLEdBQUcrQyx1Q0FDckIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUMxQjVnQixRQUFRLENBQUMsd0JBQXdCLENBQUM7SUFFckNndkIsTUFBTSxDQUFDbFIsbUJBQW1CLEdBQUc4Qyx1Q0FDcEIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUN6QjVnQixRQUFRLENBQUMsdUJBQXVCLENBQUM7RUFDdEM7RUFFQS9PLGNBQWMsQ0FBQytRLE9BQU8sQ0FBRVUsQ0FBQyxJQUFLO0lBQUEsSUFBQW10QixzQkFBQTtJQUM1QixNQUFNN3dCLFlBQVksR0FBR2IseUZBQU0sQ0FBQ3VFLENBQUMsQ0FBQ2pRLElBQUksRUFBRWlRLENBQUMsQ0FBQ3JPLEVBQUUsQ0FBQztJQUN6QzI2QixNQUFNLENBQUNod0IsWUFBWSxDQUFDLEdBQUcrdkIsaUJBQWlCLENBQUNyc0IsQ0FBQyxDQUFDcFEsSUFBSSxFQUFFb1EsQ0FBQyxDQUFDalEsSUFBSSxFQUFFaVEsQ0FBQyxDQUFDeEQsU0FBUyxDQUFDO0lBRXJFLElBQUksRUFBQTJ3QixzQkFBQSxHQUFBbnRCLENBQUMsQ0FBQ3lDLGtCQUFrQixjQUFBMHFCLHNCQUFBLHVCQUFwQkEsc0JBQUEsQ0FBc0IxN0IsTUFBTSxJQUFHLENBQUMsRUFBRTtNQUNwQ3VPLENBQUMsQ0FBQ3lDLGtCQUFrQixDQUFDbkQsT0FBTyxDQUFFTCxJQUFJLElBQUs7UUFDckMsTUFBTW11QixXQUFXLEdBQUdudUIsSUFBSSxDQUFDOEMsWUFBWTtRQUNyQyxNQUFNOHFCLGVBQWUsR0FBR3B4Qix5RkFBTSxDQUFDMnhCLFdBQVcsQ0FBQ3I5QixJQUFJLEVBQUVxOUIsV0FBVyxDQUFDejdCLEVBQUUsQ0FBQztRQUNoRTI2QixNQUFNLENBQUNPLGVBQWUsQ0FBQyxHQUFHUixpQkFBaUIsQ0FDekNlLFdBQVcsQ0FBQ3g5QixJQUFJLEVBQ2hCdzlCLFdBQVcsQ0FBQ3I5QixJQUFJLEVBQ2hCLEtBQ0YsQ0FBQyxDQUNFczlCLFFBQVEsQ0FBQyxDQUFDLENBQ1ZDLElBQUksQ0FBQ2h4QixZQUFZLEVBQUU7VUFDbEJpeEIsRUFBRSxFQUFHQyxXQUFXLElBQUs7WUFDbkIsTUFBTVQsS0FBSyxHQUFHM3NCLG9HQUFpQixDQUFDb3RCLFdBQVcsRUFBRXZ1QixJQUFJLENBQUNDLGFBQWEsQ0FBQztZQUNoRSxPQUFPNnRCLEtBQUs7VUFDZCxDQUFDO1VBQ0RuN0IsSUFBSSxFQUFHNjdCLEdBQUcsSUFBS0EsR0FBRyxDQUFDbndCLFFBQVEsQ0FBQywyQkFBMkI7UUFDekQsQ0FBQyxDQUFDO01BQ04sQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDLENBQUM7RUFFRixPQUFPNGdCLHVDQUFVLENBQUNvTyxNQUFNLENBQUM7QUFDM0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsUEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNxZjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQnJmO0FBQ0E7QUFDQTtBQUNBO0FBQzZEOzs7Ozs7Ozs7Ozs7Ozs7QUNKN0Q7QUFDQTtBQUM2Qjs7Ozs7Ozs7Ozs7Ozs7OztBQ0Y3QjtBQUNBO0FBQ0E7QUFDaUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0hqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2lOOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSak47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN3akI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkJ4akI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDNFI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDYjVSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2lIOzs7Ozs7Ozs7Ozs7Ozs7QUNQakg7QUFDQTtBQUMwQjs7Ozs7Ozs7Ozs7Ozs7OztBQ0YxQjtBQUNBO0FBQ0E7QUFDNEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQytXOzs7Ozs7Ozs7Ozs7Ozs7OztBQ2xCL1c7QUFDQTtBQUNBO0FBQ0E7QUFDZ0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0poRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1JoTTtBQUNBO0FBQ0E7QUFDQTtBQUMrRTs7Ozs7Ozs7Ozs7QUNKL0U7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN5QztBQUNOO0FBQ0k7QUFDdUI7QUFDZjtBQUNXO0FBQ25CO0FBQ29CO0FBQ0Y7QUFBQTtBQUV6RCxNQUFNc0IsdUJBQXVCLEdBQUlyYSxLQUFLLElBQUs7RUFDekMsTUFBTTtJQUNKOFIsUUFBUTtJQUNSd0ksWUFBWTtJQUNaeCtCLE1BQU07SUFDTnVCLFVBQVU7SUFDVnRCLElBQUk7SUFDSjgxQixRQUFRO0lBQ1I5dkI7RUFDRixDQUFDLEdBQUdpZSxLQUFLO0VBQ1QsTUFBTTtJQUFFbmI7RUFBRSxDQUFDLEdBQUdoQiw2REFBYyxDQUFDLENBQUM7RUFFOUIsTUFBTTtJQUFFbXVCLEtBQUs7SUFBRVc7RUFBVSxDQUFDLEdBQUdGLG9EQUFZLENBQUM7SUFDeENYLFFBQVE7SUFDUndJLFlBQVk7SUFDWngrQixNQUFNO0lBQ05DLElBQUk7SUFDSnNCLFVBQVU7SUFDVncwQixRQUFRO0lBQ1I5dkI7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNdzRCLGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDN0IsTUFBTTU4QixNQUFNLEdBQUcsSUFBSTY4QixlQUFlLENBQUNDLE1BQU0sQ0FBQ3ZELFFBQVEsQ0FBQ3dELE1BQU0sQ0FBQztJQUMxRCxNQUFNQyxLQUFLLEdBQUdoOUIsTUFBTSxDQUFDaTlCLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDdEMsSUFBSUQsS0FBSyxFQUFFM0ksS0FBSyxDQUFDcjJCLFFBQVEsQ0FBQztNQUFFVSxJQUFJLEVBQUU5QyxpREFBVztNQUFFK0UsT0FBTyxFQUFFO0lBQUssQ0FBQyxDQUFDO0VBQ2pFLENBQUM7RUFFRDhTLGdEQUFTLENBQUMsTUFBTTtJQUNkNGdCLEtBQUssQ0FBQ3IyQixRQUFRLENBQUNFLHlEQUFlLENBQUNDLE1BQU0sRUFBRUMsSUFBSSxDQUFDLENBQUM7RUFDL0MsQ0FBQyxFQUFFLENBQUNELE1BQU0sRUFBRUMsSUFBSSxDQUFDLENBQUM7RUFFbEIsb0JBQ0V3SSxzREFBQSxDQUFDNDFCLGlEQUFRO0lBQUNuSSxLQUFLLEVBQUVBLEtBQU07SUFBQXpzQixRQUFBLGVBQ3JCaEIsc0RBQUEsQ0FBQzYxQix3RUFBVztNQUNWUyxZQUFZLEVBQUVOLGdCQUFpQjtNQUMvQjNLLE9BQU8sRUFBRSxJQUFLO01BQ2QrQyxTQUFTLEVBQUVBLFNBQVU7TUFBQXB0QixRQUFBLGVBRXJCZCx1REFBQSxDQUFDZ2YsK0RBQW9CO1FBQUN1QixXQUFXO1FBQUF6ZixRQUFBLGdCQUMvQmhCLHNEQUFBLENBQUNULDhDQUFHO1VBQUM0TSxFQUFFLEVBQUU7WUFBRW9ELE9BQU8sRUFBRTtjQUFFZ0MsRUFBRSxFQUFFLENBQUM7Y0FBRXVDLEVBQUUsRUFBRSxDQUFDO2NBQUVDLEVBQUUsRUFBRTtZQUFFO1VBQUUsQ0FBRTtVQUFBL1MsUUFBQSxlQUM1Q2hCLHNEQUFBO1lBQUFnQixRQUFBLEVBQUtWLENBQUMsQ0FBQyxjQUFjO1VBQUMsQ0FBSztRQUFDLENBQ3pCLENBQUMsZUFDTk4sc0RBQUEsQ0FBQ21ULG1FQUFlO1VBQ2RvYSxRQUFRLEVBQUVBLFFBQVM7VUFDbkJ3SSxZQUFZLEVBQUVBLFlBQWE7VUFDM0J4K0IsTUFBTSxFQUFFQSxNQUFPO1VBQ2Z1QixVQUFVLEVBQUVBO1FBQVcsQ0FDeEIsQ0FBQztNQUFBLENBQ2tCO0lBQUMsQ0FDWjtFQUFDLENBQ04sQ0FBQztBQUVmLENBQUM7QUFFRGc5Qix1QkFBdUIsQ0FBQ3QwQixTQUFTLEdBQUc7RUFDbEMrckIsUUFBUSxFQUFFbHVCLDBEQUFnQjtFQUMxQjAyQixZQUFZLEVBQUUxMkIsMERBQWdCO0VBQzlCOUgsTUFBTSxFQUFFOEgsMERBQWdCO0VBQ3hCdkcsVUFBVSxFQUFFdUcsMERBQWdCO0VBQzVCN0gsSUFBSSxFQUFFNkgsMERBQWdCO0VBQ3RCaXVCLFFBQVEsRUFBRWp1QiwwREFBZ0I7RUFDMUI3QixhQUFhLEVBQUU2Qix3REFBY3NDO0FBQy9CLENBQUM7QUFFRCxpRUFBZW0wQix1QkFBdUIsRSIsInNvdXJjZXMiOlsid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2FjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQXNzaWduRVFGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbURpYWxvZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21UaGVtZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9EYXRlcGlja2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvU2VhcmNoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvU29ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXVsdGlTdGVwU2xpZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJOdW1iZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9Db21wYW55RmllbGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldERlbGVnYXRpb25GaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRSZWFzc2lnbi9jb21wb25lbnRzL1JlYXNzaWduRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRSZWFzc2lnbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3IuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2kxOG4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9zdW1taXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvdGlja2V0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NdWx0aVN0ZXBTbGlkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRSZWFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9EZWxldGVPdXRsaW5lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRHJhd2VyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpZHRva2VuLXZlcmlmaWVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicC1saW1pdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcXItY29kZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInl1cFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgZ2V0UmVxdWVzdCxcbiAgZGVsZXRlUmVxdWVzdCxcbiAgY3JlYXRlQWN0aW9uLFxuICBzdG9wTG9hZGluZyxcbiAgc3RhcnRMb2FkaW5nLFxuICBwdXRSZXF1ZXN0XG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IGdldElkVG9rZW4gfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgSWRUb2tlblZlcmlmaWVyIGZyb20gXCJpZHRva2VuLXZlcmlmaWVyXCI7XG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIEZJUlNUX1BBR0UsXG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIFBST01JU0VfQkFUQ0hfTElNSVQsXG4gIEZJRlRZX1BFUl9QQUdFXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfU1RBVEUgPSBcIlNFVF9TVEFURVwiO1xuXG4vLyBPUkRFUlMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1VTRVJfT1JERVJTID0gXCJHRVRfT1JERVJTXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX09SREVSID0gXCJSRUZVTkRfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfQUNUSVZFX09SREVSX0lEID0gXCJTRVRfQUNUSVZFX09SREVSX0lEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1VTRVJfT1JERVJTID0gXCJGSUxURVJfVVNFUl9PUkRFUlNcIjtcblxuLy8gVElDS0VUUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUUyA9IFwiR0VUX1RJQ0tFVFNcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUID0gXCJVUERBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9USUNLRVQgPSBcIlJFQ0VJVkVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IEFTU0lHTl9USUNLRVQgPSBcIkFTU0lHTl9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEID1cbiAgXCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEXCI7XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0U3RhdGUgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1NUQVRFKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RmlsdGVyID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9GSUxURVIpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSL1NPUlQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX1bXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck9iai5uYW1lfT1AJHtmaWx0ZXJPYmoudmFsdWV9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT5cbiAgZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIjtcblxuLy8gT1JERVJTIEFDVElPTlNcbmV4cG9ydCBjb25zdCBnZXRVc2VyT3JkZXJzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge31cbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlcik7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNldEFjdGl2ZU9yZGVySWQgPSAob3JkZXJJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FDVElWRV9PUkRFUl9JRCkob3JkZXJJZCkpO1xuXG4vLyBVU0VSIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRVc2VyID0gKHVzZXIpID0+IChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9VU0VSKSh1c2VyKSk7XG5cbi8vIFRJQ0tFVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyVGlja2V0cyA9XG4gICh7IHBhZ2UgPSBGSVJTVF9QQUdFLCBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHVzZXJTdGF0ZTogeyB1c2VyUHJvZmlsZSB9LFxuICAgICAgc3VtbWl0XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBpZiAoIXVzZXJQcm9maWxlLmlkKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGZpbHRlcjogXCJzdGF0dXM9PVBhaWRcIixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvcmRlci5pZCxvcmRlci5vd25lcl9maXJzdF9uYW1lLG9yZGVyLm93bmVyX2xhc3RfbmFtZSxvcmRlci5vd25lcl9lbWFpbCxvd25lci5maXJzdF9uYW1lLG93bmVyLmxhc3RfbmFtZSxvd25lci5zdGF0dXNcIixcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL2FsbC90aWNrZXRzL21lYCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHsgb3JkZXJJZCwgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IHRpY2tldDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFTkRfTk9USUZJQ0FUSU9OKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9hdHRlbmRlZS9yZWludml0ZWAsXG4gICAgICB7IG1lc3NhZ2UgfSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZFRpY2tldCA9XG4gICh7IHRpY2tldCB9KSA9PlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBwYWdlOiAxLFxuICAgICAgcGVyX3BhZ2U6IEZJRlRZX1BFUl9QQUdFLFxuICAgICAgZXhwYW5kOiBcIipzdWJfcXVlc3Rpb25fcnVsZXMsKnN1Yl9xdWVzdGlvbiwqdmFsdWVzXCIsXG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBcInRpY2tldHNfZXhjbHVkZV9pbmFjdGl2ZXM9PXRydWVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9hdHRlbmRlZXMvJHthdHRlbmRlZUlkfS9hbGxvd2VkLWV4dHJhLXF1ZXN0aW9uc2A7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0ID1cbiAgKHRpY2tldElkLCBvcmRlcklkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH1gO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfVElDS0VUKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuY29uc3Qgbm9ybWFsaXplVGlja2V0ID0gKGVudGl0eSkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0geyAuLi5lbnRpdHkgfTtcblxuICBpZiAoIWVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkKSB7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55ID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnlfaWQgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZDtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkRW50aXR5O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hQcm9maWxlID1cbiAgKGRhdGEsIGNvbXBhbnksIHRpY2tldE93bmVyKSA9PlxuICAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IHVwZGF0ZVByb2ZpbGUgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG5cbiAgICAvLyBlbWFpbCBzaG91bGQgbWF0Y2ggKCBvbmx5IHVwZGF0ZSBteSBwcm9maWxlIGlzIHRpY2tldCBiZWxvbmdzIHRvIG1lISlcbiAgICAvLyBhbmQgaWYgdGhlIHRpY2tldCBkb2Vzbid0IGhhdmUgYSBtYW5hZ2VyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBjaGFuZ2VzIGluIHRoZSB0aWNrZXQgZGF0YSB0byB1cGRhdGUgdGhlIHByb2ZpbGVcbiAgICBjb25zdCB7XG4gICAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9jb21wYW55XG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3QgaGFzTWFuYWdlciA9IHRpY2tldE93bmVyPy5tYW5hZ2VyPy5pZCB8fCB0aWNrZXRPd25lcj8ubWFuYWdlcl9pZDtcbiAgICBjb25zdCBpdHNNZSA9IHVzZXJQcm9maWxlLmVtYWlsID09PSBhdHRlbmRlZV9lbWFpbDtcbiAgICBjb25zdCBwcm9maWxlQ2hhbmdlZCA9XG4gICAgICBhdHRlbmRlZV9jb21wYW55Lm5hbWUgIT09IGNvbXBhbnkgfHxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUgIT09IHVzZXJQcm9maWxlLmZpcnN0X25hbWUgfHxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUubGFzdF9uYW1lO1xuXG4gICAgaWYgKGl0c01lICYmICFoYXNNYW5hZ2VyICYmIHByb2ZpbGVDaGFuZ2VkKSB7XG4gICAgICBjb25zdCBuZXdQcm9maWxlID0ge1xuICAgICAgICBmaXJzdF9uYW1lOiBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgICBsYXN0X25hbWU6IGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgICAgY29tcGFueTogYXR0ZW5kZWVfY29tcGFueS5uYW1lIHx8IGF0dGVuZGVlX2NvbXBhbnlcbiAgICAgIH07XG5cbiAgICAgIC8vIHRoaXMgaXMgYSBjYWxsYmFjayBtZXRob2QgdGhhdCB1cGRhdGVzIHVzZXJQcm9maWxlIGluIEFQSSBhbmQgZXZlbnQtc2l0ZVxuICAgICAgdXBkYXRlUHJvZmlsZShuZXdQcm9maWxlKTtcbiAgICB9XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlVGlja2V0RGV0YWlscyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgaWRUb2tlbiA9IGdldElkVG9rZW4oKTtcbiAgICBsZXQgY29tcGFueSA9IFwiXCI7XG4gICAgaWYgKGlkVG9rZW4pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWVyID0gbmV3IElkVG9rZW5WZXJpZmllcigpO1xuICAgICAgICBjb25zdCBqd3QgPSB2ZXJpZmllci5kZWNvZGUoaWRUb2tlbik7XG4gICAgICAgIGNvbXBhbnkgPSBqd3QucGF5bG9hZC5jb21wYW55O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGUpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0gbm9ybWFsaXplVGlja2V0KGFuc3dlcnMpO1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgbm9ybWFsaXplZEVudGl0eSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHJlZnJlc2hQcm9maWxlKGFuc3dlcnMsIGNvbXBhbnksIHRpY2tldC5vd25lcikpO1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBhc3NpZ25BdHRlbmRlZSA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgYXR0ZW5kZWVfZW1haWwsIG1lc3NhZ2UpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7IGF0dGVuZGVlX2VtYWlsLCBtZXNzYWdlIH0sXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVhc3NpZ25UaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCBvd25lci5leHRyYV9xdWVzdGlvbnMsIG9yZGVyLnN1bW1pdFwiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRU1PVkVfVElDS0VUX0FUVEVOREVFKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHt9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PlxuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSlcbiAgICApO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZUV4dHJhUXVlc3Rpb25zID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IHsgYnVpbGRWYWxpZGF0aW9uU2NoZW1hLCBwYXJzZUFuc3dlcnMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgQXNzaWduRVFGb3JtID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnMoXG4gICAgICB0aWNrZXQub3duZXIsXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIHt9LFxuICAgICAgbnVsbCxcbiAgICAgIGZhbHNlLFxuICAgICAgZmFsc2UsXG4gICAgICB0cnVlXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGZhbHNlLFxuICAgICAgZmFsc2UsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIG51bGwsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1paywgXCJyZWFzc2lnbkRyYXdlclwiKTtcblxuICBpZiAoZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgIDxCb3g+XG4gICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9IGZvcm1paz17Zm9ybWlrfSAvPlxuICAgICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICAgIDxSZWdpc3RyYXRpb25EaXNjbGFpbWVyXG4gICAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgICAgaXNSZXF1aXJlZD17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Rm9ybUZvb3RlclxuICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduX2VxLnNhdmVcIil9XG4gICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbl9lcS5jYW5jZWxcIil9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgLz5cbiAgICA8L2Zvcm0+XG4gICk7XG59O1xuXG5Bc3NpZ25FUUZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkVRRm9ybTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHQsXG4gIERpYWxvZ1RpdGxlXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IEN1c3RvbURpYWxvZyA9ICh7IG9wZW4sIG9uQ2xvc2UsIHRpdGxlLCBkZXNjcmlwdGlvbiB9KSA9PiAoXG4gIDxEaWFsb2dcbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcbiAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgPlxuICAgIDxEaWFsb2dUaXRsZSBpZD1cImFsZXJ0LWRpYWxvZy10aXRsZVwiPnt0aXRsZX08L0RpYWxvZ1RpdGxlPlxuICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0IGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgIHtkZXNjcmlwdGlvbn1cbiAgICAgIDwvRGlhbG9nQ29udGVudFRleHQ+XG4gICAgPC9EaWFsb2dDb250ZW50PlxuICA8L0RpYWxvZz5cbik7XG5cbkN1c3RvbURpYWxvZy5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGRlc2NyaXB0aW9uOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21EaWFsb2c7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbi8vIEdldCB0aGUgcm9vdCBlbGVtZW50XG5jb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4vLyBSZXRyaWV2ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIENTUyB2YXJpYWJsZVxuY29uc3QgZGFya0NvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShyb290KS5nZXRQcm9wZXJ0eVZhbHVlKFxuICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbik7XG5cbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBwYWxldHRlOiB7XG4gICAgcHJpbWFyeToge1xuICAgICAgbWFpbjogZGFya0NvbG9yXG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPSBjdXJyZW50QW5zLmxlbmd0aCA9PT0gcXVlc3Rpb25NYXhWYWx1ZXM7XG4gICAgbGV0IG5ld1ZhbHVlO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gbWF4U2VsZWN0aW9uUmVhY2hlZCA/IGN1cnJlbnRBbnMgOiBbLi4uY3VycmVudEFucywgdmFsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUgPSBjdXJyZW50QW5zLmZpbHRlcigodikgPT4gdiAhPT0gdmFsKTtcbiAgICB9XG5cbiAgICBzZXRGaWVsZFZhbHVlKHF1ZXN0aW9uU2x1ZywgbmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsPntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3ZhbHVlPy5pbmNsdWRlcyhvcC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2KSA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UoZXYudGFyZ2V0LmNoZWNrZWQsIG9wLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBJbnB1dExhYmVsLCBNZW51SXRlbSwgU2VsZWN0IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93blF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8SW5wdXRMYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvSW5wdXRMYWJlbD5cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIGxhYmVsSWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBpZD17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAyMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8TWVudUl0ZW0ga2V5PXtvcC5sYWJlbH0gdmFsdWU9e29wLnZhbHVlfT5cbiAgICAgICAgICAgICAge29wLmxhYmVsfVxuICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TZWxlY3Q+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ecm9wZG93blF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWwsXG4gIFJhZGlvLFxuICBSYWRpb0dyb3VwXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIHZhbHVlPXtvcC52YWx1ZX1cbiAgICAgICAgICAgICAgY29udHJvbD17PFJhZGlvIC8+fVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgVGV4dFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQsIGNoaWxkcmVuKSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIGlmICghcnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXModik7XG4gICAgfVxuICAgIHJldHVybiB2ID09PSBjb21wYXJlVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZS50b1N0cmluZygpXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT5cbiAgICBjaGVja1Zpc2liaWxpdHkoXG4gICAgICBydWxlLFxuICAgICAgY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKVxuICAgICk7XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XG5pbXBvcnQgeyBBZGFwdGVyRGF5anMgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIjtcbmltcG9ydCB7IExvY2FsaXphdGlvblByb3ZpZGVyIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIjtcbmltcG9ydCB7IERhdGVQaWNrZXIgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0RBVEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhc2ljRGF0ZVBpY2tlcih7IG9uRmlsdGVyLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSBkYXlqcygpO1xuICBjb25zdCBbZGF0ZVZhbHVlLCBzZXREYXRlVmFsdWVdID0gdXNlU3RhdGUobm93KTtcbiAgY29uc3Qgb25EYXRlQ2hhbmdlID0gKHZhbCkgPT4ge1xuICAgIHNldERhdGVWYWx1ZSh2YWwpO1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWwuJGQpO1xuICAgIGNvbnN0IHsgbG93ZXIsIHVwcGVyIH0gPSBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMoZGF0ZSk7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgdHlwZTogRklMVEVSX1ZBUl9EQVRFLFxuICAgICAgbmFtZTogXCJjcmVhdGVkXCIsXG4gICAgICBkYXRlLFxuICAgICAgbG93ZXIsXG4gICAgICB1cHBlclxuICAgIH0pO1xuICB9O1xuICBjb25zdCBvblJlc2V0QWN0aW9uID0gKCkgPT4ge1xuICAgIG9uUmVzZXQoKTtcbiAgICBzZXREYXRlVmFsdWUobm93KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJEYXRlTGFiZWx9Pnt0KFwiZmlsdGVyLnB1cmNoYXNlZF9vblwiKX08L2Rpdj5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRhdGVQaWNrZXJDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb25cbiAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kYXRlcGlja2VyQ2xvc2V9XG4gICAgICAgICAgb25DbGljaz17b25SZXNldEFjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgICAgPExvY2FsaXphdGlvblByb3ZpZGVyIGRhdGVBZGFwdGVyPXtBZGFwdGVyRGF5anN9PlxuICAgICAgICAgIDxEYXRlUGlja2VyXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYWxlbmRhckRpc3BsYXl9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25EYXRlQ2hhbmdlfVxuICAgICAgICAgICAgdmFsdWU9e2RhdGVWYWx1ZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0xvY2FsaXphdGlvblByb3ZpZGVyPlxuICAgICAgPC9TdGFjaz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuQmFzaWNEYXRlUGlja2VyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgQmFzaWNEYXRlUGlja2VyIGZyb20gXCIuL0RhdGVwaWNrZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRmlsdGVyKHsgb25GaWx0ZXIsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlck51bUFjdGl2ZSwgc2V0RmlsdGVyTnVtQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZmlsdGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQgJiYgIWZpbHRlclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIGlmIChzaG93RmlsdGVyTGlzdCkge1xuICAgICAgICBzZXRTaG93RmlsdGVyTGlzdChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEYXRlcGlja2VyKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dGaWx0ZXJMaXN0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dGaWx0ZXJMaXN0KCFzaG93RmlsdGVyTGlzdCk7XG4gICAgc2V0U2hvd0RhdGVwaWNrZXIoIXNob3dEYXRlcGlja2VyKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNvbnRhaW5lcn0gcmVmPXtmaWx0ZXJSZWZ9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgb25DbGljaz17dG9nZ2xlfVxuICAgICAgPlxuICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIHsvKiogY3VycmVudGx5IGp1c3Qgc2hvd2luZyBcIjFcIiBiZWNhdXNlIHdlJ3JlIGN1cnJlbnRseSBvbmx5IGZpbHRlcmluZyBvbmUgY3JpdGVyaWEgLSBjcmVhdGVkIGRhdGUgKi99XG4gICAgICAgIHtmaWx0ZXJOdW1BY3RpdmUgJiYgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJOdW1BY3RpdmV9PjE8L2Rpdj59XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dEYXRlUGlja2VyIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPEJhc2ljRGF0ZVBpY2tlclxuICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcbiAgICAgICAgICAgIG9uUmVzZXQoKTtcbiAgICAgICAgICAgIHNldEZpbHRlck51bUFjdGl2ZShmYWxzZSk7XG4gICAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uRmlsdGVyPXsoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICBvbkZpbHRlcihmaWx0ZXIpO1xuICAgICAgICAgICAgc2V0RmlsdGVyTnVtQWN0aXZlKHRydWUpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgSW5wdXRCYXNlIGZyb20gXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU2VhcmNoQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIG1hcmdpblJpZ2h0OiBcIjBcIixcbiAgbWFyZ2luTGVmdDogXCIwXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbiAgZGlzcGxheTogXCJibG9ja1wiXG59KSk7XG5jb25zdCBTZWFyY2hJY29uV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCJcbn0pKTtcbmNvbnN0IFN0eWxlZElucHV0QmFzZSA9IHN0eWxlZChJbnB1dEJhc2UpKCgpID0+ICh7XG4gIGNvbG9yOiBcImluaGVyaXRcIixcbiAgYm9yZGVyQm90dG9tOiBcIjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpXCIsXG4gIHBhZGRpbmdMZWZ0OiBcIjI1cHhcIixcbiAgcGFkZGluZ1JpZ2h0OiBcIjI1cHhcIixcbiAgZm9udFNpemU6IFwiMWVtXCJcbn0pKTtcbmNvbnN0IENsb3NlSWNvbldyYXBwZXIgPSBzdHlsZWQoQ2xvc2VJY29uKSgoKSA9PiAoe1xuICBwYWRkaW5nOiBcIjJweFwiLFxuICBmb250U2l6ZTogXCIxLjVlbVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IFwiMFwiLFxuICByaWdodDogXCIwXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgekluZGV4OiBcIjEwMDBcIlxufSkpO1xuXG5mdW5jdGlvbiBTZWFyY2goeyBvblNlYXJjaCwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dDbG9zZSwgc2V0U2hvd0Nsb3NlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAga2V5LFxuICAgICAgbmF0aXZlRXZlbnQ6IHtcbiAgICAgICAgdGFyZ2V0OiB7IHZhbHVlIH1cbiAgICAgIH1cbiAgICB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICBvblNlYXJjaCh7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBuYW1lOiBcIm51bWJlclwiLFxuICAgICAgICB0eXBlOiBGSUxURVJfVkFSX09SREVSX05VTUJFUlxuICAgICAgfSk7XG4gICAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBzZXRTaG93Q2xvc2UoZmFsc2UpO1xuICAgIG9uUmVzZXQoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZSAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufVxuXG5TZWFyY2gucHJvcFR5cGVzID0ge1xuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbXBvcnRFeHBvcnRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBTb3J0KHsgb25Tb3J0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd1NvcnQsIHNldFNob3dTb3J0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc29ydFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlU29ydENsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChzb3J0UmVmLmN1cnJlbnQgJiYgIXNvcnRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBzZXRTaG93U29ydChmYWxzZSk7XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dTb3J0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dTb3J0KCFzaG93U29ydCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5zb3J0Q29udGFpbmVyfSBvbkNsaWNrPXt0b2dnbGV9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIHJlZj17c29ydFJlZn1cbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8SW1wb3J0RXhwb3J0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuc29ydEljb259IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRMYWJlbH0+e3QoXCJzb3J0LnNvcnRcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIHtzaG93U29ydCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfT5cbiAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfSBvbkNsaWNrPXsoKSA9PiBvblNvcnQoXCJkZXNjXCIpfT5cbiAgICAgICAgICAgIHt0KFwic29ydC5uZXdfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0gb25DbGljaz17KCkgPT4gb25Tb3J0KFwiYXNjXCIpfT5cbiAgICAgICAgICAgIHt0KFwic29ydC5vbGRfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU29ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEZpbHRlclNvcnRTZWFyY2goeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSB7XG4gIHJldHVybiAoXG4gICAgPEdyaWQgY29udGFpbmVyIGp1c3RpZnk9XCJmbGV4LWVuZFwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgeHM9ezZ9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBnYXA9ezJ9XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICAgIDxTZWFyY2ggb25TZWFyY2g9e29uU2VhcmNofSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn1cblxuRmlsdGVyU29ydFNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyU29ydFNlYXJjaDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGb3JtRm9vdGVyID0gKHsgc2F2ZUxhYmVsLCBjYW5jZWxMYWJlbCwgb25DbG9zZSwgZGlzYWJsZWQgfSkgPT4gKFxuICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZvb3Rlcn0+XG4gICAgPEJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnRufVxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7Y2FuY2VsTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gICAgPEJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5zYXZlQnRufVxuICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7c2F2ZUxhYmVsfVxuICAgIDwvQnV0dG9uPlxuICA8L0JveD5cbik7XG5cbkZvcm1Gb290ZXIucHJvcFR5cGVzID0ge1xuICBzYXZlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNhbmNlbExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb3JtRm9vdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBFcnJvckxhYmVsKHsgbWVzc2FnZSwgY29sb3IsIGNsYXNzTmFtZXMsIGRhdGFUZXN0SWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5lcnJvckxhYmVsfSAke2NsYXNzTmFtZXMgJiYgY2xhc3NOYW1lc31gfVxuICAgICAgc3R5bGU9e3sgY29sb3IgfX1cbiAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgID5cbiAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3IgfX0gLz5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXJyb3JMYWJlbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBEcmF3ZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRHJhd2VyXCI7XG5pbXBvcnQgeyBDb250YWluZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNdWx0aVN0ZXBTbGlkZXIgPSAoeyBjaGlsZHJlbiwgb3Blbiwgb25DbG9zZVNsaWRlciB9KSA9PiAoXG4gICAgPERyYXdlclxuICAgICAgYW5jaG9yPVwicmlnaHRcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTbGlkZXJ9XG4gICAgICBzdHlsZT17eyB6SW5kZXg6IDEwMDAgfX1cbiAgICAgIFBhcGVyUHJvcHM9e3tcbiAgICAgICAgc3g6IHtcbiAgICAgICAgICB3aWR0aDogXCI2MCVcIlxuICAgICAgICB9XG4gICAgICB9fVxuICAgID5cbiAgICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMubXVsdGlzdGVwQ29udGFpbmVyfT5cbiAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm11bHRpc3RlcENsb3NlSWNvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlU2xpZGVyfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2Utc2xpZGVyXCJcbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Db250YWluZXI+XG4gICAgPC9EcmF3ZXI+XG4gIClcblxuTXVsdGlTdGVwU2xpZGVyLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE11bHRpU3RlcFNsaWRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IEZpbHRlclNvcnRTZWFyY2ggZnJvbSBcIi4vRmlsdGVyU29ydFNlYXJjaFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgZ2V0VXNlck9yZGVycywgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi9DdXN0b21UaGVtZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIG1lbWJlck9yZGVycyxcbiAgICBvcmRlcnNfY3VycmVudF9wYWdlLFxuICAgIG9yZGVyc19sYXN0X3BhZ2UsXG4gICAgb3JkZXJzX3Blcl9wYWdlLFxuICAgIG9yZGVyc190b3RhbFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcbiAgY29uc3QgW2ZpbHRlciwgc2V0RmlsdGVyXSA9IHVzZVN0YXRlKHt9KTtcbiAgY29uc3QgW3NvcnQsIHNldFNvcnRdID0gdXNlU3RhdGUoe30pO1xuXG4gIGNvbnN0IG9uUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKHt9KTtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaERhdGEgPSBhc3luYyAocGFnZSkgPT4ge1xuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgIHBhZ2UsXG4gICAgICAgIHBlclBhZ2U6IG9yZGVyc19wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaERhdGEob3JkZXJzX2N1cnJlbnRfcGFnZSk7XG4gIH0sIFtmaWx0ZXJdKTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXIpID0+IHtcbiAgICBzZXRTb3J0KHt9KTtcbiAgICBzZXRGaWx0ZXIoZmlsdGVyKTtcbiAgfTtcbiAgY29uc3Qgb25Tb3J0ID0gKGRpcmVjdGlvbikgPT4ge1xuICAgIHNldEZpbHRlcih7fSk7XG4gICAgc2V0U29ydCh7IGRpcmVjdGlvbiwgbmFtZTogXCJjcmVhdGVkXCIgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Q3VzdG9tVGhlbWU+XG4gICAgICA8RmlsdGVyU29ydFNlYXJjaFxuICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICBvblNlYXJjaD17b25GaWx0ZXJ9XG4gICAgICAgIG9uUmVzZXQ9e29uUmVzZXR9XG4gICAgICAvPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwibXktb3JkZXJzLXRpY2tldC1oZWFkZXJcIlxuICAgICAgPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PlxuICAgICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICAgIDwvaDI+XG4gICAgICA8L0JveD5cbiAgICAgIHttZW1iZXJPcmRlcnM/Lmxlbmd0aCA/IChcbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17b3JkZXJzX3RvdGFsfVxuICAgICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YShvcmRlcnNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgICAgaGFzTW9yZT17b3JkZXJzX2N1cnJlbnRfcGFnZSA8IG9yZGVyc19sYXN0X3BhZ2V9XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICA+XG4gICAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgICAgPE9yZGVyc0xpc3RcbiAgICAgICAgICAgICAga2V5PXtvcmRlci5udW1iZXIgKyBvcmRlci5pZH1cbiAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgICApIDogKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzRm91bmR9Pnt0KFwib3JkZXJzLm5vX29yZGVyc1wiKX08L0JveD5cbiAgICAgICl9XG4gICAgPC9DdXN0b21UaGVtZT5cbiAgKTtcbn07XG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyU3VtbWFyeVRhYmxlKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRFbWFpbFN1cHBvcnQoe1xuICBzdW1taXQsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgdGlja2V0cyxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShpc0luUmVmdW5kYWJsZVBlcmlvZCAmJiBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCByZXF1ZXN0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufSAke1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICAgICAgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWRcbiAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgfWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufVxuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlclN1bW1hcnkoe1xuICBvcmRlcixcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBvblJlZnVuZENsaWNrLFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc3VibWl0UmVxdWVzdFxufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGVcbiAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHt9fVxuICAgICAgICAgIG9uRW1haWxTdXBwb3J0Q2xpY2s9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEF0dGVuZGVlU3RhdHVzKHsgdGlja2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gdGlja2V0Lm93bmVyPy5lbWFpbCA/IChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHtcIiBcIn1cbiAgICAgICAge3RpY2tldC5vd25lcj8uZW1haWx9XG4gICAgICA8L3NwYW4+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgdGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgIClcbiAgKTtcbn1cblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlckxpc3RJdGVtKHtcbiAgdGlja2V0cyxcbiAgdG90YWwsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgc3VtbWl0LFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gdGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmICh0b3RhbCA+IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHt0aWNrZXRzPy5sZW5ndGggPj0gaXRlbXNUb0Rpc3BsYXkgJiYgdGlja2V0cz8ubGVuZ3RoICE9PSB0b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X21vcmVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5sZW5ndGggPiBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgJiZcbiAgICAgIHNsaWNlZFRpY2tldHM/Lmxlbmd0aCA9PT0gdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBsZXNzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TGVzc31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IFRpY2tldFJlYXNzaWduIGZyb20gXCIuLi9UaWNrZXRSZWFzc2lnblwiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCJcbn07XG5cbmNvbnN0IFRpY2tldENUQXMgPSAoe1xuICBpc0luY29tcGxldGUsXG4gIGlzVW5hc3NpZ25lZCxcbiAgaXNSZWFzc2lnbmFibGUsXG4gIG9uT3BlbkNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufT5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2tcbiAgICAgIHN4PXt7XG4gICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICB9fVxuICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgID5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5kZXRhaWwpfVxuICAgICAgPlxuICAgICAgICB7aXNJbmNvbXBsZXRlXG4gICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpXG4gICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWFzc2lnbiB0aWNrZXQgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLnJlYXNzaWduKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1N0YWNrPlxuICApO1xufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgeyBpc1JlZnVuZGFibGUsIGlzVW5hc3NpZ25lZCwgaXNJbmNvbXBsZXRlLCBjYW5SZWFzc2lnbiB9ID1cbiAgICB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IFtvcGVuVGlja2V0LCBzZXRPcGVuVGlja2V0XSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbbW9kYWxPcGVuLCBzZXRNb2RhbE9wZW5dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIHNldE9wZW5UaWNrZXQobnVsbCk7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgc2V0T3BlblRpY2tldCh0aWNrZXQpO1xuICAgIHNldE1vZGFsT3Blbih2aWV3KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyV3JhcHBlcn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9ezh9XG4gICAgICAgIHBhZGRpbmc9ezJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX1cbiAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAge3JlZnVuZFJlcXVlc3RlZCAmJiBpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXs0fSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogMiwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgPEF0dGVuZGVlU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e3RpY2tldC5udW1iZXJ9IGNvcHkgdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyIGRpcmVjdGlvbj1cInJvd1wiIHhzPXsxMn0gbGc9ezZ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIiBpdGVtPlxuICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgcGFkZGluZz17Mn0geHM9ezEyfSBsZz17Nn0gY29udGFpbmVyIGl0ZW0+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgYWxpZ249XCJjZW50ZXJcIlxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlICYmIGNhblJlYXNzaWdufVxuICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrPXtoYW5kbGVPcGVuTW9kYWx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFRpY2tldERldGFpbFxuICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgdGlja2V0SWQ9e29wZW5UaWNrZXQ/LmlkfVxuICAgICAgICBvcmRlcklkPXtvcGVuVGlja2V0Py5vcmRlcl9pZH1cbiAgICAgICAgb3duZXJJZD17b3BlblRpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuZGV0YWlsfVxuICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgLz5cbiAgICAgIDxUaWNrZXRSZWFzc2lnblxuICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgdGlja2V0SWQ9e29wZW5UaWNrZXQ/LmlkfVxuICAgICAgICBvcmRlcklkPXtvcGVuVGlja2V0Py5vcmRlcl9pZH1cbiAgICAgICAgb3duZXJJZD17b3BlblRpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MucmVhc3NpZ259XG4gICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAvPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSlcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IGRlZmF1bHRXaWR0aCA9IDkwO1xuXG5mdW5jdGlvbiBPcmRlck51bWJlcih7XG4gIG51bWJlcixcbiAgY29weSA9IGZhbHNlLFxuICB0cnVuY2F0ZWQgPSBmYWxzZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pIHtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMub3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXROb0NvbnRhaW5lcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7bnVtYmVyfVxuICAgICAgPC9zcGFuPlxuICAgICAge2NvcHkgJiYgKFxuICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQobnVtYmVyKX1cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5PcmRlck51bWJlci5wcm9wVHlwZXMgPSB7XG4gIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTnVtYmVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gVGFiUGFuZWwocHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBvcmRlcixcbiAgdG90YWwsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbcmVmdW5kUmVxdWVzdGVkLCBzZXRSZWZ1bmRSZXF1ZXN0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBpZiAodGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc2V0UmVmdW5kUmVxdWVzdGVkKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IHRpY2tldHMuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKTtcbiAgICAgIHNldFRpY2tldHNUb1JlZnVuZChbLi4udGlja2V0c1RvUmVmdW5kLCBzZWxlY3RlZFRpY2tldF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHModGlja2V0KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGNhbmNlbFRpY2tldHNUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0QWxsVGlja2V0cyA9ICgpID0+IHtcbiAgICBjb25zdCByZWZ1bmRhYmxlVGlja2V0cyA9IHRpY2tldHMuZmlsdGVyKFxuICAgICAgKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkgPT09IHRydWVcbiAgICApO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChyZWZ1bmRhYmxlVGlja2V0cyk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyA9ICgpID0+IHtcbiAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQoZmFsc2UpO1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICB0ZXh0Q29sb3I9XCIjMDAwXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICAgIFRhYkluZGljYXRvclByb3BzPXt7XG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcIiMwMDBcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIHRvdGFsPXt0b3RhbH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZFJlcXVlc3RlZCAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAgICA8c3Bhbj57dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X3RpY2tldF9yZWZ1bmRcIil9PC9zcGFuPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZEJ1dHRvbnN9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbFRpY2tldHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zZWxlY3RfYWxsXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRCdXR0b25zfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtjYW5jZWxUaWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zZWxlY3RfY2FuY2VsXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZGVza3RvcC1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIHRvdGFsPXt0b3RhbH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHBhZGRpbmc9ezF9IGl0ZW0gbWQ9ezV9IG9yZGVyPXt7IG1kOiAxIH19PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICBvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZT17KCkgPT4gcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcygpfVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0T3JkZXJUaWNrZXRzLCBnZXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcblxuZnVuY3Rpb24gT3JkZXJzTGlzdChwcm9wcykge1xuICBjb25zdCB7IHN1bW1pdCwgb3JkZXIgfSA9IHByb3BzO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyBwZXJfcGFnZSwgbGFzdF9wYWdlLCBtZW1iZXJPcmRlcnMgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG4gIGNvbnN0IFtpc01vYmlsZVZpZXdhYmxlLCBzZXRNb2JpbGVWaWV3YWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRldGFpbHNSZXF1aXJlZCA9IG9yZGVyLm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgKHRpY2tldCkgPT4gdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiXG4gICk7XG4gIGNvbnN0IGZldGNoVGlja2V0c0J5T3JkZXIgPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBjdXJyZW50X3BhZ2U6IGxhc3RfcGFnZSxcbiAgICAgICAgcGVyUGFnZTogcGVyX3BhZ2VcbiAgICAgIH0pXG4gICAgKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFRpY2tldHNCeU9yZGVyKCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiBwZXJfcGFnZSxcbiAgICAgICAgbmV4dDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAxLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci10aWNrZXQtaW5mby1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17b3JkZXIubnVtYmVyfSBjb3B5IHRydW5jYXRlZCAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogMCB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmxhY2tCdXR0b259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAwLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17Z2V0T3JkZXJUaWNrZXRzKG1lbWJlck9yZGVycywgb3JkZXIuaWQpfVxuICAgICAgICAgIHRvdGFsPXtvcmRlci50aWNrZXRzX3RvdGFsfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufVxuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRGVsZXRlT3V0bGluZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgT3JkZXJOdW1iZXIgZnJvbSBcIi4uL09yZGVyc0xpc3QvT3JkZXJOdW1iZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gUmVmdW5kUmVxdWVzdGVkVGlja2V0KHsgdGlja2V0LCBvblJlbW92ZSB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRUaWNrZXRCb3hDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWQgeHM9ezEyfSBwYWRkaW5nPXsyfSBpdGVtIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCI+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxEZWxldGVPdXRsaW5lSWNvblxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVtb3ZlLWJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxldGVJY29ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25SZW1vdmUodGlja2V0KX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezEyfSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17dGlja2V0Lm51bWJlcn0gdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59XG5cblJlZnVuZFJlcXVlc3RlZFRpY2tldC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25SZW1vdmU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiAsIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBNdWx0aVN0ZXBTbGlkZXIgZnJvbSBcIi4uL011bHRpU3RlcFNsaWRlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgcmVmdW5kQnVsa1RpY2tldHMsIHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgU1RFUF9PTkUsIFNURVBfVFdPIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRSZXF1ZXN0c01vZGFsKHtcbiAgdGlja2V0cyxcbiAgb3BlbixcbiAgb25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHMsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kVGlja2V0cyA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChyZWZ1bmRCdWxrVGlja2V0cyh7IHRpY2tldHMgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9UV08pOyAvLyBzdWNjZXNzLCBhbGwgcmVmdW5kcyB3ZXJlIHJlcXVlc3RlZFxuICAgICAgICBzZXRSZWZ1bmRTdWNjZXNzKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JNc2codChcImVycm9ycy5yZWZ1bmRfdW5zdWNjZXNzZnVsXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRTdGVwT25lID0gKCkgPT4gKFxuICAgIDw+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGV4dH0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NhbmNlbFwiKX1cbiAgICAgIDwvaDI+XG4gICAgICB7ZXJyb3JNc2cgJiYgKFxuICAgICAgICA8RXJyb3JMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZXM9e3N0eWxlcy5yZWZ1bmRFcnJvck1zZ31cbiAgICAgICAgICBjb2xvcj1cIiNGRjAwMDBcIlxuICAgICAgICAgIGRhdGFUZXN0SWQ9XCJmYWlsZWQtcmVmdW5kLW1lc3NhZ2VcIlxuICAgICAgICAgIG1lc3NhZ2U9e2Vycm9yTXNnfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCb3g+XG4gICAgICAgIHt0aWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIG9uUmVtb3ZlPXtvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0c31cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNhbmNlbFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17cmVmdW5kVGlja2V0c31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVHdvID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICA8TXVsdGlTdGVwU2xpZGVyIG9wZW49e29wZW59IG9uQ2xvc2VTbGlkZXI9e2Nsb3NlU2xpZGVyfT5cbiAgICAgICAgPEJveFxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZEhlYWRlcnN9XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfTwvaDM+XG4gICAgICAgIDwvQm94PlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvTXVsdGlTdGVwU2xpZGVyPlxuICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICk7XG59XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEljb25CdXR0b24sIFR5cG9ncmFwaHksIERyYXdlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBDbG9zZSBhcyBDbG9zZUljb24gfSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSaWdodERyYXdlciA9ICh7XG4gIGlkLFxuICB0aXRsZSxcbiAgc3VidGl0bGUsXG4gIGhlYWRlck5vdGUsXG4gIGNoaWxkcmVuLFxuICBvcGVuLFxuICBvbkNsb3NlLFxuICBjbGFzc05hbWVcbn0pID0+IChcbiAgPERyYXdlclxuICAgIGlkPXtpZH1cbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYW5jaG9yPVwicmlnaHRcIlxuICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gJHtjbGFzc05hbWV9YH1cbiAgPlxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICA8L0ljb25CdXR0b24+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7c3VidGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX0+XG4gICAgICAgIHtoZWFkZXJOb3RlfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EcmF3ZXI+XG4pO1xuXG5SaWdodERyYXdlci5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBzdWJ0aXRsZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgaGVhZGVyTm90ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmlnaHREcmF3ZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBzZXRGaWVsZFRvdWNoZWQsIHNldEZpZWxkVmFsdWUgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlO1xuICAgICAgICBzZXRPcHRpb25zKHRtcFZhbHVlID8gW3RtcFZhbHVlLCAuLi5vcHRpb25zXSA6IG9wdGlvbnMpO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHRtcFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBvbklucHV0Q2hhbmdlPXsoZXZlbnQsIG5ld0lucHV0VmFsdWUpID0+IHtcbiAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdJbnB1dFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBmaWx0ZXJPcHRpb25zPXsob3B0aW9ucywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5wdXRWYWx1ZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5vcHRpb25zXTtcbiAgICAgICAgLy8gU3VnZ2VzdCB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmFsdWVcbiAgICAgICAgY29uc3QgaXNFeGlzdGluZyA9IG9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBpbnB1dFZhbHVlID09PSBvcHRpb24udGl0bGVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyID0gKHtcbiAgZGlzY2xhaW1lcixcbiAgZm9ybWlrLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGlzUmVxdWlyZWQgPSB0cnVlXG59KSA9PiB7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5cbmNvbnN0IFRpY2tldERlbGVnYXRpb25GaWVsZHMgPSAoeyBmb3JtaWsgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgaWQ9XCJkZWxlZ2F0ZWRfZmlyc3RfbmFtZVwiXG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5maXJzdF9uYW1lXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZX1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSlcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWVcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGlkPVwiZGVsZWdhdGVkX2xhc3RfbmFtZVwiXG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5sYXN0X25hbWVcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlZF9sYXN0X25hbWV9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2xhc3RfbmFtZSAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9sYXN0X25hbWUgJiZcbiAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9sYXN0X25hbWVcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERlbGVnYXRpb25GaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGVsZWdhdGlvbkZpZWxkcztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzIGZyb20gXCIuLi9UaWNrZXREZWxlZ2F0aW9uRmllbGRzXCI7XG5pbXBvcnQgVGlja2V0T3duZXJGaWVsZHMgZnJvbSBcIi4uL1RpY2tldE93bmVyRmllbGRzXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCB7XG4gIHBhcnNlQW5zd2VycyxcbiAgYnVpbGRWYWxpZGF0aW9uU2NoZW1hXG59IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRGb3JtID0gKHtcbiAgdGlja2V0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgc3VtbWl0LFxuICBjYW5FZGl0LFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHRpY2tldE1hbmFnZXIgPSB0aWNrZXQ/Lm1hbmFnZXI7XG4gIC8qIERJU0FCTEUgREVMRUdBVElPTiBGVE0gKi9cbiAgY29uc3QgYWxsb3dzRGVsZWdhdGlvbiA9IHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSAmJiBmYWxzZTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYWxsb3dzRGVsZWdhdGlvbixcbiAgICAgIHRydWUsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwiZGV0YWlsc0RyYXdlclwiKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBvd25lcj17dGlja2V0Lm93bmVyfVxuICAgICAgICBzdW1taXRJZD17c3VtbWl0LmlkfVxuICAgICAgICBkaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAvPlxuXG4gICAgICB7YWxsb3dzRGVsZWdhdGlvbiAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWJ0aXRsZTJcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxlZ2F0ZWRUb31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZGVsZWdhdGVkX3RvXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7ZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxoNiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9oNj5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAvPlxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0T3duZXJGaWVsZHM7XG4iLCJleHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIlxufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBEcmF3ZXIsIEljb25CdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgQ2xvc2UgYXMgQ2xvc2VJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb24sXG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgT3JkZXJOdW1iZXIgZnJvbSBcIi4uL09yZGVyc0xpc3QvT3JkZXJOdW1iZXJcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQgeyBnZXRFeHRyYVF1ZXN0aW9ucywgZ2V0VGlja2V0LCBzYXZlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuLi9DdXN0b21EaWFsb2dcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfSxcbiAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICBjdXJyZW50VGlja2V0OiB0aWNrZXRcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkICYmIG93bmVySWQpIHtcbiAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPERyYXdlclxuICAgICAgICBpZD1cImRldGFpbHNEcmF3ZXJcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldERldGFpbENvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAgICB7dGlja2V0Py50aWNrZXRfdHlwZT8ubmFtZX1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm93bmVyPy5lbWFpbH1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnFyQ29kZX0+XG4gICAgICAgICAgICAgICAgPFFSQ29kZVxuICAgICAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiBcImF1dG9cIiwgbWF4V2lkdGg6IFwiMTAwJVwiLCB3aWR0aDogXCIxMDAlXCIgfX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjU2IDI1NlwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17c3R5bGVzLnN0YXR1c30+e3QoXCJ0aWNrZXRfZGV0YWlsLnN0YXR1c1wiKX08L3A+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5xck5vdGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucXJfbm90ZVwiKX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHshc3VtbWl0Py5pc192aXJ0dWFsICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8RG93bmxvYWRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kb3dubG9hZFwiKX1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMuc2VuZEJ0bn0+XG4gICAgICAgICAgICAgICAgPEVtYWlsSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck51bWJlcn0+XG4gICAgICAgICAgICA8T3JkZXJOdW1iZXJcbiAgICAgICAgICAgICAgbnVtYmVyPXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgICAgIGNvcHlcbiAgICAgICAgICAgICAgdHJ1bmNhdGVkXG4gICAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICAgIHdpZHRoPXsxNTB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0JveD5cblxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2luZm9ybWF0aW9uXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICB7dGlja2V0ICYmIChcbiAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZX1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0RyYXdlcj5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFzYXZlTWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZVNhdmVNZXNzYWdlfVxuICAgICAgICB0aXRsZT17c2F2ZU1lc3NhZ2U/LnRpdGxlfVxuICAgICAgICBkZXNjcmlwdGlvbj17c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgUmVhc3NpZ25Gb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IFwiXCIsXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcoXCJFbnRlciBhdHRlbmRlZSBlbWFpbFwiKVxuICAgICAgICAuZW1haWwoXCJNdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzc1wiKVxuICAgICAgICAucmVxdWlyZWQoXCJOZXcgYXR0ZW5kZWUgZW1haWwgaXMgcmVxdWlyZWRcIiksXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiB5dXAuc3RyaW5nKFwiRW50ZXIgdGV4dFwiKVxuICAgIH0pLFxuICAgIG9uU3VibWl0XG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPVwibmV3X2F0dGVuZGVlX2VtYWlsXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5uZXdfYXR0ZW5kZWVfZW1haWx9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbClcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiYgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgfVxuICAgICAgICByZXF1aXJlZFxuICAgICAgLz5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24ucGVyc29uYWxfbWVzc2FnZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucGVyc29uYWxfbWVzc2FnZX1cbiAgICAgICAgbXVsdGlsaW5lXG4gICAgICAgIG1pblJvd3M9ezR9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiYgZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Rm9ybUZvb3RlclxuICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuUmVhc3NpZ25Gb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduRm9ybTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBnZXRFeHRyYVF1ZXN0aW9ucyxcbiAgZ2V0VGlja2V0LFxuICByZWFzc2lnblRpY2tldCxcbiAgc2F2ZUV4dHJhUXVlc3Rpb25zXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmVhc3NpZ25Gb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvUmVhc3NpZ25Gb3JtXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5cbmltcG9ydCBBc3NpZ25FUUZvcm0gZnJvbSBcIi4uL0Fzc2lnbkVRRm9ybVwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRSZWFzc2lnbiA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0SWQsXG4gIG9yZGVySWQsXG4gIG93bmVySWQsXG4gIG9wZW4sXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFt0aWNrZXRSZWFzc2lnbmVkLCBzZXRUaWNrZXRSZWFzc2lnbmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgeyBjdXJyZW50VGlja2V0OiB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCAmJiBvd25lcklkKSB7XG4gICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZF0pO1xuXG4gIGNvbnN0IG9uUmVhc3NpZ24gPSAodmFsKSA9PiB7XG4gICAgY29uc3QgeyBuZXdfYXR0ZW5kZWVfZW1haWwsIHBlcnNvbmFsX21lc3NhZ2UgfSA9IHZhbDtcbiAgICByZXR1cm4gZGlzcGF0Y2goXG4gICAgICByZWFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgbmV3X2F0dGVuZGVlX2VtYWlsLCBwZXJzb25hbF9tZXNzYWdlKVxuICAgICkudGhlbigoKSA9PiB7XG4gICAgICBzZXRUaWNrZXRSZWFzc2lnbmVkKHRydWUpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VFUUZvcm0gPSAoKSA9PiB7XG4gICAgc2V0VGlja2V0UmVhc3NpZ25lZChmYWxzZSk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRUaWNrZXRSZWFzc2lnbmVkKGZhbHNlKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2aW5nX2Vycm9yXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCBnZXRMYWJlbHMgPSAoKSA9PiB7XG4gICAgaWYgKHRpY2tldFJlYXNzaWduZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0KFwidGlja2V0X3JlYXNzaWduLnJlYXNzaWduX3RpY2tldFwiKSxcbiAgICAgICAgc3VidGl0bGU6IGAke3QoXCJ0aWNrZXRfcmVhc3NpZ24ucmVhc3NpZ25lZF90b1wiKX0gJHtcbiAgICAgICAgICB0aWNrZXQ/Lm93bmVyPy5lbWFpbFxuICAgICAgICB9YCxcbiAgICAgICAgaGVhZGVyTm90ZTogdChcInRpY2tldF9yZWFzc2lnbi5jb21wbGV0ZV9pbmZvXCIpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogdChcInRpY2tldF9yZWFzc2lnbi5yZWFzc2lnbl90aWNrZXRcIiksXG4gICAgICBzdWJ0aXRsZTogKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0KFwidGlja2V0X3JlYXNzaWduLmFzc2lnbmVkX3RvXCIpfVxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIHt0aWNrZXQ/Lm93bmVyPy5lbWFpbH1cbiAgICAgICAgPC8+XG4gICAgICApLFxuICAgICAgaGVhZGVyTm90ZTogdChcInRpY2tldF9yZWFzc2lnbi5lbnRlcl9lbWFpbF9ub3RlXCIpXG4gICAgfTtcbiAgfTtcblxuICBjb25zdCB7IHRpdGxlLCBzdWJ0aXRsZSwgaGVhZGVyTm90ZSB9ID0gZ2V0TGFiZWxzKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFJpZ2h0RHJhd2VyXG4gICAgICAgIGlkPVwicmVhc3NpZ25EcmF3ZXJcIlxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIHN1YnRpdGxlPXtzdWJ0aXRsZX1cbiAgICAgICAgaGVhZGVyTm90ZT17aGVhZGVyTm90ZX1cbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0UmVhc3NpZ25Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGlja2V0Py50eXBlPy5uYW1lfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICB7dGlja2V0ICYmICF0aWNrZXRSZWFzc2lnbmVkICYmIChcbiAgICAgICAgICAgIDxSZWFzc2lnbkZvcm1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25SZWFzc2lnbn1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dGlja2V0ICYmIHRpY2tldFJlYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEFzc2lnbkVRRm9ybVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgdGl0bGU9e3NhdmVNZXNzYWdlPy50aXRsZX1cbiAgICAgICAgZGVzY3JpcHRpb249e3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXRSZWFzc2lnbi5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRSZWFzc2lnbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENvbnRhaW5lciwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCByZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LmZpbmQoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiXG4gICk7XG4gIGNvbnN0IHsgaXNJbmNvbXBsZXRlLCBpc1VuYXNzaWduZWQsIGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0U3RhdHVzQ29udGFpbmVyfT5cbiAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7cmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgcmVmdW5kIHJlcXVlc3RlZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblJlZnVuZFJlcXVlc3RlZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3JlZnVuZF9yZXF1ZXN0ZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0luY29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgaW5jb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkluY29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19pbmNvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNVbmFzc2lnbmVkICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHVuYXNzaWduZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25Db21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY2FuY2VsbGVkXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25DYW5jZWxsZWR9YH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY2FuY2VsbGVkXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG5UaWNrZXRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICByZWZ1bmRSZXF1ZXN0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0U3RhdHVzO1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8vIFNtb290aCBzY3JvbGxpbmcgZnVuY3Rpb24gdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG5mdW5jdGlvbiBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHRhcmdldFNjcm9sbFRvcCwgZHVyYXRpb24pIHtcbiAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICBjb25zdCBkaXN0YW5jZSA9IHRhcmdldFNjcm9sbFRvcCAtIHN0YXJ0U2Nyb2xsVG9wO1xuICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcblxuICBmdW5jdGlvbiBhbmltYXRpb25TdGVwKHRpbWVzdGFtcCkge1xuICAgIGlmICghc3RhcnRUaW1lKSBzdGFydFRpbWUgPSB0aW1lc3RhbXA7XG4gICAgY29uc3QgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHN0YXJ0VGltZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihlbGFwc2VkIC8gZHVyYXRpb24sIDEpO1xuICAgIGNvbnN0IGVhc2VJbk91dFF1YWQgPVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIHByb2dyZXNzIDwgMC41ID8gMiAqIHByb2dyZXNzICoqIDIgOiAxIC0gKC0yICogcHJvZ3Jlc3MgKyAyKSAqKiAyIC8gMjtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCArIGRpc3RhbmNlICogZWFzZUluT3V0UXVhZDtcblxuICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG59XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrLCBjb250YWluZXJJZCkgPT4ge1xuICBjb25zdCB7IGVycm9ycywgaXNWYWxpZCwgaXNTdWJtaXR0aW5nIH0gPSBmb3JtaWs7XG4gIGNvbnN0IGVycm9yQXJyYXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xuICBjb25zdCBlcnJvckNvdW50ID0gZXJyb3JBcnJheS5sZW5ndGg7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckNvdW50ID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBzb3J0IGVsZW1lbnRzIGJ5IHBvc2l0aW9uXG4gICAgY29uc3QgZWxlbWVudHNTb3J0ZWQgPSBlcnJvckFycmF5XG4gICAgICAubWFwKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgaW5wdXRbbmFtZT0nJHtlcnJvcn0nXWApO1xuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIHJldHVybiB7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfTtcbiAgICAgIH0pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b3AgLSBiLnRvcCk7XG5cbiAgICBpZiAoZWxlbWVudHNTb3J0ZWQubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcklkKVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuTXVpRHJhd2VyLXBhcGVyXCIpO1xuICAgIGNvbnN0IHRhcmdldCA9IGVsZW1lbnRzU29ydGVkWzBdO1xuXG4gICAgaWYgKGNvbnRhaW5lci5jb250YWlucyh0YXJnZXQuZWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyXG4gICAgICBjb25zdCBlbGVtT2ZmZXN0ID0gMTAwO1xuICAgICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPVxuICAgICAgICB0YXJnZXQudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBjb250YWluZXIuc2Nyb2xsVG9wIC0gZWxlbU9mZmVzdDtcblxuICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgcG9zaXRpb25cbiAgICAgIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgc2Nyb2xsVG9wLCBhbmltYXRpb25EdXJhdGlvbik7IC8vIDUwMG1zIGR1cmF0aW9uXG4gICAgfVxuICB9LCBbaXNTdWJtaXR0aW5nXSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VTY3JvbGxUb0Vycm9yO1xuIiwiaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIkNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIkluY29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJDYW5jZWxsZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiVW5hc3NpZ25lZFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVGlja2V0RGV0YWlscyA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3QgZ2V0U3RhdHVzID0gKCkgPT4ge1xuICAgIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG4gICAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuICAgIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbiAgICByZXR1cm4gdGlja2V0Lm93bmVyLnN0YXR1cztcbiAgfTtcblxuICBpZiAoIXRpY2tldCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cygpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzICE9PSBTVEFUVVNfQ0FOQ0VMTEVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KTtcbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgICh0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICAgIHRpY2tldD8ucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlKSAmJlxuICAgIHN0YXR1cyAhPT0gU1RBVFVTX1VOQVNTSUdORUQgJiZcbiAgICAhdGlja2V0Lm93bmVyPy5tYW5hZ2VyPy5pZCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG4gIGNvbnN0IGlzQ29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19DT01QTEVURTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNJbmNvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfSU5DT01QTEVURTtcbiAgY29uc3QgY2FuUmVhc3NpZ24gPSAhaXNVbmFzc2lnbmVkICYmIHRpY2tldC50aWNrZXRfdHlwZS5hbGxvd3NfdG9fcmVhc3NpZ24gJiYgKCF0aWNrZXQucHJvbW9fY29kZSB8fCB0aWNrZXQucHJvbW9fY29kZS5hbGxvd3NfdG9fcmVhc3NpZ24pO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGUsXG4gICAgY2FuUmVhc3NpZ25cbiAgfTtcbn07XG4iLCJpbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgaW5pdFJlYWN0STE4bmV4dCB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgTGFuZ3VhZ2VEZXRlY3RvciBmcm9tIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIjtcbmltcG9ydCBlbiBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzb25cIjtcbmltcG9ydCBlcyBmcm9tIFwiLi9sb2NhbGVzL2VzLmpzb25cIjtcblxuLy8gaW1wb3J0IEJhY2tlbmQgZnJvbSAnaTE4bmV4dC1odHRwLWJhY2tlbmQnO1xuLy8gZG9uJ3Qgd2FudCB0byB1c2UgdGhpcz9cbi8vIGhhdmUgYSBsb29rIGF0IHRoZSBRdWljayBzdGFydCBndWlkZVxuLy8gZm9yIHBhc3NpbmcgaW4gbG5nIGFuZCB0cmFuc2xhdGlvbnMgb24gaW5pdFxuXG5pMThuXG4gIC8vIGxvYWQgdHJhbnNsYXRpb24gdXNpbmcgaHR0cCAtPiBzZWUgL3B1YmxpYy9sb2NhbGVzIChpLmUuIGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L3JlYWN0LWkxOG5leHQvdHJlZS9tYXN0ZXIvZXhhbXBsZS9yZWFjdC9wdWJsaWMvbG9jYWxlcylcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1odHRwLWJhY2tlbmRcbiAgLy8gd2FudCB5b3VyIHRyYW5zbGF0aW9ucyB0byBiZSBsb2FkZWQgZnJvbSBhIHByb2Zlc3Npb25hbCBDRE4/ID0+IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2NpemUvcmVhY3QtdHV0b3JpYWwjc3RlcC0yLS0tdXNlLXRoZS1sb2NpemUtY2RuXG4gIC8vIC51c2UoQmFja2VuZClcbiAgLy8gZGV0ZWN0IHVzZXIgbGFuZ3VhZ2VcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlRGV0ZWN0b3JcbiAgLnVzZShMYW5ndWFnZURldGVjdG9yKVxuICAvLyBwYXNzIHRoZSBpMThuIGluc3RhbmNlIHRvIHJlYWN0LWkxOG5leHQuXG4gIC51c2UoaW5pdFJlYWN0STE4bmV4dClcbiAgLy8gaW5pdCBpMThuZXh0XG4gIC8vIGZvciBhbGwgb3B0aW9ucyByZWFkOiBodHRwczovL3d3dy5pMThuZXh0LmNvbS9vdmVydmlldy9jb25maWd1cmF0aW9uLW9wdGlvbnNcbiAgLmluaXQoe1xuICAgIGZhbGxiYWNrTG5nOiBcImVuXCIsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIHJlc291cmNlczoge1xuICAgICAgZW46IHsgdHJhbnNsYXRpb246IGVuIH0sXG4gICAgICBlczogeyB0cmFuc2xhdGlvbjogZXMgfVxuICAgIH0sXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICAgIH1cbiAgfSk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1RBVEUsXG4gIFNFVF9VU0VSLFxuICBHRVRfVVNFUl9PUkRFUlMsXG4gIEdFVF9USUNLRVRTX0JZX09SREVSLFxuICBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVELFxuICBSRUNFSVZFX1RJQ0tFVCxcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMsXG4gIFVQREFURV9USUNLRVQsXG4gIEFTU0lHTl9USUNLRVRcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgZXh0cmFRdWVzdGlvbnM6IFtdLFxuICBjdXJyZW50VGlja2V0OiBudWxsLFxuICBlcnJvcnM6IHt9LFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgaXNPcmRlckxvYWRpbmc6IGZhbHNlLFxuICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICBvcmRlcnNfbGFzdF9wYWdlOiAxLFxuICBvcmRlcnNfcGVyX3BhZ2U6IDUsXG4gIG9yZGVyc190b3RhbDogMCxcbiAgdGlja2V0X2N1cnJlbnRfcGFnZTogMSxcbiAgdGlja2V0X2xhc3RfcGFnZTogMSxcbiAgdGlja2V0X3Blcl9wYWdlOiA1LFxuICB0aWNrZXRfdG90YWw6IDBcbn07XG5cbmNvbnN0IFdpZGdldFJlZHVjZXIgPSAoc3RhdGUgPSBERUZBVUxUX1NUQVRFLCB7IHR5cGUsIHBheWxvYWQgfSA9IHt9KSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgTE9HT1VUX1VTRVI6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBHRVRfVVNFUl9PUkRFUlM6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLm1lbWJlck9yZGVycywgLi4uZGF0YV0sXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyX2lkKTtcblxuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDpcbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHRpY2tldC5pZCA9PT0gdGlja2V0RGF0YS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2tldERhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aWNrZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzIH07XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFJlZHVjZXI7XG4iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb25maWd1cmVTdG9yZSB9IGZyb20gXCJAcmVkdXhqcy90b29sa2l0XCI7XG5pbXBvcnQge1xuICBwZXJzaXN0U3RvcmUsXG4gIHBlcnNpc3RSZWR1Y2VyLFxuICBGTFVTSCxcbiAgUkVIWURSQVRFLFxuICBQQVVTRSxcbiAgUEVSU0lTVCxcbiAgUFVSR0UsXG4gIFJFR0lTVEVSXG59IGZyb20gXCJyZWR1eC1wZXJzaXN0XCI7XG5pbXBvcnQgc3RvcmFnZSBmcm9tIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiO1xuaW1wb3J0IHsgY29tYmluZVJlZHVjZXJzIH0gZnJvbSBcInJlZHV4XCI7XG5pbXBvcnQgV2lkZ2V0UmVkdWNlciBmcm9tIFwiLi9yZWR1Y2VyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRTdG9yZSA9ICh7XG4gIGNsaWVudElkLFxuICBsb2dpblVybCxcbiAgc3VtbWl0LFxuICBhcGlCYXNlVXJsLFxuICB1cGRhdGVQcm9maWxlXG59KSA9PiB7XG4gIC8vIHRvIGFkZCBvdGhlciByZWR1Y2VycyBsYXRlclxuICBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gICAgd2lkZ2V0U3RhdGU6IFdpZGdldFJlZHVjZXJcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBjb25maWd1cmVTdG9yZSh7XG4gICAgcmVkdWNlcjogcGVyc2lzdFJlZHVjZXIoXG4gICAgICB7XG4gICAgICAgIGtleTogYHJvb3RfbXlfb3JkZXJzX3RpY2tldHNfJHtjbGllbnRJZH1gLFxuICAgICAgICBzdG9yYWdlXG4gICAgICB9LFxuICAgICAgcmVkdWNlcnNcbiAgICApLFxuICAgIG1pZGRsZXdhcmU6IChnZXREZWZhdWx0TWlkZGxld2FyZSkgPT5cbiAgICAgIGdldERlZmF1bHRNaWRkbGV3YXJlKHtcbiAgICAgICAgdGh1bms6IHtcbiAgICAgICAgICBleHRyYUFyZ3VtZW50OiB7XG4gICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICBzdW1taXQsXG4gICAgICAgICAgICBsb2dpblVybCxcbiAgICAgICAgICAgIHVwZGF0ZVByb2ZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGltbXV0YWJsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgc2VyaWFsaXphYmxlQ2hlY2s6IHtcbiAgICAgICAgICBpZ25vcmVkQWN0aW9uczogW0ZMVVNILCBSRUhZRFJBVEUsIFBBVVNFLCBQRVJTSVNULCBQVVJHRSwgUkVHSVNURVJdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBzdG9yZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VJbml0U3RvcmUgPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRTdG9yZShjb25maWcpLCBbXSk7XG4gIGNvbnN0IHBlcnNpc3RvciA9IHVzZU1lbW8oKCkgPT4gcGVyc2lzdFN0b3JlKHN0b3JlKSwgW3N0b3JlXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yZSxcbiAgICBwZXJzaXN0b3JcbiAgfTtcbn07XG4iLCJpbXBvcnQge1xuICBpbml0TG9nT3V0LFxuICBnZXRBY2Nlc3NUb2tlblxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSBcIkBzZW50cnkvcmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc1Rva2VuU2FmZWx5ID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBY2Nlc3NUb2tlbigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZTo6IGdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgaW5pdExvZ091dCgpO1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICB9XG59O1xuIiwiZXhwb3J0IGNvbnN0IExBU1RfSE9VUl9PRl8yNF9IT1VSID0gMjM7XG5leHBvcnQgY29uc3QgTEFTVF9NSU5VVEVfT0ZfSE9VUiA9IDU5O1xuZXhwb3J0IGNvbnN0IE9ORV9QQUdFX05FWFQgPSAxO1xuZXhwb3J0IGNvbnN0IE1JTExJU0VDX1RPX1NFQyA9IDEwMDA7XG5leHBvcnQgY29uc3QgT05FX0RBWSA9IDE7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JVEVNU19QRVJfUEFHRSA9IDU7XG5leHBvcnQgY29uc3QgRklSU1RfUEFHRSA9IDE7XG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UID0gNTtcbmV4cG9ydCBjb25zdCBTVEVQX09ORSA9IDE7XG5leHBvcnQgY29uc3QgU1RFUF9UV08gPSAyO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJTVEFUVVNfQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiU1RBVFVTX0lOQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUEVORElORyA9IFwiU1RBVFVTX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJTVEFUVVNfQ0FOQ0VMTEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0VSUk9SID0gXCJTVEFUVVNfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUFJPQ0VTU0lORyA9IFwiU1RBVFVTX1BST0NFU1NJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiU1RBVFVTX1VOQVNTSUdORURcIjtcblxuZXhwb3J0IGNvbnN0IEpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyA9IDEwMDAwO1xuXG5leHBvcnQgY29uc3QgT05FX0lURU0gPSAxO1xuZXhwb3J0IGNvbnN0IFRXT19JVEVNID0gMjtcbmV4cG9ydCBjb25zdCBGSVZFX0lURU0gPSA1O1xuZXhwb3J0IGNvbnN0IFNJWF9JVEVNID0gNjtcblxuZXhwb3J0IGNvbnN0IFBST01JU0VfQkFUQ0hfTElNSVQgPSAxMDtcbmV4cG9ydCBjb25zdCBGSUZUWV9QRVJfUEFHRSA9IDUwO1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgTEFTVF9IT1VSX09GXzI0X0hPVVIsXG4gIExBU1RfTUlOVVRFX09GX0hPVVIsXG4gIE1JTExJU0VDX1RPX1NFQ1xufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKHZhbHVlLCB7IGxvY2FsZSA9IFwiZW4tVVNcIiwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGN1cnJlbmN5OiBcIlVTRFwiLFxuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgfTtcblxuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zXG4gIH0pO1xuXG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWREYXRlID0gKGRhdGV0aW1lLCB0aW1lWm9uZSkgPT4ge1xuICBpZiAodGltZVpvbmUpXG4gICAgcmV0dXJuIG1vbWVudFxuICAgICAgLnR6KGRhdGV0aW1lICogTUlMTElTRUNfVE9fU0VDLCB0aW1lWm9uZSlcbiAgICAgIC5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xuXG4gIHJldHVybiBtb21lbnQudW5peChkYXRldGltZSkuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVPcmRlclRvdGFscyA9ICh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSkgPT4ge1xuICBpZiAoIW9yZGVyIHx8ICFzdW1taXQgfHwgIXRpY2tldHMpIHJldHVybiB7fTtcblxuICBjb25zdCB7IHJlZnVuZGVkX2Ftb3VudCwgZGlzY291bnRfYW1vdW50LCB0YXhlc19hbW91bnQsIGFtb3VudCB9ID0gb3JkZXI7XG4gIGNvbnN0IHsgdGlja2V0X3R5cGVzIH0gPSBzdW1taXQ7XG5cbiAgY29uc3QgdGlja2V0U3VtbWFyeSA9IFtdO1xuICBsZXQgcHVyY2hhc2VUaWNrZXRUb3RhbCA9IDA7XG5cbiAgY29uc3QgY3VycmVuY3lPYmplY3QgPSB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9O1xuXG4gIE9iamVjdC5rZXlzKG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSkubWFwKCh0aWNrZXQpID0+IHtcbiAgICBjb25zdCB0aWNrZXRUeXBlID0gdGlja2V0X3R5cGVzPy5maW5kKCh0dCkgPT4gdHQubmFtZSA9PT0gdGlja2V0KTtcbiAgICBpZiAoIXRpY2tldFR5cGUpIHJldHVybiBudWxsO1xuICAgIHRpY2tldFN1bW1hcnkucHVzaCh7XG4gICAgICB0aWNrZXRfdHlwZV9pZDogdGlja2V0VHlwZS5pZCxcbiAgICAgIHRpY2tldF90eXBlOiB0aWNrZXRUeXBlLFxuICAgICAgbmFtZTogdGlja2V0LFxuICAgICAgcXR5OiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XVxuICAgIH0pO1xuICAgIHB1cmNoYXNlVGlja2V0VG90YWwgKz1cbiAgICAgIHRpY2tldFR5cGUuY29zdCAqIG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdO1xuXG4gICAgcmV0dXJuIHRpY2tldFN1bW1hcnk7XG4gIH0pO1xuXG4gIGNvbnN0IHB1cmNoYXNlVG90YWwgPSBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRpY2tldFRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgY29uc3QgZGlzY291bnRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KGRpc2NvdW50X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCByZWZ1bmRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJlZnVuZGVkX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCB0YXhlc1RvdGFsID0gZm9ybWF0Q3VycmVuY3kodGF4ZXNfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IGFtb3VudFRvdGFsID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZGVyLCBcImFtb3VudFwiKVxuICAgID8gZm9ybWF0Q3VycmVuY3koYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICA6IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICByZXR1cm4ge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgdGF4ZXNUb3RhbCxcbiAgICBhbW91bnRUb3RhbCxcbiAgICB0aWNrZXRTdW1tYXJ5XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJUaWNrZXRzID0gKG1lbWJlck9yZGVycywgb3JkZXJJZCkgPT4ge1xuICBjb25zdCBvcmRlcnMgPSBtZW1iZXJPcmRlcnMuZmlsdGVyKChvKSA9PiBvLmlkID09PSBvcmRlcklkKTtcbiAgcmV0dXJuIG9yZGVyc1swXT8ubWVtYmVyVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgPSAodHMpID0+IHtcbiAgY29uc3QgbG93ZXIgPSB0cy5zZXRIb3VycygwLCAwLCAwLCAwKSAvIE1JTExJU0VDX1RPX1NFQztcbiAgY29uc3QgdXBwZXIgPVxuICAgIHRzLnNldEhvdXJzKExBU1RfSE9VUl9PRl8yNF9IT1VSLCBMQVNUX01JTlVURV9PRl9IT1VSLCAwLCAwKSAvXG4gICAgTUlMTElTRUNfVE9fU0VDO1xuICByZXR1cm4ge1xuICAgIGxvd2VyLFxuICAgIHVwcGVyXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEN1cnJlbnRUaW1lID0gKCkgPT5cbiAgTWF0aC5yb3VuZCgrbmV3IERhdGUoKSAvIE1JTExJU0VDX1RPX1NFQyk7XG5cbmV4cG9ydCBjb25zdCBnZXROb3cgPSAoKSA9PiAoZGlzcGF0Y2gsIGdldFN0YXRlKSA9PiB7XG4gIGNvbnN0IHsgdGltZXJTdGF0ZSB9ID0gZ2V0U3RhdGUoKTtcbiAgcmV0dXJuIHRpbWVyU3RhdGU/Lm5vd1V0YyA9PSBudWxsID8gZGVmYXVsdEN1cnJlbnRUaW1lKCkgOiB0aW1lclN0YXRlPy5ub3dVdGM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlTm93ID0gKCkgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgcmV0dXJuIGRpc3BhdGNoKGdldE5vdygpKTtcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgT05FX0RBWSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi5cIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0UGFzdCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcmVhc3NpZ25fZGF0ZSA9XG4gICAgc3VtbWl0Py5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICAgIDogc3VtbWl0LmVuZF9kYXRlO1xuXG4gIHJldHVybiBub3cgPiByZWFzc2lnbl9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0U3RhcnRlZCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5zdGFydF9kYXRlIDwgbm93O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdERheXNEaWZmID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHN0YXJ0RGF5ID0gbW9tZW50KHN1bW1pdC5zdGFydF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGVuZERheSA9IG1vbWVudChzdW1taXQuZW5kX2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5cyA9IGVuZERheT8uZGlmZihzdGFydERheSwgXCJkYXlzXCIpO1xuICByZXR1cm4ge1xuICAgIHN0YXJ0RGF5LFxuICAgIGVuZERheSxcbiAgICBkYXlzXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCB7IHN0YXJ0RGF5LCBlbmREYXksIGRheXMgfSA9IGdldFN1bW1pdERheXNEaWZmKHN1bW1pdCk7XG4gIGlmICghc3RhcnREYXkgfHwgIWVuZERheSkgcmV0dXJuIG51bGw7XG4gIGxldCBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgbGV0IGZvcm1hdEVuZERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgaWYgKHN0YXJ0RGF5LnllYXIoKSA9PT0gZW5kRGF5LnllYXIoKSkgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIEREXCI7XG4gIGlmIChzdGFydERheS5tb250aCgpID09PSBlbmREYXkubW9udGgoKSkgZm9ybWF0RW5kRGF0ZSA9IFwiREQsIFlZWVlcIjtcblxuICBjb25zdCBzdGFydERhdGUgPSBzdGFydERheS5mb3JtYXQoZm9ybWF0U3RhcnREYXRlKTtcbiAgY29uc3QgZW5kRGF0ZSA9IGVuZERheS5mb3JtYXQoZm9ybWF0RW5kRGF0ZSk7XG5cbiAgaWYgKGRheXMgPiBPTkVfREFZKSByZXR1cm4gYCR7c3RhcnREYXRlfSAtICR7ZW5kRGF0ZX1gO1xuXG4gIHJldHVybiBzdGFydERhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0TG9jYXRpb24gPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBsb2NhdGlvbiA9IHN1bW1pdC5sb2NhdGlvbnM/LmZpbmQoXG4gICAgKGwpID0+IGwuY2xhc3NfbmFtZSA9PT0gXCJTdW1taXRWZW51ZVwiICYmIGwuaXNfbWFpbiA9PT0gdHJ1ZVxuICApO1xuXG4gIGlmICghbG9jYXRpb24pIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBgJHtsb2NhdGlvbi5jaXR5fSwgJHtsb2NhdGlvbi5jb3VudHJ5fWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgOiBzdW1taXQuZW5kX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlU3VtbWl0RGV0YWlscyA9ICh7IHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuXG4gIGlmICghc3VtbWl0KSByZXR1cm4ge307XG5cbiAgY29uc3QgbG9jYXRpb24gPSBnZXRTdW1taXRMb2NhdGlvbihzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkUmVhc3NpZ25EYXRlID0gbW9tZW50LnR6KFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSA9IGdldFN1bW1pdERheXNEaWZmKFxuICAgIG5vdyxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8ubmFtZVxuICApO1xuXG4gIGNvbnN0IGlzUGFzdCA9IGNoZWNrU3VtbWl0UGFzdChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzU3RhcnRlZCA9IGNoZWNrU3VtbWl0U3RhcnRlZChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogc3VtbWl0Py5uYW1lLFxuICAgIG5vdyxcbiAgICBsb2NhdGlvbixcbiAgICBmb3JtYXR0ZWREYXRlLFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUsXG4gICAgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSxcbiAgICBpc1Bhc3QsXG4gICAgaXNTdGFydGVkLFxuICAgIGlzUmVhc3NpZ25hYmxlXG4gIH07XG59O1xuIiwiaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBpMThuIGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQge1xuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfVU5BU1NJR05FRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiB0aWNrZXQ/LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCIpO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgXCJGaWVsZCBtdXN0IGJlIGNoZWNrZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIG1hbmFnZXIsXG4gIGluY2x1ZGVEZWxlZ2F0aW9uLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBpbmNsdWRlRGlzY2xhaW1lcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbDtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdIHx8IG93bmVyLmZpcnN0X25hbWU7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55O1xuICB9XG5cbiAgaWYgKGluY2x1ZGVEaXNjbGFpbWVyKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZDtcbiAgfVxuXG4gIGlmIChpbmNsdWRlRGVsZWdhdGlvbikge1xuICAgIGluaXRpYWxWYWx1ZXMuZGVsZWdhdGVkX2ZpcnN0X25hbWUgPVxuICAgICAgYW5zd2Vycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSB8fCBtYW5hZ2VyPy5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlcy5kZWxlZ2F0ZWRfbGFzdF9uYW1lID1cbiAgICAgIGFuc3dlcnMuZGVsZWdhdGVkX2xhc3RfbmFtZSB8fCBtYW5hZ2VyPy5sYXN0X25hbWUgfHwgXCJcIjtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBjb25zdCBhbnN3ZXIgPSBhbnN3ZXJzW3F1ZXN0aW9uU2x1Z107XG4gICAgaW5pdGlhbFZhbHVlc1txdWVzdGlvblNsdWddID0gYW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocSk7XG5cbiAgICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKFxuICAgICAgICAgIHJ1bGUuc3ViX3F1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgcnVsZS5zdWJfcXVlc3Rpb24uaWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3ViQW5zd2VyID0gYW5zd2Vyc1tzdWJRdWVzdGlvblNsdWddO1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKGFuc3dlciwgcnVsZS5hbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgICBpZiAoIW9ubHlSZWxldmFudCB8fCBtYXRjaCkge1xuICAgICAgICAgIGluaXRpYWxWYWx1ZXNbc3ViUXVlc3Rpb25TbHVnXSA9XG4gICAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgYWxsb3dzRGVsZWdhdGlvbixcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGVtYWlsXCIpXG4gICAgICAuZW1haWwoXCJFbWFpbCBpbnZhbGlkXCIpXG4gICAgICAucmVxdWlyZWQoXCJFbWFpbCBpcyByZXF1aXJlZFwiKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGZpcnN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkZpcnN0IG5hbWUgaXMgcmVxdWlyZWRcIik7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGxhc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiTGFzdCBuYW1lIGlzIHJlcXVpcmVkXCIpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9IHl1cC5sYXp5KCh2YWx1ZSkgPT5cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHl1cFxuICAgICAgICAgICAgLm9iamVjdCgpXG4gICAgICAgICAgICAucmVxdWlyZWQoXCJDb21wYW55IGlzIHJlcXVpcmVkXCIpXG4gICAgICAgICAgICAudHlwZUVycm9yKFwiUmVxdWlyZWQgZmllbGRcIilcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoXCJDb21wYW55IGlzIHJlcXVpcmVkXCIpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChkaXNjbGFpbWVyTWFuZGF0b3J5KSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPSB5dXBcbiAgICAgIC5ib29sKClcbiAgICAgIC5vbmVPZihbdHJ1ZV0sIFwiRmllbGQgbXVzdCBiZSBjaGVja2VkXCIpO1xuICB9XG5cbiAgaWYgKGFsbG93c0RlbGVnYXRpb24pIHtcbiAgICBzY2hlbWEuZGVsZWdhdGVkX2ZpcnN0X25hbWUgPSB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBmaXJzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJGaXJzdCBuYW1lIGlzIHJlcXVpcmVkXCIpO1xuXG4gICAgc2NoZW1hLmRlbGVnYXRlZF9sYXN0X25hbWUgPSB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBsYXN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkxhc3QgbmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBzY2hlbWFbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKHEudHlwZSwgcS5uYW1lLCBxLm1hbmRhdG9yeSk7XG5cbiAgICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb24gPSBydWxlLnN1Yl9xdWVzdGlvbjtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1YlF1ZXN0aW9uLm5hbWUsIHN1YlF1ZXN0aW9uLmlkKTtcbiAgICAgICAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICAgICAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKVxuICAgICAgICAgIC5udWxsYWJsZSgpXG4gICAgICAgICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICAgICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2gocXVlc3Rpb25BbnMsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG4gICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGVuOiAoc2NoKSA9PiBzY2gucmVxdWlyZWQoXCJUaGlzIHF1ZXN0aW9uIGlzIHJlcXVpcmVkXCIpXG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19Sb2ltUlwiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19vb0kwVlwiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19pbV9qaFwiO1xudmFyIF80ID0gXCJjb250YWluZXJfX19OM1k0WFwiO1xudmFyIF81ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fSlcybE9cIjtcbnZhciBfNiA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVjlnSENcIjtcbnZhciBfNyA9IFwiZmlsdGVyQ29udGFpbmVyX19fckdwWVZcIjtcbnZhciBfOCA9IFwiZmlsdGVyRGF0ZUxhYmVsX19faWZENHBcIjtcbnZhciBfOSA9IFwiZmlsdGVySWNvbl9fX2wyMUtJXCI7XG52YXIgX2EgPSBcImZpbHRlckxhYmVsX19fX1Awd25cIjtcbnZhciBfYiA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX1ZtZEdxXCI7XG52YXIgX2MgPSBcImZpbHRlck51bUFjdGl2ZV9fX1Z1SENKXCI7XG52YXIgX2QgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19hckJ2UVwiO1xudmFyIF9lID0gXCJsYWJlbF9fX3lORnlqXCI7XG52YXIgX2YgPSBcInNob3dEYXRlUGlja2VyX19fVXBRYnBcIjtcbnZhciBfMTAgPSBcInNvcnRDb250YWluZXJfX19sUnNqVVwiO1xudmFyIF8xMSA9IFwic29ydEljb25fX19mVlY1S1wiO1xudmFyIF8xMiA9IFwic29ydExhYmVsX19fVXFMVENcIjtcbnZhciBfMTMgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fY21uQkRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNvbnRhaW5lclwiLCBfNSBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzYgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzcgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgXzggYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgXzkgYXMgXCJmaWx0ZXJJY29uXCIsIF9hIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9jIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9kIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfZSBhcyBcImxhYmVsXCIsIF9mIGFzIFwic2hvd0RhdGVQaWNrZXJcIiwgXzEwIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTEgYXMgXCJzb3J0SWNvblwiLCBfMTIgYXMgXCJzb3J0TGFiZWxcIiwgXzEzIGFzIFwic29ydExpc3RDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2FuY2VsQnRuX19fcURleGhcIjtcbnZhciBfMiA9IFwiZm9vdGVyX19fU043MHlcIjtcbnZhciBfMyA9IFwic2F2ZUJ0bl9fX25iVTZjXCI7XG5leHBvcnQgeyBfMSBhcyBcImNhbmNlbEJ0blwiLCBfMiBhcyBcImZvb3RlclwiLCBfMyBhcyBcInNhdmVCdG5cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiZXJyb3JMYWJlbF9fX25vY3lYXCI7XG5leHBvcnQgeyBfMSBhcyBcImVycm9yTGFiZWxcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibXVsdGlzdGVwQ2xvc2VJY29uX19fcWM2TkRcIjtcbnZhciBfMiA9IFwibXVsdGlzdGVwQ29udGFpbmVyX19fZFBhUzVcIjtcbmV4cG9ydCB7IF8xIGFzIFwibXVsdGlzdGVwQ2xvc2VJY29uXCIsIF8yIGFzIFwibXVsdGlzdGVwQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImJsYWNrQnV0dG9uX19fbDloajlcIjtcbnZhciBfMyA9IFwiY29weUljb25fX19Oa0hHT1wiO1xudmFyIF80ID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF81ID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgXzYgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfNyA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfOCA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfOSA9IFwib3JkZXJUaWNrZXROb0NvbnRhaW5lcl9fX3Zxb2hOXCI7XG52YXIgX2EgPSBcIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkX19fSFhtZHdcIjtcbnZhciBfYiA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfYyA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF9kID0gXCJyZWZ1bmRCdXR0b25zX19fakRsNEhcIjtcbnZhciBfZSA9IFwicmV2ZXJzZWRfX19ERmVhX1wiO1xudmFyIF9mID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfMTAgPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xMSA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzEyID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzEzID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMTQgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xNSA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzE2ID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImJsYWNrQnV0dG9uXCIsIF8zIGFzIFwiY29weUljb25cIiwgXzQgYXMgXCJkaXNwbGF5X25vbmVcIiwgXzUgYXMgXCJsYWJlbFwiLCBfNiBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF83IGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF84IGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF85IGFzIFwib3JkZXJUaWNrZXROb0NvbnRhaW5lclwiLCBfYSBhcyBcIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkXCIsIF9iIGFzIFwib3JkZXJXcmFwcGVyXCIsIF9jIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgX2QgYXMgXCJyZWZ1bmRCdXR0b25zXCIsIF9lIGFzIFwicmV2ZXJzZWRcIiwgX2YgYXMgXCJ0YWJCdXR0b25zXCIsIF8xMCBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzExIGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMTIgYXMgXCJ0aWNrZXROb1wiLCBfMTMgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xNCBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzE1IGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMTYgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zX19fdTdtUFNcIjtcbnZhciBfMiA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfMyA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF80ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfNSA9IFwicmVmdW5kRXJyb3JNc2dfX19BYWh6clwiO1xudmFyIF82ID0gXCJyZWZ1bmRIZWFkZXJzX19fSFZJbWtcIjtcbnZhciBfNyA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgXzggPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF85ID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF9hID0gXCJzdWNjZXNzTXNnX19fSHRNc2VcIjtcbnZhciBfYiA9IFwic3VjY2Vzc01zZzJfX19RNnpuYVwiO1xudmFyIF9jID0gXCJ0aWNrZXROb19fX19FQUQ0XCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNcIiwgXzIgYXMgXCJjYW5jZWxCdXR0b25cIiwgXzMgYXMgXCJjb250aW51ZUJ1dHRvblwiLCBfNCBhcyBcImRlbGV0ZUljb25cIiwgXzUgYXMgXCJyZWZ1bmRFcnJvck1zZ1wiLCBfNiBhcyBcInJlZnVuZEhlYWRlcnNcIiwgXzcgYXMgXCJyZWZ1bmRTdWNjZXNzZnVsXCIsIF84IGFzIFwicmVmdW5kVGV4dFwiLCBfOSBhcyBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lclwiLCBfYSBhcyBcInN1Y2Nlc3NNc2dcIiwgX2IgYXMgXCJzdWNjZXNzTXNnMlwiLCBfYyBhcyBcInRpY2tldE5vXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNsb3NlQnRuX19feVNRQ09cIjtcbnZhciBfMiA9IFwiaGVhZGVyX19fZkJYRzlcIjtcbnZhciBfMyA9IFwiaGVhZGVyTm90ZV9fX0xIeV9mXCI7XG52YXIgXzQgPSBcInN1YnRpdGxlX19fekxZa3BcIjtcbnZhciBfNSA9IFwidGl0bGVfX190eVplUVwiO1xudmFyIF82ID0gXCJ3cmFwcGVyX19fUk9KR3NcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2xvc2VCdG5cIiwgXzIgYXMgXCJoZWFkZXJcIiwgXzMgYXMgXCJoZWFkZXJOb3RlXCIsIF80IGFzIFwic3VidGl0bGVcIiwgXzUgYXMgXCJ0aXRsZVwiLCBfNiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwid3JhcHBlcl9fX0V3T1J6XCI7XG5leHBvcnQgeyBfMSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaW5mb05vdGVfX19pMVhZOVwiO1xudmFyIF8yID0gXCJ3cmFwcGVyX19fTUF1TlNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaW5mb05vdGVcIiwgXzIgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJfX19BdXZyblwiO1xudmFyIF8yID0gXCJhZGRpdGlvbmFsRGV0YWlsc19fX21QMWlKXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fUTBWVXpcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19MbXJtNFwiO1xudmFyIF81ID0gXCJjbG9zZUJ0bl9fX1dOSmxFXCI7XG52YXIgXzYgPSBcImNvcHlCdG5fX19fdXRBNlwiO1xudmFyIF83ID0gXCJkZWxlZ2F0ZWRUb19fX1NHVlFJXCI7XG52YXIgXzggPSBcImRvd25sb2FkQnRuX19fcWpZaHpcIjtcbnZhciBfOSA9IFwiaGVhZGVyX19fQXVnbnpcIjtcbnZhciBfYSA9IFwib3JkZXJOdW1iZXJfX19MNVE1YVwiO1xudmFyIF9iID0gXCJxckNvZGVfX19md3FacVwiO1xudmFyIF9jID0gXCJxck5vdGVfX19HYzdLblwiO1xudmFyIF9kID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfZSA9IFwic3RhdHVzX19fa3dDOHlcIjtcbnZhciBfZiA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMCA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTEgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNsb3NlQnRuXCIsIF82IGFzIFwiY29weUJ0blwiLCBfNyBhcyBcImRlbGVnYXRlZFRvXCIsIF84IGFzIFwiZG93bmxvYWRCdG5cIiwgXzkgYXMgXCJoZWFkZXJcIiwgX2EgYXMgXCJvcmRlck51bWJlclwiLCBfYiBhcyBcInFyQ29kZVwiLCBfYyBhcyBcInFyTm90ZVwiLCBfZCBhcyBcInNlbmRCdG5cIiwgX2UgYXMgXCJzdGF0dXNcIiwgX2YgYXMgXCJzdWJ0aXRsZVwiLCBfMTAgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzExIGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19jSFNNdFwiO1xudmFyIF8yID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0pzUGxHXCI7XG52YXIgXzMgPSBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyX19fcEc5YjRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzIgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfMyBhcyBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibm9PcmRlcnNGb3VuZF9fX0FvZzJwXCI7XG52YXIgXzIgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1oxOVBtXCI7XG52YXIgXzMgPSBcIndpZGdldEhlYWRlcl9fX3lZNWdlXCI7XG5leHBvcnQgeyBfMSBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzIgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzMgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RyYXdlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRheWpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICAgICAgPGgzPnt0KFwib3JkZXJzLnRpdGxlXCIpfTwvaDM+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0c1xuICAgICAgICAgICAgbG9naW5Vcmw9e2xvZ2luVXJsfVxuICAgICAgICAgICAgc3VwcG9ydEVtYWlsPXtzdXBwb3J0RW1haWx9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGFwaUJhc2VVcmw9e2FwaUJhc2VVcmx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJnZXRSZXF1ZXN0IiwiZGVsZXRlUmVxdWVzdCIsImNyZWF0ZUFjdGlvbiIsInN0b3BMb2FkaW5nIiwic3RhcnRMb2FkaW5nIiwicHV0UmVxdWVzdCIsInBMaW1pdCIsImdldElkVG9rZW4iLCJJZFRva2VuVmVyaWZpZXIiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkZJUlNUX1BBR0UiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiUFJPTUlTRV9CQVRDSF9MSU1JVCIsIkZJRlRZX1BFUl9QQUdFIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJTRVRfU1RBVEUiLCJHRVRfVVNFUl9PUkRFUlMiLCJSRUZVTkRfT1JERVIiLCJTRVRfQUNUSVZFX09SREVSX0lEIiwiRklMVEVSX1VTRVJfT1JERVJTIiwiR0VUX1RJQ0tFVFMiLCJVUERBVEVfVElDS0VUIiwiUkVDRUlWRV9USUNLRVQiLCJSRU1PVkVfVElDS0VUX0FUVEVOREVFIiwiQVNTSUdOX1RJQ0tFVCIsIlJFRlVORF9USUNLRVQiLCJSRVNFTkRfTk9USUZJQ0FUSU9OIiwiR0VUX1RJQ0tFVFNfQllfT1JERVIiLCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiIsIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyIsIkdFVF9USUNLRVRfREVUQUlMUyIsIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TIiwiVElDS0VUX0FUVEVOREVFX0tFWVMiLCJlbWFpbCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueSIsImRpc2NsYWltZXJBY2NlcHRlZCIsImV4dHJhUXVlc3Rpb25zIiwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0U3RhdGUiLCJkaXNwYXRjaCIsInJlc2V0RmlsdGVyIiwic2V0UmVkdWNlclN0YXRlIiwic3VtbWl0IiwidXNlciIsIkZJTFRFUl9WQVJfREFURSIsIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXIiLCJ0eXBlIiwicHVzaCIsImNvbmNhdCIsIm5hbWUiLCJsb3dlciIsInVwcGVyIiwidmFsdWUiLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYiLCJwYWdlIiwicGVyUGFnZSIsInNvcnQiLCJnZXRTdGF0ZSIsIl9yZWYyIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJjYXRjaCIsIlByb21pc2UiLCJyZWplY3QiLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImZpbHRlcnMiLCJpZCIsInRoZW4iLCJwYXlsb2FkIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjMiLCJfcmVmNCIsInVzZXJTdGF0ZSIsInVzZXJQcm9maWxlIiwiZXhwYW5kIiwiZmllbGRzIiwiZ2V0VGlja2V0c0J5T3JkZXIiLCJfcmVmNSIsIl9yZWY2IiwicmVzZW5kTm90aWZpY2F0aW9uIiwidGlja2V0IiwiX3JlZjciLCJtZXNzYWdlIiwib3JkZXJfaWQiLCJyZWZ1bmRUaWNrZXQiLCJfcmVmOCIsIl9yZWY5IiwicmVmdW5kQnVsa1RpY2tldHMiLCJfcmVmMTAiLCJ0aWNrZXRzIiwibGltaXQiLCJhbGxSZWZ1bmRUaWNrZXRDYWxscyIsIm1hcCIsImFsbCIsInJlcyIsInN1Y2Nlc3NmdWxseVJlcXVlc3RlZCIsInIiLCJfciRyZXNwb25zZSIsInJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTEiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEyIiwiZmluYWxseSIsIm5vcm1hbGl6ZVRpY2tldCIsImVudGl0eSIsIm5vcm1hbGl6ZWRFbnRpdHkiLCJfb2JqZWN0U3ByZWFkIiwiYXR0ZW5kZWVfY29tcGFueSIsImF0dGVuZGVlX2NvbXBhbnlfaWQiLCJyZWZyZXNoUHJvZmlsZSIsImRhdGEiLCJ0aWNrZXRPd25lciIsIl9yZWYxMyIsIl90aWNrZXRPd25lciRtYW5hZ2VyIiwidXBkYXRlUHJvZmlsZSIsImF0dGVuZGVlX2VtYWlsIiwiYXR0ZW5kZWVfZmlyc3RfbmFtZSIsImF0dGVuZGVlX2xhc3RfbmFtZSIsImhhc01hbmFnZXIiLCJtYW5hZ2VyIiwibWFuYWdlcl9pZCIsIml0c01lIiwicHJvZmlsZUNoYW5nZWQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwibmV3UHJvZmlsZSIsInNhdmVUaWNrZXREZXRhaWxzIiwiYW5zd2VycyIsIl9yZWYxNCIsImlkVG9rZW4iLCJ2ZXJpZmllciIsImp3dCIsImRlY29kZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsImFzc2lnbkF0dGVuZGVlIiwiX3JlZjE1IiwicmVhc3NpZ25UaWNrZXQiLCJfcmVmMTYiLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTciLCJSZWFjdCIsIlByb3BUeXBlcyIsInVzZVRyYW5zbGF0aW9uIiwiQm94IiwidXNlRm9ybWlrIiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJGb3JtRm9vdGVyIiwidXNlU2Nyb2xsVG9FcnJvciIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJwYXJzZUFuc3dlcnMiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQXNzaWduRVFGb3JtIiwib25TdWJtaXQiLCJvbkNsb3NlIiwidCIsImZvcm1payIsImluaXRpYWxWYWx1ZXMiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwidmFsdWVzIiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImNoaWxkcmVuIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCIsImRpc2NsYWltZXIiLCJpc1JlcXVpcmVkIiwic2F2ZUxhYmVsIiwiY2FuY2VsTGFiZWwiLCJkaXNhYmxlZCIsImlzU3VibWl0dGluZyIsInByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyIsIkRpYWxvZyIsIkRpYWxvZ0NvbnRlbnQiLCJEaWFsb2dDb250ZW50VGV4dCIsIkRpYWxvZ1RpdGxlIiwiQ3VzdG9tRGlhbG9nIiwib3BlbiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJib29sIiwic3RyaW5nIiwiVGhlbWVQcm92aWRlciIsImNyZWF0ZVRoZW1lIiwicm9vdCIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiZGFya0NvbG9yIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZSIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsIkN1c3RvbVRoZW1lIiwibm9kZSIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJvbkNoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJlcnJvciIsImhlbHBlclRleHQiLCJyZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwicXVlc3Rpb25TbHVnIiwicXVlc3Rpb25MYWJlbCIsIm1hbmRhdG9yeSIsInF1ZXN0aW9uTWF4VmFsdWVzIiwibWF4X3NlbGVjdGVkX3ZhbHVlcyIsInF1ZXN0aW9uT3B0aW9ucyIsInZhbCIsImxhYmVsIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJuZXdWYWx1ZSIsInYiLCJjbGFzc05hbWUiLCJyZXF1aXJlZCIsImZ1bGxXaWR0aCIsIm9wIiwiY29udHJvbCIsImluY2x1ZGVzIiwiZXYiLCJ0YXJnZXQiLCJSYXdIVE1MIiwiQ2hlY2tib3hRdWVzdGlvbkZpZWxkIiwiSW5wdXRMYWJlbCIsIk1lbnVJdGVtIiwiU2VsZWN0IiwiRHJvcGRvd25RdWVzdGlvbkZpZWxkIiwibGFiZWxJZCIsInN0eWxlIiwibWFyZ2luQm90dG9tIiwiUmFkaW8iLCJSYWRpb0dyb3VwIiwiUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCIsIlRleHRGaWVsZCIsIlRleHRRdWVzdGlvbkZpZWxkIiwiUXVlc3Rpb25UeXBlX0NoZWNrYm94IiwiUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCIsIlF1ZXN0aW9uVHlwZV9Db21ib0JveCIsIlF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3giLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0IiwiY2hlY2tSdWxlIiwicnVsZSIsImFuc3dlcl92YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJhbnN3ZXJfdmFsdWVzX29wZXJhdG9yIiwiZm9yRWFjaCIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJ0ZXh0IiwicXVlc3Rpb25JZCIsInRleHRMQyIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInEiLCJfcSRsYWJlbCIsImlzQW5zd2VyZWQiLCJhbnN3ZXIiLCJjaGVja0lmVmFsdWVNYXRjaCIsImNvbXBhcmVWYWwiLCJhbnN3ZXJBcnJheSIsInNvbWUiLCJnZXRUeXBlSW5pdGlhbFZhbHVlIiwiZ2V0VHlwZVZhbHVlIiwiYW5zIiwic3BsaXQiLCJ0cmFuc2Zvcm1BbndlcnNGb3JtYXQiLCJkaXNjbGFpbWVyX2FjY2VwdGVkIiwiZXh0cmFfcXVlc3Rpb25zIiwiZm9ybWF0dGVkRVEiLCJlbnRyaWVzIiwia2V5IiwicXVlc3Rpb25faWQiLCJwYXJzZUludCIsInBvcCIsIlF1ZXN0aW9uVHlwZV9UZXh0IiwiUXVlc3Rpb25UeXBlX1RleHRBcmVhIiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uIiwiZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCIsInF1ZXN0aW9uVHlwZSIsIkZyYWdtZW50IiwicmVhZE9ubHkiLCJhbGxvd0VkaXQiLCJyZW5kZXJSdWxlIiwicmVuZGVyUXVlc3Rpb24iLCJzdWJfcXVlc3Rpb24iLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMiLCJRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwiZm9ybWlrUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVCbHVyIiwidG91Y2hlZCIsIkJvb2xlYW4iLCJlcnJvcnMiLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJ1c2VTdGF0ZSIsIlN0YWNrIiwiZGF5anMiLCJBZGFwdGVyRGF5anMiLCJMb2NhbGl6YXRpb25Qcm92aWRlciIsIkRhdGVQaWNrZXIiLCJDbG9zZUljb24iLCJnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMiLCJzdHlsZXMiLCJfRnJhZ21lbnQiLCJCYXNpY0RhdGVQaWNrZXIiLCJvbkZpbHRlciIsIm9uUmVzZXQiLCJub3ciLCJkYXRlVmFsdWUiLCJzZXREYXRlVmFsdWUiLCJvbkRhdGVDaGFuZ2UiLCJkYXRlIiwiRGF0ZSIsIiRkIiwib25SZXNldEFjdGlvbiIsImZpbHRlckRhdGVMYWJlbCIsImFsaWduSXRlbXMiLCJzeCIsInB0IiwicGIiLCJkYXRlUGlja2VyQ29udGFpbmVyIiwiZm9udFNpemUiLCJkYXRlcGlja2VyQ2xvc2UiLCJvbkNsaWNrIiwiZGF0ZUFkYXB0ZXIiLCJjYWxlbmRhckRpc3BsYXkiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJGaWx0ZXJMaXN0SWNvbiIsIkZpbHRlciIsInNob3dGaWx0ZXJMaXN0Iiwic2V0U2hvd0ZpbHRlckxpc3QiLCJzaG93RGF0ZXBpY2tlciIsInNldFNob3dEYXRlcGlja2VyIiwiZmlsdGVyTnVtQWN0aXZlIiwic2V0RmlsdGVyTnVtQWN0aXZlIiwiZmlsdGVyUmVmIiwiaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJzaG93RGF0ZVBpY2tlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIndpZHRoIiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJjb2xvciIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJwbGFjZWhvbGRlciIsImlucHV0UHJvcHMiLCJCdXR0b24iLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwiR3JpZCIsIkZpbHRlclNvcnRTZWFyY2giLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsImZvb3RlciIsImNhbmNlbEJ0biIsInNpemUiLCJ2YXJpYW50Iiwic2F2ZUJ0biIsIkVycm9ySWNvbiIsIkVycm9yTGFiZWwiLCJjbGFzc05hbWVzIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJEcmF3ZXIiLCJDb250YWluZXIiLCJNdWx0aVN0ZXBTbGlkZXIiLCJvbkNsb3NlU2xpZGVyIiwiYW5jaG9yIiwiUGFwZXJQcm9wcyIsIm11bHRpc3RlcENvbnRhaW5lciIsIm11bHRpc3RlcENsb3NlSWNvbiIsInVzZURpc3BhdGNoIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiT05FX1BBR0VfTkVYVCIsIk15T3JkZXJzVGlja2V0cyIsIm1lbWJlck9yZGVycyIsIm9yZGVyc19jdXJyZW50X3BhZ2UiLCJvcmRlcnNfbGFzdF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzX3RvdGFsIiwic3RhdGUiLCJzZXRGaWx0ZXIiLCJzZXRTb3J0IiwiZmV0Y2hEYXRhIiwid2lkZ2V0SGVhZGVyIiwibWQiLCJsZyIsInN1bW1pdFRpdGxlRGF0ZSIsImRhdGFMZW5ndGgiLCJuZXh0IiwiaGFzTW9yZSIsInNjcm9sbFRocmVzaG9sZCIsIm51bWJlciIsIm5vT3JkZXJzRm91bmQiLCJEaXZpZGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzdGF0dXMiLCJzaGFwZSIsImFycmF5T2YiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInJlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNUb1JlZnVuZCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwiT3JkZXJTdW1tYXJ5Iiwib3JkZXJTdW1tYXJ5V3JhcHBlciIsInB4Iiwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mbyIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwidGlja2V0T3duZXJFbWFpbCIsImlzX2FjdGl2ZSIsIk9yZGVyTGlzdFRpY2tldHMiLCJQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQiLCJPcmRlckxpc3RJdGVtIiwidG90YWwiLCJvblBhZ2luYXRlQ2xpY2siLCJzZWxlY3RUb1JlZnVuZCIsIml0ZW1zVG9EaXNwbGF5Iiwic2V0SXRlbXNUb0Rpc3BsYXkiLCJzbGljZWRUaWNrZXRzIiwic2xpY2UiLCJvblZpZXdNb3JlIiwib25WaWV3TGVzcyIsImlzU2VsZWN0ZWRUb1JlZnVuZCIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsIlRpY2tldFN0YXR1cyIsIk9yZGVyTnVtYmVyIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldFJlYXNzaWduIiwibW9kYWxWaWV3cyIsImRldGFpbCIsInJlYXNzaWduIiwiVGlja2V0Q1RBcyIsImlzSW5jb21wbGV0ZSIsImlzVW5hc3NpZ25lZCIsImlzUmVhc3NpZ25hYmxlIiwib25PcGVuQ2xpY2siLCJhc3NpZ25UaWNrZXRCdXR0b24iLCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uIiwicmVhc3NpZ25CdXR0b24iLCJfdGlja2V0JHRpY2tldF90eXBlIiwiX29wZW5UaWNrZXQkb3duZXIiLCJfb3BlblRpY2tldCRvd25lcjIiLCJjYW5SZWFzc2lnbiIsIm9wZW5UaWNrZXQiLCJzZXRPcGVuVGlja2V0IiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZU9wZW5Nb2RhbCIsInZpZXciLCJvcmRlcldyYXBwZXIiLCJ0aWNrZXRUaWNrZXRUeXBlIiwidGlja2V0Tm8iLCJjb3B5IiwidHJ1bmNhdGVkIiwidGlja2V0QWN0aW9uQnV0dG9ucyIsIm93bmVySWQiLCJ0b3RhbF9yZWZ1bmRlZF9hbW91bnQiLCJDb250ZW50Q29weUljb24iLCJkZWZhdWx0V2lkdGgiLCJyZXZlcnNlZCIsIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkIiwib3JkZXJUaWNrZXROb0NvbnRhaW5lciIsImNvcHlJY29uIiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiVGFicyIsIlRhYiIsIlJlZnVuZFJlcXVlc3RzTW9kYWwiLCJpc1RpY2tldFJlZnVuZGFibGUiLCJUYWJQYW5lbCIsInByb3BzIiwiaW5kZXgiLCJoaWRkZW4iLCJPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSIsImlzTW9iaWxlIiwiZGV0YWlsc1JlcXVpcmVkIiwic2V0VmFsdWUiLCJfIiwic2V0UmVmdW5kUmVxdWVzdGVkIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjYW5jZWxUaWNrZXRzVG9SZWZ1bmQiLCJzZWxlY3RBbGxUaWNrZXRzIiwicmVmdW5kYWJsZVRpY2tldHMiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiYm9yZGVyQ29sb3IiLCJ0ZXh0Q29sb3IiLCJUYWJJbmRpY2F0b3JQcm9wcyIsImJhY2tncm91bmQiLCJ0YWJCdXR0b25zIiwicmVmdW5kQnV0dG9ucyIsIm9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRPcmRlclRpY2tldHMiLCJnZXRGb3JtYXR0ZWREYXRlIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJsYXN0X3BhZ2UiLCJicmVha3BvaW50cyIsImRvd24iLCJpc01vYmlsZVZpZXdhYmxlIiwic2V0TW9iaWxlVmlld2FibGUiLCJtZW1iZXJUaWNrZXRzIiwiZmV0Y2hUaWNrZXRzQnlPcmRlciIsImN1cnJlbnRfcGFnZSIsInRpY2tldHNfcGFnZV9jdXJyZW50Iiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwiYmxhY2tCdXR0b24iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidGlja2V0c190b3RhbCIsIkRlbGV0ZU91dGxpbmVJY29uIiwiUmVmdW5kUmVxdWVzdGVkVGlja2V0Iiwib25SZW1vdmUiLCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXIiLCJkZWxldGVJY29uIiwiU3R5bGVkRW5naW5lUHJvdmlkZXIiLCJDaGVja0NpcmNsZUljb24iLCJTVEVQX09ORSIsIlNURVBfVFdPIiwic3RlcCIsInNldFN0ZXAiLCJlcnJvck1zZyIsInNldEVycm9yTXNnIiwicmVmdW5kU3VjY2VzcyIsInNldFJlZnVuZFN1Y2Nlc3MiLCJjbG9zZVNsaWRlciIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwicmVmdW5kVGV4dCIsInJlZnVuZEVycm9yTXNnIiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwicmVmdW5kSGVhZGVycyIsIkljb25CdXR0b24iLCJUeXBvZ3JhcGh5IiwiQ2xvc2UiLCJSaWdodERyYXdlciIsInN1YnRpdGxlIiwiaGVhZGVyTm90ZSIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsIndyYXBwZXIiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0IiwiZ3V0dGVyQm90dG9tIiwib25lT2ZUeXBlIiwiQXV0b2NvbXBsZXRlIiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJzdW1taXRJZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJzZXRGaWVsZFRvdWNoZWQiLCJ1bmRlZmluZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInJlbmRlcklucHV0IiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJUaWNrZXREZWxlZ2F0aW9uRmllbGRzIiwiZGVsZWdhdGVkX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZWRfbGFzdF9uYW1lIiwiVGlja2V0T3duZXJGaWVsZHMiLCJUaWNrZXRGb3JtIiwiY2FuRWRpdCIsInRpY2tldE1hbmFnZXIiLCJhbGxvd3NEZWxlZ2F0aW9uIiwiYWxsb3dzX3RvX2RlbGVnYXRlIiwicmVkdWNlIiwiZGVsZWdhdGVkVG8iLCJhZGRpdGlvbmFsRGV0YWlscyIsImluZm9Ob3RlIiwiUVJDb2RlIiwiRmlsZURvd25sb2FkT3V0bGluZWQiLCJEb3dubG9hZEljb24iLCJFbWFpbE91dGxpbmVkIiwiRW1haWxJY29uIiwiTUlMTElTRUNfVE9fU0VDIiwiX3RpY2tldCRvcmRlciIsIl90aWNrZXQkb3JkZXIyIiwiY3VycmVudFRpY2tldCIsInNhdmVNZXNzYWdlIiwic2V0U2F2ZU1lc3NhZ2UiLCJpc1VzZXJPcmRlck93bmVyIiwib3duZXJfaWQiLCJpc1VzZXJUaWNrZXRPd25lciIsImNhbkVkaXRUaWNrZXREYXRhIiwiYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucyIsImlzQ29tcGxldGUiLCJvblNhdmUiLCJyZXNvbHZlIiwiZXJyIiwib25DbG9zZVNhdmVNZXNzYWdlIiwic2V0VGltZW91dCIsInRpY2tldERldGFpbENvbnRhaW5lciIsInFyQ29kZSIsIm1heFdpZHRoIiwicXJfY29kZSIsInZpZXdCb3giLCJxck5vdGUiLCJpc192aXJ0dWFsIiwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lciIsImRvd25sb2FkQnRuIiwic2VuZEJ0biIsIm9yZGVyTnVtYmVyIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsInl1cCIsIlJlYXNzaWduRm9ybSIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJtdWx0aWxpbmUiLCJtaW5Sb3dzIiwiX3RpY2tldCR0eXBlIiwidGlja2V0UmVhc3NpZ25lZCIsInNldFRpY2tldFJlYXNzaWduZWQiLCJvblJlYXNzaWduIiwib25DbG9zZUVRRm9ybSIsIm9uU2F2ZUVRIiwiZ2V0TGFiZWxzIiwidGlja2V0UmVhc3NpZ25Db250YWluZXIiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMiLCJpc0FjdGl2ZSIsInJlZnVuZFJlcXVlc3RzIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUGlsbCIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJzbW9vdGhTY3JvbGxUbyIsInRhcmdldFNjcm9sbFRvcCIsImR1cmF0aW9uIiwic3RhcnRTY3JvbGxUb3AiLCJzY3JvbGxUb3AiLCJkaXN0YW5jZSIsInN0YXJ0VGltZSIsImFuaW1hdGlvblN0ZXAiLCJ0aW1lc3RhbXAiLCJlbGFwc2VkIiwicHJvZ3Jlc3MiLCJNYXRoIiwibWluIiwiZWFzZUluT3V0UXVhZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNvbnRhaW5lcklkIiwiaXNWYWxpZCIsImVycm9yQXJyYXkiLCJlcnJvckNvdW50IiwiZWxlbWVudHNTb3J0ZWQiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImVsUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImEiLCJiIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250YWluZXJSZWN0IiwiZWxlbU9mZmVzdCIsImFuaW1hdGlvbkR1cmF0aW9uIiwiU1RBVFVTX0NPTVBMRVRFIiwiU1RBVFVTX0lOQ09NUExFVEUiLCJTVEFUVVNfQ0FOQ0VMTEVEIiwiU1RBVFVTX1VOQVNTSUdORUQiLCJfdGlja2V0JHByb21vX2NvZGUiLCJfdGlja2V0JG93bmVyMyIsIl90aWNrZXQkb3duZXI0IiwiZ2V0U3RhdHVzIiwiYWxsb3dzRGVsZWdhdGUiLCJwcm9tb19jb2RlIiwiYWxsb3dzX3RvX3JlYXNzaWduIiwiaTE4biIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwibG9hZGluZyIsImlzT3JkZXJMb2FkaW5nIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfcGVyX3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJXaWRnZXRSZWR1Y2VyIiwiYXJndW1lbnRzIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwidXBkYXRlZE9yZGVyIiwidGlja2V0c19wYWdlX2xhc3QiLCJtbyIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidGlja2V0RGF0YSIsIm5ld09yZGVycyIsIm5ld1RpY2tldHMiLCJ1c2VNZW1vIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJPTkVfREFZIiwiU1RBVFVTX1BFTkRJTkciLCJTVEFUVVNfRVJST1IiLCJTVEFUVVNfUFJPQ0VTU0lORyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiVFdPX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsIm1vbWVudCIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJyZWZ1bmRlZF9hbW91bnQiLCJhbW91bnQiLCJ0aWNrZXRfdHlwZXMiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwiY3VycmVuY3lPYmplY3QiLCJ0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUiLCJ0aWNrZXRUeXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfb3JkZXJzJCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJyb3VuZCIsImdldE5vdyIsInRpbWVyU3RhdGUiLCJub3dVdGMiLCJjaGVja1N1bW1pdFBhc3QiLCJyZWFzc2lnbl9kYXRlIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImVuZF9kYXRlIiwiY2hlY2tTdW1taXRTdGFydGVkIiwic3RhcnRfZGF0ZSIsImdldFN1bW1pdERheXNEaWZmIiwic3RhcnREYXkiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJkYXlzIiwiZGlmZiIsImZvcm1hdFN0YXJ0RGF0ZSIsImZvcm1hdEVuZERhdGUiLCJ5ZWFyIiwibW9udGgiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0U3VtbWl0TG9jYXRpb24iLCJfc3VtbWl0JGxvY2F0aW9ucyIsImxvY2F0aW9uIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJ1c2VTdW1taXREZXRhaWxzIiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsImlzU3RhcnRlZCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImJhZGdlIiwiZmVhdHVyZXMiLCJmZWF0dXJlIiwiam9pbiIsImdldFRpY2tldFR5cGUiLCJmaW5hbF9hbW91bnQiLCJyciIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsImluY2x1ZGVEZWxlZ2F0aW9uIiwiaW5jbHVkZUF0dGVuZGVlSW5mbyIsImluY2x1ZGVEaXNjbGFpbWVyIiwib25seVJlbGV2YW50Iiwic3ViUXVlc3Rpb25TbHVnIiwic3ViQW5zd2VyIiwibWF0Y2giLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlczIiLCJzdWJRdWVzdGlvbiIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJzY2giLCJQcm92aWRlciIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwid2luZG93Iiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9
|
|
7153
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q1ZRLFlBQVksRUFBRUwsZ0JBQWlCO01BQy9CM0ssT0FBTyxFQUFFLElBQUs7TUFDZCtDLFNBQVMsRUFBRUEsU0FBVTtNQUFBcnRCLFFBQUEsZUFFckJkLHVEQUFBLENBQUNpZiwrREFBb0I7UUFBQ3VCLFdBQVc7UUFBQTFmLFFBQUEsZ0JBQy9CaEIsc0RBQUEsQ0FBQ1QsOENBQUc7VUFBQzZNLEVBQUUsRUFBRTtZQUFFb0QsT0FBTyxFQUFFO2NBQUVnQyxFQUFFLEVBQUUsQ0FBQztjQUFFdUMsRUFBRSxFQUFFLENBQUM7Y0FBRUMsRUFBRSxFQUFFO1lBQUU7VUFBRSxDQUFFO1VBQUFoVCxRQUFBLGVBQzVDaEIsc0RBQUE7WUFBQWdCLFFBQUEsRUFBS1YsQ0FBQyxDQUFDLGNBQWM7VUFBQyxDQUFLO1FBQUMsQ0FDekIsQ0FBQyxlQUNOTixzREFBQSxDQUFDb1QsbUVBQWU7VUFDZG9hLFFBQVEsRUFBRUEsUUFBUztVQUNuQndJLFlBQVksRUFBRUEsWUFBYTtVQUMzQnorQixNQUFNLEVBQUVBLE1BQU87VUFDZnVCLFVBQVUsRUFBRUE7UUFBVyxDQUN4QixDQUFDO01BQUEsQ0FDa0I7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEaTlCLHVCQUF1QixDQUFDdjBCLFNBQVMsR0FBRztFQUNsQ2dzQixRQUFRLEVBQUVudUIsMERBQWdCO0VBQzFCMjJCLFlBQVksRUFBRTMyQiwwREFBZ0I7RUFDOUI5SCxNQUFNLEVBQUU4SCwwREFBZ0I7RUFDeEJ2RyxVQUFVLEVBQUV1RywwREFBZ0I7RUFDNUI3SCxJQUFJLEVBQUU2SCwwREFBZ0I7RUFDdEJrdUIsUUFBUSxFQUFFbHVCLDBEQUFnQjtFQUMxQjdCLGFBQWEsRUFBRTZCLHdEQUFjc0M7QUFDL0IsQ0FBQztBQUVELGlFQUFlbzBCLHVCQUF1QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Bc3NpZ25FUUZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbVRoZW1lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0RhdGVwaWNrZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvRXJyb3JMYWJlbC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NdWx0aVN0ZXBTbGlkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlclN1bW1hcnlUYWJsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvUmVmdW5kRW1haWxTdXBwb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlck51bWJlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyc0xpc3REZXNrdG9wTW9iaWxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0RGVsZWdhdGlvbkZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFJlYXNzaWduL2NvbXBvbmVudHMvUmVhc3NpZ25Gb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFJlYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlU2Nyb2xsVG9FcnJvci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlVGlja2V0RGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaTE4bi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvc3RvcmUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2F1dGguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3N1bW1pdFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy90aWNrZXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL011bHRpU3RlcFNsaWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFJlYXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EcmF3ZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJkYXlqc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImZvcm1pa1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImlkdG9rZW4tdmVyaWZpZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwLWxpbWl0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1xci1jb2RlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwieXVwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBnZXRSZXF1ZXN0LFxuICBkZWxldGVSZXF1ZXN0LFxuICBjcmVhdGVBY3Rpb24sXG4gIHN0b3BMb2FkaW5nLFxuICBzdGFydExvYWRpbmcsXG4gIHB1dFJlcXVlc3Rcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuaW1wb3J0IHsgZ2V0SWRUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCB7IGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgRklSU1RfUEFHRSxcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVCxcbiAgRklGVFlfUEVSX1BBR0Vcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTID0gXCJHRVRfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX1RJQ0tFVCA9IFwiUkVDRUlWRV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgQVNTSUdOX1RJQ0tFVCA9IFwiQVNTSUdOX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIvU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgcGFyc2VGaWx0ZXIgPSAoZmlsdGVyT2JqKSA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IFtdO1xuICBpZiAoZmlsdGVyT2JqLnR5cGUgPT09IEZJTFRFUl9WQVJfREFURSkge1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck9iai5uYW1lfVtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLnR5cGUgPT09IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyT2JqLm5hbWV9PUAke2ZpbHRlck9iai52YWx1ZX1gKTtcbiAgfVxuICByZXR1cm4gZmlsdGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PlxuICBkaXJlY3Rpb24gPT09IFwiYXNjXCIgPyBcIitcIiA6IFwiLVwiO1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKHsgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgdXNlclN0YXRlOiB7IHVzZXJQcm9maWxlIH0sXG4gICAgICBzdW1taXRcbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGlmICghdXNlclByb2ZpbGUuaWQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZmlsdGVyOiBcInN0YXR1cz09UGFpZFwiLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm9yZGVyLmlkLG9yZGVyLm93bmVyX2ZpcnN0X25hbWUsb3JkZXIub3duZXJfbGFzdF9uYW1lLG9yZGVyLm93bmVyX2VtYWlsLG93bmVyLmZpcnN0X25hbWUsb3duZXIubGFzdF9uYW1lLG93bmVyLnN0YXR1c1wiLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0c0J5T3JkZXIgPVxuICAoeyBvcmRlcklkLCBwYWdlID0gRklSU1RfUEFHRSwgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJyZWZ1bmRfcmVxdWVzdHMsdGlja2V0X3R5cGVcIixcbiAgICAgIGZpZWxkczogXCJyZWZ1bmRfcmVxdWVzdHMuc3RhdHVzXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFRlVORF9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3JlZnVuZGAsXG4gICAgICB7fSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kQnVsa1RpY2tldHMgPVxuICAoeyB0aWNrZXRzIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCkgPT4ge1xuICAgIGNvbnN0IGxpbWl0ID0gcExpbWl0KFBST01JU0VfQkFUQ0hfTElNSVQpO1xuICAgIGNvbnN0IGFsbFJlZnVuZFRpY2tldENhbGxzID0gdGlja2V0cy5tYXAoKHRpY2tldCkgPT5cbiAgICAgIGxpbWl0KCgpID0+IGRpc3BhdGNoKHJlZnVuZFRpY2tldCh7IHRpY2tldCB9KSkpXG4gICAgKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoWy4uLmFsbFJlZnVuZFRpY2tldENhbGxzXSlcbiAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkID0gcmVzXG4gICAgICAgICAgLmZpbHRlcigocikgPT4gci5yZXNwb25zZT8ucmVmdW5kX3JlcXVlc3RzPy5sZW5ndGgpXG4gICAgICAgICAgLm1hcCgocikgPT4gci5yZXNwb25zZSk7XG4gICAgICAgIHJldHVybiBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiBlKTtcbiAgfTtcblxuLy8gdXBkYXRlIHRoZSB0aWNrZXRzIHRoYXQgaGF2ZSBiZWVuIHN1Y2Vzc2Z1bGx5IHJlZnVuZGVkXG5leHBvcnQgY29uc3QgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9XG4gICh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKSA9PiAoZGlzcGF0Y2gpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCkodGlja2V0c1JlZnVuZFJlcXVlc3RlZClcbiAgICApO1xuXG4vLyBTVU1NSVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0RXh0cmFRdWVzdGlvbnMgPVxuICAoYXR0ZW5kZWVJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBwZXJfcGFnZTogRklGVFlfUEVSX1BBR0UsXG4gICAgICBleHBhbmQ6IFwiKnN1Yl9xdWVzdGlvbl9ydWxlcywqc3ViX3F1ZXN0aW9uLCp2YWx1ZXNcIixcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFwidGlja2V0c19leGNsdWRlX2luYWN0aXZlcz09dHJ1ZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L2F0dGVuZGVlcy8ke2F0dGVuZGVlSWR9L2FsbG93ZWQtZXh0cmEtcXVlc3Rpb25zYDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXQgPVxuICAodGlja2V0SWQsIG9yZGVySWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfWA7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBpZFRva2VuID0gZ2V0SWRUb2tlbigpO1xuICAgIGxldCBjb21wYW55ID0gXCJcIjtcbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmVyaWZpZXIgPSBuZXcgSWRUb2tlblZlcmlmaWVyKCk7XG4gICAgICAgIGNvbnN0IGp3dCA9IHZlcmlmaWVyLmRlY29kZShpZFRva2VuKTtcbiAgICAgICAgY29tcGFueSA9IGp3dC5wYXlsb2FkLmNvbXBhbnk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSBub3JtYWxpemVUaWNrZXQoYW5zd2Vycyk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBub3JtYWxpemVkRW50aXR5LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2gocmVmcmVzaFByb2ZpbGUoYW5zd2VycywgY29tcGFueSwgdGlja2V0Lm93bmVyKSk7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGFzc2lnbkF0dGVuZGVlID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBhdHRlbmRlZV9lbWFpbCwgbWVzc2FnZSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihBU1NJR05fVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHsgYXR0ZW5kZWVfZW1haWwsIG1lc3NhZ2UgfSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWFzc2lnblRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIG93bmVyLmV4dHJhX3F1ZXN0aW9ucywgb3JkZXIuc3VtbWl0XCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFTU9WRV9USUNLRVRfQVRURU5ERUUpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAge30sXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKVxuICAgICk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlRXh0cmFRdWVzdGlvbnMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIGFuc3dlcnMsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgeyBidWlsZFZhbGlkYXRpb25TY2hlbWEsIHBhcnNlQW5zd2VycyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBBc3NpZ25FUUZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAge30sXG4gICAgICBudWxsLFxuICAgICAgZmFsc2UsXG4gICAgICBmYWxzZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgZmFsc2UsXG4gICAgICBmYWxzZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrLCBcInJlYXNzaWduRHJhd2VyXCIpO1xuXG4gIGlmIChleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPEJveD5cbiAgICAgICAgPEV4dHJhUXVlc3Rpb25zRmllbGRzIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc30gZm9ybWlrPXtmb3JtaWt9IC8+XG4gICAgICAgIHtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCAmJiAoXG4gICAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgZGlzY2xhaW1lcj17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnR9XG4gICAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ25fZXEuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduX2VxLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbkFzc2lnbkVRRm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduRVFGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRGlhbG9nLFxuICBEaWFsb2dDb250ZW50LFxuICBEaWFsb2dDb250ZW50VGV4dCxcbiAgRGlhbG9nVGl0bGVcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuY29uc3QgQ3VzdG9tRGlhbG9nID0gKHsgb3Blbiwgb25DbG9zZSwgdGl0bGUsIGRlc2NyaXB0aW9uIH0pID0+IChcbiAgPERpYWxvZ1xuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICA+XG4gICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQ29udGVudFRleHQgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIj5cbiAgICAgICAge2Rlc2NyaXB0aW9ufVxuICAgICAgPC9EaWFsb2dDb250ZW50VGV4dD5cbiAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gIDwvRGlhbG9nPlxuKTtcblxuQ3VzdG9tRGlhbG9nLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZGVzY3JpcHRpb246IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9XG4gIH1cbn0pO1xuXG5jb25zdCBDdXN0b21UaGVtZSA9ICh7IGNoaWxkcmVuIH0pID0+IChcbiAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT57Y2hpbGRyZW59PC9UaGVtZVByb3ZpZGVyPlxuKTtcblxuQ3VzdG9tVGhlbWUucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tVGhlbWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG4gIGNvbnN0IHF1ZXN0aW9uTWF4VmFsdWVzID0gcXVlc3Rpb24ubWF4X3NlbGVjdGVkX3ZhbHVlcztcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIGNvbnN0IGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSA9IChjaGVja2VkLCB2YWwpID0+IHtcbiAgICBjb25zdCBjdXJyZW50QW5zID0gdmFsdWUgfHwgW107XG4gICAgY29uc3QgbWF4U2VsZWN0aW9uUmVhY2hlZCA9IGN1cnJlbnRBbnMubGVuZ3RoID09PSBxdWVzdGlvbk1heFZhbHVlcztcbiAgICBsZXQgbmV3VmFsdWU7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgbmV3VmFsdWUgPSBtYXhTZWxlY3Rpb25SZWFjaGVkID8gY3VycmVudEFucyA6IFsuLi5jdXJyZW50QW5zLCB2YWxdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdWYWx1ZSA9IGN1cnJlbnRBbnMuZmlsdGVyKCh2KSA9PiB2ICE9PSB2YWwpO1xuICAgIH1cblxuICAgIHNldEZpZWxkVmFsdWUocXVlc3Rpb25TbHVnLCBuZXdWYWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWw+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17dmFsdWU/LmluY2x1ZGVzKG9wLnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXYpID0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZShldi50YXJnZXQuY2hlY2tlZCwgb3AudmFsdWUpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0Zvcm1Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmFycmF5LFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5ib29sLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIElucHV0TGFiZWwsIE1lbnVJdGVtLCBTZWxlY3QgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWRcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxJbnB1dExhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9JbnB1dExhYmVsPlxuICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgbGFiZWxJZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGlkPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxNZW51SXRlbSBrZXk9e29wLmxhYmVsfSB2YWx1ZT17b3AudmFsdWV9PlxuICAgICAgICAgICAgICB7b3AubGFiZWx9XG4gICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkRyb3Bkb3duUXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbCxcbiAgUmFkaW8sXG4gIFJhZGlvR3JvdXBcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxSYWRpb0dyb3VwXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgdmFsdWU9e29wLnZhbHVlfVxuICAgICAgICAgICAgICBjb250cm9sPXs8UmFkaW8gLz59XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblJhZGlvTGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBUZXh0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Hcm91cD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblRleHRRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUZXh0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrUnVsZSA9ICh2YWx1ZSwgcnVsZSkgPT4ge1xuICBjb25zdCB2YWx1ZXMgPSBydWxlLmFuc3dlcl92YWx1ZXM7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmICghdmFsdWUubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgbGV0IHJlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIjtcbiAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgaWYgKHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIikge1xuICAgICAgICByZXMgPSByZXMgJiYgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPclxuICAgICAgICByZXMgPSByZXMgfHwgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICByZXR1cm4gdmFsdWVzLmluY2x1ZGVzKHZhbHVlPy50b1N0cmluZygpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1Zpc2liaWxpdHkgPSAocnVsZSwgcnVsZVJlc3VsdCwgY2hpbGRyZW4pID0+IHtcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eSA9PT0gXCJWaXNpYmxlXCIpIHtcbiAgICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgICBpZiAocnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIE5vbiBFcXVhbFxuICAgIGlmICghcnVsZVJlc3VsdCkge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBub3QgdmlzaWJsZVxuICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgaWYgKCFydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgdG9TbHVnID0gKHRleHQsIHF1ZXN0aW9uSWQpID0+IHtcbiAgY29uc3QgdGV4dExDID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gYCR7dGV4dExDLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgXCJfXCIpfV8ke3F1ZXN0aW9uSWR9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYWJlbCA9IChxKSA9PlxuICAvLyByZXBsYWNlIGxpbmUgYnJlYWtzIGFuZCByZW1vdmUgb3V0ZXIgPHA+XG4gIHE/LmxhYmVsPy5yZXBsYWNlKC9cXG4vZywgXCIgXCIpLnJlcGxhY2UoLzxwPiguKik8XFwvcD4vZ2ksIFwiJDFcIik7XG5cbmV4cG9ydCBjb25zdCBpc0Fuc3dlcmVkID0gKGFuc3dlcikgPT4ge1xuICBpZiAoIWFuc3dlcikgcmV0dXJuIGZhbHNlO1xuICAvLyBjaGVjayB0eXBlXG4gIGlmIChBcnJheS5pc0FycmF5KGFuc3dlcikpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwic3RyaW5nXCIpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwibnVtYmVyXCIpIHJldHVybiBhbnN3ZXIgPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJib29sZWFuXCIpIHJldHVybiBhbnN3ZXI7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0lmVmFsdWVNYXRjaCA9IChhbnN3ZXIsIGNvbXBhcmVWYWwpID0+IHtcbiAgY29uc3QgYW5zd2VyQXJyYXkgPSBBcnJheS5pc0FycmF5KGFuc3dlcikgPyBhbnN3ZXIgOiBbYW5zd2VyXTtcblxuICByZXR1cm4gYW5zd2VyQXJyYXkuc29tZSgodikgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbXBhcmVWYWwpKSB7XG4gICAgICByZXR1cm4gY29tcGFyZVZhbC5pbmNsdWRlcyh2KTtcbiAgICB9XG4gICAgcmV0dXJuIHYgPT09IGNvbXBhcmVWYWw7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVJbml0aWFsVmFsdWUgPSAocSkgPT4ge1xuICBzd2l0Y2ggKHEudHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsdWUgPSAoYW5zLCB0eXBlKSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGFucyA9PT0gXCJ0cnVlXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIGFucz8uc3BsaXQoXCIsXCIpIHx8IFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBhbnMgfHwgXCJcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gYW5zIHx8IG51bGw7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBhbnM7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgPSAoYW5zd2VycykgPT4ge1xuICBjb25zdCB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIC4uLmV4dHJhX3F1ZXN0aW9uc1xuICB9ID0gYW5zd2VycztcblxuICBjb25zdCBmb3JtYXR0ZWRFUSA9IE9iamVjdC5lbnRyaWVzKGV4dHJhX3F1ZXN0aW9ucykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgcXVlc3Rpb25faWQ6IHBhcnNlSW50KGtleS5zcGxpdChcIl9cIikucG9wKCksIDEwKSxcbiAgICBhbnN3ZXI6IHZhbHVlLnRvU3RyaW5nKClcbiAgfSkpO1xuXG4gIHJldHVybiB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIGV4dHJhX3F1ZXN0aW9uczogZm9ybWF0dGVkRVFcbiAgfTtcbn07XG4iLCJleHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHQgPSBcIlRleHRcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dEFyZWEgPSBcIlRleHRBcmVhXCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrYm94ID0gXCJDaGVja0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QgPSBcIlJhZGlvQnV0dG9uTGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db21ib0JveCA9IFwiQ29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0ID0gXCJDaGVja0JveExpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94ID0gXCJDb3VudHJ5Q29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24gPSBcIlJhZGlvQnV0dG9uXCI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmltcG9ydCB7XG4gIHRvU2x1ZyxcbiAgaXNBbnN3ZXJlZCxcbiAgY2hlY2tWaXNpYmlsaXR5LFxuICBjaGVja1J1bGVcbn0gZnJvbSBcIi4vY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0LFxuICBRdWVzdGlvblR5cGVfVGV4dEFyZWFcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgVGV4dFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBEcm9wZG93blF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGRcIjtcblxuY29uc3QgZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IChxdWVzdGlvblR5cGUpID0+IHtcbiAgc3dpdGNoIChxdWVzdGlvblR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYTpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0OiB7XG4gICAgICByZXR1cm4gVGV4dFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6IHtcbiAgICAgIHJldHVybiBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6IHtcbiAgICAgIHJldHVybiBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6IHtcbiAgICAgIHJldHVybiBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBSZWFjdC5GcmFnbWVudDtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IEV4dHJhUXVlc3Rpb25zRmllbGRzID0gKHtcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvbnNcIixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25cIixcbiAgcmVhZE9ubHkgPSBmYWxzZSxcbiAgYWxsb3dFZGl0ID0gdHJ1ZSxcbiAgZm9ybWlrXG59KSA9PiB7XG4gIGNvbnN0IHJlbmRlclJ1bGUgPSAocnVsZSwgcXVlc3Rpb25TbHVnKSA9PlxuICAgIGNoZWNrVmlzaWJpbGl0eShcbiAgICAgIHJ1bGUsXG4gICAgICBjaGVja1J1bGUoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLCBydWxlKSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcmVuZGVyUXVlc3Rpb24ocnVsZS5zdWJfcXVlc3Rpb24pXG4gICAgKTtcblxuICBjb25zdCByZW5kZXJRdWVzdGlvbiA9IChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgLy8gZGlzYWJsZSBmaWVsZCBpZiBlZGl0IGlzbid0IGFsbG93ZWQgYW5kIHRoZSBxdWVzdGlvbnMgaXMgYW5zd2VyZWRcbiAgICBjb25zdCBpc0Rpc2FibGVkID1cbiAgICAgICghYWxsb3dFZGl0ICYmIGlzQW5zd2VyZWQoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddKSkgfHwgcmVhZE9ubHk7XG4gICAgY29uc3QgUXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQocS50eXBlKTtcblxuICAgIGNvbnN0IGZvcm1pa1Byb3BzID0ge1xuICAgICAgdmFsdWU6IGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIG9uQ2hhbmdlOiBmb3JtaWsuaGFuZGxlQ2hhbmdlLFxuICAgICAgb25CbHVyOiBmb3JtaWsuaGFuZGxlQmx1cixcbiAgICAgIGVycm9yOlxuICAgICAgICBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIEJvb2xlYW4oZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddKSxcbiAgICAgIGhlbHBlclRleHQ6IGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddLFxuICAgICAgc2V0RmllbGRWYWx1ZTogZm9ybWlrLnNldEZpZWxkVmFsdWVcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxRdWVzdGlvbkZpZWxkQ29tcG9uZW50XG4gICAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgICBxdWVzdGlvbj17cX1cbiAgICAgICAgcXVlc3Rpb25DbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgICAgICBpc0Rpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICB7Li4uZm9ybWlrUHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubWFwKChydWxlKSA9PiByZW5kZXJSdWxlKHJ1bGUsIHF1ZXN0aW9uU2x1ZykpfVxuICAgICAgPC9RdWVzdGlvbkZpZWxkQ29tcG9uZW50PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9PntleHRyYVF1ZXN0aW9ucy5tYXAocmVuZGVyUXVlc3Rpb24pfTwvZGl2Pjtcbn07XG5cbkV4dHJhUXVlc3Rpb25zRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBhbGxvd0VkaXQ6IFByb3BUeXBlcy5ib29sLFxuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV4dHJhUXVlc3Rpb25zRmllbGRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7IEFkYXB0ZXJEYXlqcyB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uUHJvdmlkZXIgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiO1xuaW1wb3J0IHsgRGF0ZVBpY2tlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfREFURSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzaWNEYXRlUGlja2VyKHsgb25GaWx0ZXIsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gIGNvbnN0IFtkYXRlVmFsdWUsIHNldERhdGVWYWx1ZV0gPSB1c2VTdGF0ZShub3cpO1xuICBjb25zdCBvbkRhdGVDaGFuZ2UgPSAodmFsKSA9PiB7XG4gICAgc2V0RGF0ZVZhbHVlKHZhbCk7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbC4kZCk7XG4gICAgY29uc3QgeyBsb3dlciwgdXBwZXIgfSA9IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyhkYXRlKTtcbiAgICBvbkZpbHRlcih7XG4gICAgICB0eXBlOiBGSUxURVJfVkFSX0RBVEUsXG4gICAgICBuYW1lOiBcImNyZWF0ZWRcIixcbiAgICAgIGRhdGUsXG4gICAgICBsb3dlcixcbiAgICAgIHVwcGVyXG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IG9uUmVzZXRBY3Rpb24gPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHNldERhdGVWYWx1ZShub3cpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckRhdGVMYWJlbH0+e3QoXCJmaWx0ZXIucHVyY2hhc2VkX29uXCIpfTwvZGl2PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZVBpY2tlckNvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRhdGVwaWNrZXJDbG9zZX1cbiAgICAgICAgICBvbkNsaWNrPXtvblJlc2V0QWN0aW9ufVxuICAgICAgICAvPlxuICAgICAgICA8TG9jYWxpemF0aW9uUHJvdmlkZXIgZGF0ZUFkYXB0ZXI9e0FkYXB0ZXJEYXlqc30+XG4gICAgICAgICAgPERhdGVQaWNrZXJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbGVuZGFyRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkRhdGVDaGFuZ2V9XG4gICAgICAgICAgICB2YWx1ZT17ZGF0ZVZhbHVlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvTG9jYWxpemF0aW9uUHJvdmlkZXI+XG4gICAgICA8L1N0YWNrPlxuICAgIDwvPlxuICApO1xufVxuXG5CYXNpY0RhdGVQaWNrZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBCYXNpY0RhdGVQaWNrZXIgZnJvbSBcIi4vRGF0ZXBpY2tlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dGaWx0ZXJMaXN0LCBzZXRTaG93RmlsdGVyTGlzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93RGF0ZXBpY2tlciwgc2V0U2hvd0RhdGVwaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZmlsdGVyTnVtQWN0aXZlLCBzZXRGaWx0ZXJOdW1BY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgey8qKiBjdXJyZW50bHkganVzdCBzaG93aW5nIFwiMVwiIGJlY2F1c2Ugd2UncmUgY3VycmVudGx5IG9ubHkgZmlsdGVyaW5nIG9uZSBjcml0ZXJpYSAtIGNyZWF0ZWQgZGF0ZSAqL31cbiAgICAgICAge2ZpbHRlck51bUFjdGl2ZSAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlck51bUFjdGl2ZX0+MTwvZGl2Pn1cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0RhdGVQaWNrZXIgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8QmFzaWNEYXRlUGlja2VyXG4gICAgICAgICAgb25SZXNldD17KCkgPT4ge1xuICAgICAgICAgICAgb25SZXNldCgpO1xuICAgICAgICAgICAgc2V0RmlsdGVyTnVtQWN0aXZlKGZhbHNlKTtcbiAgICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25GaWx0ZXI9eyhmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIG9uRmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUodHJ1ZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufVxuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmZ1bmN0aW9uIFNlYXJjaCh7IG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0Nsb3NlLCBzZXRTaG93Q2xvc2VdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIG5hbWU6IFwibnVtYmVyXCIsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXG4gICAgICB9KTtcbiAgICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIHNldFNob3dDbG9zZShmYWxzZSk7XG4gICAgb25SZXNldCgpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFNvcnQoeyBvblNvcnQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9PlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImRlc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfSBvbkNsaWNrPXsoKSA9PiBvblNvcnQoXCJhc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRmlsdGVyU29ydFNlYXJjaCh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICB4cz17Nn1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGdhcD17Mn1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufVxuXG5GaWx0ZXJTb3J0U2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJTb3J0U2VhcmNoO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZvcm1Gb290ZXIgPSAoeyBzYXZlTGFiZWwsIGNhbmNlbExhYmVsLCBvbkNsb3NlLCBkaXNhYmxlZCB9KSA9PiAoXG4gIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZm9vdGVyfT5cbiAgICA8QnV0dG9uXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtjYW5jZWxMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgICA8QnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnNhdmVCdG59XG4gICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtzYXZlTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gIDwvQm94PlxuKTtcblxuRm9ybUZvb3Rlci5wcm9wVHlwZXMgPSB7XG4gIHNhdmVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2FuY2VsTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1Gb290ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEVycm9yTGFiZWwoeyBtZXNzYWdlLCBjb2xvciwgY2xhc3NOYW1lcywgZGF0YVRlc3RJZCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmVycm9yTGFiZWx9ICR7Y2xhc3NOYW1lcyAmJiBjbGFzc05hbWVzfWB9XG4gICAgICBzdHlsZT17eyBjb2xvciB9fVxuICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgPlxuICAgICAgPEVycm9ySWNvbiBzeD17eyBjb2xvciB9fSAvPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckxhYmVsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IERyYXdlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EcmF3ZXJcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE11bHRpU3RlcFNsaWRlciA9ICh7IGNoaWxkcmVuLCBvcGVuLCBvbkNsb3NlU2xpZGVyIH0pID0+IChcbiAgICA8RHJhd2VyXG4gICAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZVNsaWRlcn1cbiAgICAgIHN0eWxlPXt7IHpJbmRleDogMTAwMCB9fVxuICAgICAgUGFwZXJQcm9wcz17e1xuICAgICAgICBzeDoge1xuICAgICAgICAgIHdpZHRoOiBcIjYwJVwiXG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgPlxuICAgICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy5tdWx0aXN0ZXBDb250YWluZXJ9PlxuICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubXVsdGlzdGVwQ2xvc2VJY29ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2VTbGlkZXJ9XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbG9zZS1zbGlkZXJcIlxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0NvbnRhaW5lcj5cbiAgICA8L0RyYXdlcj5cbiAgKVxuXG5NdWx0aVN0ZXBTbGlkZXIucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXVsdGlTdGVwU2xpZGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgRmlsdGVyU29ydFNlYXJjaCBmcm9tIFwiLi9GaWx0ZXJTb3J0U2VhcmNoXCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi9PcmRlcnNMaXN0XCI7XG5pbXBvcnQgeyBnZXRTdW1taXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgeyBnZXRVc2VyT3JkZXJzLCByZXNldEZpbHRlciB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IEN1c3RvbVRoZW1lIGZyb20gXCIuL0N1c3RvbVRoZW1lXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE15T3JkZXJzVGlja2V0cyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgbWVtYmVyT3JkZXJzLFxuICAgIG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgb3JkZXJzX2xhc3RfcGFnZSxcbiAgICBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgb3JkZXJzX3RvdGFsXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuICBjb25zdCBbZmlsdGVyLCBzZXRGaWx0ZXJdID0gdXNlU3RhdGUoe30pO1xuICBjb25zdCBbc29ydCwgc2V0U29ydF0gPSB1c2VTdGF0ZSh7fSk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBzZXRTb3J0KHt9KTtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jIChwYWdlKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyT3JkZXJzKHtcbiAgICAgICAgcGFnZSxcbiAgICAgICAgcGVyUGFnZTogb3JkZXJzX3Blcl9wYWdlLFxuICAgICAgICBmaWx0ZXIsXG4gICAgICAgIHNvcnRcbiAgICAgIH0pXG4gICAgKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YShvcmRlcnNfY3VycmVudF9wYWdlKTtcbiAgfSwgW2ZpbHRlcl0pO1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlcikgPT4ge1xuICAgIHNldFNvcnQoe30pO1xuICAgIHNldEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuICBjb25zdCBvblNvcnQgPSAoZGlyZWN0aW9uKSA9PiB7XG4gICAgc2V0RmlsdGVyKHt9KTtcbiAgICBzZXRTb3J0KHsgZGlyZWN0aW9uLCBuYW1lOiBcImNyZWF0ZWRcIiB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxDdXN0b21UaGVtZT5cbiAgICAgIDxGaWx0ZXJTb3J0U2VhcmNoXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvQm94PlxuICAgICAge21lbWJlck9yZGVycz8ubGVuZ3RoID8gKFxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXtvcmRlcnNfdG90YWx9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXtvcmRlcnNfY3VycmVudF9wYWdlIDwgb3JkZXJzX2xhc3RfcGFnZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+e3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfTwvQm94PlxuICAgICAgKX1cbiAgICA8L0N1c3RvbVRoZW1lPlxuICApO1xufTtcbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gT3JkZXJTdW1tYXJ5VGFibGUoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuT3JkZXJTdW1tYXJ5VGFibGUucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW5jeTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNjb3VudF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGF4ZXNfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnlUYWJsZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IHRpY2tldHNSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFJlZnVuZEVtYWlsU3VwcG9ydCh7XG4gIHN1bW1pdCxcbiAgcmVmdW5kUmVxdWVzdGVkLFxuICB0aWNrZXRzLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2ssXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2tcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0KTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259ICR7XG4gICAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQgJiYgdGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMCAmJiAhc3VibWl0UmVxdWVzdFxuICAgICAgICAgICAgICA/IHN0eWxlcy5yZWZ1bmREaXNhYmxlZFxuICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICB9YH1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBkaXNhYmxlZD17XG4gICAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQgJiYgdGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMCAmJiAhc3VibWl0UmVxdWVzdFxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIGRldGFpbHMgYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJlbWFpbCBzdXBwb3J0IGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uRW1haWxTdXBwb3J0Q2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59XG5cblJlZnVuZEVtYWlsU3VwcG9ydC5wcm9wVHlwZXMgPSB7XG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlZnVuZERldGFpbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FbWFpbFN1cHBvcnRDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZEVtYWlsU3VwcG9ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBSZWZ1bmRFbWFpbFN1cHBvcnQgZnJvbSBcIi4vUmVmdW5kRW1haWxTdXBwb3J0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyU3VtbWFyeSh7XG4gIG9yZGVyLFxuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzdWJtaXRSZXF1ZXN0XG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlXcmFwcGVyfVxuICAgICAgICBzeD17eyBwdDogNCwgcHg6IDQgfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxoMz57dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfc3VtbWFyeVwiKX08L2gzPlxuICAgICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIHhzPXsxMn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm99XG4gICAgICAgICAgICBzeD17eyBwYjogMyB9fVxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxPcmRlclN1bW1hcnlUYWJsZVxuICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4ge319XG4gICAgICAgICAgb25FbWFpbFN1cHBvcnRDbGljaz17KCkgPT4ge319XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJTdW1tYXJ5LnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gQXR0ZW5kZWVTdGF0dXMoeyB0aWNrZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiB0aWNrZXQub3duZXI/LmVtYWlsID8gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9PlxuICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTpcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLWFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge1wiIFwifVxuICAgICAgICB7dGlja2V0Lm93bmVyPy5lbWFpbH1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICB0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLXVuYXNzaWduZWRcIlxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXR0ZW5kZWVfc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICA8L3NwYW4+XG4gICAgKVxuICApO1xufVxuXG5BdHRlbmRlZVN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXR0ZW5kZWVTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyTGlzdEl0ZW0oe1xuICB0aWNrZXRzLFxuICB0b3RhbCxcbiAgb25QYWdpbmF0ZUNsaWNrLFxuICBzdW1taXQsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG4gIGNvbnN0IHNsaWNlZFRpY2tldHMgPSB0aWNrZXRzPy5zbGljZSgwLCBpdGVtc1RvRGlzcGxheSk7XG4gIGNvbnN0IG9uVmlld01vcmUgPSAoKSA9PiB7XG4gICAgaWYgKHRvdGFsID4gdGlja2V0cy5sZW5ndGgpIHtcbiAgICAgIG9uUGFnaW5hdGVDbGljaygpO1xuICAgIH1cbiAgICBzZXRJdGVtc1RvRGlzcGxheShpdGVtc1RvRGlzcGxheSArIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG4gIH07XG5cbiAgY29uc3Qgb25WaWV3TGVzcyA9ICgpID0+IHNldEl0ZW1zVG9EaXNwbGF5KFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NsaWNlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXshIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgICAge3RpY2tldHM/Lmxlbmd0aCA+PSBpdGVtc1RvRGlzcGxheSAmJiB0aWNrZXRzPy5sZW5ndGggIT09IHRvdGFsID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbW9yZSBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld01vcmV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSB0b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X2xlc3NcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgT3JkZXJOdW1iZXIgZnJvbSBcIi4vT3JkZXJOdW1iZXJcIjtcbmltcG9ydCB7IGdldFN1bW1pdFJlYXNzaWduRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4vQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBUaWNrZXREZXRhaWwgZnJvbSBcIi4uL1RpY2tldERldGFpbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgVGlja2V0UmVhc3NpZ24gZnJvbSBcIi4uL1RpY2tldFJlYXNzaWduXCI7XG5cbmNvbnN0IG1vZGFsVmlld3MgPSB7XG4gIGRldGFpbDogXCJERVRBSUxcIixcbiAgcmVhc3NpZ246IFwiUkVBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259PlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdGFja1xuICAgICAgc3g9e3tcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgIH19XG4gICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmRldGFpbCl9XG4gICAgICA+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MucmVhc3NpZ24pfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUsIGNhblJlYXNzaWduIH0gPVxuICAgIHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgW29wZW5UaWNrZXQsIHNldE9wZW5UaWNrZXRdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFttb2RhbE9wZW4sIHNldE1vZGFsT3Blbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgc2V0T3BlblRpY2tldChudWxsKTtcbiAgICBzZXRNb2RhbE9wZW4obnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3Blbk1vZGFsID0gKHZpZXcpID0+IHtcbiAgICBzZXRPcGVuVGlja2V0KHRpY2tldCk7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJXcmFwcGVyfVxuICAgICAgY29udGFpbmVyXG4gICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLWxpc3QtdGlja2V0XCJcbiAgICA+XG4gICAgICA8R3JpZFxuICAgICAgICB4cz17OH1cbiAgICAgICAgcGFkZGluZz17Mn1cbiAgICAgICAgaXRlbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICA+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICB7cmVmdW5kUmVxdWVzdGVkICYmIGlzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCB0aWNrZXQgY2hlY2tib3hcIlxuICAgICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2VsZWN0VG9SZWZ1bmQoZSwgdGlja2V0KX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezR9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgIHsvKiBUbyBhZGQgYmFkZ2UgZmVhdHVyZXMgKi99XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiAyLCBwYjogMiB9fSBpdGVtPlxuICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17dGlja2V0Lm51bWJlcn0gY29weSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPVwicm93XCIgeHM9ezEyfSBsZz17Nn0gYWxpZ25JdGVtcz1cImNlbnRlclwiIGl0ZW0+XG4gICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBwYWRkaW5nPXsyfSB4cz17MTJ9IGxnPXs2fSBjb250YWluZXIgaXRlbT5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGUgJiYgY2FuUmVhc3NpZ259XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICB0aWNrZXRJZD17b3BlblRpY2tldD8uaWR9XG4gICAgICAgIG9yZGVySWQ9e29wZW5UaWNrZXQ/Lm9yZGVyX2lkfVxuICAgICAgICBvd25lcklkPXtvcGVuVGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5kZXRhaWx9XG4gICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAvPlxuICAgICAgPFRpY2tldFJlYXNzaWduXG4gICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICB0aWNrZXRJZD17b3BlblRpY2tldD8uaWR9XG4gICAgICAgIG9yZGVySWQ9e29wZW5UaWNrZXQ/Lm9yZGVyX2lkfVxuICAgICAgICBvd25lcklkPXtvcGVuVGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5yZWFzc2lnbn1cbiAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgIC8+XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuT3JkZXJMaXN0VGlja2V0cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRvdGFsX3JlZnVuZGVkX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0aWNrZXRfdHlwZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KVxuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0VGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBDb250ZW50Q29weUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgZGVmYXVsdFdpZHRoID0gOTA7XG5cbmZ1bmN0aW9uIE9yZGVyTnVtYmVyKHtcbiAgbnVtYmVyLFxuICBjb3B5ID0gZmFsc2UsXG4gIHRydW5jYXRlZCA9IGZhbHNlLFxuICByZXZlcnNlZCA9IGZhbHNlLFxuICB3aWR0aCA9IGRlZmF1bHRXaWR0aFxufSkge1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy5vcmRlclRpY2tldE51bWJlclRydW5jYXRlZH0gJHtcbiAgICByZXZlcnNlZCAmJiBzdHlsZXMucmV2ZXJzZWRcbiAgfWA7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldE5vQ29udGFpbmVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHtudW1iZXJ9XG4gICAgICA8L3NwYW4+XG4gICAgICB7Y29weSAmJiAoXG4gICAgICAgIDxDb250ZW50Q29weUljb25cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChudW1iZXIpfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY29weS1udW1iZXItYnV0dG9uXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbk9yZGVyTnVtYmVyLnByb3BUeXBlcyA9IHtcbiAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJOdW1iZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IFRhYnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiO1xuaW1wb3J0IFRhYiBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJcIjtcbmltcG9ydCBPcmRlckxpc3RJdGVtIGZyb20gXCIuL09yZGVyTGlzdEl0ZW1cIjtcbmltcG9ydCBPcmRlclN1bW1hcnkgZnJvbSBcIi4uL09yZGVyU3VtbWFyeVwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RzTW9kYWwgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBUYWJQYW5lbChwcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSh7XG4gIGlzTW9iaWxlLFxuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIG9yZGVyLFxuICB0b3RhbCxcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG4gIGNvbnN0IFtyZWZ1bmRSZXF1ZXN0ZWQsIHNldFJlZnVuZFJlcXVlc3RlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFt0aWNrZXRzVG9SZWZ1bmQsIHNldFRpY2tldHNUb1JlZnVuZF0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtzdWJtaXRSZXF1ZXN0LCBzZXRTdWJtaXRSZXF1ZXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBvblJlZnVuZENsaWNrID0gKCkgPT4ge1xuICAgIGlmICh0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwKSB7XG4gICAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFN1Ym1pdFJlcXVlc3QodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCB1bnNlbGVjdFJlZnVuZFRpY2tldHMgPSAodGlja2V0KSA9PiB7XG4gICAgY29uc3QgZmlsdGVyU2VsZWN0ZWQgPSB0aWNrZXRzVG9SZWZ1bmQuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0aWNrZXQuaWQpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChmaWx0ZXJTZWxlY3RlZCk7XG4gIH07XG4gIGNvbnN0IHNlbGVjdFRvUmVmdW5kID0gKGUsIHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHsgY2hlY2tlZCB9ID0gZS50YXJnZXQ7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGlja2V0ID0gdGlja2V0cy5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpO1xuICAgICAgc2V0VGlja2V0c1RvUmVmdW5kKFsuLi50aWNrZXRzVG9SZWZ1bmQsIHNlbGVjdGVkVGlja2V0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cyh0aWNrZXQpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgY2FuY2VsVGlja2V0c1RvUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFJlZnVuZFJlcXVlc3RlZChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCBzZWxlY3RBbGxUaWNrZXRzID0gKCkgPT4ge1xuICAgIGNvbnN0IHJlZnVuZGFibGVUaWNrZXRzID0gdGlja2V0cy5maWx0ZXIoXG4gICAgICAodGlja2V0KSA9PiBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KSA9PT0gdHJ1ZVxuICAgICk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKHJlZnVuZGFibGVUaWNrZXRzKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFsbFJlZnVuZFN0YXR1c2VzID0gKCkgPT4ge1xuICAgIHNldFJlZnVuZFJlcXVlc3RlZChmYWxzZSk7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCBtb3JlRGV0YWlscyA9ICgpID0+XG4gICAgZGV0YWlsc1JlcXVpcmVkICYmIChcbiAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgIG1lc3NhZ2U9e3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19kZXRhaWxzX3JlcXVpcmVkXCIpfVxuICAgICAgICBjb2xvcj1cIiNmZjk4MDBcIlxuICAgICAgICBkYXRhVGVzdElkPVwibW9yZS1kZXRhaWxzLWxhYmVsXCJcbiAgICAgIC8+XG4gICAgKTtcblxuICByZXR1cm4gaXNNb2JpbGUgPyAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgIGRhdGEtdGVzdGlkPVwibW9iaWxlLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIHRleHRDb2xvcj1cIiMwMDBcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgICAgVGFiSW5kaWNhdG9yUHJvcHM9e3tcbiAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IFwiIzAwMFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMudGlja2V0c1wiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnN1bW1hcnlcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgIDwvVGFicz5cbiAgICAgIDwvQm94PlxuICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MH0+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdG90YWw9e3RvdGFsfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXsxfT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICB7cmVmdW5kUmVxdWVzdGVkICYmIChcbiAgICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICAgIDxzcGFuPnt0KFwidGlja2V0X3N0YXR1cy5zZWxlY3RfdGlja2V0X3JlZnVuZFwiKX08L3NwYW4+XG4gICAgICAgICAgPFN0YWNrXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kQnV0dG9uc31cbiAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsVGlja2V0c31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnNlbGVjdF9hbGxcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZEJ1dHRvbnN9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2NhbmNlbFRpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnNlbGVjdF9jYW5jZWxcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWRcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgaXRlbVxuICAgICAgICBtZD17N31cbiAgICAgICAgb3JkZXI9e3sgbWQ6IDEgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZXNrdG9wLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdG90YWw9e3RvdGFsfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17MX0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIG9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRzQnlPcmRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRPcmRlclRpY2tldHMsIGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJOdW1iZXIgZnJvbSBcIi4vT3JkZXJOdW1iZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuXG5mdW5jdGlvbiBPcmRlcnNMaXN0KHByb3BzKSB7XG4gIGNvbnN0IHsgc3VtbWl0LCBvcmRlciB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHBlcl9wYWdlLCBsYXN0X3BhZ2UsIG1lbWJlck9yZGVycyB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcbiAgY29uc3QgZmV0Y2hUaWNrZXRzQnlPcmRlciA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIGN1cnJlbnRfcGFnZTogbGFzdF9wYWdlLFxuICAgICAgICBwZXJQYWdlOiBwZXJfcGFnZVxuICAgICAgfSlcbiAgICApLmNhdGNoKChlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoVGlja2V0c0J5T3JkZXIoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHBlcl9wYWdlLFxuICAgICAgICBuZXh0OiB0cnVlXG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDEsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8T3JkZXJOdW1iZXIgbnVtYmVyPXtvcmRlci5udW1iZXJ9IGNvcHkgdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2lzTW9iaWxlICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBzeD17eyBwYWRkaW5nOiAwIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5ibGFja0J1dHRvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vYmlsZVZpZXdhYmxlKCFpc01vYmlsZVZpZXdhYmxlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNNb2JpbGVWaWV3YWJsZVxuICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmhpZGVfdGlja2V0c1wiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0c1wiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEdyaWRcbiAgICAgICAga2V5PXtvcmRlci5pZH1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHJvd1NwYWNpbmc9ezF9XG4gICAgICAgIGNvbHVtblNwYWNpbmc9e3sgeHM6IDEsIHNtOiAyLCBtZDogMyB9fVxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0gJHtcbiAgICAgICAgICBpc01vYmlsZSAmJiAhaXNNb2JpbGVWaWV3YWJsZSA/IHN0eWxlcy5kaXNwbGF5X25vbmUgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgICBzeD17e1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IHtcbiAgICAgICAgICAgIG1kOiBcInJvd1wiLFxuICAgICAgICAgICAgbGc6IFwicm93XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDAsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlXG4gICAgICAgICAgaXNNb2JpbGU9e2lzTW9iaWxlfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXtnZXRPcmRlclRpY2tldHMobWVtYmVyT3JkZXJzLCBvcmRlci5pZCl9XG4gICAgICAgICAgdG90YWw9e29yZGVyLnRpY2tldHNfdG90YWx9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXtkZXRhaWxzUmVxdWlyZWR9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBEZWxldGVPdXRsaW5lSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9EZWxldGVPdXRsaW5lXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlck51bWJlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQoeyB0aWNrZXQsIG9uUmVtb3ZlIH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3RlZC10aWNrZXQtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8R3JpZCB4cz17MTJ9IHBhZGRpbmc9ezJ9IGl0ZW0ganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIj5cbiAgICAgICAgPFN0YWNrXG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIlxuICAgICAgICAgIH19XG4gICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPERlbGV0ZU91dGxpbmVJY29uXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZW1vdmUtYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRlbGV0ZUljb259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblJlbW92ZSh0aWNrZXQpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17MTJ9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgIDxBdHRlbmRlZVN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8T3JkZXJOdW1iZXIgbnVtYmVyPXt0aWNrZXQubnVtYmVyfSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn1cblxuUmVmdW5kUmVxdWVzdGVkVGlja2V0LnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvblJlbW92ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RlZFRpY2tldDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uICwgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IE11bHRpU3RlcFNsaWRlciBmcm9tIFwiLi4vTXVsdGlTdGVwU2xpZGVyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyByZWZ1bmRCdWxrVGlja2V0cywgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBTVEVQX09ORSwgU1RFUF9UV08gfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFJlZnVuZFJlcXVlc3RzTW9kYWwoe1xuICB0aWNrZXRzLFxuICBvcGVuLFxuICBvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0cyxcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UsXG4gIG9uQ2xvc2VTbGlkZXJcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzdGVwLCBzZXRTdGVwXSA9IHVzZVN0YXRlKFNURVBfT05FKTtcbiAgY29uc3QgW2Vycm9yTXNnLCBzZXRFcnJvck1zZ10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW3JlZnVuZFN1Y2Nlc3MsIHNldFJlZnVuZFN1Y2Nlc3NdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgICBpZiAocmVmdW5kU3VjY2Vzcykge1xuICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UoKTsgLy8gaWYgdGhlIHJlZnVuZCBpcyBhIHN1Y2Nlc3MsIHRyaWdnZXIgYW5kIHJlLXJldHJpZXZlIHRpY2tldHMgYnkgb3JkZXJcbiAgICAgIHNldFJlZnVuZFN1Y2Nlc3MoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCByZWZ1bmRUaWNrZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlZnVuZEJ1bGtUaWNrZXRzKHsgdGlja2V0cyB9KSkudGhlbigocmVzKSA9PiB7XG4gICAgICBkaXNwYXRjaCh1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkKHJlcykpOyAvLyByZXR1cm5pbmcgd2hpY2ggdGlja2V0cyB3ZXJlIHN1Y2Nlc3NmdWxcbiAgICAgIGlmIChyZXM/Lmxlbmd0aCA9PT0gdGlja2V0cy5sZW5ndGgpIHtcbiAgICAgICAgc2V0U3RlcChTVEVQX1RXTyk7IC8vIHN1Y2Nlc3MsIGFsbCByZWZ1bmRzIHdlcmUgcmVxdWVzdGVkXG4gICAgICAgIHNldFJlZnVuZFN1Y2Nlc3ModHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvck1zZyh0KFwiZXJyb3JzLnJlZnVuZF91bnN1Y2Nlc3NmdWxcIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBPbmUgPSAoKSA9PiAoXG4gICAgPD5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRUZXh0fT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfY2FuY2VsXCIpfVxuICAgICAgPC9oMj5cbiAgICAgIHtlcnJvck1zZyAmJiAoXG4gICAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgICAgY2xhc3NOYW1lcz17c3R5bGVzLnJlZnVuZEVycm9yTXNnfVxuICAgICAgICAgIGNvbG9yPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgZGF0YVRlc3RJZD1cImZhaWxlZC1yZWZ1bmQtbWVzc2FnZVwiXG4gICAgICAgICAgbWVzc2FnZT17ZXJyb3JNc2d9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEJveD5cbiAgICAgICAge3RpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgb25SZW1vdmU9e29uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtyZWZ1bmRUaWNrZXRzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUd28gPSAoKSA9PiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kU3VjY2Vzc2Z1bH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiXG4gICAgPlxuICAgICAgPENoZWNrQ2lyY2xlSWNvbiBzeD17eyBjb2xvcjogXCIjNGNhZjUwXCIgfX0gLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2d9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18xXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZzJ9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18yXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWZpbmlzaC1idXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgPlxuICAgICAgICB7dChcImdlbmVyYWwuZmluaXNoXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyU3RlcHMgPSAoKSA9PiB7XG4gICAgc3dpdGNoIChzdGVwKSB7XG4gICAgICBjYXNlIFNURVBfT05FOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgICAgY2FzZSBTVEVQX1RXTzpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUd28oKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgIDxNdWx0aVN0ZXBTbGlkZXIgb3Blbj17b3Blbn0gb25DbG9zZVNsaWRlcj17Y2xvc2VTbGlkZXJ9PlxuICAgICAgICA8Qm94XG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kSGVhZGVyc31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LW1vZGFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoMz57dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9PC9oMz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIHtyZW5kZXJTdGVwcygpfVxuICAgICAgPC9NdWx0aVN0ZXBTbGlkZXI+XG4gICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgKTtcbn1cblxuUmVmdW5kUmVxdWVzdHNNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheVxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdHNNb2RhbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSwgRHJhd2VyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IENsb3NlIGFzIENsb3NlSWNvbiB9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJpZ2h0RHJhd2VyID0gKHtcbiAgaWQsXG4gIHRpdGxlLFxuICBzdWJ0aXRsZSxcbiAgaGVhZGVyTm90ZSxcbiAgY2hpbGRyZW4sXG4gIG9wZW4sXG4gIG9uQ2xvc2UsXG4gIGNsYXNzTmFtZVxufSkgPT4gKFxuICA8RHJhd2VyXG4gICAgaWQ9e2lkfVxuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy53cmFwcGVyfSAke2NsYXNzTmFtZX1gfVxuICA+XG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPEljb25CdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgIHt0aXRsZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHtzdWJ0aXRsZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfT5cbiAgICAgICAge2hlYWRlck5vdGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICAge2NoaWxkcmVufVxuICA8L0RyYXdlcj5cbik7XG5cblJpZ2h0RHJhd2VyLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGl0bGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5ub2RlXSksXG4gIHN1YnRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBoZWFkZXJOb3RlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSaWdodERyYXdlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgQXV0b2NvbXBsZXRlLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENvbXBhbnlGaWVsZCA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGlzUmVxdWlyZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbb3B0aW9ucywgc2V0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIHNldEZpZWxkVG91Y2hlZCwgc2V0RmllbGRWYWx1ZSB9ID0gZm9ybWlrO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueTtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU7XG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi50aXRsZVxuICAgICAgICApO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICByZW5kZXJPcHRpb249eyhwcm9wcywgb3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCAuLi5vcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgICA8bGkga2V5PXtrZXl9IHsuLi5vcHRpb25Qcm9wc30+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNvbXBhbnlGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21wYW55RmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuY29uc3QgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyA9ICh7IGZvcm1payB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9maXJzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmZpcnN0X25hbWVcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgaWQ9XCJkZWxlZ2F0ZWRfbGFzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZX1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9sYXN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2xhc3RfbmFtZSAmJlxuICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGVsZWdhdGlvbkZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0VHlwZVZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcblxuaW1wb3J0IFRpY2tldERlbGVnYXRpb25GaWVsZHMgZnJvbSBcIi4uL1RpY2tldERlbGVnYXRpb25GaWVsZHNcIjtcbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdGlja2V0TWFuYWdlciA9IHRpY2tldD8ubWFuYWdlcjtcbiAgLyogRElTQUJMRSBERUxFR0FUSU9OIEZUTSAqL1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0aW9uID0gdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlICYmIGZhbHNlO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUsIGFucy5xdWVzdGlvbi5pZCk7XG4gICAgcmVzW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsdWUoYW5zLnZhbHVlLCBhbnMucXVlc3Rpb24udHlwZSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSwge30pO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgdGlja2V0TWFuYWdlcixcbiAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICB0cnVlLFxuICAgICAgdHJ1ZVxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgdHJ1ZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgdGlja2V0TWFuYWdlcixcbiAgICAgICAgYWxsb3dzRGVsZWdhdGlvbixcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1paywgXCJkZXRhaWxzRHJhd2VyXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIG93bmVyPXt0aWNrZXQub3duZXJ9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHthbGxvd3NEZWxlZ2F0aW9uICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgdmFyaWFudD1cInN1YnRpdGxlMlwiXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRlbGVnYXRlZFRvfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kZWxlZ2F0ZWRfdG9cIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxUaWNrZXREZWxlZ2F0aW9uRmllbGRzIGZvcm1paz17Zm9ybWlrfSAvPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPGg2IGNsYXNzTmFtZT17c3R5bGVzLmFkZGl0aW9uYWxEZXRhaWxzfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hZGl0aW9uYWxfZGV0YWlsc1wiKX1cbiAgICAgICAgICA8L2g2PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgIC8+XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICl9XG4gICAgICA8Q29tcGFueUZpZWxkIGZvcm1paz17Zm9ybWlrfSBzdW1taXRJZD17c3VtbWl0SWR9IGlzUmVxdWlyZWQgLz5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaW5mb05vdGV9Pnt0KFwidGlja2V0X2RldGFpbC5pbmZvX25vdGVcIil9PC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRPd25lckZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIERyYXdlciwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBDbG9zZSBhcyBDbG9zZUljb24sXG4gIEZpbGVEb3dubG9hZE91dGxpbmVkIGFzIERvd25sb2FkSWNvbixcbiAgRW1haWxPdXRsaW5lZCBhcyBFbWFpbEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlck51bWJlclwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgVGlja2V0Rm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRUaWNrZXQsIHNhdmVUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWwgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9LFxuICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgIGN1cnJlbnRUaWNrZXQ6IHRpY2tldFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IGlzVXNlck9yZGVyT3duZXIgPSB0aWNrZXQ/Lm9yZGVyPy5vd25lcl9pZCA9PT0gdXNlclByb2ZpbGU/LmlkO1xuICBjb25zdCBpc1VzZXJUaWNrZXRPd25lciA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyUHJvZmlsZT8uZW1haWw7XG4gIGNvbnN0IGNhbkVkaXRUaWNrZXREYXRhID1cbiAgICAoaXNVc2VyVGlja2V0T3duZXIgfHwgaXNVc2VyT3JkZXJPd25lcikgJiZcbiAgICBzdW1taXQuYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucztcbiAgY29uc3QgeyBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3Qgb25TYXZlID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlVGlja2V0RGV0YWlscyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX2Vycm9yXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlU2F2ZU1lc3NhZ2UgPSAoKSA9PiB7XG4gICAgc2V0U2F2ZU1lc3NhZ2UobnVsbCk7XG4gICAgc2V0VGltZW91dChvbkNsb3NlLCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRpY2tldElkICYmIG9yZGVySWQgJiYgb3duZXJJZCkge1xuICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgICAgZGlzcGF0Y2goZ2V0VGlja2V0KHRpY2tldElkLCBvcmRlcklkKSk7XG4gICAgfVxuICB9LCBbdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RHJhd2VyXG4gICAgICAgIGlkPVwiZGV0YWlsc0RyYXdlclwiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg0XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3duZXI/LmVtYWlsfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IFwiYXV0b1wiLCBtYXhXaWR0aDogXCIxMDAlXCIsIHdpZHRoOiBcIjEwMCVcIiB9fVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpY2tldC5xcl9jb2RlfVxuICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgeyFzdW1taXQ/LmlzX3ZpcnR1YWwgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5zZW5kQnRufT5cbiAgICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5zZW5kXCIpfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgICAgIDxPcmRlck51bWJlclxuICAgICAgICAgICAgICBudW1iZXI9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgICAgY29weVxuICAgICAgICAgICAgICB0cnVuY2F0ZWRcbiAgICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgICAgd2lkdGg9ezE1MH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvQm94PlxuXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIGNhbkVkaXQ9e2NhbkVkaXRUaWNrZXREYXRhfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBSZWFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogXCJcIixcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyhcIkVudGVyIGF0dGVuZGVlIGVtYWlsXCIpXG4gICAgICAgIC5lbWFpbChcIk11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzXCIpXG4gICAgICAgIC5yZXF1aXJlZChcIk5ldyBhdHRlbmRlZSBlbWFpbCBpcyByZXF1aXJlZFwiKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcoXCJFbnRlciB0ZXh0XCIpXG4gICAgfSksXG4gICAgb25TdWJtaXRcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9XCJuZXdfYXR0ZW5kZWVfZW1haWxcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5uZXdfYXR0ZW5kZWVfZW1haWxcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLm5ld19hdHRlbmRlZV9lbWFpbH1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbFxuICAgICAgICB9XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT1cInBlcnNvbmFsX21lc3NhZ2VcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wZXJzb25hbF9tZXNzYWdlfVxuICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgbWluUm93cz17NH1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5jYW5jZWxcIil9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgLz5cbiAgICA8L2Zvcm0+XG4gICk7XG59O1xuXG5SZWFzc2lnbkZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25Gb3JtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIGdldEV4dHJhUXVlc3Rpb25zLFxuICBnZXRUaWNrZXQsXG4gIHJlYXNzaWduVGlja2V0LFxuICBzYXZlRXh0cmFRdWVzdGlvbnNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSZWFzc2lnbkZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9SZWFzc2lnbkZvcm1cIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcblxuaW1wb3J0IEFzc2lnbkVRRm9ybSBmcm9tIFwiLi4vQXNzaWduRVFGb3JtXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldFJlYXNzaWduID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3RpY2tldFJlYXNzaWduZWQsIHNldFRpY2tldFJlYXNzaWduZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB7IGN1cnJlbnRUaWNrZXQ6IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGVcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkICYmIG93bmVySWQpIHtcbiAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkXSk7XG5cbiAgY29uc3Qgb25SZWFzc2lnbiA9ICh2YWwpID0+IHtcbiAgICBjb25zdCB7IG5ld19hdHRlbmRlZV9lbWFpbCwgcGVyc29uYWxfbWVzc2FnZSB9ID0gdmFsO1xuICAgIHJldHVybiBkaXNwYXRjaChcbiAgICAgIHJlYXNzaWduVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBuZXdfYXR0ZW5kZWVfZW1haWwsIHBlcnNvbmFsX21lc3NhZ2UpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFRpY2tldFJlYXNzaWduZWQodHJ1ZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRUaWNrZXRSZWFzc2lnbmVkKGZhbHNlKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpY2tldFJlYXNzaWduZWQoZmFsc2UpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBvblNhdmVFUSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZUV4dHJhUXVlc3Rpb25zKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9yZWFzc2lnbi5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9yZWFzc2lnbi5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9yZWFzc2lnbi5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGdldExhYmVscyA9ICgpID0+IHtcbiAgICBpZiAodGlja2V0UmVhc3NpZ25lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24ucmVhc3NpZ25fdGlja2V0XCIpLFxuICAgICAgICBzdWJ0aXRsZTogYCR7dChcInRpY2tldF9yZWFzc2lnbi5yZWFzc2lnbmVkX3RvXCIpfSAke1xuICAgICAgICAgIHRpY2tldD8ub3duZXI/LmVtYWlsXG4gICAgICAgIH1gLFxuICAgICAgICBoZWFkZXJOb3RlOiB0KFwidGlja2V0X3JlYXNzaWduLmNvbXBsZXRlX2luZm9cIilcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0KFwidGlja2V0X3JlYXNzaWduLnJlYXNzaWduX3RpY2tldFwiKSxcbiAgICAgIHN1YnRpdGxlOiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfcmVhc3NpZ24uYXNzaWduZWRfdG9cIil9XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAge3RpY2tldD8ub3duZXI/LmVtYWlsfVxuICAgICAgICA8Lz5cbiAgICAgICksXG4gICAgICBoZWFkZXJOb3RlOiB0KFwidGlja2V0X3JlYXNzaWduLmVudGVyX2VtYWlsX25vdGVcIilcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IHsgdGl0bGUsIHN1YnRpdGxlLCBoZWFkZXJOb3RlIH0gPSBnZXRMYWJlbHMoKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWFzc2lnbkRyYXdlclwiXG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgc3VidGl0bGU9e3N1YnRpdGxlfVxuICAgICAgICBoZWFkZXJOb3RlPXtoZWFkZXJOb3RlfVxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRSZWFzc2lnbkNvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aWNrZXQ/LnR5cGU/Lm5hbWV9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIHt0aWNrZXQgJiYgIXRpY2tldFJlYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPFJlYXNzaWduRm9ybVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblJlYXNzaWdufVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHt0aWNrZXQgJiYgdGlja2V0UmVhc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QXNzaWduRVFGb3JtXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlRVF9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9SaWdodERyYXdlcj5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFzYXZlTWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZVNhdmVNZXNzYWdlfVxuICAgICAgICB0aXRsZT17c2F2ZU1lc3NhZ2U/LnRpdGxlfVxuICAgICAgICBkZXNjcmlwdGlvbj17c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldFJlYXNzaWduLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFJlYXNzaWduO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHtyZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyByZWZ1bmQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzSW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBpbmNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc1VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgdW5hc3NpZ25lZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZFJlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU21vb3RoIHNjcm9sbGluZyBmdW5jdGlvbiB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbmZ1bmN0aW9uIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgdGFyZ2V0U2Nyb2xsVG9wLCBkdXJhdGlvbikge1xuICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0U2Nyb2xsVG9wIC0gc3RhcnRTY3JvbGxUb3A7XG4gIGxldCBzdGFydFRpbWUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGFuaW1hdGlvblN0ZXAodGltZXN0YW1wKSB7XG4gICAgaWYgKCFzdGFydFRpbWUpIHN0YXJ0VGltZSA9IHRpbWVzdGFtcDtcbiAgICBjb25zdCBlbGFwc2VkID0gdGltZXN0YW1wIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKGVsYXBzZWQgLyBkdXJhdGlvbiwgMSk7XG4gICAgY29uc3QgZWFzZUluT3V0UXVhZCA9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgcHJvZ3Jlc3MgPCAwLjUgPyAyICogcHJvZ3Jlc3MgKiogMiA6IDEgLSAoLTIgKiBwcm9ncmVzcyArIDIpICoqIDIgLyAyO1xuXG4gICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wICsgZGlzdGFuY2UgKiBlYXNlSW5PdXRRdWFkO1xuXG4gICAgaWYgKGVsYXBzZWQgPCBkdXJhdGlvbikge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbn1cblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWssIGNvbnRhaW5lcklkKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBpc1N1Ym1pdHRpbmcgfSA9IGZvcm1paztcbiAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gIGNvbnN0IGVycm9yQ291bnQgPSBlcnJvckFycmF5Lmxlbmd0aDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkIHx8IGVycm9yQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIC8vIHNvcnQgZWxlbWVudHMgYnkgcG9zaXRpb25cbiAgICBjb25zdCBlbGVtZW50c1NvcnRlZCA9IGVycm9yQXJyYXlcbiAgICAgIC5tYXAoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgcmV0dXJuIHsgZWxlbWVudCwgZXJyb3IsIHRvcDogZWxSZWN0LnRvcCB9O1xuICAgICAgfSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnRvcCAtIGIudG9wKTtcblxuICAgIGlmIChlbGVtZW50c1NvcnRlZC5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50XG4gICAgICAuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVySWQpXG4gICAgICAucXVlcnlTZWxlY3RvcihcIi5NdWlEcmF3ZXItcGFwZXJcIik7XG4gICAgY29uc3QgdGFyZ2V0ID0gZWxlbWVudHNTb3J0ZWRbMF07XG5cbiAgICBpZiAoY29udGFpbmVyLmNvbnRhaW5zKHRhcmdldC5lbGVtZW50KSkge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdldCBlbGVtZW50IHJlbGF0aXZlIHRvIHRoZSBjb250YWluZXJcbiAgICAgIGNvbnN0IGVsZW1PZmZlc3QgPSAxMDA7XG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IDUwMDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XG4gICAgICAgIHRhcmdldC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSBlbGVtT2ZmZXN0O1xuXG4gICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byB0aGUgdGFyZ2V0IGVsZW1lbnQncyBwb3NpdGlvblxuICAgICAgc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCBzY3JvbGxUb3AsIGFuaW1hdGlvbkR1cmF0aW9uKTsgLy8gNTAwbXMgZHVyYXRpb25cbiAgICB9XG4gIH0sIFtpc1N1Ym1pdHRpbmddKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcm9sbFRvRXJyb3I7XG4iLCJpbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiQ29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiSW5jb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIkNhbmNlbGxlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJVbmFzc2lnbmVkXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWNrZXREZXRhaWxzID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBnZXRTdGF0dXMgPSAoKSA9PiB7XG4gICAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcbiAgICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG4gICAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuICAgIHJldHVybiB0aWNrZXQub3duZXIuc3RhdHVzO1xuICB9O1xuXG4gIGlmICghdGlja2V0KSByZXR1cm4ge307XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMgIT09IFNUQVRVU19DQU5DRUxMRUQ7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpO1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgKHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSB8fFxuICAgICAgdGlja2V0Py5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGUpICYmXG4gICAgc3RhdHVzICE9PSBTVEFUVVNfVU5BU1NJR05FRCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXI/LmlkICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCBjYW5SZWFzc2lnbiA9ICFpc1VuYXNzaWduZWQgJiYgdGlja2V0LnRpY2tldF90eXBlLmFsbG93c190b19yZWFzc2lnbiAmJiAoIXRpY2tldC5wcm9tb19jb2RlIHx8IHRpY2tldC5wcm9tb19jb2RlLmFsbG93c190b19yZWFzc2lnbik7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZSxcbiAgICBjYW5SZWFzc2lnblxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVCxcbiAgQVNTSUdOX1RJQ0tFVFxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICBleHRyYVF1ZXN0aW9uczogW10sXG4gIGN1cnJlbnRUaWNrZXQ6IG51bGwsXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBpc09yZGVyTG9hZGluZzogZmFsc2UsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDEsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAxLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAxLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICAgIHJldHVybiBERUZBVUxUX1NUQVRFO1xuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLnBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4ubWVtYmVyT3JkZXJzLCAuLi5kYXRhXSxcbiAgICAgICAgb3JkZXJzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLmZvcm1lck9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRVxuICAgICAgICAgICAgPyBkYXRhXG4gICAgICAgICAgICA6IFsuLi5mb3JtZXJPcmRlci5tZW1iZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdGlja2V0c19wYWdlX2xhc3Q6IGxhc3RfcGFnZSxcbiAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkID0gcGF5bG9hZDtcbiAgICAgIGNvbnN0IG9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoXG4gICAgICAgIChvKSA9PiBvLmlkID09PSB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkWzBdPy5vcmRlcl9pZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHMubWFwKFxuICAgICAgICAodGlja2V0KSA9PlxuICAgICAgICAgIHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQuZmluZCgodHJyKSA9PiB0cnIuaWQgPT09IHRpY2tldC5pZCkgfHwgdGlja2V0XG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5vcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czogdXBkYXRlZFRpY2tldHNcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBBU1NJR05fVElDS0VUOlxuICAgIGNhc2UgUkVDRUlWRV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldCA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0IH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBleHRyYVF1ZXN0aW9uczogZGF0YSB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IG9yZGVyLm1lbWJlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICBpZiAodGlja2V0LmlkID09PSB0aWNrZXREYXRhLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGlja2V0RGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRpY2tldDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHtcbiAgY2xpZW50SWQsXG4gIGxvZ2luVXJsLFxuICBzdW1taXQsXG4gIGFwaUJhc2VVcmwsXG4gIHVwZGF0ZVByb2ZpbGVcbn0pID0+IHtcbiAgLy8gdG8gYWRkIG90aGVyIHJlZHVjZXJzIGxhdGVyXG4gIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAgICB3aWRnZXRTdGF0ZTogV2lkZ2V0UmVkdWNlclxuICB9KTtcblxuICBjb25zdCBzdG9yZSA9IGNvbmZpZ3VyZVN0b3JlKHtcbiAgICByZWR1Y2VyOiBwZXJzaXN0UmVkdWNlcihcbiAgICAgIHtcbiAgICAgICAga2V5OiBgcm9vdF9teV9vcmRlcnNfdGlja2V0c18ke2NsaWVudElkfWAsXG4gICAgICAgIHN0b3JhZ2VcbiAgICAgIH0sXG4gICAgICByZWR1Y2Vyc1xuICAgICksXG4gICAgbWlkZGxld2FyZTogKGdldERlZmF1bHRNaWRkbGV3YXJlKSA9PlxuICAgICAgZ2V0RGVmYXVsdE1pZGRsZXdhcmUoe1xuICAgICAgICB0aHVuazoge1xuICAgICAgICAgIGV4dHJhQXJndW1lbnQ6IHtcbiAgICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgICAgYXBpQmFzZVVybCxcbiAgICAgICAgICAgIHN1bW1pdCxcbiAgICAgICAgICAgIGxvZ2luVXJsLFxuICAgICAgICAgICAgdXBkYXRlUHJvZmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW1tdXRhYmxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICBzZXJpYWxpemFibGVDaGVjazoge1xuICAgICAgICAgIGlnbm9yZWRBY3Rpb25zOiBbRkxVU0gsIFJFSFlEUkFURSwgUEFVU0UsIFBFUlNJU1QsIFBVUkdFLCBSRUdJU1RFUl1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRTdG9yZSA9IChjb25maWcpID0+IHtcbiAgY29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IGdldFN0b3JlKGNvbmZpZyksIFtdKTtcbiAgY29uc3QgcGVyc2lzdG9yID0gdXNlTWVtbygoKSA9PiBwZXJzaXN0U3RvcmUoc3RvcmUpLCBbc3RvcmVdKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JlLFxuICAgIHBlcnNpc3RvclxuICB9O1xufTtcbiIsImltcG9ydCB7XG4gIGluaXRMb2dPdXQsXG4gIGdldEFjY2Vzc1Rva2VuXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY2Vzc1Rva2VuKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdlOjogZ2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICBpbml0TG9nT3V0KCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gIH1cbn07XG4iLCJleHBvcnQgY29uc3QgTEFTVF9IT1VSX09GXzI0X0hPVVIgPSAyMztcbmV4cG9ydCBjb25zdCBMQVNUX01JTlVURV9PRl9IT1VSID0gNTk7XG5leHBvcnQgY29uc3QgT05FX1BBR0VfTkVYVCA9IDE7XG5leHBvcnQgY29uc3QgTUlMTElTRUNfVE9fU0VDID0gMTAwMDtcbmV4cG9ydCBjb25zdCBPTkVfREFZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gNTtcbmV4cG9ydCBjb25zdCBGSVJTVF9QQUdFID0gMTtcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgPSA1O1xuZXhwb3J0IGNvbnN0IFNURVBfT05FID0gMTtcbmV4cG9ydCBjb25zdCBTVEVQX1RXTyA9IDI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIlNUQVRVU19DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJTVEFUVVNfSU5DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QRU5ESU5HID0gXCJTVEFUVVNfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIlNUQVRVU19DQU5DRUxMRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfRVJST1IgPSBcIlNUQVRVU19FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QUk9DRVNTSU5HID0gXCJTVEFUVVNfUFJPQ0VTU0lOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJTVEFUVVNfVU5BU1NJR05FRFwiO1xuXG5leHBvcnQgY29uc3QgSkVTVF9USU1FT1VUX0lOX01JTExJU0VDID0gMTAwMDA7XG5cbmV4cG9ydCBjb25zdCBPTkVfSVRFTSA9IDE7XG5leHBvcnQgY29uc3QgVFdPX0lURU0gPSAyO1xuZXhwb3J0IGNvbnN0IEZJVkVfSVRFTSA9IDU7XG5leHBvcnQgY29uc3QgU0lYX0lURU0gPSA2O1xuXG5leHBvcnQgY29uc3QgUFJPTUlTRV9CQVRDSF9MSU1JVCA9IDEwO1xuZXhwb3J0IGNvbnN0IEZJRlRZX1BFUl9QQUdFID0gNTA7XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCB8fCAhdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBPTkVfREFZIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRQYXN0ID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCByZWFzc2lnbl9kYXRlID1cbiAgICBzdW1taXQ/LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgICAgOiBzdW1taXQuZW5kX2RhdGU7XG5cbiAgcmV0dXJuIG5vdyA+IHJlYXNzaWduX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRTdGFydGVkID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnN0YXJ0X2RhdGUgPCBub3c7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0RGF5c0RpZmYgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc3RhcnREYXkgPSBtb21lbnQoc3VtbWl0LnN0YXJ0X2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZW5kRGF5ID0gbW9tZW50KHN1bW1pdC5lbmRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzID0gZW5kRGF5Py5kaWZmKHN0YXJ0RGF5LCBcImRheXNcIik7XG4gIHJldHVybiB7XG4gICAgc3RhcnREYXksXG4gICAgZW5kRGF5LFxuICAgIGRheXNcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRGb3JtYXR0ZWREYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHsgc3RhcnREYXksIGVuZERheSwgZGF5cyB9ID0gZ2V0U3VtbWl0RGF5c0RpZmYoc3VtbWl0KTtcbiAgaWYgKCFzdGFydERheSB8fCAhZW5kRGF5KSByZXR1cm4gbnVsbDtcbiAgbGV0IGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBsZXQgZm9ybWF0RW5kRGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBpZiAoc3RhcnREYXkueWVhcigpID09PSBlbmREYXkueWVhcigpKSBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gRERcIjtcbiAgaWYgKHN0YXJ0RGF5Lm1vbnRoKCkgPT09IGVuZERheS5tb250aCgpKSBmb3JtYXRFbmREYXRlID0gXCJERCwgWVlZWVwiO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHN0YXJ0RGF5LmZvcm1hdChmb3JtYXRTdGFydERhdGUpO1xuICBjb25zdCBlbmREYXRlID0gZW5kRGF5LmZvcm1hdChmb3JtYXRFbmREYXRlKTtcblxuICBpZiAoZGF5cyA+IE9ORV9EQVkpIHJldHVybiBgJHtzdGFydERhdGV9IC0gJHtlbmREYXRlfWA7XG5cbiAgcmV0dXJuIHN0YXJ0RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRMb2NhdGlvbiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gc3VtbWl0LmxvY2F0aW9ucz8uZmluZChcbiAgICAobCkgPT4gbC5jbGFzc19uYW1lID09PSBcIlN1bW1pdFZlbnVlXCIgJiYgbC5pc19tYWluID09PSB0cnVlXG4gICk7XG5cbiAgaWYgKCFsb2NhdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIGAke2xvY2F0aW9uLmNpdHl9LCAke2xvY2F0aW9uLmNvdW50cnl9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRSZWFzc2lnbkRhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTdW1taXREZXRhaWxzID0gKHsgc3VtbWl0IH0pID0+IHtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG5cbiAgaWYgKCFzdW1taXQpIHJldHVybiB7fTtcblxuICBjb25zdCBsb2NhdGlvbiA9IGdldFN1bW1pdExvY2F0aW9uKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUgPSBtb21lbnQudHooXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lID0gZ2V0U3VtbWl0RGF5c0RpZmYoXG4gICAgbm93LFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy5uYW1lXG4gICk7XG5cbiAgY29uc3QgaXNQYXN0ID0gY2hlY2tTdW1taXRQYXN0KHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNTdGFydGVkID0gY2hlY2tTdW1taXRTdGFydGVkKHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBzdW1taXQ/Lm5hbWUsXG4gICAgbm93LFxuICAgIGxvY2F0aW9uLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIGZvcm1hdHRlZFJlYXNzaWduRGF0ZSxcbiAgICBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lLFxuICAgIGlzUGFzdCxcbiAgICBpc1N0YXJ0ZWQsXG4gICAgaXNSZWFzc2lnbmFibGVcbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7XG4gIFNUQVRVU19DQU5DRUxMRUQsXG4gIFNUQVRVU19DT01QTEVURSxcbiAgU1RBVFVTX0lOQ09NUExFVEUsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IHRpY2tldD8ucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIik7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBcIkZpZWxkIG11c3QgYmUgY2hlY2tlZFwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoaXNSZXF1aXJlZCkge1xuICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFuc3dlcnMgPSAoXG4gIG93bmVyLFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYW5zd2VycyxcbiAgbWFuYWdlcixcbiAgaW5jbHVkZURlbGVnYXRpb24sXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGluY2x1ZGVEaXNjbGFpbWVyLFxuICBvbmx5UmVsZXZhbnQgPSBmYWxzZVxuKSA9PiB7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdIHx8IG93bmVyLmVtYWlsO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZTtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSB8fCBvd25lci5sYXN0X25hbWU7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldIHx8IG93bmVyLmNvbXBhbnk7XG4gIH1cblxuICBpZiAoaW5jbHVkZURpc2NsYWltZXIpIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkO1xuICB9XG5cbiAgaWYgKGluY2x1ZGVEZWxlZ2F0aW9uKSB7XG4gICAgaW5pdGlhbFZhbHVlcy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSA9XG4gICAgICBhbnN3ZXJzLmRlbGVnYXRlZF9maXJzdF9uYW1lIHx8IG1hbmFnZXI/LmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzLmRlbGVnYXRlZF9sYXN0X25hbWUgPVxuICAgICAgYW5zd2Vycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lIHx8IG1hbmFnZXI/Lmxhc3RfbmFtZSB8fCBcIlwiO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoXG4gICAgICAgICAgcnVsZS5zdWJfcXVlc3Rpb24ubmFtZSxcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5pZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdWJBbnN3ZXIgPSBhbnN3ZXJzW3N1YlF1ZXN0aW9uU2x1Z107XG4gICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuXG4gICAgICAgIGlmICghb25seVJlbGV2YW50IHx8IG1hdGNoKSB7XG4gICAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICAgIHN1YkFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHJ1bGUuc3ViX3F1ZXN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFZhbGlkYXRpb25TY2hlbWEgPSAoXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBhbGxvd3NEZWxlZ2F0aW9uLFxuICBkaXNjbGFpbWVyTWFuZGF0b3J5XG4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgZW1haWxcIilcbiAgICAgIC5lbWFpbChcIkVtYWlsIGludmFsaWRcIilcbiAgICAgIC5yZXF1aXJlZChcIkVtYWlsIGlzIHJlcXVpcmVkXCIpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgZmlyc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiRmlyc3QgbmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgbGFzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJMYXN0IG5hbWUgaXMgcmVxdWlyZWRcIik7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID0geXVwLmxhenkoKHZhbHVlKSA9PlxuICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiXG4gICAgICAgID8geXVwXG4gICAgICAgICAgICAub2JqZWN0KClcbiAgICAgICAgICAgIC5yZXF1aXJlZChcIkNvbXBhbnkgaXMgcmVxdWlyZWRcIilcbiAgICAgICAgICAgIC50eXBlRXJyb3IoXCJSZXF1aXJlZCBmaWVsZFwiKVxuICAgICAgICA6IHl1cC5zdHJpbmcoKS5yZXF1aXJlZChcIkNvbXBhbnkgaXMgcmVxdWlyZWRcIilcbiAgICApO1xuICB9XG5cbiAgaWYgKGRpc2NsYWltZXJNYW5kYXRvcnkpIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9IHl1cFxuICAgICAgLmJvb2woKVxuICAgICAgLm9uZU9mKFt0cnVlXSwgXCJGaWVsZCBtdXN0IGJlIGNoZWNrZWRcIik7XG4gIH1cblxuICBpZiAoYWxsb3dzRGVsZWdhdGlvbikge1xuICAgIHNjaGVtYS5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSA9IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGZpcnN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkZpcnN0IG5hbWUgaXMgcmVxdWlyZWRcIik7XG5cbiAgICBzY2hlbWEuZGVsZWdhdGVkX2xhc3RfbmFtZSA9IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGxhc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiTGFzdCBuYW1lIGlzIHJlcXVpcmVkXCIpO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24ocS50eXBlLCBxLm5hbWUsIHEubWFuZGF0b3J5KTtcblxuICAgIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvbiA9IHJ1bGUuc3ViX3F1ZXN0aW9uO1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViUXVlc3Rpb24ubmFtZSwgc3ViUXVlc3Rpb24uaWQpO1xuICAgICAgICBzY2hlbWFbc3ViUXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLnR5cGUsXG4gICAgICAgICAgc3ViUXVlc3Rpb24ubmFtZSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApXG4gICAgICAgICAgLm51bGxhYmxlKClcbiAgICAgICAgICAud2hlbihxdWVzdGlvblNsdWcsIHtcbiAgICAgICAgICAgIGlzOiAocXVlc3Rpb25BbnMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChxdWVzdGlvbkFucywgcnVsZS5hbnN3ZXJfdmFsdWVzKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoZW46IChzY2gpID0+IHNjaC5yZXF1aXJlZChcIlRoaXMgcXVlc3Rpb24gaXMgcmVxdWlyZWRcIilcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZV9fX1JvaW1SXCI7XG52YXIgXzIgPSBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lcl9fX29vSTBWXCI7XG52YXIgXzMgPSBcImNhbGVuZGFyRGlzcGxheV9fX2ltX2poXCI7XG52YXIgXzQgPSBcImNvbnRhaW5lcl9fX04zWTRYXCI7XG52YXIgXzUgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19KVzJsT1wiO1xudmFyIF82ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19WOWdIQ1wiO1xudmFyIF83ID0gXCJmaWx0ZXJDb250YWluZXJfX19yR3BZVlwiO1xudmFyIF84ID0gXCJmaWx0ZXJEYXRlTGFiZWxfX19pZkQ0cFwiO1xudmFyIF85ID0gXCJmaWx0ZXJJY29uX19fbDIxS0lcIjtcbnZhciBfYSA9IFwiZmlsdGVyTGFiZWxfX19fUDB3blwiO1xudmFyIF9iID0gXCJmaWx0ZXJMaXN0Q29udGFpbmVyX19fVm1kR3FcIjtcbnZhciBfYyA9IFwiZmlsdGVyTnVtQWN0aXZlX19fVnVIQ0pcIjtcbnZhciBfZCA9IFwiZmlsdGVyU29ydENvbnRhaW5lcl9fX2FyQnZRXCI7XG52YXIgX2UgPSBcImxhYmVsX19feU5GeWpcIjtcbnZhciBfZiA9IFwic2hvd0RhdGVQaWNrZXJfX19VcFFicFwiO1xudmFyIF8xMCA9IFwic29ydENvbnRhaW5lcl9fX2xSc2pVXCI7XG52YXIgXzExID0gXCJzb3J0SWNvbl9fX2ZWVjVLXCI7XG52YXIgXzEyID0gXCJzb3J0TGFiZWxfX19VcUxUQ1wiO1xudmFyIF8xMyA9IFwic29ydExpc3RDb250YWluZXJfX19jbW5CRFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lXCIsIF8yIGFzIFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyXCIsIF8zIGFzIFwiY2FsZW5kYXJEaXNwbGF5XCIsIF80IGFzIFwiY29udGFpbmVyXCIsIF81IGFzIFwiZGF0ZVBpY2tlckNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVwaWNrZXJDbG9zZVwiLCBfNyBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfOCBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfOSBhcyBcImZpbHRlckljb25cIiwgX2EgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfYiBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2MgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2QgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF9lIGFzIFwibGFiZWxcIiwgX2YgYXMgXCJzaG93RGF0ZVBpY2tlclwiLCBfMTAgYXMgXCJzb3J0Q29udGFpbmVyXCIsIF8xMSBhcyBcInNvcnRJY29uXCIsIF8xMiBhcyBcInNvcnRMYWJlbFwiLCBfMTMgYXMgXCJzb3J0TGlzdENvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjYW5jZWxCdG5fX19xRGV4aFwiO1xudmFyIF8yID0gXCJmb290ZXJfX19TTjcweVwiO1xudmFyIF8zID0gXCJzYXZlQnRuX19fbmJVNmNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2FuY2VsQnRuXCIsIF8yIGFzIFwiZm9vdGVyXCIsIF8zIGFzIFwic2F2ZUJ0blwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJlcnJvckxhYmVsX19fbm9jeVhcIjtcbmV4cG9ydCB7IF8xIGFzIFwiZXJyb3JMYWJlbFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJtdWx0aXN0ZXBDbG9zZUljb25fX19xYzZORFwiO1xudmFyIF8yID0gXCJtdWx0aXN0ZXBDb250YWluZXJfX19kUGFTNVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJtdWx0aXN0ZXBDbG9zZUljb25cIiwgXzIgYXMgXCJtdWx0aXN0ZXBDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwib3JkZXJEZXRhaWxzTW1vdW50X19fcjNrUkFcIjtcbnZhciBfMiA9IFwib3JkZXJEZXRhaWxzVGlja2V0c19fX200SWpLXCI7XG52YXIgXzMgPSBcIm9yZGVyU3VtbWFyeUJ1dHRvbl9fX3V4amh0XCI7XG52YXIgXzQgPSBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9fX19fUkJYRVwiO1xudmFyIF81ID0gXCJvcmRlclN1bW1hcnlUYWJsZV9fX1lEbnhWXCI7XG52YXIgXzYgPSBcIm9yZGVyU3VtbWFyeVdyYXBwZXJfX19Sd0lFUlwiO1xudmFyIF83ID0gXCJyZWZ1bmREaXNhYmxlZF9fX2p2cmszXCI7XG5leHBvcnQgeyBfMSBhcyBcIm9yZGVyRGV0YWlsc01tb3VudFwiLCBfMiBhcyBcIm9yZGVyRGV0YWlsc1RpY2tldHNcIiwgXzMgYXMgXCJvcmRlclN1bW1hcnlCdXR0b25cIiwgXzQgYXMgXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvXCIsIF81IGFzIFwib3JkZXJTdW1tYXJ5VGFibGVcIiwgXzYgYXMgXCJvcmRlclN1bW1hcnlXcmFwcGVyXCIsIF83IGFzIFwicmVmdW5kRGlzYWJsZWRcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXNzaWduVGlja2V0QnV0dG9uX19fenpMc2NcIjtcbnZhciBfMiA9IFwiYmxhY2tCdXR0b25fX19sOWhqOVwiO1xudmFyIF8zID0gXCJjb3B5SWNvbl9fX05rSEdPXCI7XG52YXIgXzQgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgXzUgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfNiA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF83ID0gXCJvcmRlclRpY2tldEluZm9fX19nZW1xQlwiO1xudmFyIF84ID0gXCJvcmRlclRpY2tldEluZm9Db250YWluZXJfX19fcDY2VlwiO1xudmFyIF85ID0gXCJvcmRlclRpY2tldE5vQ29udGFpbmVyX19fdnFvaE5cIjtcbnZhciBfYSA9IFwib3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWRfX19IWG1kd1wiO1xudmFyIF9iID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF9jID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgX2QgPSBcInJlZnVuZEJ1dHRvbnNfX19qRGw0SFwiO1xudmFyIF9lID0gXCJyZXZlcnNlZF9fX0RGZWFfXCI7XG52YXIgX2YgPSBcInRhYkJ1dHRvbnNfX194VHlKQVwiO1xudmFyIF8xMCA9IFwidGlja2V0QWN0aW9uQnV0dG9uc19fX3JwU01RXCI7XG52YXIgXzExID0gXCJ0aWNrZXRMaXN0Q29udGFpbmVyX19fY2ZtcnJcIjtcbnZhciBfMTIgPSBcInRpY2tldE5vX19fYTJpTTlcIjtcbnZhciBfMTMgPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xNCA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzE1ID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMTYgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYmxhY2tCdXR0b25cIiwgXzMgYXMgXCJjb3B5SWNvblwiLCBfNCBhcyBcImRpc3BsYXlfbm9uZVwiLCBfNSBhcyBcImxhYmVsXCIsIF82IGFzIFwib3JkZXJUaWNrZXRDb250YWluZXJcIiwgXzcgYXMgXCJvcmRlclRpY2tldEluZm9cIiwgXzggYXMgXCJvcmRlclRpY2tldEluZm9Db250YWluZXJcIiwgXzkgYXMgXCJvcmRlclRpY2tldE5vQ29udGFpbmVyXCIsIF9hIGFzIFwib3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWRcIiwgX2IgYXMgXCJvcmRlcldyYXBwZXJcIiwgX2MgYXMgXCJyZWFzc2lnbkJ1dHRvblwiLCBfZCBhcyBcInJlZnVuZEJ1dHRvbnNcIiwgX2UgYXMgXCJyZXZlcnNlZFwiLCBfZiBhcyBcInRhYkJ1dHRvbnNcIiwgXzEwIGFzIFwidGlja2V0QWN0aW9uQnV0dG9uc1wiLCBfMTEgYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF8xMiBhcyBcInRpY2tldE5vXCIsIF8xMyBhcyBcInRpY2tldE93bmVyRW1haWxcIiwgXzE0IGFzIFwidGlja2V0VGlja2V0VHlwZVwiLCBfMTUgYXMgXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uXCIsIF8xNiBhcyBcInZpZXdNb3JlQnV0dG9uXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNfX191N21QU1wiO1xudmFyIF8yID0gXCJjYW5jZWxCdXR0b25fX195ZmhZYlwiO1xudmFyIF8zID0gXCJjb250aW51ZUJ1dHRvbl9fX055WDNzXCI7XG52YXIgXzQgPSBcImRlbGV0ZUljb25fX19GU3d5ZVwiO1xudmFyIF81ID0gXCJyZWZ1bmRFcnJvck1zZ19fX0FhaHpyXCI7XG52YXIgXzYgPSBcInJlZnVuZEhlYWRlcnNfX19IVklta1wiO1xudmFyIF83ID0gXCJyZWZ1bmRTdWNjZXNzZnVsX19fenJEUVlcIjtcbnZhciBfOCA9IFwicmVmdW5kVGV4dF9fX2FFbkw5XCI7XG52YXIgXzkgPSBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lcl9fX3lhNjEzXCI7XG52YXIgX2EgPSBcInN1Y2Nlc3NNc2dfX19IdE1zZVwiO1xudmFyIF9iID0gXCJzdWNjZXNzTXNnMl9fX1E2em5hXCI7XG52YXIgX2MgPSBcInRpY2tldE5vX19fX0VBRDRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc1wiLCBfMiBhcyBcImNhbmNlbEJ1dHRvblwiLCBfMyBhcyBcImNvbnRpbnVlQnV0dG9uXCIsIF80IGFzIFwiZGVsZXRlSWNvblwiLCBfNSBhcyBcInJlZnVuZEVycm9yTXNnXCIsIF82IGFzIFwicmVmdW5kSGVhZGVyc1wiLCBfNyBhcyBcInJlZnVuZFN1Y2Nlc3NmdWxcIiwgXzggYXMgXCJyZWZ1bmRUZXh0XCIsIF85IGFzIFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyXCIsIF9hIGFzIFwic3VjY2Vzc01zZ1wiLCBfYiBhcyBcInN1Y2Nlc3NNc2cyXCIsIF9jIGFzIFwidGlja2V0Tm9cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2xvc2VCdG5fX195U1FDT1wiO1xudmFyIF8yID0gXCJoZWFkZXJfX19mQlhHOVwiO1xudmFyIF8zID0gXCJoZWFkZXJOb3RlX19fTEh5X2ZcIjtcbnZhciBfNCA9IFwic3VidGl0bGVfX196TFlrcFwiO1xudmFyIF81ID0gXCJ0aXRsZV9fX3R5WmVRXCI7XG52YXIgXzYgPSBcIndyYXBwZXJfX19ST0pHc1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjbG9zZUJ0blwiLCBfMiBhcyBcImhlYWRlclwiLCBfMyBhcyBcImhlYWRlck5vdGVcIiwgXzQgYXMgXCJzdWJ0aXRsZVwiLCBfNSBhcyBcInRpdGxlXCIsIF82IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNiA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzcgPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOCA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF85ID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9hID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2IgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2MgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2QgPSBcInNlbmRCdG5fX19rb1dNMlwiO1xudmFyIF9lID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF9mID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzEwID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xMSA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2xvc2VCdG5cIiwgXzYgYXMgXCJjb3B5QnRuXCIsIF83IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzggYXMgXCJkb3dubG9hZEJ0blwiLCBfOSBhcyBcImhlYWRlclwiLCBfYSBhcyBcIm9yZGVyTnVtYmVyXCIsIF9iIGFzIFwicXJDb2RlXCIsIF9jIGFzIFwicXJOb3RlXCIsIF9kIGFzIFwic2VuZEJ0blwiLCBfZSBhcyBcInN0YXR1c1wiLCBfZiBhcyBcInN1YnRpdGxlXCIsIF8xMCBhcyBcInRpY2tldERldGFpbENvbnRhaW5lclwiLCBfMTEgYXMgXCJ0aXRsZVwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX2NIU010XCI7XG52YXIgXzIgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fSnNQbEdcIjtcbnZhciBfMyA9IFwidGlja2V0UmVhc3NpZ25Db250YWluZXJfX19wRzliNFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfMiBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF8zIGFzIFwidGlja2V0UmVhc3NpZ25Db250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJub09yZGVyc0ZvdW5kX19fQW9nMnBcIjtcbnZhciBfMiA9IFwic3VtbWl0VGl0bGVEYXRlX19fWjE5UG1cIjtcbnZhciBfMyA9IFwid2lkZ2V0SGVhZGVyX19feVk1Z2VcIjtcbmV4cG9ydCB7IF8xIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMiBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMyBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRHJhd2VyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwLWxpbWl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXFyLWNvZGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwieXVwXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4vY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHNcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRSZWR1Y2VyU3RhdGUgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUJlZm9yZUxpZnQgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBjb25zdCBmbHVzaCA9IHBhcmFtcy5oYXMoXCJmbHVzaFN0YXRlXCIpO1xuICAgIGlmIChmbHVzaCkgc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBSRVNFVF9TVEFURSwgcGF5bG9hZDogbnVsbCB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKHNldFJlZHVjZXJTdGF0ZShzdW1taXQsIHVzZXIpKTtcbiAgfSwgW3N1bW1pdCwgdXNlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICA8UGVyc2lzdEdhdGVcbiAgICAgICAgb25CZWZvcmVMaWZ0PXtoYW5kbGVCZWZvcmVMaWZ0fVxuICAgICAgICBsb2FkaW5nPXtudWxsfVxuICAgICAgICBwZXJzaXN0b3I9e3BlcnNpc3Rvcn1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgICAgICA8aDM+e3QoXCJvcmRlcnMudGl0bGVcIil9PC9oMz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8TXlPcmRlcnNUaWNrZXRzXG4gICAgICAgICAgICBsb2dpblVybD17bG9naW5Vcmx9XG4gICAgICAgICAgICBzdXBwb3J0RW1haWw9e3N1cHBvcnRFbWFpbH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgYXBpQmFzZVVybD17YXBpQmFzZVVybH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImdldFJlcXVlc3QiLCJkZWxldGVSZXF1ZXN0IiwiY3JlYXRlQWN0aW9uIiwic3RvcExvYWRpbmciLCJzdGFydExvYWRpbmciLCJwdXRSZXF1ZXN0IiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIklkVG9rZW5WZXJpZmllciIsImdldEFjY2Vzc1Rva2VuU2FmZWx5IiwiRklSU1RfUEFHRSIsIkRFRkFVTFRfSVRFTVNfUEVSX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiRklGVFlfUEVSX1BBR0UiLCJSRVNFVF9TVEFURSIsIlJFU0VUX0ZJTFRFUiIsIlNFVF9TVEFURSIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJBU1NJR05fVElDS0VUIiwiUkVGVU5EX1RJQ0tFVCIsIlJFU0VORF9OT1RJRklDQVRJT04iLCJHRVRfVElDS0VUU19CWV9PUkRFUiIsIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SIiwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTIiwiR0VUX1RJQ0tFVF9ERVRBSUxTIiwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEIiwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSIsIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRSIsIlVQREFURV9JRFBfUFJPRklMRSIsIlNFVF9VU0VSIiwiU0VUX1NVTU1JVCIsIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyIsIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTIiwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTIiwicmVzZXRTdGF0ZSIsImRpc3BhdGNoIiwicmVzZXRGaWx0ZXIiLCJzZXRSZWR1Y2VyU3RhdGUiLCJzdW1taXQiLCJ1c2VyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJwYXJzZUZpbHRlciIsImZpbHRlck9iaiIsImZpbHRlciIsInR5cGUiLCJwdXNoIiwiY29uY2F0IiwibmFtZSIsImxvd2VyIiwidXBwZXIiLCJ2YWx1ZSIsImdldFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJnZXRVc2VyT3JkZXJzIiwiX3JlZiIsInBhZ2UiLCJwZXJQYWdlIiwic29ydCIsImdldFN0YXRlIiwiX3JlZjIiLCJhcGlCYXNlVXJsIiwid2lkZ2V0U3RhdGUiLCJhY2Nlc3NUb2tlbiIsImNhdGNoIiwiUHJvbWlzZSIsInJlamVjdCIsInBhcmFtcyIsImFjY2Vzc190b2tlbiIsIm9yZGVyIiwicmVsYXRpb25zIiwicGVyX3BhZ2UiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiZmlsdGVycyIsImlkIiwidGhlbiIsInBheWxvYWQiLCJlIiwic2V0QWN0aXZlT3JkZXJJZCIsIm9yZGVySWQiLCJzZXRVc2VyIiwiZ2V0VXNlclRpY2tldHMiLCJfcmVmMyIsIl9yZWY0IiwidXNlclN0YXRlIiwidXNlclByb2ZpbGUiLCJleHBhbmQiLCJmaWVsZHMiLCJnZXRUaWNrZXRzQnlPcmRlciIsIl9yZWY1IiwiX3JlZjYiLCJyZXNlbmROb3RpZmljYXRpb24iLCJ0aWNrZXQiLCJfcmVmNyIsIm1lc3NhZ2UiLCJvcmRlcl9pZCIsInJlZnVuZFRpY2tldCIsIl9yZWY4IiwiX3JlZjkiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMCIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwicmVzIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVzcG9uc2UiLCJyZWZ1bmRfcmVxdWVzdHMiLCJ1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwidGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsImdldEV4dHJhUXVlc3Rpb25zIiwiYXR0ZW5kZWVJZCIsIl9yZWYxMSIsImVuZHBvaW50IiwiZ2V0VGlja2V0IiwidGlja2V0SWQiLCJfcmVmMTIiLCJmaW5hbGx5Iiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjEzIiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE0IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiYXNzaWduQXR0ZW5kZWUiLCJfcmVmMTUiLCJyZWFzc2lnblRpY2tldCIsIl9yZWYxNiIsInNhdmVFeHRyYVF1ZXN0aW9ucyIsIl9yZWYxNyIsIlJlYWN0IiwiUHJvcFR5cGVzIiwidXNlVHJhbnNsYXRpb24iLCJCb3giLCJ1c2VGb3JtaWsiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsIkZvcm1Gb290ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiUmVnaXN0cmF0aW9uRGlzY2xhaW1lciIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsInBhcnNlQW5zd2VycyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJBc3NpZ25FUUZvcm0iLCJvblN1Ym1pdCIsIm9uQ2xvc2UiLCJ0IiwiZm9ybWlrIiwiaW5pdGlhbFZhbHVlcyIsInZhbGlkYXRpb25TY2hlbWEiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnkiLCJ2YWx1ZXMiLCJyZWxldmFudEFuc3dlcnMiLCJlbmFibGVSZWluaXRpYWxpemUiLCJoYW5kbGVTdWJtaXQiLCJub1ZhbGlkYXRlIiwiY2hpbGRyZW4iLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiZGlzY2xhaW1lciIsImlzUmVxdWlyZWQiLCJzYXZlTGFiZWwiLCJjYW5jZWxMYWJlbCIsImRpc2FibGVkIiwiaXNTdWJtaXR0aW5nIiwicHJvcFR5cGVzIiwib2JqZWN0IiwiYXJyYXkiLCJmdW5jIiwiRGlhbG9nIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiRGlhbG9nVGl0bGUiLCJDdXN0b21EaWFsb2ciLCJvcGVuIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsImJvb2wiLCJzdHJpbmciLCJUaGVtZVByb3ZpZGVyIiwiY3JlYXRlVGhlbWUiLCJkYXJrQ29sb3IiLCJ3aW5kb3ciLCJyb290IiwiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInRoZW1lIiwicGFsZXR0ZSIsInByaW1hcnkiLCJtYWluIiwiQ3VzdG9tVGhlbWUiLCJub2RlIiwiQ2hlY2tib3giLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsImdldExhYmVsIiwidG9TbHVnIiwiQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCIsIl9xdWVzdGlvbiR2YWx1ZXMiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsIm9uQ2hhbmdlIiwic2V0RmllbGRWYWx1ZSIsImVycm9yIiwiaGVscGVyVGV4dCIsInJlc3QiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidmFsIiwibGFiZWwiLCJ0b1N0cmluZyIsImhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSIsImNoZWNrZWQiLCJjdXJyZW50QW5zIiwibWF4U2VsZWN0aW9uUmVhY2hlZCIsIm5ld1ZhbHVlIiwidiIsImNsYXNzTmFtZSIsInJlcXVpcmVkIiwiZnVsbFdpZHRoIiwib3AiLCJjb250cm9sIiwiaW5jbHVkZXMiLCJldiIsInRhcmdldCIsIlJhd0hUTUwiLCJDaGVja2JveFF1ZXN0aW9uRmllbGQiLCJJbnB1dExhYmVsIiwiTWVudUl0ZW0iLCJTZWxlY3QiLCJEcm9wZG93blF1ZXN0aW9uRmllbGQiLCJsYWJlbElkIiwic3R5bGUiLCJtYXJnaW5Cb3R0b20iLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dEZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJmb3JFYWNoIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInRleHQiLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5Iiwic29tZSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJnZXRUeXBlVmFsdWUiLCJhbnMiLCJzcGxpdCIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsImVudHJpZXMiLCJrZXkiLCJxdWVzdGlvbl9pZCIsInBhcnNlSW50IiwicG9wIiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRnJhZ21lbnQiLCJyZWFkT25seSIsImFsbG93RWRpdCIsInJlbmRlclJ1bGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlcyIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZUJsdXIiLCJ0b3VjaGVkIiwiQm9vbGVhbiIsImVycm9ycyIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsInVzZVN0YXRlIiwiU3RhY2siLCJkYXlqcyIsIkFkYXB0ZXJEYXlqcyIsIkxvY2FsaXphdGlvblByb3ZpZGVyIiwiRGF0ZVBpY2tlciIsIkNsb3NlSWNvbiIsImdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyIsInN0eWxlcyIsIl9GcmFnbWVudCIsIkJhc2ljRGF0ZVBpY2tlciIsIm9uRmlsdGVyIiwib25SZXNldCIsIm5vdyIsImRhdGVWYWx1ZSIsInNldERhdGVWYWx1ZSIsIm9uRGF0ZUNoYW5nZSIsImRhdGUiLCJEYXRlIiwiJGQiLCJvblJlc2V0QWN0aW9uIiwiZmlsdGVyRGF0ZUxhYmVsIiwiYWxpZ25JdGVtcyIsInN4IiwicHQiLCJwYiIsImRhdGVQaWNrZXJDb250YWluZXIiLCJmb250U2l6ZSIsImRhdGVwaWNrZXJDbG9zZSIsIm9uQ2xpY2siLCJkYXRlQWRhcHRlciIsImNhbGVuZGFyRGlzcGxheSIsInVzZVJlZiIsInVzZUVmZmVjdCIsIkZpbHRlckxpc3RJY29uIiwiRmlsdGVyIiwic2hvd0ZpbHRlckxpc3QiLCJzZXRTaG93RmlsdGVyTGlzdCIsInNob3dEYXRlcGlja2VyIiwic2V0U2hvd0RhdGVwaWNrZXIiLCJmaWx0ZXJOdW1BY3RpdmUiLCJzZXRGaWx0ZXJOdW1BY3RpdmUiLCJmaWx0ZXJSZWYiLCJoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUiLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidG9nZ2xlIiwiZmlsdGVyQ29udGFpbmVyIiwicmVmIiwiZmlsdGVySWNvbiIsImZpbHRlckxhYmVsIiwiZmlsdGVyTGlzdENvbnRhaW5lciIsImNvbnRhaW5lciIsInNob3dEYXRlUGlja2VyIiwic3R5bGVkIiwiU2VhcmNoSWNvbiIsIklucHV0QmFzZSIsIlNlYXJjaENvbnRhaW5lciIsInBvc2l0aW9uIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0Iiwid2lkdGgiLCJkaXNwbGF5IiwiU2VhcmNoSWNvbldyYXBwZXIiLCJoZWlnaHQiLCJqdXN0aWZ5Q29udGVudCIsIlN0eWxlZElucHV0QmFzZSIsImNvbG9yIiwiYm9yZGVyQm90dG9tIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJDbG9zZUljb25XcmFwcGVyIiwicGFkZGluZyIsInRvcCIsInJpZ2h0IiwiY3Vyc29yIiwiekluZGV4IiwiU2VhcmNoIiwib25TZWFyY2giLCJzaG93Q2xvc2UiLCJzZXRTaG93Q2xvc2UiLCJzZWFyY2hWYWx1ZSIsInNldFNlYXJjaFZhbHVlIiwib25LZXlEb3duIiwibmF0aXZlRXZlbnQiLCJyZXNldFNlYXJjaCIsInBsYWNlaG9sZGVyIiwiaW5wdXRQcm9wcyIsIkJ1dHRvbiIsIkltcG9ydEV4cG9ydEljb24iLCJTb3J0Iiwib25Tb3J0Iiwic2hvd1NvcnQiLCJzZXRTaG93U29ydCIsInNvcnRSZWYiLCJoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlIiwic29ydENvbnRhaW5lciIsInNvcnRJY29uIiwic29ydExhYmVsIiwic29ydExpc3RDb250YWluZXIiLCJHcmlkIiwiRmlsdGVyU29ydFNlYXJjaCIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiZm9vdGVyIiwiY2FuY2VsQnRuIiwic2l6ZSIsInZhcmlhbnQiLCJzYXZlQnRuIiwiRXJyb3JJY29uIiwiRXJyb3JMYWJlbCIsImNsYXNzTmFtZXMiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsIkRyYXdlciIsIkNvbnRhaW5lciIsIk11bHRpU3RlcFNsaWRlciIsIm9uQ2xvc2VTbGlkZXIiLCJhbmNob3IiLCJQYXBlclByb3BzIiwibXVsdGlzdGVwQ29udGFpbmVyIiwibXVsdGlzdGVwQ2xvc2VJY29uIiwidXNlRGlzcGF0Y2giLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJPTkVfUEFHRV9ORVhUIiwiTXlPcmRlcnNUaWNrZXRzIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19sYXN0X3BhZ2UiLCJvcmRlcnNfcGVyX3BhZ2UiLCJvcmRlcnNfdG90YWwiLCJzdGF0ZSIsInNldEZpbHRlciIsInNldFNvcnQiLCJmZXRjaERhdGEiLCJ3aWRnZXRIZWFkZXIiLCJtZCIsImxnIiwic3VtbWl0VGl0bGVEYXRlIiwiZGF0YUxlbmd0aCIsIm5leHQiLCJoYXNNb3JlIiwic2Nyb2xsVGhyZXNob2xkIiwibnVtYmVyIiwibm9PcmRlcnNGb3VuZCIsIkRpdmlkZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJkaXNjb3VudFRvdGFsIiwicmVmdW5kVG90YWwiLCJ0YXhlc1RvdGFsIiwiYW1vdW50VG90YWwiLCJ0aWNrZXRTdW1tYXJ5IiwiaHVuZHJlZCIsIm9yZGVyU3VtbWFyeVRhYmxlIiwidGlja2V0VG90YWwiLCJxdHkiLCJ0aWNrZXRfdHlwZSIsImNvc3QiLCJhbGlnbiIsImN1cnJlbmN5IiwiY3JlYXRlZCIsImRpc2NvdW50X2Ftb3VudCIsInRheGVzX2Ftb3VudCIsInN0YXR1cyIsInNoYXBlIiwiYXJyYXlPZiIsInVzZU5vdyIsInRpY2tldHNSZWZ1bmRhYmxlIiwiUmVmdW5kRW1haWxTdXBwb3J0IiwicmVmdW5kUmVxdWVzdGVkIiwidGlja2V0c1RvUmVmdW5kIiwic3VibWl0UmVxdWVzdCIsIm9uUmVmdW5kQ2xpY2siLCJvblJlZnVuZERldGFpbENsaWNrIiwib25FbWFpbFN1cHBvcnRDbGljayIsImlzSW5SZWZ1bmRhYmxlUGVyaW9kIiwicmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlIiwiYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQiLCJpc1JlZnVuZGFibGUiLCJyb2xlIiwib3JkZXJTdW1tYXJ5QnV0dG9uIiwicmVmdW5kRGlzYWJsZWQiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwiQXR0ZW5kZWVTdGF0dXMiLCJfdGlja2V0JG93bmVyIiwiX3RpY2tldCRvd25lcjIiLCJ0aWNrZXRPd25lckVtYWlsIiwiaXNfYWN0aXZlIiwiT3JkZXJMaXN0VGlja2V0cyIsIlBBR0lOQVRJT05fRElTUExBWV9DT1VOVCIsIk9yZGVyTGlzdEl0ZW0iLCJ0b3RhbCIsIm9uUGFnaW5hdGVDbGljayIsInNlbGVjdFRvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJvblZpZXdMZXNzIiwiaXNTZWxlY3RlZFRvUmVmdW5kIiwiZmluZCIsInZpZXdNb3JlQnV0dG9uIiwiVGlja2V0U3RhdHVzIiwiT3JkZXJOdW1iZXIiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJUaWNrZXREZXRhaWwiLCJ1c2VUaWNrZXREZXRhaWxzIiwiVGlja2V0UmVhc3NpZ24iLCJtb2RhbFZpZXdzIiwiZGV0YWlsIiwicmVhc3NpZ24iLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNVbmFzc2lnbmVkIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIl90aWNrZXQkdGlja2V0X3R5cGUiLCJfb3BlblRpY2tldCRvd25lciIsIl9vcGVuVGlja2V0JG93bmVyMiIsImNhblJlYXNzaWduIiwib3BlblRpY2tldCIsInNldE9wZW5UaWNrZXQiLCJtb2RhbE9wZW4iLCJzZXRNb2RhbE9wZW4iLCJyZWFzc2lnbkRhdGUiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInRpY2tldFRpY2tldFR5cGUiLCJ0aWNrZXRObyIsImNvcHkiLCJ0cnVuY2F0ZWQiLCJ0aWNrZXRBY3Rpb25CdXR0b25zIiwib3duZXJJZCIsInRvdGFsX3JlZnVuZGVkX2Ftb3VudCIsIkNvbnRlbnRDb3B5SWNvbiIsImRlZmF1bHRXaWR0aCIsInJldmVyc2VkIiwib3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWQiLCJvcmRlclRpY2tldE5vQ29udGFpbmVyIiwiY29weUljb24iLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsImlzVGlja2V0UmVmdW5kYWJsZSIsIlRhYlBhbmVsIiwicHJvcHMiLCJpbmRleCIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsIl8iLCJzZXRSZWZ1bmRSZXF1ZXN0ZWQiLCJzZXRUaWNrZXRzVG9SZWZ1bmQiLCJzZXRTdWJtaXRSZXF1ZXN0IiwidW5zZWxlY3RSZWZ1bmRUaWNrZXRzIiwiZmlsdGVyU2VsZWN0ZWQiLCJzZWxlY3RlZFRpY2tldCIsImNhbmNlbFRpY2tldHNUb1JlZnVuZCIsInNlbGVjdEFsbFRpY2tldHMiLCJyZWZ1bmRhYmxlVGlja2V0cyIsInJlc2V0QWxsUmVmdW5kU3RhdHVzZXMiLCJtb3JlRGV0YWlscyIsInRpY2tldExpc3RDb250YWluZXIiLCJib3JkZXJDb2xvciIsInRleHRDb2xvciIsIlRhYkluZGljYXRvclByb3BzIiwiYmFja2dyb3VuZCIsInRhYkJ1dHRvbnMiLCJyZWZ1bmRCdXR0b25zIiwib25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHMiLCJvblJlZnVuZFN1Y2Nlc3NDbG9zZSIsInVzZVRoZW1lIiwidXNlTWVkaWFRdWVyeSIsImdldE9yZGVyVGlja2V0cyIsImdldEZvcm1hdHRlZERhdGUiLCJfb3JkZXIkbWVtYmVyVGlja2V0cyIsImxhc3RfcGFnZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsIm1lbWJlclRpY2tldHMiLCJmZXRjaFRpY2tldHNCeU9yZGVyIiwiY3VycmVudF9wYWdlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJibGFja0J1dHRvbiIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJvcmRlclRpY2tldENvbnRhaW5lciIsImRpc3BsYXlfbm9uZSIsImZsZXhEaXJlY3Rpb24iLCJ0aWNrZXRzX3RvdGFsIiwiRGVsZXRlT3V0bGluZUljb24iLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJvblJlbW92ZSIsInJlZnVuZFRpY2tldEJveENvbnRhaW5lciIsImRlbGV0ZUljb24iLCJTdHlsZWRFbmdpbmVQcm92aWRlciIsIkNoZWNrQ2lyY2xlSWNvbiIsIlNURVBfT05FIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNsb3NlU2xpZGVyIiwicmVmdW5kVGlja2V0cyIsInJlZnVuZFN0ZXBPbmUiLCJyZWZ1bmRUZXh0IiwicmVmdW5kRXJyb3JNc2ciLCJhY3Rpb25CdXR0b25zIiwiY2FuY2VsQnV0dG9uIiwiY29udGludWVCdXR0b24iLCJyZWZ1bmRTdGVwVHdvIiwicmVmdW5kU3VjY2Vzc2Z1bCIsInN1Y2Nlc3NNc2ciLCJzdWNjZXNzTXNnMiIsInJlbmRlclN0ZXBzIiwiaW5qZWN0Rmlyc3QiLCJyZWZ1bmRIZWFkZXJzIiwiSWNvbkJ1dHRvbiIsIlR5cG9ncmFwaHkiLCJDbG9zZSIsIlJpZ2h0RHJhd2VyIiwic3VidGl0bGUiLCJoZWFkZXJOb3RlIiwiTW9kYWxQcm9wcyIsImtlZXBNb3VudGVkIiwid3JhcHBlciIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJndXR0ZXJCb3R0b20iLCJvbmVPZlR5cGUiLCJBdXRvY29tcGxldGUiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsInN1bW1pdElkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInNldEZpZWxkVG91Y2hlZCIsInVuZGVmaW5lZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIlRpY2tldERlbGVnYXRpb25GaWVsZHMiLCJkZWxlZ2F0ZWRfZmlyc3RfbmFtZSIsImRlbGVnYXRlZF9sYXN0X25hbWUiLCJUaWNrZXRPd25lckZpZWxkcyIsIlRpY2tldEZvcm0iLCJjYW5FZGl0IiwidGlja2V0TWFuYWdlciIsImFsbG93c0RlbGVnYXRpb24iLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJyZWR1Y2UiLCJkZWxlZ2F0ZWRUbyIsImFkZGl0aW9uYWxEZXRhaWxzIiwiaW5mb05vdGUiLCJRUkNvZGUiLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJNSUxMSVNFQ19UT19TRUMiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJjdXJyZW50VGlja2V0Iiwic2F2ZU1lc3NhZ2UiLCJzZXRTYXZlTWVzc2FnZSIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwiaXNDb21wbGV0ZSIsIm9uU2F2ZSIsInJlc29sdmUiLCJlcnIiLCJvbkNsb3NlU2F2ZU1lc3NhZ2UiLCJzZXRUaW1lb3V0IiwidGlja2V0RGV0YWlsQ29udGFpbmVyIiwicXJDb2RlIiwibWF4V2lkdGgiLCJxcl9jb2RlIiwidmlld0JveCIsInFyTm90ZSIsImlzX3ZpcnR1YWwiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwib3JkZXJOdW1iZXIiLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwieXVwIiwiUmVhc3NpZ25Gb3JtIiwibmV3X2F0dGVuZGVlX2VtYWlsIiwicGVyc29uYWxfbWVzc2FnZSIsIm11bHRpbGluZSIsIm1pblJvd3MiLCJfdGlja2V0JHR5cGUiLCJ0aWNrZXRSZWFzc2lnbmVkIiwic2V0VGlja2V0UmVhc3NpZ25lZCIsIm9uUmVhc3NpZ24iLCJvbkNsb3NlRVFGb3JtIiwib25TYXZlRVEiLCJnZXRMYWJlbHMiLCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lciIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwicmVmdW5kUmVxdWVzdHMiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25QaWxsIiwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkIiwiYnV0dG9uSW5jb21wbGV0ZSIsImJ1dHRvblVuYXNzaWduZWQiLCJidXR0b25Db21wbGV0ZSIsImJ1dHRvbkNhbmNlbGxlZCIsInNtb290aFNjcm9sbFRvIiwidGFyZ2V0U2Nyb2xsVG9wIiwiZHVyYXRpb24iLCJzdGFydFNjcm9sbFRvcCIsInNjcm9sbFRvcCIsImRpc3RhbmNlIiwic3RhcnRUaW1lIiwiYW5pbWF0aW9uU3RlcCIsInRpbWVzdGFtcCIsImVsYXBzZWQiLCJwcm9ncmVzcyIsIk1hdGgiLCJtaW4iLCJlYXNlSW5PdXRRdWFkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY29udGFpbmVySWQiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkb3duZXIzIiwiX3RpY2tldCRvd25lcjQiLCJnZXRTdGF0dXMiLCJhbGxvd3NEZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJhbGxvd3NfdG9fcmVhc3NpZ24iLCJpMThuIiwiaW5pdFJlYWN0STE4bmV4dCIsIkxhbmd1YWdlRGV0ZWN0b3IiLCJlbiIsImVzIiwidXNlIiwiaW5pdCIsImZhbGxiYWNrTG5nIiwiZGVidWciLCJyZXNvdXJjZXMiLCJ0cmFuc2xhdGlvbiIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsIkxPR09VVF9VU0VSIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJsb2FkaW5nIiwiaXNPcmRlckxvYWRpbmciLCJ0aWNrZXRfY3VycmVudF9wYWdlIiwidGlja2V0X2xhc3RfcGFnZSIsInRpY2tldF9wZXJfcGFnZSIsInRpY2tldF90b3RhbCIsIldpZGdldFJlZHVjZXIiLCJhcmd1bWVudHMiLCJmb3JtZXJPcmRlciIsIm8iLCJfZGF0YSQiLCJ1cGRhdGVkT3JkZXIiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIm1vIiwiX3RpY2tldHNSZWZ1bmRSZXF1ZXN0IiwidXBkYXRlZFRpY2tldHMiLCJ0cnIiLCJ0aWNrZXREYXRhIiwibmV3T3JkZXJzIiwibmV3VGlja2V0cyIsInVzZU1lbW8iLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiSkVTVF9USU1FT1VUX0lOX01JTExJU0VDIiwiT05FX0lURU0iLCJUV09fSVRFTSIsIkZJVkVfSVRFTSIsIlNJWF9JVEVNIiwibW9tZW50IiwibG9jYWxlIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZm9ybWF0IiwiZGF0ZXRpbWUiLCJ0aW1lWm9uZSIsInR6IiwidW5peCIsInJlZnVuZGVkX2Ftb3VudCIsImFtb3VudCIsInRpY2tldF90eXBlcyIsInB1cmNoYXNlVGlja2V0VG90YWwiLCJjdXJyZW5jeU9iamVjdCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInRpY2tldFR5cGUiLCJ0dCIsInRpY2tldF90eXBlX2lkIiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9vcmRlcnMkIiwib3JkZXJzIiwidHMiLCJzZXRIb3VycyIsImRlZmF1bHRDdXJyZW50VGltZSIsInJvdW5kIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsImNoZWNrU3VtbWl0UGFzdCIsInJlYXNzaWduX2RhdGUiLCJyZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIiwiZW5kX2RhdGUiLCJjaGVja1N1bW1pdFN0YXJ0ZWQiLCJzdGFydF9kYXRlIiwiZ2V0U3VtbWl0RGF5c0RpZmYiLCJzdGFydERheSIsInRpbWVfem9uZV9pZCIsImVuZERheSIsImRheXMiLCJkaWZmIiwiZm9ybWF0U3RhcnREYXRlIiwiZm9ybWF0RW5kRGF0ZSIsInllYXIiLCJtb250aCIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJnZXRTdW1taXRMb2NhdGlvbiIsIl9zdW1taXQkbG9jYXRpb25zIiwibG9jYXRpb24iLCJsb2NhdGlvbnMiLCJsIiwiY2xhc3NfbmFtZSIsImlzX21haW4iLCJjaXR5IiwiY291bnRyeSIsInVzZVN1bW1pdERldGFpbHMiLCJfc3VtbWl0JHRpbWVfem9uZSIsIl9zdW1taXQkdGltZV96b25lMiIsImZvcm1hdHRlZERhdGUiLCJmb3JtYXR0ZWRSZWFzc2lnbkRhdGUiLCJ0aW1lX3pvbmUiLCJkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lIiwiaXNQYXN0IiwiaXNTdGFydGVkIiwic3RhdHVzRGF0YSIsImdldFRpY2tldFN0YXR1c0tleSIsImdldFRpY2tldFN0YXR1c0RhdGEiLCJpc1N1bW1pdFBhc3QiLCJnZXRUaWNrZXRSb2xlIiwiYmFkZ2UiLCJmZWF0dXJlcyIsImZlYXR1cmUiLCJqb2luIiwiZ2V0VGlja2V0VHlwZSIsImZpbmFsX2Ftb3VudCIsInJyIiwiZ2V0VHlwZVZhbGlkYXRpb24iLCJzY2hlbWEiLCJvbmVPZiIsIm9mIiwiaW5jbHVkZURlbGVnYXRpb24iLCJpbmNsdWRlQXR0ZW5kZWVJbmZvIiwiaW5jbHVkZURpc2NsYWltZXIiLCJvbmx5UmVsZXZhbnQiLCJzdWJRdWVzdGlvblNsdWciLCJzdWJBbnN3ZXIiLCJtYXRjaCIsImRpc2NsYWltZXJNYW5kYXRvcnkiLCJsYXp5IiwidHlwZUVycm9yIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzMiIsInN1YlF1ZXN0aW9uIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsInNjaCIsIlByb3ZpZGVyIiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJmbHVzaCIsImhhcyIsIm9uQmVmb3JlTGlmdCJdLCJzb3VyY2VSb290IjoiIn0=
|