@renaissancerentals/renaissance-component 12.2.7 → 12.2.9
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Unit, UnitCardData, UnitDetails } from "./Unit";
|
|
1
|
+
import { Pet, Unit, UnitCardData, UnitDetails } from "./Unit";
|
|
2
2
|
import { LeaseType, PropertyBusRoute } from "../../property/data/Property";
|
|
3
3
|
export declare const MIN_RENT = 0;
|
|
4
4
|
export declare const MAX_RENT = 4000;
|
|
@@ -99,6 +99,8 @@ export interface Floorplan {
|
|
|
99
99
|
bedroom: number;
|
|
100
100
|
bathroom: number;
|
|
101
101
|
style: FloorplanStyle;
|
|
102
|
+
allowedPet: Pet;
|
|
103
|
+
petPolicy: string;
|
|
102
104
|
featured: boolean;
|
|
103
105
|
patioIncluded: boolean;
|
|
104
106
|
greenCertified: boolean;
|
|
@@ -31,4 +31,4 @@ let UtilityType = exports.UtilityType = /*#__PURE__*/function (UtilityType) {
|
|
|
31
31
|
UtilityType["INCLUDED_UTILITY"] = "INCLUDED_UTILITY";
|
|
32
32
|
return UtilityType;
|
|
33
33
|
}({});
|
|
34
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNSU5fUkVOVCIsImV4cG9ydHMiLCJNQVhfUkVOVCIsIkZsb29ycGxhblN0eWxlIiwiQW1lbml0eVR5cGUiLCJVdGlsaXR5VHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mbG9vcnBsYW4vZGF0YS9GbG9vcnBsYW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQZXQsIFVuaXQsIFVuaXRDYXJkRGF0YSwgVW5pdERldGFpbHN9IGZyb20gXCIuL1VuaXRcIjtcbmltcG9ydCB7TGVhc2VUeXBlLCBQcm9wZXJ0eUJ1c1JvdXRlfSBmcm9tIFwiLi4vLi4vcHJvcGVydHkvZGF0YS9Qcm9wZXJ0eVwiO1xuXG5leHBvcnQgY29uc3QgTUlOX1JFTlQgPSAwO1xuZXhwb3J0IGNvbnN0IE1BWF9SRU5UID0gNDAwMDtcblxuZXhwb3J0IGVudW0gRmxvb3JwbGFuU3R5bGUge1xuICAgIFNUVURJTyA9IFwiU1RVRElPXCIsXG4gICAgQVBBUlRNRU5UID0gXCJBUEFSVE1FTlRcIixcbiAgICBERUxVWEVfQVBBUlRNRU5UID0gXCJERUxVWEVfQVBBUlRNRU5UXCIsXG4gICAgVE9XTl9IT01FID0gXCJUT1dOX0hPTUVcIixcbiAgICBTSU5HTEVfRkFNSUxZID0gXCJTSU5HTEVfRkFNSUxZXCIsXG4gICAgR0FSQUdFID0gXCJHQVJBR0VcIlxufVxuXG5leHBvcnQgZW51bSBBbWVuaXR5VHlwZSB7XG4gICAgS0lUQ0hFTiA9IFwiS0lUQ0hFTlwiLFxuICAgIExJVklOR19BTkRfQkVEUk9PTSA9IFwiTElWSU5HX0FORF9CRURST09NXCIsXG4gICAgQkFUSFJPT00gPSBcIkJBVEhST09NXCIsXG4gICAgT1VURE9PUiA9IFwiT1VURE9PUlwiLFxuICAgIEhFQVRJTkdfQ09PTElOR19BTkRfV0lSSU5HID0gXCJIRUFUSU5HX0NPT0xJTkdfQU5EX1dJUklOR1wiLFxuICAgIFNNQVJUX0xJVklORyA9IFwiU01BUlRfTElWSU5HXCIsXG4gICAgUEFSS0lORyA9IFwiUEFSS0lOR1wiLFxuICAgIE5PVF9BUFBMSUNBQkxFID0gXCJOT1RfQVBQTElDQUJMRVwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW1lbml0eU5hbWUge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGZlYXR1cmVkOiBib29sZWFuO1xuICAgIHR5cGU6IEFtZW5pdHlUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFV0aWxpdHlOYW1lIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBVdGlsaXR5VHlwZTtcbiAgICBhdmVyYWdlTW9udGhseUJpbGw6IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gVXRpbGl0eVR5cGUge1xuICAgIFJFU0lERU5UX1VUSUxJVFkgPSBcIlJFU0lERU5UX1VUSUxJVFlcIiwgSU5DTFVERURfVVRJTElUWSA9IFwiSU5DTFVERURfVVRJTElUWVwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvb3JwbGFuRGV0YWlscyB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYmVkcm9vbTogbnVtYmVyO1xuICAgIGJhdGhyb29tOiBudW1iZXI7XG4gICAgc3R5bGU6IEZsb29ycGxhblN0eWxlO1xuICAgIHNwZWNpYWxSZW50OiBudW1iZXI7XG4gICAgc3BlY2lhbFJlbnRTdGFydERhdGU6IHN0cmluZztcbiAgICBzcGVjaWFsUmVudEVuZERhdGU6IHN0cmluZztcbiAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgemlwY29kZTogc3RyaW5nO1xuICAgIGZlYXR1cmVkOiBib29sZWFuO1xuICAgIGdyZWVuQ2VydGlmaWVkOiBib29sZWFuO1xuICAgIHZpZGVvVG91ckxpbms6IHN0cmluZyB8IG51bGw7XG4gICAgdGhyZWVTaXh0eVZpZGVvVG91ckxpbms6IHN0cmluZyB8IG51bGw7XG4gICAgdmlydHVhbFRvdXJMaW5rOiBzdHJpbmcgfCBudWxsO1xuICAgIHBob3RvOiBzdHJpbmc7XG4gICAgY292ZXJJbWFnZTogc3RyaW5nO1xuICAgIGZsb29yUGxhbkZvbGRlcklkOiBzdHJpbmc7XG4gICAgcGhvdG9zRm9sZGVySWQ6IHN0cmluZztcbiAgICBhbWVuaXRpZXM6IEFtZW5pdHlOYW1lW107XG4gICAgdW5pdHM6IFVuaXREZXRhaWxzW107XG4gICAgYWN0aXZlOiBib29sZWFuO1xuICAgIHdlYlNwZWNpYWxzOiBXZWJTcGVjaWFsRGV0YWlsc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb29ycGxhbkNhcmREYXRhIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgYmVkcm9vbTogbnVtYmVyO1xuICAgIGJhdGhyb29tOiBudW1iZXI7XG4gICAgY292ZXJJbWFnZTogc3RyaW5nO1xuICAgIGZlYXR1cmVkOiBib29sZWFuO1xuICAgIHN0eWxlOiBGbG9vcnBsYW5TdHlsZTtcbiAgICBzcGVjaWFsUmVudDogbnVtYmVyLFxuICAgIHNwZWNpYWxSZW50U3RhcnREYXRlOiBzdHJpbmc7XG4gICAgc3BlY2lhbFJlbnRFbmREYXRlOiBzdHJpbmc7XG4gICAgYWRkcmVzczogc3RyaW5nO1xuICAgIHppcGNvZGU6IHN0cmluZztcbiAgICB2aXJ0dWFsVG91ckxpbms6IHN0cmluZztcbiAgICB2aWRlb1RvdXJMaW5rOiBzdHJpbmc7XG4gICAgcGhvdG9zRm9sZGVySWQ6IHN0cmluZztcbiAgICB1bml0czogVW5pdENhcmREYXRhW107XG4gICAgd2ViU3BlY2lhbHM6IHN0cmluZyBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG9vcnBsYW5Bc3NldHMge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdmlkZW9Ub3VyTGluazogc3RyaW5nO1xuICAgIHRocmVlU2l4dHlWaWRlb1RvdXJMaW5rOiBzdHJpbmc7XG4gICAgdmlydHVhbFRvdXJMaW5rOiBzdHJpbmc7XG4gICAgcGhvdG86IHN0cmluZyB8IG51bGwsXG4gICAgY292ZXJJbWFnZTogc3RyaW5nIHwgbnVsbCxcbiAgICBmbG9vclBsYW5Gb2xkZXJJZDogc3RyaW5nO1xuICAgIHBob3Rvc0ZvbGRlcklkOiBzdHJpbmc7XG4gICAgd2ViU3BlY2lhbHM6IFdlYlNwZWNpYWxEZXRhaWxzW107XG4gICAgcHJvcGVydHk6IFByb3BlcnR5TmFtZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG9vcnBsYW4ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGJlZHJvb206IG51bWJlcjtcbiAgICBiYXRocm9vbTogbnVtYmVyO1xuICAgIHN0eWxlOiBGbG9vcnBsYW5TdHlsZTtcbiAgICBhbGxvd2VkUGV0OiBQZXQ7XG4gICAgcGV0UG9saWN5OiBzdHJpbmc7XG4gICAgZmVhdHVyZWQ6IGJvb2xlYW47XG4gICAgcGF0aW9JbmNsdWRlZDogYm9vbGVhbjtcbiAgICBncmVlbkNlcnRpZmllZDogYm9vbGVhbjtcbiAgICB2aWRlb1RvdXJMaW5rOiBzdHJpbmc7XG4gICAgdGhyZWVTaXh0eVZpZGVvVG91ckxpbms6IHN0cmluZztcbiAgICB2aXJ0dWFsVG91ckxpbms6IHN0cmluZztcbiAgICBwaG90bzogc3RyaW5nIHwgbnVsbCxcbiAgICBjb3ZlckltYWdlOiBzdHJpbmcgfCBudWxsLFxuICAgIGZsb29yUGxhbkZvbGRlcklkOiBzdHJpbmc7XG4gICAgcGhvdG9zRm9sZGVySWQ6IHN0cmluZztcbiAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgemlwY29kZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgdmFuaXR5TGluazogc3RyaW5nO1xuICAgIHNwZWNpYWxSZW50OiBudW1iZXIsXG4gICAgc3BlY2lhbFJlbnRTdGFydERhdGU6IHN0cmluZyxcbiAgICBzcGVjaWFsUmVudEVuZERhdGU6IHN0cmluZyxcbiAgICBodG1sVGl0bGU6IHN0cmluZztcbiAgICBtZXRhRGVzY3JpcHRpb246IHN0cmluZztcbiAgICBjb252ZXJzaW9uVHJhY2tpbmdJZDE6IHN0cmluZztcbiAgICBjb252ZXJzaW9uVHJhY2tpbmdJZDI6IHN0cmluZztcbiAgICBjdXN0b21Db2RlOiBzdHJpbmc7XG4gICAgdXRpbGl0aWVzOiBVdGlsaXR5TmFtZVtdO1xuICAgIGFtZW5pdGllczogQW1lbml0eU5hbWVbXTtcbiAgICBwcm9wZXJ0eTogUHJvcGVydHlOYW1lO1xuICAgIHVuaXRzOiBVbml0W107XG4gICAgbGFzdE1vZGlmaWVkQnk6IHN0cmluZztcbiAgICBsYXN0TW9kaWZpZWREYXRlOiBzdHJpbmc7XG4gICAgYWN0aXZlOiBib29sZWFuO1xuICAgIHdlYlNwZWNpYWxzOiBXZWJTcGVjaWFsRGV0YWlsc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb29ycGxhblNwb3RsaWdodCB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbWV0YURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgYmVkcm9vbTogbnVtYmVyO1xuICAgIGJhdGhyb29tOiBudW1iZXI7XG4gICAgc3R5bGU6IEZsb29ycGxhblN0eWxlO1xuICAgIGZlYXR1cmVkOiBib29sZWFuO1xuICAgIGNvdmVySW1hZ2U6IHN0cmluZztcbiAgICB1bml0czogVW5pdFNwb3RsaWdodFtdO1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbiAgICBwcm9wZXJ0eTogUHJvcGVydHlOYW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVuaXRTcG90bGlnaHQge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgc3F1YXJlRm9vdDogbnVtYmVyO1xuICAgIHJlbnQ6IG51bWJlcjtcbiAgICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcGVydHlOYW1lIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBwaG9uZTogc3RyaW5nO1xuICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICB6aXBjb2RlOiBzdHJpbmc7XG4gICAgYnVzUm91dGVzOiBQcm9wZXJ0eUJ1c1JvdXRlW107XG4gICAgbGVhc2VUeXBlOiBMZWFzZVR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvb3JwbGFuTmFtZSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgYWN0aXZlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpbWlsYXJGbG9vcnBsYW4ge1xuICAgIHNpbWlsYXJUbzogRmxvb3JwbGFuTmFtZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG9vcnBsYW5WYXJpYXRpb24ge1xuICAgIHZhcmlhdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RpbW9uaWFsIHtcbiAgICB0ZXN0aW1vbmlhbDogc3RyaW5nO1xuICAgIHRlbmFudDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYlNwZWNpYWwge1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgc3RhcnREYXRlOiBzdHJpbmc7XG4gICAgZW5kRGF0ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYlNwZWNpYWxEZXRhaWxzIGV4dGVuZHMgV2ViU3BlY2lhbCB7XG4gICAgaWQ6IHN0cmluZztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR08sTUFBTUEsUUFBUSxHQUFBQyxPQUFBLENBQUFELFFBQUEsR0FBRyxDQUFDO0FBQ2xCLE1BQU1FLFFBQVEsR0FBQUQsT0FBQSxDQUFBQyxRQUFBLEdBQUcsSUFBSTtBQUFDLElBRWpCQyxjQUFjLEdBQUFGLE9BQUEsQ0FBQUUsY0FBQSwwQkFBZEEsY0FBYztFQUFkQSxjQUFjO0VBQWRBLGNBQWM7RUFBZEEsY0FBYztFQUFkQSxjQUFjO0VBQWRBLGNBQWM7RUFBZEEsY0FBYztFQUFBLE9BQWRBLGNBQWM7QUFBQTtBQUFBLElBU2RDLFdBQVcsR0FBQUgsT0FBQSxDQUFBRyxXQUFBLDBCQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFBLE9BQVhBLFdBQVc7QUFBQTtBQUFBLElBeUJYQyxXQUFXLEdBQUFKLE9BQUEsQ0FBQUksV0FBQSwwQkFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBQSxPQUFYQSxXQUFXO0FBQUEifQ==
|
|
@@ -145,6 +145,7 @@ const filtersFrom = floorplans => {
|
|
|
145
145
|
let extensionDate = (0, _moment.default)().add(i, 'month');
|
|
146
146
|
availabilityFilters.add(extensionDate.format(MONTH_YEAR_FORMAT));
|
|
147
147
|
}
|
|
148
|
+
availabilityFilters.add((0, _moment.default)().format(MONTH_YEAR_FORMAT));
|
|
148
149
|
}
|
|
149
150
|
}
|
|
150
151
|
if (unit.moveInDate && !isUnitAvailableNow && isDateWithinTwelveMonths(unit.moveInDate)) {
|
|
@@ -188,38 +189,70 @@ exports.getTestimonials = getTestimonials;
|
|
|
188
189
|
const getWebSpecials = floorplanId => (0, _RoundRobin.get)("webSpecials/search/byFloorplanId?projection=withId&floorplanId=" + floorplanId).then(response => response.data._embedded.webSpecials);
|
|
189
190
|
exports.getWebSpecials = getWebSpecials;
|
|
190
191
|
const permittedPets = floorplan => {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
192
|
+
if (floorplan.allowedPet) {
|
|
193
|
+
switch (floorplan.allowedPet) {
|
|
194
|
+
case _Unit.Pet.LARGE_DOG_SMALL_DOG_CAT:
|
|
195
|
+
return ['Large Dog', 'Small Dog', 'Cat'];
|
|
196
|
+
case _Unit.Pet.SMALL_DOG_CAT:
|
|
197
|
+
return ['Small Dog', 'Cat'];
|
|
198
|
+
case _Unit.Pet.CAT:
|
|
199
|
+
return ['Cat'];
|
|
200
|
+
default:
|
|
201
|
+
return ['None'];
|
|
202
|
+
}
|
|
203
|
+
} else {
|
|
204
|
+
const unit = unitWithMostAllowedPet([...floorplan.units]);
|
|
205
|
+
switch (unit === null || unit === void 0 ? void 0 : unit.allowedPet) {
|
|
206
|
+
case _Unit.Pet.LARGE_DOG_SMALL_DOG_CAT:
|
|
207
|
+
return ['Large Dog', 'Small Dog', 'Cat'];
|
|
208
|
+
case _Unit.Pet.SMALL_DOG_CAT:
|
|
209
|
+
return ['Small Dog', 'Cat'];
|
|
210
|
+
case _Unit.Pet.CAT:
|
|
211
|
+
return ['Cat'];
|
|
212
|
+
default:
|
|
213
|
+
return ['None'];
|
|
214
|
+
}
|
|
201
215
|
}
|
|
202
216
|
};
|
|
203
217
|
exports.permittedPets = permittedPets;
|
|
204
218
|
const notPermittedPets = floorplan => {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
219
|
+
if (floorplan.allowedPet) {
|
|
220
|
+
switch (floorplan.allowedPet) {
|
|
221
|
+
case _Unit.Pet.LARGE_DOG_SMALL_DOG_CAT:
|
|
222
|
+
return [];
|
|
223
|
+
case _Unit.Pet.SMALL_DOG_CAT:
|
|
224
|
+
return ['Large Dog'];
|
|
225
|
+
case _Unit.Pet.CAT:
|
|
226
|
+
return ['Large Dog', 'Small Dog'];
|
|
227
|
+
case _Unit.Pet.NO_PET:
|
|
228
|
+
return ['Large Dog', 'Small Dog', 'Cat'];
|
|
229
|
+
default:
|
|
230
|
+
return [];
|
|
231
|
+
}
|
|
232
|
+
} else {
|
|
233
|
+
const unit = unitWithMostAllowedPet([...floorplan.units]);
|
|
234
|
+
switch (unit === null || unit === void 0 ? void 0 : unit.allowedPet) {
|
|
235
|
+
case _Unit.Pet.LARGE_DOG_SMALL_DOG_CAT:
|
|
236
|
+
return [];
|
|
237
|
+
case _Unit.Pet.SMALL_DOG_CAT:
|
|
238
|
+
return ['Large Dog'];
|
|
239
|
+
case _Unit.Pet.CAT:
|
|
240
|
+
return ['Large Dog', 'Small Dog'];
|
|
241
|
+
case _Unit.Pet.NO_PET:
|
|
242
|
+
return ['Large Dog', 'Small Dog', 'Cat'];
|
|
243
|
+
default:
|
|
244
|
+
return [];
|
|
245
|
+
}
|
|
217
246
|
}
|
|
218
247
|
};
|
|
219
248
|
exports.notPermittedPets = notPermittedPets;
|
|
220
249
|
const petPolicy = floorplan => {
|
|
221
|
-
|
|
222
|
-
|
|
250
|
+
if (floorplan.allowedPet) {
|
|
251
|
+
return floorplan.petPolicy;
|
|
252
|
+
} else {
|
|
253
|
+
const unit = unitWithMostAllowedPet([...floorplan.units]);
|
|
254
|
+
return unit === null || unit === void 0 ? void 0 : unit.petPolicy;
|
|
255
|
+
}
|
|
223
256
|
};
|
|
224
257
|
exports.petPolicy = petPolicy;
|
|
225
258
|
const unitWithMostAllowedPet = units => {
|
|
@@ -247,4 +280,4 @@ const floorplanAddress = currentFloorplan => {
|
|
|
247
280
|
};
|
|
248
281
|
};
|
|
249
282
|
exports.floorplanAddress = floorplanAddress;
|
|
250
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfRmxvb3JwbGFuRmlsdGVycyIsIl9tb21lbnQiLCJfVXRpbHMiLCJfUHJvcGVydHkiLCJfVW5pdCIsIl9Sb3VuZFJvYmluIiwiX1JlbmFpc3NhbmNlRGF0YSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQVZBSUxBQkxFX05PVyIsImV4cG9ydHMiLCJ0b2RheSIsIm1vbWVudCIsInRvbW9ycm93IiwiYWRkIiwiY29udmVydFRvSHR0cHMiLCJ1cmwiLCJyZXBsYWNlIiwiY29udmVydFRvRmxvb3JwbGFuQ2FyZERhdGEiLCJmbG9vcnBsYW5EZXRhaWxzIiwiaWQiLCJuYW1lIiwiYWN0aXZlIiwiYmVkcm9vbSIsImJhdGhyb29tIiwiY292ZXJJbWFnZSIsImZlYXR1cmVkIiwic3R5bGUiLCJzcGVjaWFsUmVudCIsInNwZWNpYWxSZW50U3RhcnREYXRlIiwic3BlY2lhbFJlbnRFbmREYXRlIiwiYWRkcmVzcyIsInppcGNvZGUiLCJ2aXJ0dWFsVG91ckxpbmsiLCJ2aWRlb1RvdXJMaW5rIiwicGhvdG9zRm9sZGVySWQiLCJ1bml0cyIsIndlYlNwZWNpYWxzIiwiZmlsdGVyIiwid2ViU3BlY2lhbCIsImlzQmV0d2VlbiIsImRhdGVUb01vbWVudCIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJtYXAiLCJkZXNjcmlwdGlvbiIsImdldEFsbFByb3BlcnR5RmlsdGVyRGF0YSIsInJlc3BvbnNlIiwiZ2V0IiwicHJvcGVydGllcyIsImRhdGEiLCJwcm9wZXJ0eSIsImxlYXNlVHlwZSIsIkxlYXNlVHlwZSIsIllFQVJMWSIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJmb3JFYWNoIiwiZmxvb3JwbGFucyIsImZsb29ycGxhbiIsInVuaXQiLCJnZXRGbG9vcnBsYW5zRmlsdGVyRGF0YSIsInByb3BlcnR5SWQiLCJzb3J0QW5kRmlsdGVyIiwiY3VycmVudEZpbHRlcnMiLCJzb3J0Rmxvb3JwbGFucyIsImZpbHRlck1hdGNoZXMiLCJzb3J0QnkiLCJpc0RhdGVXaXRoaW5Ud2VsdmVNb250aHMiLCJkYXRlIiwiZGlmZiIsImlzRGF0ZUFmdGVyVG9kYXkiLCJpc0FmdGVyIiwiTU9OVEhfWUVBUl9GT1JNQVQiLCJkYXRlVG9Nb250aFllYXIiLCJkYXRlU3RyaW5nIiwiZm9ybWF0IiwiaXNBdmFpbGFibGVOb3ciLCJtb3ZlSW5EYXRlIiwiaXNCZWZvcmUiLCJkZWZhdWx0QXZhaWxhYmlsaXR5VG9Nb250aFllYXIiLCJtb21lbnRUb01vbnRoWWVhciIsImlzQXZhaWxhYmxlIiwiYXZhaWxhYmlsaXR5RmlsdGVycyIsImxlbmd0aCIsInNvbWUiLCJpc1VuaXRBdmFpbGFibGVOb3ciLCJpbmRleE9mIiwiYXZhaWxhYmlsaXR5RXh0ZW5zaW9uTW9udGhzIiwiaSIsImV4dGVuc2lvbkRhdGUiLCJpc0JlZHJvb21zTWF0Y2giLCJiZWRyb29tRmlsdGVycyIsImlzU3R5bGVNYXRjaCIsInN0eWxlRmlsdGVycyIsImlzSW5QcmljZVJhbmdlIiwibWluUmVudCIsIm1heFJlbnQiLCJtaW5NYXgiLCJtaW5pbXVtTWF4aW11bSIsIm1pbiIsIm1heCIsImlzRmxvb3JwbGFuSWRzTWF0Y2giLCJmbG9vcnBsYW5JZHMiLCJTb3J0RmllbGRzIiwic29ydEZpZWxkIiwib3JkZXIiLCJzb3J0IiwiYSIsImIiLCJtaW5SYXRlU29ydGVkIiwiXyIsIm9yZGVyQnkiLCJmaWx0ZXJzRnJvbSIsIlNldCIsImF2YWlsYWJpbGl0eSIsImdldEZlYXR1cmVkRmxvb3JwbGFucyIsIl9lbWJlZGRlZCIsImdldEFsbEFjdGl2ZUZsb29ycGxhbnMiLCJmbG9vcnBsYW5fMSIsImdldEZsb29ycGxhbiIsImZsb29ycGxhbklkIiwidGhlbiIsImdldFNpbWlsYXJGbG9vcnBsYW5zIiwic2ltaWxhckZsb29ycGxhbnMiLCJnZXRGbG9vcnBsYW5WYXJpYXRpb25zIiwiZmxvb3JwbGFuVmFyaWF0aW9ucyIsImlzRmxvb3JwbGFuQXZhaWxhYmxlIiwiZ2V0VGVzdGltb25pYWxzIiwidGVzdGltb25pYWxzIiwiZ2V0V2ViU3BlY2lhbHMiLCJwZXJtaXR0ZWRQZXRzIiwidW5pdFdpdGhNb3N0QWxsb3dlZFBldCIsImFsbG93ZWRQZXQiLCJQZXQiLCJMQVJHRV9ET0dfU01BTExfRE9HX0NBVCIsIlNNQUxMX0RPR19DQVQiLCJDQVQiLCJub3RQZXJtaXR0ZWRQZXRzIiwiTk9fUEVUIiwicGV0UG9saWN5IiwicGV0T3JkaW5hbCIsInBldCIsIk9iamVjdCIsImtleXMiLCJwb3AiLCJmbG9vcnBsYW5BZGRyZXNzIiwiY3VycmVudEZsb29ycGxhbiIsImNpdHkiLCJyZW5haXNzYW5jZSIsInN0YXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Zsb29ycGxhbi9zZXJ2aWNlL0Zsb29ycGxhblNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7TW9udGh9IGZyb20gXCIuLi9kYXRhL0NhbGVuZGFyXCI7XG5pbXBvcnQge0N1cnJlbnRGaWx0ZXJzLCBGbG9vcnBsYW5GaWx0ZXJzLCBTb3J0QnksIFNvcnRGaWVsZHN9IGZyb20gXCIuLi9kYXRhL0Zsb29ycGxhbkZpbHRlcnNcIjtcbmltcG9ydCBtb21lbnQsIHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7XG4gICAgRmxvb3JwbGFuLFxuICAgIEZsb29ycGxhbkNhcmREYXRhLFxuICAgIEZsb29ycGxhbkRldGFpbHMsXG4gICAgRmxvb3JwbGFuU3BvdGxpZ2h0LFxuICAgIEZsb29ycGxhblN0eWxlLFxuICAgIEZsb29ycGxhblZhcmlhdGlvbixcbiAgICBTaW1pbGFyRmxvb3JwbGFuLFxuICAgIFRlc3RpbW9uaWFsLFxuICAgIFdlYlNwZWNpYWxcbn0gZnJvbSBcIi4uL2RhdGEvRmxvb3JwbGFuXCI7XG5pbXBvcnQge2RhdGVUb01vbWVudCwgbWluaW11bU1heGltdW19IGZyb20gXCIuLi8uLi91dGlscy9VdGlsc1wiO1xuaW1wb3J0IHtMZWFzZVR5cGUsIFByb3BlcnR5RmlsdGVyRGF0YSwgUHJvcGVydHlJZH0gZnJvbSBcIi4uLy4uL3Byb3BlcnR5L2RhdGEvUHJvcGVydHlcIjtcbmltcG9ydCB7UGV0LCBVbml0fSBmcm9tIFwiLi4vZGF0YS9Vbml0XCI7XG5pbXBvcnQge2dldH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvUm91bmRSb2JpblwiO1xuaW1wb3J0IHtyZW5haXNzYW5jZX0gZnJvbSBcIi4uLy4uL2RhdGEvUmVuYWlzc2FuY2VEYXRhXCI7XG5cbmV4cG9ydCBjb25zdCBBVkFJTEFCTEVfTk9XID0gXCJBdmFpbGFibGUgTm93XCI7XG5jb25zdCB0b2RheSA9IG1vbWVudCgpO1xuY29uc3QgdG9tb3Jyb3cgPSB0b2RheS5hZGQoMSwgXCJkYXlcIik7XG5cblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUb0h0dHBzID0gKHVybDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBpZiAodXJsID09PSBudWxsKVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoL15odHRwOlxcL1xcLy9pLCAnaHR0cHM6Ly8nKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9GbG9vcnBsYW5DYXJkRGF0YSA9IChmbG9vcnBsYW5EZXRhaWxzOiBGbG9vcnBsYW5EZXRhaWxzKTogRmxvb3JwbGFuQ2FyZERhdGEgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBmbG9vcnBsYW5EZXRhaWxzLmlkLFxuICAgICAgICBuYW1lOiBmbG9vcnBsYW5EZXRhaWxzLm5hbWUsXG4gICAgICAgIGFjdGl2ZTogZmxvb3JwbGFuRGV0YWlscy5hY3RpdmUsXG4gICAgICAgIGJlZHJvb206IGZsb29ycGxhbkRldGFpbHMuYmVkcm9vbSxcbiAgICAgICAgYmF0aHJvb206IGZsb29ycGxhbkRldGFpbHMuYmF0aHJvb20sXG4gICAgICAgIGNvdmVySW1hZ2U6IGZsb29ycGxhbkRldGFpbHMuY292ZXJJbWFnZSxcbiAgICAgICAgZmVhdHVyZWQ6IGZsb29ycGxhbkRldGFpbHMuZmVhdHVyZWQsXG4gICAgICAgIHN0eWxlOiBmbG9vcnBsYW5EZXRhaWxzLnN0eWxlLFxuICAgICAgICBzcGVjaWFsUmVudDogZmxvb3JwbGFuRGV0YWlscy5zcGVjaWFsUmVudCxcbiAgICAgICAgc3BlY2lhbFJlbnRTdGFydERhdGU6IGZsb29ycGxhbkRldGFpbHMuc3BlY2lhbFJlbnRTdGFydERhdGUsXG4gICAgICAgIHNwZWNpYWxSZW50RW5kRGF0ZTogZmxvb3JwbGFuRGV0YWlscy5zcGVjaWFsUmVudEVuZERhdGUsXG4gICAgICAgIGFkZHJlc3M6IGZsb29ycGxhbkRldGFpbHMuYWRkcmVzcyxcbiAgICAgICAgemlwY29kZTogZmxvb3JwbGFuRGV0YWlscy56aXBjb2RlLFxuICAgICAgICB2aXJ0dWFsVG91ckxpbms6IGZsb29ycGxhbkRldGFpbHMudmlydHVhbFRvdXJMaW5rLFxuICAgICAgICB2aWRlb1RvdXJMaW5rOiBmbG9vcnBsYW5EZXRhaWxzLnZpZGVvVG91ckxpbmssXG4gICAgICAgIHBob3Rvc0ZvbGRlcklkOiBmbG9vcnBsYW5EZXRhaWxzLnBob3Rvc0ZvbGRlcklkLFxuICAgICAgICB1bml0czogZmxvb3JwbGFuRGV0YWlscy51bml0cyxcbiAgICAgICAgd2ViU3BlY2lhbHM6IGZsb29ycGxhbkRldGFpbHMud2ViU3BlY2lhbHNcbiAgICAgICAgICAgIC5maWx0ZXIod2ViU3BlY2lhbCA9PiB0b2RheS5pc0JldHdlZW4oZGF0ZVRvTW9tZW50KHdlYlNwZWNpYWwuc3RhcnREYXRlKSwgZGF0ZVRvTW9tZW50KHdlYlNwZWNpYWwuZW5kRGF0ZSkpKVxuICAgICAgICAgICAgLm1hcCh3ZWJTcGVjaWFsID0+IHdlYlNwZWNpYWwuZGVzY3JpcHRpb24pXG4gICAgfSBhcyBGbG9vcnBsYW5DYXJkRGF0YTtcbn1cbmV4cG9ydCBjb25zdCBnZXRBbGxQcm9wZXJ0eUZpbHRlckRhdGEgPSBhc3luYyAoKTogUHJvbWlzZTxQcm9wZXJ0eUZpbHRlckRhdGFbXT4gPT4ge1xuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGdldChcInByb3BlcnRpZXMvZmlsdGVyXCIpO1xuXG4gICAgY29uc3QgcHJvcGVydGllczogUHJvcGVydHlGaWx0ZXJEYXRhW10gPSByZXNwb25zZS5kYXRhXG4gICAgICAgIC5maWx0ZXIoKHByb3BlcnR5OiBQcm9wZXJ0eUZpbHRlckRhdGEpID0+IHByb3BlcnR5LmFjdGl2ZSlcbiAgICAgICAgLmZpbHRlcigocHJvcGVydHk6IFByb3BlcnR5RmlsdGVyRGF0YSkgPT4gcHJvcGVydHkubGVhc2VUeXBlID09PSBMZWFzZVR5cGUuWUVBUkxZKVxuICAgICAgICAuZmlsdGVyKChwcm9wZXJ0eTogUHJvcGVydHlGaWx0ZXJEYXRhKSA9PiAhcHJvcGVydHkubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwiZ2FyYWdlXCIpKTtcblxuICAgIHByb3BlcnRpZXMuZm9yRWFjaChwcm9wZXJ0eSA9PiB7XG4gICAgICAgIHByb3BlcnR5LmZsb29ycGxhbnMgPSBwcm9wZXJ0eS5mbG9vcnBsYW5zLmZpbHRlcihmbG9vcnBsYW4gPT4gZmxvb3JwbGFuLmFjdGl2ZSk7XG4gICAgICAgIHByb3BlcnR5LmZsb29ycGxhbnMuZm9yRWFjaChmbG9vcnBsYW4gPT4ge1xuICAgICAgICAgICAgZmxvb3JwbGFuLnVuaXRzID0gZmxvb3JwbGFuLnVuaXRzLmZpbHRlcih1bml0ID0+IHVuaXQuYWN0aXZlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvcGVydGllcztcbn1cbmV4cG9ydCBjb25zdCBnZXRGbG9vcnBsYW5zRmlsdGVyRGF0YSA9IGFzeW5jIChwcm9wZXJ0eUlkOiBQcm9wZXJ0eUlkKTogUHJvbWlzZTxGbG9vcnBsYW5DYXJkRGF0YVtdPiA9PiB7XG4gICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZ2V0KFwicHJvcGVydGllcy9cIiArIHByb3BlcnR5SWQgKyBcIi9mbG9vcnBsYW5zL2ZpbHRlclwiKTtcblxuICAgIGNvbnN0IGZsb29ycGxhbnM6IEZsb29ycGxhbkNhcmREYXRhW10gPSByZXNwb25zZS5kYXRhXG4gICAgICAgIC5maWx0ZXIoKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEpID0+IGZsb29ycGxhbi5hY3RpdmUpO1xuXG4gICAgZmxvb3JwbGFucy5mb3JFYWNoKGZsb29ycGxhbiA9PiB7XG4gICAgICAgIGZsb29ycGxhbi51bml0cyA9IGZsb29ycGxhbi51bml0cy5maWx0ZXIodW5pdCA9PiB1bml0LmFjdGl2ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmxvb3JwbGFucztcbn07XG5leHBvcnQgY29uc3Qgc29ydEFuZEZpbHRlciA9IChmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdLCBjdXJyZW50RmlsdGVyczogQ3VycmVudEZpbHRlcnMpOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0+IHtcbiAgICByZXR1cm4gc29ydEZsb29ycGxhbnMoZmxvb3JwbGFucy5maWx0ZXIoZmxvb3JwbGFuID0+IGZpbHRlck1hdGNoZXMoZmxvb3JwbGFuLCBjdXJyZW50RmlsdGVycykpLCBjdXJyZW50RmlsdGVycy5zb3J0QnkpO1xufTtcblxuXG5leHBvcnQgY29uc3QgaXNEYXRlV2l0aGluVHdlbHZlTW9udGhzID0gKGRhdGU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGRpZmYgPSBtb21lbnQoZGF0ZSwgXCJZWVlZLU1NLUREXCIpLmRpZmYodG9kYXksICdtb250aHMnLCBmYWxzZSk7XG4gICAgcmV0dXJuIGRpZmYgPj0gMCAmJiBkaWZmIDw9IDEyO1xufVxuZXhwb3J0IGNvbnN0IGlzRGF0ZUFmdGVyVG9kYXkgPSAoZGF0ZTogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIG1vbWVudChkYXRlLCBcIllZWVktTU0tRERcIikuaXNBZnRlcih0b2RheSk7XG59XG5leHBvcnQgY29uc3QgTU9OVEhfWUVBUl9GT1JNQVQgPSBcIk1NTU0gWVlZWVwiO1xuY29uc3QgZGF0ZVRvTW9udGhZZWFyID0gKGRhdGVTdHJpbmc6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgPT4gbW9tZW50KGRhdGVTdHJpbmcsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpO1xuXG5jb25zdCBpc0F2YWlsYWJsZU5vdyA9IChtb3ZlSW5EYXRlOiBtb21lbnQuTW9tZW50KSA9PiBtb3ZlSW5EYXRlLmlzQmVmb3JlKHRvbW9ycm93KTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRBdmFpbGFiaWxpdHlUb01vbnRoWWVhciA9IChkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICBBVkFJTEFCTEVfTk9XID09PSBkYXRlU3RyaW5nID8gZGF0ZVN0cmluZyA6IG1vbWVudChkYXRlU3RyaW5nLCBcIk1NLVlZWVlcIikuZm9ybWF0KE1PTlRIX1lFQVJfRk9STUFUKTtcblxuZXhwb3J0IGNvbnN0IG1vbWVudFRvTW9udGhZZWFyID0gKGRhdGU6IE1vbWVudCkgPT4gZGF0ZS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpO1xuXG5cbmNvbnN0IGlzQXZhaWxhYmxlID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGF2YWlsYWJpbGl0eUZpbHRlcnM6IE1vbnRoW10pOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBhdmFpbGFiaWxpdHlGaWx0ZXJzLmxlbmd0aCA9PT0gMCA/IHRydWUgOlxuXG4gICAgICAgIGZsb29ycGxhbi51bml0cy5zb21lKCh1bml0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNVbml0QXZhaWxhYmxlTm93ID0gaXNBdmFpbGFibGVOb3cobW9tZW50KHVuaXQubW92ZUluRGF0ZSkpXG4gICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJpbGl0eUZpbHRlcnMuaW5kZXhPZihBVkFJTEFCTEVfTk9XKSA+IC0xIHx8IGF2YWlsYWJpbGl0eUZpbHRlcnMuaW5kZXhPZihtb21lbnRUb01vbnRoWWVhcih0b2RheSkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVW5pdEF2YWlsYWJsZU5vdylcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyAmJiB1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHM7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbkRhdGUgPSBpc1VuaXRBdmFpbGFibGVOb3cgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudCgpLmFkZChpLCAnbW9udGgnKS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlVG9Nb21lbnQodW5pdC5tb3ZlSW5EYXRlKS5hZGQoaSwgJ21vbnRoJykuZm9ybWF0KE1PTlRIX1lFQVJfRk9STUFUKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFiaWxpdHlGaWx0ZXJzLmluZGV4T2YoZXh0ZW5zaW9uRGF0ZSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhdmFpbGFiaWxpdHlGaWx0ZXJzLmluZGV4T2YoZGF0ZVRvTW9udGhZZWFyKHVuaXQubW92ZUluRGF0ZSkpID4gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG59O1xuY29uc3QgaXNCZWRyb29tc01hdGNoID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGJlZHJvb21GaWx0ZXJzOiBudW1iZXJbXSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBiZWRyb29tRmlsdGVycy5sZW5ndGggPT09IDAgPyB0cnVlIDogYmVkcm9vbUZpbHRlcnMuaW5kZXhPZihmbG9vcnBsYW4uYmVkcm9vbSkgPiAtMTtcbn07XG5jb25zdCBpc1N0eWxlTWF0Y2ggPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgc3R5bGVGaWx0ZXJzOiBGbG9vcnBsYW5TdHlsZVtdKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIHN0eWxlRmlsdGVycy5sZW5ndGggPT09IDAgPyB0cnVlIDogc3R5bGVGaWx0ZXJzLmluZGV4T2YoZmxvb3JwbGFuLnN0eWxlKSA+IC0xO1xufVxuY29uc3QgaXNJblByaWNlUmFuZ2UgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgbWluUmVudDogbnVtYmVyLCBtYXhSZW50OiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBtaW5NYXggPSBtaW5pbXVtTWF4aW11bShmbG9vcnBsYW4udW5pdHMsIFwicmVudFwiKTtcbiAgICByZXR1cm4gbWluTWF4Lm1pbiA+PSBtaW5SZW50ICYmIG1pbk1heC5tYXggPD0gbWF4UmVudDtcbn1cbmNvbnN0IGlzRmxvb3JwbGFuSWRzTWF0Y2ggPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgZmxvb3JwbGFuSWRzOiBzdHJpbmdbXSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBmbG9vcnBsYW5JZHMubGVuZ3RoID09PSAwID8gdHJ1ZSA6IGZsb29ycGxhbklkcy5pbmRleE9mKGZsb29ycGxhbi5pZCkgPiAtMTtcbn07XG5jb25zdCBmaWx0ZXJNYXRjaGVzID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGN1cnJlbnRGaWx0ZXJzOiBDdXJyZW50RmlsdGVycykgPT4ge1xuICAgIHJldHVybiBpc0F2YWlsYWJsZShmbG9vcnBsYW4sIGN1cnJlbnRGaWx0ZXJzLmF2YWlsYWJpbGl0eUZpbHRlcnMpICYmXG4gICAgICAgIGlzSW5QcmljZVJhbmdlKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMubWluUmVudCwgY3VycmVudEZpbHRlcnMubWF4UmVudCkgJiZcbiAgICAgICAgaXNTdHlsZU1hdGNoKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMuc3R5bGVGaWx0ZXJzKSAmJlxuICAgICAgICBpc0JlZHJvb21zTWF0Y2goZmxvb3JwbGFuLCBjdXJyZW50RmlsdGVycy5iZWRyb29tRmlsdGVycykgJiZcbiAgICAgICAgaXNGbG9vcnBsYW5JZHNNYXRjaChmbG9vcnBsYW4sIGN1cnJlbnRGaWx0ZXJzLmZsb29ycGxhbklkcyk7XG59XG5leHBvcnQgY29uc3Qgc29ydEZsb29ycGxhbnMgPSAoZmxvb3JwbGFuczogRmxvb3JwbGFuQ2FyZERhdGFbXSwgc29ydEJ5OiBTb3J0QnkpOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0+IHtcblxuICAgIGlmIChTb3J0RmllbGRzW3NvcnRCeV0uc29ydEZpZWxkID09PSBcIm1pblJhdGVcIiAmJiBTb3J0RmllbGRzW3NvcnRCeV0ub3JkZXIgPT09IFwiZGVzY1wiKSB7XG4gICAgICAgIHJldHVybiBmbG9vcnBsYW5zLnNvcnQoKGEsIGIpID0+IG1pbmltdW1NYXhpbXVtKGIudW5pdHMsIFwicmVudFwiKS5taW4gLSBtaW5pbXVtTWF4aW11bShhLnVuaXRzLCBcInJlbnRcIikubWluKTtcbiAgICB9XG5cbiAgICBjb25zdCBtaW5SYXRlU29ydGVkID0gZmxvb3JwbGFucy5zb3J0KChhLCBiKSA9PiBtaW5pbXVtTWF4aW11bShhLnVuaXRzLCBcInJlbnRcIikubWluIC0gbWluaW11bU1heGltdW0oYi51bml0cywgXCJyZW50XCIpLm1pbik7XG4gICAgaWYgKFNvcnRGaWVsZHNbc29ydEJ5XS5zb3J0RmllbGQgPT09IFwibWluUmF0ZVwiICYmIFNvcnRGaWVsZHNbc29ydEJ5XS5vcmRlciA9PT0gXCJhc2NcIikge1xuICAgICAgICByZXR1cm4gbWluUmF0ZVNvcnRlZFxuICAgIH1cbiAgICByZXR1cm4gXy5vcmRlckJ5KG1pblJhdGVTb3J0ZWQsIFNvcnRGaWVsZHNbc29ydEJ5XS5zb3J0RmllbGQsIFNvcnRGaWVsZHNbc29ydEJ5XS5vcmRlcik7XG59O1xuXG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJzRnJvbSA9IChmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdKTogRmxvb3JwbGFuRmlsdGVycyA9PiB7XG5cbiAgICAgICAgY29uc3QgYmVkcm9vbUZpbHRlcnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgICAgICAgY29uc3QgYXZhaWxhYmlsaXR5RmlsdGVycyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBjb25zdCBzdHlsZUZpbHRlcnMgPSBuZXcgU2V0PEZsb29ycGxhblN0eWxlPigpO1xuXG4gICAgICAgIGF2YWlsYWJpbGl0eUZpbHRlcnMuYWRkKEFWQUlMQUJMRV9OT1cpO1xuICAgICAgICBmbG9vcnBsYW5zLmZvckVhY2goZmxvb3JwbGFuID0+IHtcbiAgICAgICAgICAgICAgICBiZWRyb29tRmlsdGVycy5hZGQoZmxvb3JwbGFuLmJlZHJvb20pO1xuICAgICAgICAgICAgICAgIHN0eWxlRmlsdGVycy5hZGQoZmxvb3JwbGFuLnN0eWxlKTtcblxuICAgICAgICAgICAgICAgIGZsb29ycGxhbi51bml0cy5mb3JFYWNoKCh1bml0KSA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNVbml0QXZhaWxhYmxlTm93ID0gaXNBdmFpbGFibGVOb3cobW9tZW50KHVuaXQubW92ZUluRGF0ZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh1bml0Lm1vdmVJbkRhdGUgJiYgaXNVbml0QXZhaWxhYmxlTm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHMgJiYgdW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHM7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uRGF0ZSA9IG1vbWVudCgpLmFkZChpLCAnbW9udGgnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5RmlsdGVycy5hZGQoZXh0ZW5zaW9uRGF0ZS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHVuaXQubW92ZUluRGF0ZSAmJiAhaXNVbml0QXZhaWxhYmxlTm93ICYmIGlzRGF0ZVdpdGhpblR3ZWx2ZU1vbnRocyh1bml0Lm1vdmVJbkRhdGUpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eUZpbHRlcnMuYWRkKGRhdGVUb01vbnRoWWVhcih1bml0Lm1vdmVJbkRhdGUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyAmJiB1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRoczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25EYXRlID0gZGF0ZVRvTW9tZW50KHVuaXQubW92ZUluRGF0ZSkuYWRkKGksICdtb250aCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlGaWx0ZXJzLmFkZChleHRlbnNpb25EYXRlLmZvcm1hdChNT05USF9ZRUFSX0ZPUk1BVCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiZWRyb29tOiBiZWRyb29tRmlsdGVycyxcbiAgICAgICAgICAgIGF2YWlsYWJpbGl0eTogYXZhaWxhYmlsaXR5RmlsdGVycyxcbiAgICAgICAgICAgIHN0eWxlOiBzdHlsZUZpbHRlcnNcbiAgICAgICAgfVxuICAgIH1cbjtcblxuXG5leHBvcnQgY29uc3QgZ2V0RmVhdHVyZWRGbG9vcnBsYW5zID0gYXN5bmMgKCk6IFByb21pc2U8Rmxvb3JwbGFuU3BvdGxpZ2h0W10+ID0+IHtcblxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGdldChcImZsb29ycGxhbnM/cHJvamVjdGlvbj1zcG90bGlnaHQmc2l6ZT0yMDBcIik7XG4gICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmRhdGEuX2VtYmVkZGVkLmZsb29ycGxhbnMuZmlsdGVyKChmbG9vcnBsYW46IEZsb29ycGxhblNwb3RsaWdodCkgPT4gZmxvb3JwbGFuLmZlYXR1cmVkICYmIGZsb29ycGxhbi5wcm9wZXJ0eS5hY3RpdmUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbEFjdGl2ZUZsb29ycGxhbnMgPSBhc3luYyAoKTogUHJvbWlzZTxGbG9vcnBsYW5EZXRhaWxzW10+ID0+IHtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZ2V0KFwiZmxvb3JwbGFucz9wcm9qZWN0aW9uPWRldGFpbHMmc2l6ZT0yMDBcIik7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuX2VtYmVkZGVkLmZsb29ycGxhbnNcbiAgICAgICAgLmZpbHRlcigoZmxvb3JwbGFuOiBGbG9vcnBsYW4pID0+IGZsb29ycGxhbi5hY3RpdmUpXG4gICAgICAgIC5maWx0ZXIoKGZsb29ycGxhbl8xOiBGbG9vcnBsYW4pID0+IGZsb29ycGxhbl8xLnN0eWxlICE9PSBcIkdBUkFHRVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGbG9vcnBsYW4gPSAoZmxvb3JwbGFuSWQ6IHN0cmluZyk6IFByb21pc2U8Rmxvb3JwbGFuPiA9PlxuICAgIGdldChcImZsb29ycGxhbnMvXCIgKyBmbG9vcnBsYW5JZCArIFwiP3Byb2plY3Rpb249d2l0aElkXCIpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YSk7XG5cbmV4cG9ydCBjb25zdCBnZXRTaW1pbGFyRmxvb3JwbGFucyA9IChmbG9vcnBsYW5JZDogc3RyaW5nKTogUHJvbWlzZTxTaW1pbGFyRmxvb3JwbGFuW10+ID0+XG4gICAgZ2V0KFwic2ltaWxhckZsb29ycGxhbnMvc2VhcmNoL2J5Rmxvb3JwbGFuSWQ/cHJvamVjdGlvbj13aXRoSWQmZmxvb3JwbGFuSWQ9XCIgKyBmbG9vcnBsYW5JZCkudGhlbihyZXNwb25zZSA9PiByZXNwb25zZS5kYXRhLl9lbWJlZGRlZC5zaW1pbGFyRmxvb3JwbGFucyk7XG5cbmV4cG9ydCBjb25zdCBnZXRGbG9vcnBsYW5WYXJpYXRpb25zID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPEZsb29ycGxhblZhcmlhdGlvbltdPiA9PlxuICAgIGdldChcImZsb29ycGxhblZhcmlhdGlvbnMvc2VhcmNoL2J5Rmxvb3JwbGFuSWQ/cHJvamVjdGlvbj13aXRoSWQmZmxvb3JwbGFuSWQ9XCIgKyBmbG9vcnBsYW5JZCkudGhlbihyZXNwb25zZSA9PiByZXNwb25zZS5kYXRhLl9lbWJlZGRlZC5mbG9vcnBsYW5WYXJpYXRpb25zKTtcblxuZXhwb3J0IGNvbnN0IGlzRmxvb3JwbGFuQXZhaWxhYmxlID0gKGZsb29ycGxhbjogRmxvb3JwbGFuIHwgRmxvb3JwbGFuQ2FyZERhdGEpOiBib29sZWFuID0+IGZsb29ycGxhbi51bml0cy5zb21lKCh1bml0KSA9PiB0b2RheS5pc0FmdGVyKGRhdGVUb01vbWVudCh1bml0Lm1vdmVJbkRhdGUpKSk7XG5leHBvcnQgY29uc3QgZ2V0VGVzdGltb25pYWxzID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPFRlc3RpbW9uaWFsW10+ID0+XG4gICAgZ2V0KFwidGVzdGltb25pYWxzL3NlYXJjaC9ieUZsb29ycGxhbklkP3Byb2plY3Rpb249d2l0aElkJmZsb29ycGxhbklkPVwiICsgZmxvb3JwbGFuSWQpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQudGVzdGltb25pYWxzKTtcblxuZXhwb3J0IGNvbnN0IGdldFdlYlNwZWNpYWxzID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPFdlYlNwZWNpYWxbXT4gPT5cbiAgICBnZXQoXCJ3ZWJTcGVjaWFscy9zZWFyY2gvYnlGbG9vcnBsYW5JZD9wcm9qZWN0aW9uPXdpdGhJZCZmbG9vcnBsYW5JZD1cIiArIGZsb29ycGxhbklkKS50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmRhdGEuX2VtYmVkZGVkLndlYlNwZWNpYWxzKTtcblxuZXhwb3J0IGNvbnN0IHBlcm1pdHRlZFBldHMgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW4pOiBzdHJpbmdbXSA9PiB7XG5cbiAgICBjb25zdCB1bml0ID0gdW5pdFdpdGhNb3N0QWxsb3dlZFBldChbLi4uZmxvb3JwbGFuLnVuaXRzXSk7XG5cbiAgICBzd2l0Y2ggKHVuaXQ/LmFsbG93ZWRQZXQpIHtcbiAgICAgICAgY2FzZSBQZXQuTEFSR0VfRE9HX1NNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICByZXR1cm4gWydMYXJnZSBEb2cnLCAnU21hbGwgRG9nJywgJ0NhdCddO1xuICAgICAgICBjYXNlIFBldC5TTUFMTF9ET0dfQ0FUOlxuICAgICAgICAgICAgcmV0dXJuIFsnU21hbGwgRG9nJywgJ0NhdCddO1xuICAgICAgICBjYXNlIFBldC5DQVQ6XG4gICAgICAgICAgICByZXR1cm4gWydDYXQnXTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBbJ05vbmUnXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBub3RQZXJtaXR0ZWRQZXRzID0gKGZsb29ycGxhbjogRmxvb3JwbGFuKTogc3RyaW5nW10gPT4ge1xuXG4gICAgY29uc3QgdW5pdCA9IHVuaXRXaXRoTW9zdEFsbG93ZWRQZXQoWy4uLmZsb29ycGxhbi51bml0c10pO1xuXG4gICAgc3dpdGNoICh1bml0Py5hbGxvd2VkUGV0KSB7XG4gICAgICAgIGNhc2UgUGV0LkxBUkdFX0RPR19TTUFMTF9ET0dfQ0FUOlxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICBjYXNlIFBldC5TTUFMTF9ET0dfQ0FUOlxuICAgICAgICAgICAgcmV0dXJuIFsnTGFyZ2UgRG9nJ107XG4gICAgICAgIGNhc2UgUGV0LkNBVDpcbiAgICAgICAgICAgIHJldHVybiBbJ0xhcmdlIERvZycsICdTbWFsbCBEb2cnXTtcbiAgICAgICAgY2FzZSBQZXQuTk9fUEVUOlxuICAgICAgICAgICAgcmV0dXJuIFsnTGFyZ2UgRG9nJywgJ1NtYWxsIERvZycsICdDYXQnXTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICB9XG59XG5leHBvcnQgY29uc3QgcGV0UG9saWN5ID0gKGZsb29ycGxhbjogRmxvb3JwbGFuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCB1bml0ID0gdW5pdFdpdGhNb3N0QWxsb3dlZFBldChbLi4uZmxvb3JwbGFuLnVuaXRzXSk7XG4gICAgcmV0dXJuIHVuaXQ/LnBldFBvbGljeTtcbn1cbmNvbnN0IHVuaXRXaXRoTW9zdEFsbG93ZWRQZXQgPSAodW5pdHM6IFVuaXRbXSk6IFVuaXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHBldE9yZGluYWwgPSAocGV0OiBQZXQpID0+IE9iamVjdC5rZXlzKFBldCkuaW5kZXhPZihwZXQpO1xuICAgIHJldHVybiB1bml0cy5zb3J0KChhLCBiKSA9PiBwZXRPcmRpbmFsKGIuYWxsb3dlZFBldCkgLSBwZXRPcmRpbmFsKGEuYWxsb3dlZFBldCkpLnBvcCgpO1xufVxuXG5leHBvcnQgY29uc3QgZmxvb3JwbGFuQWRkcmVzcyA9IChjdXJyZW50Rmxvb3JwbGFuOiBGbG9vcnBsYW4pOiBGbG9vcnBsYW5BZGRyZXNzID0+IHtcbiAgICBjb25zdCBhZGRyZXNzOiBGbG9vcnBsYW5BZGRyZXNzID0ge2FkZHJlc3M6IFwiXCIsIGNpdHk6IHJlbmFpc3NhbmNlLmNpdHksIHN0YXRlOiByZW5haXNzYW5jZS5zdGF0ZSwgemlwY29kZTogXCJcIn07XG4gICAgaWYgKGN1cnJlbnRGbG9vcnBsYW4udW5pdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hZGRyZXNzLCBhZGRyZXNzOiBjdXJyZW50Rmxvb3JwbGFuLnVuaXRzWzBdLmFkZHJlc3MsXG4gICAgICAgICAgICB6aXBjb2RlOiBjdXJyZW50Rmxvb3JwbGFuLnVuaXRzWzBdLnppcGNvZGVcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5hZGRyZXNzLCBhZGRyZXNzOiBjdXJyZW50Rmxvb3JwbGFuLnByb3BlcnR5LmFkZHJlc3MsXG4gICAgICAgIHppcGNvZGU6IGN1cnJlbnRGbG9vcnBsYW4ucHJvcGVydHkuemlwY29kZVxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG9vcnBsYW5BZGRyZXNzIHtcbiAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgY2l0eTogc3RyaW5nO1xuICAgIHN0YXRlOiBzdHJpbmc7XG4gICAgemlwY29kZTogc3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxpQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBWUEsSUFBQUcsTUFB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
|
|
283
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfRmxvb3JwbGFuRmlsdGVycyIsIl9tb21lbnQiLCJfVXRpbHMiLCJfUHJvcGVydHkiLCJfVW5pdCIsIl9Sb3VuZFJvYmluIiwiX1JlbmFpc3NhbmNlRGF0YSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQVZBSUxBQkxFX05PVyIsImV4cG9ydHMiLCJ0b2RheSIsIm1vbWVudCIsInRvbW9ycm93IiwiYWRkIiwiY29udmVydFRvSHR0cHMiLCJ1cmwiLCJyZXBsYWNlIiwiY29udmVydFRvRmxvb3JwbGFuQ2FyZERhdGEiLCJmbG9vcnBsYW5EZXRhaWxzIiwiaWQiLCJuYW1lIiwiYWN0aXZlIiwiYmVkcm9vbSIsImJhdGhyb29tIiwiY292ZXJJbWFnZSIsImZlYXR1cmVkIiwic3R5bGUiLCJzcGVjaWFsUmVudCIsInNwZWNpYWxSZW50U3RhcnREYXRlIiwic3BlY2lhbFJlbnRFbmREYXRlIiwiYWRkcmVzcyIsInppcGNvZGUiLCJ2aXJ0dWFsVG91ckxpbmsiLCJ2aWRlb1RvdXJMaW5rIiwicGhvdG9zRm9sZGVySWQiLCJ1bml0cyIsIndlYlNwZWNpYWxzIiwiZmlsdGVyIiwid2ViU3BlY2lhbCIsImlzQmV0d2VlbiIsImRhdGVUb01vbWVudCIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJtYXAiLCJkZXNjcmlwdGlvbiIsImdldEFsbFByb3BlcnR5RmlsdGVyRGF0YSIsInJlc3BvbnNlIiwiZ2V0IiwicHJvcGVydGllcyIsImRhdGEiLCJwcm9wZXJ0eSIsImxlYXNlVHlwZSIsIkxlYXNlVHlwZSIsIllFQVJMWSIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJmb3JFYWNoIiwiZmxvb3JwbGFucyIsImZsb29ycGxhbiIsInVuaXQiLCJnZXRGbG9vcnBsYW5zRmlsdGVyRGF0YSIsInByb3BlcnR5SWQiLCJzb3J0QW5kRmlsdGVyIiwiY3VycmVudEZpbHRlcnMiLCJzb3J0Rmxvb3JwbGFucyIsImZpbHRlck1hdGNoZXMiLCJzb3J0QnkiLCJpc0RhdGVXaXRoaW5Ud2VsdmVNb250aHMiLCJkYXRlIiwiZGlmZiIsImlzRGF0ZUFmdGVyVG9kYXkiLCJpc0FmdGVyIiwiTU9OVEhfWUVBUl9GT1JNQVQiLCJkYXRlVG9Nb250aFllYXIiLCJkYXRlU3RyaW5nIiwiZm9ybWF0IiwiaXNBdmFpbGFibGVOb3ciLCJtb3ZlSW5EYXRlIiwiaXNCZWZvcmUiLCJkZWZhdWx0QXZhaWxhYmlsaXR5VG9Nb250aFllYXIiLCJtb21lbnRUb01vbnRoWWVhciIsImlzQXZhaWxhYmxlIiwiYXZhaWxhYmlsaXR5RmlsdGVycyIsImxlbmd0aCIsInNvbWUiLCJpc1VuaXRBdmFpbGFibGVOb3ciLCJpbmRleE9mIiwiYXZhaWxhYmlsaXR5RXh0ZW5zaW9uTW9udGhzIiwiaSIsImV4dGVuc2lvbkRhdGUiLCJpc0JlZHJvb21zTWF0Y2giLCJiZWRyb29tRmlsdGVycyIsImlzU3R5bGVNYXRjaCIsInN0eWxlRmlsdGVycyIsImlzSW5QcmljZVJhbmdlIiwibWluUmVudCIsIm1heFJlbnQiLCJtaW5NYXgiLCJtaW5pbXVtTWF4aW11bSIsIm1pbiIsIm1heCIsImlzRmxvb3JwbGFuSWRzTWF0Y2giLCJmbG9vcnBsYW5JZHMiLCJTb3J0RmllbGRzIiwic29ydEZpZWxkIiwib3JkZXIiLCJzb3J0IiwiYSIsImIiLCJtaW5SYXRlU29ydGVkIiwiXyIsIm9yZGVyQnkiLCJmaWx0ZXJzRnJvbSIsIlNldCIsImF2YWlsYWJpbGl0eSIsImdldEZlYXR1cmVkRmxvb3JwbGFucyIsIl9lbWJlZGRlZCIsImdldEFsbEFjdGl2ZUZsb29ycGxhbnMiLCJmbG9vcnBsYW5fMSIsImdldEZsb29ycGxhbiIsImZsb29ycGxhbklkIiwidGhlbiIsImdldFNpbWlsYXJGbG9vcnBsYW5zIiwic2ltaWxhckZsb29ycGxhbnMiLCJnZXRGbG9vcnBsYW5WYXJpYXRpb25zIiwiZmxvb3JwbGFuVmFyaWF0aW9ucyIsImlzRmxvb3JwbGFuQXZhaWxhYmxlIiwiZ2V0VGVzdGltb25pYWxzIiwidGVzdGltb25pYWxzIiwiZ2V0V2ViU3BlY2lhbHMiLCJwZXJtaXR0ZWRQZXRzIiwiYWxsb3dlZFBldCIsIlBldCIsIkxBUkdFX0RPR19TTUFMTF9ET0dfQ0FUIiwiU01BTExfRE9HX0NBVCIsIkNBVCIsInVuaXRXaXRoTW9zdEFsbG93ZWRQZXQiLCJub3RQZXJtaXR0ZWRQZXRzIiwiTk9fUEVUIiwicGV0UG9saWN5IiwicGV0T3JkaW5hbCIsInBldCIsIk9iamVjdCIsImtleXMiLCJwb3AiLCJmbG9vcnBsYW5BZGRyZXNzIiwiY3VycmVudEZsb29ycGxhbiIsImNpdHkiLCJyZW5haXNzYW5jZSIsInN0YXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Zsb29ycGxhbi9zZXJ2aWNlL0Zsb29ycGxhblNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7TW9udGh9IGZyb20gXCIuLi9kYXRhL0NhbGVuZGFyXCI7XG5pbXBvcnQge0N1cnJlbnRGaWx0ZXJzLCBGbG9vcnBsYW5GaWx0ZXJzLCBTb3J0QnksIFNvcnRGaWVsZHN9IGZyb20gXCIuLi9kYXRhL0Zsb29ycGxhbkZpbHRlcnNcIjtcbmltcG9ydCBtb21lbnQsIHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7XG4gICAgRmxvb3JwbGFuLFxuICAgIEZsb29ycGxhbkNhcmREYXRhLFxuICAgIEZsb29ycGxhbkRldGFpbHMsXG4gICAgRmxvb3JwbGFuU3BvdGxpZ2h0LFxuICAgIEZsb29ycGxhblN0eWxlLFxuICAgIEZsb29ycGxhblZhcmlhdGlvbixcbiAgICBTaW1pbGFyRmxvb3JwbGFuLFxuICAgIFRlc3RpbW9uaWFsLFxuICAgIFdlYlNwZWNpYWxcbn0gZnJvbSBcIi4uL2RhdGEvRmxvb3JwbGFuXCI7XG5pbXBvcnQge2RhdGVUb01vbWVudCwgbWluaW11bU1heGltdW19IGZyb20gXCIuLi8uLi91dGlscy9VdGlsc1wiO1xuaW1wb3J0IHtMZWFzZVR5cGUsIFByb3BlcnR5RmlsdGVyRGF0YSwgUHJvcGVydHlJZH0gZnJvbSBcIi4uLy4uL3Byb3BlcnR5L2RhdGEvUHJvcGVydHlcIjtcbmltcG9ydCB7UGV0LCBVbml0fSBmcm9tIFwiLi4vZGF0YS9Vbml0XCI7XG5pbXBvcnQge2dldH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvUm91bmRSb2JpblwiO1xuaW1wb3J0IHtyZW5haXNzYW5jZX0gZnJvbSBcIi4uLy4uL2RhdGEvUmVuYWlzc2FuY2VEYXRhXCI7XG5cbmV4cG9ydCBjb25zdCBBVkFJTEFCTEVfTk9XID0gXCJBdmFpbGFibGUgTm93XCI7XG5jb25zdCB0b2RheSA9IG1vbWVudCgpO1xuY29uc3QgdG9tb3Jyb3cgPSB0b2RheS5hZGQoMSwgXCJkYXlcIik7XG5cblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUb0h0dHBzID0gKHVybDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBpZiAodXJsID09PSBudWxsKVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoL15odHRwOlxcL1xcLy9pLCAnaHR0cHM6Ly8nKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9GbG9vcnBsYW5DYXJkRGF0YSA9IChmbG9vcnBsYW5EZXRhaWxzOiBGbG9vcnBsYW5EZXRhaWxzKTogRmxvb3JwbGFuQ2FyZERhdGEgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBmbG9vcnBsYW5EZXRhaWxzLmlkLFxuICAgICAgICBuYW1lOiBmbG9vcnBsYW5EZXRhaWxzLm5hbWUsXG4gICAgICAgIGFjdGl2ZTogZmxvb3JwbGFuRGV0YWlscy5hY3RpdmUsXG4gICAgICAgIGJlZHJvb206IGZsb29ycGxhbkRldGFpbHMuYmVkcm9vbSxcbiAgICAgICAgYmF0aHJvb206IGZsb29ycGxhbkRldGFpbHMuYmF0aHJvb20sXG4gICAgICAgIGNvdmVySW1hZ2U6IGZsb29ycGxhbkRldGFpbHMuY292ZXJJbWFnZSxcbiAgICAgICAgZmVhdHVyZWQ6IGZsb29ycGxhbkRldGFpbHMuZmVhdHVyZWQsXG4gICAgICAgIHN0eWxlOiBmbG9vcnBsYW5EZXRhaWxzLnN0eWxlLFxuICAgICAgICBzcGVjaWFsUmVudDogZmxvb3JwbGFuRGV0YWlscy5zcGVjaWFsUmVudCxcbiAgICAgICAgc3BlY2lhbFJlbnRTdGFydERhdGU6IGZsb29ycGxhbkRldGFpbHMuc3BlY2lhbFJlbnRTdGFydERhdGUsXG4gICAgICAgIHNwZWNpYWxSZW50RW5kRGF0ZTogZmxvb3JwbGFuRGV0YWlscy5zcGVjaWFsUmVudEVuZERhdGUsXG4gICAgICAgIGFkZHJlc3M6IGZsb29ycGxhbkRldGFpbHMuYWRkcmVzcyxcbiAgICAgICAgemlwY29kZTogZmxvb3JwbGFuRGV0YWlscy56aXBjb2RlLFxuICAgICAgICB2aXJ0dWFsVG91ckxpbms6IGZsb29ycGxhbkRldGFpbHMudmlydHVhbFRvdXJMaW5rLFxuICAgICAgICB2aWRlb1RvdXJMaW5rOiBmbG9vcnBsYW5EZXRhaWxzLnZpZGVvVG91ckxpbmssXG4gICAgICAgIHBob3Rvc0ZvbGRlcklkOiBmbG9vcnBsYW5EZXRhaWxzLnBob3Rvc0ZvbGRlcklkLFxuICAgICAgICB1bml0czogZmxvb3JwbGFuRGV0YWlscy51bml0cyxcbiAgICAgICAgd2ViU3BlY2lhbHM6IGZsb29ycGxhbkRldGFpbHMud2ViU3BlY2lhbHNcbiAgICAgICAgICAgIC5maWx0ZXIod2ViU3BlY2lhbCA9PiB0b2RheS5pc0JldHdlZW4oZGF0ZVRvTW9tZW50KHdlYlNwZWNpYWwuc3RhcnREYXRlKSwgZGF0ZVRvTW9tZW50KHdlYlNwZWNpYWwuZW5kRGF0ZSkpKVxuICAgICAgICAgICAgLm1hcCh3ZWJTcGVjaWFsID0+IHdlYlNwZWNpYWwuZGVzY3JpcHRpb24pXG4gICAgfSBhcyBGbG9vcnBsYW5DYXJkRGF0YTtcbn1cbmV4cG9ydCBjb25zdCBnZXRBbGxQcm9wZXJ0eUZpbHRlckRhdGEgPSBhc3luYyAoKTogUHJvbWlzZTxQcm9wZXJ0eUZpbHRlckRhdGFbXT4gPT4ge1xuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGdldChcInByb3BlcnRpZXMvZmlsdGVyXCIpO1xuXG4gICAgY29uc3QgcHJvcGVydGllczogUHJvcGVydHlGaWx0ZXJEYXRhW10gPSByZXNwb25zZS5kYXRhXG4gICAgICAgIC5maWx0ZXIoKHByb3BlcnR5OiBQcm9wZXJ0eUZpbHRlckRhdGEpID0+IHByb3BlcnR5LmFjdGl2ZSlcbiAgICAgICAgLmZpbHRlcigocHJvcGVydHk6IFByb3BlcnR5RmlsdGVyRGF0YSkgPT4gcHJvcGVydHkubGVhc2VUeXBlID09PSBMZWFzZVR5cGUuWUVBUkxZKVxuICAgICAgICAuZmlsdGVyKChwcm9wZXJ0eTogUHJvcGVydHlGaWx0ZXJEYXRhKSA9PiAhcHJvcGVydHkubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwiZ2FyYWdlXCIpKTtcblxuICAgIHByb3BlcnRpZXMuZm9yRWFjaChwcm9wZXJ0eSA9PiB7XG4gICAgICAgIHByb3BlcnR5LmZsb29ycGxhbnMgPSBwcm9wZXJ0eS5mbG9vcnBsYW5zLmZpbHRlcihmbG9vcnBsYW4gPT4gZmxvb3JwbGFuLmFjdGl2ZSk7XG4gICAgICAgIHByb3BlcnR5LmZsb29ycGxhbnMuZm9yRWFjaChmbG9vcnBsYW4gPT4ge1xuICAgICAgICAgICAgZmxvb3JwbGFuLnVuaXRzID0gZmxvb3JwbGFuLnVuaXRzLmZpbHRlcih1bml0ID0+IHVuaXQuYWN0aXZlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvcGVydGllcztcbn1cbmV4cG9ydCBjb25zdCBnZXRGbG9vcnBsYW5zRmlsdGVyRGF0YSA9IGFzeW5jIChwcm9wZXJ0eUlkOiBQcm9wZXJ0eUlkKTogUHJvbWlzZTxGbG9vcnBsYW5DYXJkRGF0YVtdPiA9PiB7XG4gICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZ2V0KFwicHJvcGVydGllcy9cIiArIHByb3BlcnR5SWQgKyBcIi9mbG9vcnBsYW5zL2ZpbHRlclwiKTtcblxuICAgIGNvbnN0IGZsb29ycGxhbnM6IEZsb29ycGxhbkNhcmREYXRhW10gPSByZXNwb25zZS5kYXRhXG4gICAgICAgIC5maWx0ZXIoKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEpID0+IGZsb29ycGxhbi5hY3RpdmUpO1xuXG4gICAgZmxvb3JwbGFucy5mb3JFYWNoKGZsb29ycGxhbiA9PiB7XG4gICAgICAgIGZsb29ycGxhbi51bml0cyA9IGZsb29ycGxhbi51bml0cy5maWx0ZXIodW5pdCA9PiB1bml0LmFjdGl2ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmxvb3JwbGFucztcbn07XG5leHBvcnQgY29uc3Qgc29ydEFuZEZpbHRlciA9IChmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdLCBjdXJyZW50RmlsdGVyczogQ3VycmVudEZpbHRlcnMpOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0+IHtcbiAgICByZXR1cm4gc29ydEZsb29ycGxhbnMoZmxvb3JwbGFucy5maWx0ZXIoZmxvb3JwbGFuID0+IGZpbHRlck1hdGNoZXMoZmxvb3JwbGFuLCBjdXJyZW50RmlsdGVycykpLCBjdXJyZW50RmlsdGVycy5zb3J0QnkpO1xufTtcblxuXG5leHBvcnQgY29uc3QgaXNEYXRlV2l0aGluVHdlbHZlTW9udGhzID0gKGRhdGU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGRpZmYgPSBtb21lbnQoZGF0ZSwgXCJZWVlZLU1NLUREXCIpLmRpZmYodG9kYXksICdtb250aHMnLCBmYWxzZSk7XG4gICAgcmV0dXJuIGRpZmYgPj0gMCAmJiBkaWZmIDw9IDEyO1xufVxuZXhwb3J0IGNvbnN0IGlzRGF0ZUFmdGVyVG9kYXkgPSAoZGF0ZTogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIG1vbWVudChkYXRlLCBcIllZWVktTU0tRERcIikuaXNBZnRlcih0b2RheSk7XG59XG5leHBvcnQgY29uc3QgTU9OVEhfWUVBUl9GT1JNQVQgPSBcIk1NTU0gWVlZWVwiO1xuY29uc3QgZGF0ZVRvTW9udGhZZWFyID0gKGRhdGVTdHJpbmc6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgPT4gbW9tZW50KGRhdGVTdHJpbmcsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpO1xuXG5jb25zdCBpc0F2YWlsYWJsZU5vdyA9IChtb3ZlSW5EYXRlOiBtb21lbnQuTW9tZW50KSA9PiBtb3ZlSW5EYXRlLmlzQmVmb3JlKHRvbW9ycm93KTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRBdmFpbGFiaWxpdHlUb01vbnRoWWVhciA9IChkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICBBVkFJTEFCTEVfTk9XID09PSBkYXRlU3RyaW5nID8gZGF0ZVN0cmluZyA6IG1vbWVudChkYXRlU3RyaW5nLCBcIk1NLVlZWVlcIikuZm9ybWF0KE1PTlRIX1lFQVJfRk9STUFUKTtcblxuZXhwb3J0IGNvbnN0IG1vbWVudFRvTW9udGhZZWFyID0gKGRhdGU6IE1vbWVudCkgPT4gZGF0ZS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpO1xuXG5cbmNvbnN0IGlzQXZhaWxhYmxlID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGF2YWlsYWJpbGl0eUZpbHRlcnM6IE1vbnRoW10pOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBhdmFpbGFiaWxpdHlGaWx0ZXJzLmxlbmd0aCA9PT0gMCA/IHRydWUgOlxuXG4gICAgICAgIGZsb29ycGxhbi51bml0cy5zb21lKCh1bml0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNVbml0QXZhaWxhYmxlTm93ID0gaXNBdmFpbGFibGVOb3cobW9tZW50KHVuaXQubW92ZUluRGF0ZSkpXG4gICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJpbGl0eUZpbHRlcnMuaW5kZXhPZihBVkFJTEFCTEVfTk9XKSA+IC0xIHx8IGF2YWlsYWJpbGl0eUZpbHRlcnMuaW5kZXhPZihtb21lbnRUb01vbnRoWWVhcih0b2RheSkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVW5pdEF2YWlsYWJsZU5vdylcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyAmJiB1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHM7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbkRhdGUgPSBpc1VuaXRBdmFpbGFibGVOb3cgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudCgpLmFkZChpLCAnbW9udGgnKS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlVG9Nb21lbnQodW5pdC5tb3ZlSW5EYXRlKS5hZGQoaSwgJ21vbnRoJykuZm9ybWF0KE1PTlRIX1lFQVJfRk9STUFUKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFiaWxpdHlGaWx0ZXJzLmluZGV4T2YoZXh0ZW5zaW9uRGF0ZSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhdmFpbGFiaWxpdHlGaWx0ZXJzLmluZGV4T2YoZGF0ZVRvTW9udGhZZWFyKHVuaXQubW92ZUluRGF0ZSkpID4gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG59O1xuY29uc3QgaXNCZWRyb29tc01hdGNoID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGJlZHJvb21GaWx0ZXJzOiBudW1iZXJbXSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBiZWRyb29tRmlsdGVycy5sZW5ndGggPT09IDAgPyB0cnVlIDogYmVkcm9vbUZpbHRlcnMuaW5kZXhPZihmbG9vcnBsYW4uYmVkcm9vbSkgPiAtMTtcbn07XG5jb25zdCBpc1N0eWxlTWF0Y2ggPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgc3R5bGVGaWx0ZXJzOiBGbG9vcnBsYW5TdHlsZVtdKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIHN0eWxlRmlsdGVycy5sZW5ndGggPT09IDAgPyB0cnVlIDogc3R5bGVGaWx0ZXJzLmluZGV4T2YoZmxvb3JwbGFuLnN0eWxlKSA+IC0xO1xufVxuY29uc3QgaXNJblByaWNlUmFuZ2UgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgbWluUmVudDogbnVtYmVyLCBtYXhSZW50OiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBtaW5NYXggPSBtaW5pbXVtTWF4aW11bShmbG9vcnBsYW4udW5pdHMsIFwicmVudFwiKTtcbiAgICByZXR1cm4gbWluTWF4Lm1pbiA+PSBtaW5SZW50ICYmIG1pbk1heC5tYXggPD0gbWF4UmVudDtcbn1cbmNvbnN0IGlzRmxvb3JwbGFuSWRzTWF0Y2ggPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgZmxvb3JwbGFuSWRzOiBzdHJpbmdbXSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBmbG9vcnBsYW5JZHMubGVuZ3RoID09PSAwID8gdHJ1ZSA6IGZsb29ycGxhbklkcy5pbmRleE9mKGZsb29ycGxhbi5pZCkgPiAtMTtcbn07XG5jb25zdCBmaWx0ZXJNYXRjaGVzID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGN1cnJlbnRGaWx0ZXJzOiBDdXJyZW50RmlsdGVycykgPT4ge1xuICAgIHJldHVybiBpc0F2YWlsYWJsZShmbG9vcnBsYW4sIGN1cnJlbnRGaWx0ZXJzLmF2YWlsYWJpbGl0eUZpbHRlcnMpICYmXG4gICAgICAgIGlzSW5QcmljZVJhbmdlKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMubWluUmVudCwgY3VycmVudEZpbHRlcnMubWF4UmVudCkgJiZcbiAgICAgICAgaXNTdHlsZU1hdGNoKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMuc3R5bGVGaWx0ZXJzKSAmJlxuICAgICAgICBpc0JlZHJvb21zTWF0Y2goZmxvb3JwbGFuLCBjdXJyZW50RmlsdGVycy5iZWRyb29tRmlsdGVycykgJiZcbiAgICAgICAgaXNGbG9vcnBsYW5JZHNNYXRjaChmbG9vcnBsYW4sIGN1cnJlbnRGaWx0ZXJzLmZsb29ycGxhbklkcyk7XG59XG5leHBvcnQgY29uc3Qgc29ydEZsb29ycGxhbnMgPSAoZmxvb3JwbGFuczogRmxvb3JwbGFuQ2FyZERhdGFbXSwgc29ydEJ5OiBTb3J0QnkpOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0+IHtcblxuICAgIGlmIChTb3J0RmllbGRzW3NvcnRCeV0uc29ydEZpZWxkID09PSBcIm1pblJhdGVcIiAmJiBTb3J0RmllbGRzW3NvcnRCeV0ub3JkZXIgPT09IFwiZGVzY1wiKSB7XG4gICAgICAgIHJldHVybiBmbG9vcnBsYW5zLnNvcnQoKGEsIGIpID0+IG1pbmltdW1NYXhpbXVtKGIudW5pdHMsIFwicmVudFwiKS5taW4gLSBtaW5pbXVtTWF4aW11bShhLnVuaXRzLCBcInJlbnRcIikubWluKTtcbiAgICB9XG5cbiAgICBjb25zdCBtaW5SYXRlU29ydGVkID0gZmxvb3JwbGFucy5zb3J0KChhLCBiKSA9PiBtaW5pbXVtTWF4aW11bShhLnVuaXRzLCBcInJlbnRcIikubWluIC0gbWluaW11bU1heGltdW0oYi51bml0cywgXCJyZW50XCIpLm1pbik7XG4gICAgaWYgKFNvcnRGaWVsZHNbc29ydEJ5XS5zb3J0RmllbGQgPT09IFwibWluUmF0ZVwiICYmIFNvcnRGaWVsZHNbc29ydEJ5XS5vcmRlciA9PT0gXCJhc2NcIikge1xuICAgICAgICByZXR1cm4gbWluUmF0ZVNvcnRlZFxuICAgIH1cbiAgICByZXR1cm4gXy5vcmRlckJ5KG1pblJhdGVTb3J0ZWQsIFNvcnRGaWVsZHNbc29ydEJ5XS5zb3J0RmllbGQsIFNvcnRGaWVsZHNbc29ydEJ5XS5vcmRlcik7XG59O1xuXG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJzRnJvbSA9IChmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdKTogRmxvb3JwbGFuRmlsdGVycyA9PiB7XG5cbiAgICAgICAgY29uc3QgYmVkcm9vbUZpbHRlcnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgICAgICAgY29uc3QgYXZhaWxhYmlsaXR5RmlsdGVycyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBjb25zdCBzdHlsZUZpbHRlcnMgPSBuZXcgU2V0PEZsb29ycGxhblN0eWxlPigpO1xuXG4gICAgICAgIGF2YWlsYWJpbGl0eUZpbHRlcnMuYWRkKEFWQUlMQUJMRV9OT1cpO1xuICAgICAgICBmbG9vcnBsYW5zLmZvckVhY2goZmxvb3JwbGFuID0+IHtcbiAgICAgICAgICAgICAgICBiZWRyb29tRmlsdGVycy5hZGQoZmxvb3JwbGFuLmJlZHJvb20pO1xuICAgICAgICAgICAgICAgIHN0eWxlRmlsdGVycy5hZGQoZmxvb3JwbGFuLnN0eWxlKTtcblxuICAgICAgICAgICAgICAgIGZsb29ycGxhbi51bml0cy5mb3JFYWNoKCh1bml0KSA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNVbml0QXZhaWxhYmxlTm93ID0gaXNBdmFpbGFibGVOb3cobW9tZW50KHVuaXQubW92ZUluRGF0ZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh1bml0Lm1vdmVJbkRhdGUgJiYgaXNVbml0QXZhaWxhYmxlTm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHMgJiYgdW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHM7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uRGF0ZSA9IG1vbWVudCgpLmFkZChpLCAnbW9udGgnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5RmlsdGVycy5hZGQoZXh0ZW5zaW9uRGF0ZS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5RmlsdGVycy5hZGQobW9tZW50KCkuZm9ybWF0KE1PTlRIX1lFQVJfRk9STUFUKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHVuaXQubW92ZUluRGF0ZSAmJiAhaXNVbml0QXZhaWxhYmxlTm93ICYmIGlzRGF0ZVdpdGhpblR3ZWx2ZU1vbnRocyh1bml0Lm1vdmVJbkRhdGUpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eUZpbHRlcnMuYWRkKGRhdGVUb01vbnRoWWVhcih1bml0Lm1vdmVJbkRhdGUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyAmJiB1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRoczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25EYXRlID0gZGF0ZVRvTW9tZW50KHVuaXQubW92ZUluRGF0ZSkuYWRkKGksICdtb250aCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlGaWx0ZXJzLmFkZChleHRlbnNpb25EYXRlLmZvcm1hdChNT05USF9ZRUFSX0ZPUk1BVCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiZWRyb29tOiBiZWRyb29tRmlsdGVycyxcbiAgICAgICAgICAgIGF2YWlsYWJpbGl0eTogYXZhaWxhYmlsaXR5RmlsdGVycyxcbiAgICAgICAgICAgIHN0eWxlOiBzdHlsZUZpbHRlcnNcbiAgICAgICAgfVxuICAgIH1cbjtcblxuXG5leHBvcnQgY29uc3QgZ2V0RmVhdHVyZWRGbG9vcnBsYW5zID0gYXN5bmMgKCk6IFByb21pc2U8Rmxvb3JwbGFuU3BvdGxpZ2h0W10+ID0+IHtcblxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGdldChcImZsb29ycGxhbnM/cHJvamVjdGlvbj1zcG90bGlnaHQmc2l6ZT0yMDBcIik7XG4gICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmRhdGEuX2VtYmVkZGVkLmZsb29ycGxhbnMuZmlsdGVyKChmbG9vcnBsYW46IEZsb29ycGxhblNwb3RsaWdodCkgPT4gZmxvb3JwbGFuLmZlYXR1cmVkICYmIGZsb29ycGxhbi5wcm9wZXJ0eS5hY3RpdmUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbEFjdGl2ZUZsb29ycGxhbnMgPSBhc3luYyAoKTogUHJvbWlzZTxGbG9vcnBsYW5EZXRhaWxzW10+ID0+IHtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZ2V0KFwiZmxvb3JwbGFucz9wcm9qZWN0aW9uPWRldGFpbHMmc2l6ZT0yMDBcIik7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuX2VtYmVkZGVkLmZsb29ycGxhbnNcbiAgICAgICAgLmZpbHRlcigoZmxvb3JwbGFuOiBGbG9vcnBsYW4pID0+IGZsb29ycGxhbi5hY3RpdmUpXG4gICAgICAgIC5maWx0ZXIoKGZsb29ycGxhbl8xOiBGbG9vcnBsYW4pID0+IGZsb29ycGxhbl8xLnN0eWxlICE9PSBcIkdBUkFHRVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGbG9vcnBsYW4gPSAoZmxvb3JwbGFuSWQ6IHN0cmluZyk6IFByb21pc2U8Rmxvb3JwbGFuPiA9PlxuICAgIGdldChcImZsb29ycGxhbnMvXCIgKyBmbG9vcnBsYW5JZCArIFwiP3Byb2plY3Rpb249d2l0aElkXCIpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YSk7XG5cbmV4cG9ydCBjb25zdCBnZXRTaW1pbGFyRmxvb3JwbGFucyA9IChmbG9vcnBsYW5JZDogc3RyaW5nKTogUHJvbWlzZTxTaW1pbGFyRmxvb3JwbGFuW10+ID0+XG4gICAgZ2V0KFwic2ltaWxhckZsb29ycGxhbnMvc2VhcmNoL2J5Rmxvb3JwbGFuSWQ/cHJvamVjdGlvbj13aXRoSWQmZmxvb3JwbGFuSWQ9XCIgKyBmbG9vcnBsYW5JZCkudGhlbihyZXNwb25zZSA9PiByZXNwb25zZS5kYXRhLl9lbWJlZGRlZC5zaW1pbGFyRmxvb3JwbGFucyk7XG5cbmV4cG9ydCBjb25zdCBnZXRGbG9vcnBsYW5WYXJpYXRpb25zID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPEZsb29ycGxhblZhcmlhdGlvbltdPiA9PlxuICAgIGdldChcImZsb29ycGxhblZhcmlhdGlvbnMvc2VhcmNoL2J5Rmxvb3JwbGFuSWQ/cHJvamVjdGlvbj13aXRoSWQmZmxvb3JwbGFuSWQ9XCIgKyBmbG9vcnBsYW5JZCkudGhlbihyZXNwb25zZSA9PiByZXNwb25zZS5kYXRhLl9lbWJlZGRlZC5mbG9vcnBsYW5WYXJpYXRpb25zKTtcblxuZXhwb3J0IGNvbnN0IGlzRmxvb3JwbGFuQXZhaWxhYmxlID0gKGZsb29ycGxhbjogRmxvb3JwbGFuIHwgRmxvb3JwbGFuQ2FyZERhdGEpOiBib29sZWFuID0+IGZsb29ycGxhbi51bml0cy5zb21lKCh1bml0KSA9PiB0b2RheS5pc0FmdGVyKGRhdGVUb01vbWVudCh1bml0Lm1vdmVJbkRhdGUpKSk7XG5leHBvcnQgY29uc3QgZ2V0VGVzdGltb25pYWxzID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPFRlc3RpbW9uaWFsW10+ID0+XG4gICAgZ2V0KFwidGVzdGltb25pYWxzL3NlYXJjaC9ieUZsb29ycGxhbklkP3Byb2plY3Rpb249d2l0aElkJmZsb29ycGxhbklkPVwiICsgZmxvb3JwbGFuSWQpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQudGVzdGltb25pYWxzKTtcblxuZXhwb3J0IGNvbnN0IGdldFdlYlNwZWNpYWxzID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPFdlYlNwZWNpYWxbXT4gPT5cbiAgICBnZXQoXCJ3ZWJTcGVjaWFscy9zZWFyY2gvYnlGbG9vcnBsYW5JZD9wcm9qZWN0aW9uPXdpdGhJZCZmbG9vcnBsYW5JZD1cIiArIGZsb29ycGxhbklkKS50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmRhdGEuX2VtYmVkZGVkLndlYlNwZWNpYWxzKTtcblxuZXhwb3J0IGNvbnN0IHBlcm1pdHRlZFBldHMgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW4pOiBzdHJpbmdbXSA9PiB7XG5cbiAgICBpZiAoZmxvb3JwbGFuLmFsbG93ZWRQZXQpIHtcbiAgICAgICAgc3dpdGNoIChmbG9vcnBsYW4uYWxsb3dlZFBldCkge1xuICAgICAgICAgICAgY2FzZSBQZXQuTEFSR0VfRE9HX1NNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTGFyZ2UgRG9nJywgJ1NtYWxsIERvZycsICdDYXQnXTtcbiAgICAgICAgICAgIGNhc2UgUGV0LlNNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU21hbGwgRG9nJywgJ0NhdCddO1xuICAgICAgICAgICAgY2FzZSBQZXQuQ0FUOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NhdCddO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydOb25lJ107XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB1bml0ID0gdW5pdFdpdGhNb3N0QWxsb3dlZFBldChbLi4uZmxvb3JwbGFuLnVuaXRzXSk7XG5cbiAgICAgICAgc3dpdGNoICh1bml0Py5hbGxvd2VkUGV0KSB7XG4gICAgICAgICAgICBjYXNlIFBldC5MQVJHRV9ET0dfU01BTExfRE9HX0NBVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMYXJnZSBEb2cnLCAnU21hbGwgRG9nJywgJ0NhdCddO1xuICAgICAgICAgICAgY2FzZSBQZXQuU01BTExfRE9HX0NBVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydTbWFsbCBEb2cnLCAnQ2F0J107XG4gICAgICAgICAgICBjYXNlIFBldC5DQVQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ2F0J107XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ05vbmUnXTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5leHBvcnQgY29uc3Qgbm90UGVybWl0dGVkUGV0cyA9IChmbG9vcnBsYW46IEZsb29ycGxhbik6IHN0cmluZ1tdID0+IHtcbiAgICBpZiAoZmxvb3JwbGFuLmFsbG93ZWRQZXQpIHtcbiAgICAgICAgc3dpdGNoIChmbG9vcnBsYW4uYWxsb3dlZFBldCkge1xuICAgICAgICAgICAgY2FzZSBQZXQuTEFSR0VfRE9HX1NNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgY2FzZSBQZXQuU01BTExfRE9HX0NBVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMYXJnZSBEb2cnXTtcbiAgICAgICAgICAgIGNhc2UgUGV0LkNBVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMYXJnZSBEb2cnLCAnU21hbGwgRG9nJ107XG4gICAgICAgICAgICBjYXNlIFBldC5OT19QRVQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTGFyZ2UgRG9nJywgJ1NtYWxsIERvZycsICdDYXQnXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdW5pdCA9IHVuaXRXaXRoTW9zdEFsbG93ZWRQZXQoWy4uLmZsb29ycGxhbi51bml0c10pO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdD8uYWxsb3dlZFBldCkge1xuICAgICAgICAgICAgY2FzZSBQZXQuTEFSR0VfRE9HX1NNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgY2FzZSBQZXQuU01BTExfRE9HX0NBVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMYXJnZSBEb2cnXTtcbiAgICAgICAgICAgIGNhc2UgUGV0LkNBVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMYXJnZSBEb2cnLCAnU21hbGwgRG9nJ107XG4gICAgICAgICAgICBjYXNlIFBldC5OT19QRVQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTGFyZ2UgRG9nJywgJ1NtYWxsIERvZycsICdDYXQnXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmV4cG9ydCBjb25zdCBwZXRQb2xpY3kgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW4pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChmbG9vcnBsYW4uYWxsb3dlZFBldCkge1xuICAgICAgICByZXR1cm4gZmxvb3JwbGFuLnBldFBvbGljeTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB1bml0ID0gdW5pdFdpdGhNb3N0QWxsb3dlZFBldChbLi4uZmxvb3JwbGFuLnVuaXRzXSk7XG4gICAgICAgIHJldHVybiB1bml0Py5wZXRQb2xpY3k7XG4gICAgfVxuXG59XG5jb25zdCB1bml0V2l0aE1vc3RBbGxvd2VkUGV0ID0gKHVuaXRzOiBVbml0W10pOiBVbml0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBwZXRPcmRpbmFsID0gKHBldDogUGV0KSA9PiBPYmplY3Qua2V5cyhQZXQpLmluZGV4T2YocGV0KTtcbiAgICByZXR1cm4gdW5pdHMuc29ydCgoYSwgYikgPT4gcGV0T3JkaW5hbChiLmFsbG93ZWRQZXQpIC0gcGV0T3JkaW5hbChhLmFsbG93ZWRQZXQpKS5wb3AoKTtcbn1cblxuZXhwb3J0IGNvbnN0IGZsb29ycGxhbkFkZHJlc3MgPSAoY3VycmVudEZsb29ycGxhbjogRmxvb3JwbGFuKTogRmxvb3JwbGFuQWRkcmVzcyA9PiB7XG4gICAgY29uc3QgYWRkcmVzczogRmxvb3JwbGFuQWRkcmVzcyA9IHthZGRyZXNzOiBcIlwiLCBjaXR5OiByZW5haXNzYW5jZS5jaXR5LCBzdGF0ZTogcmVuYWlzc2FuY2Uuc3RhdGUsIHppcGNvZGU6IFwiXCJ9O1xuICAgIGlmIChjdXJyZW50Rmxvb3JwbGFuLnVuaXRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYWRkcmVzcywgYWRkcmVzczogY3VycmVudEZsb29ycGxhbi51bml0c1swXS5hZGRyZXNzLFxuICAgICAgICAgICAgemlwY29kZTogY3VycmVudEZsb29ycGxhbi51bml0c1swXS56aXBjb2RlXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYWRkcmVzcywgYWRkcmVzczogY3VycmVudEZsb29ycGxhbi5wcm9wZXJ0eS5hZGRyZXNzLFxuICAgICAgICB6aXBjb2RlOiBjdXJyZW50Rmxvb3JwbGFuLnByb3BlcnR5LnppcGNvZGVcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvb3JwbGFuQWRkcmVzcyB7XG4gICAgYWRkcmVzczogc3RyaW5nO1xuICAgIGNpdHk6IHN0cmluZztcbiAgICBzdGF0ZTogc3RyaW5nO1xuICAgIHppcGNvZGU6IHN0cmluZztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsaUJBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQVlBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLEtBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFdBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGdCQUFBLEdBQUFQLE9BQUE7QUFBdUQsU0FBQUQsdUJBQUFTLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFaEQsTUFBTUcsYUFBYSxHQUFBQyxPQUFBLENBQUFELGFBQUEsR0FBRyxlQUFlO0FBQzVDLE1BQU1FLEtBQUssR0FBRyxJQUFBQyxlQUFNLEVBQUMsQ0FBQztBQUN0QixNQUFNQyxRQUFRLEdBQUdGLEtBQUssQ0FBQ0csR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7QUFHN0IsTUFBTUMsY0FBYyxHQUFJQyxHQUFXLElBQWE7RUFDbkQsSUFBSUEsR0FBRyxLQUFLLElBQUksRUFDWixPQUFPLEVBQUU7RUFDYixPQUFPQSxHQUFHLENBQUNDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDO0FBQ2pELENBQUM7QUFBQ1AsT0FBQSxDQUFBSyxjQUFBLEdBQUFBLGNBQUE7QUFFSyxNQUFNRywwQkFBMEIsR0FBSUMsZ0JBQWtDLElBQXdCO0VBQ2pHLE9BQU87SUFDSEMsRUFBRSxFQUFFRCxnQkFBZ0IsQ0FBQ0MsRUFBRTtJ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
|