@smarterplan/ngx-smarterplan-locations 0.2.8 → 0.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.
- package/README.md +24 -24
- package/esm2020/lib/components/carousel/carousel.component.mjs +3 -3
- package/esm2020/lib/components/chevron/chevron.component.mjs +3 -3
- package/esm2020/lib/components/detail-location/detail-location.component.mjs +1 -1
- package/esm2020/lib/components/images/images.component.mjs +3 -3
- package/esm2020/lib/components/locations/map/map-popup/map-popup.component.mjs +3 -3
- package/esm2020/lib/components/locations/map/map.component.mjs +3 -3
- package/esm2020/lib/components/plans/calibration/calibration.component.mjs +5 -5
- package/esm2020/lib/components/plans/plans.component.mjs +3 -3
- package/esm2020/lib/components/tab-navigation/tab-navigation.component.mjs +3 -3
- package/esm2020/lib/components/zones/add-zone/selection/selection.component.mjs +3 -3
- package/esm2020/lib/ngx-smarterplan-locations.service.mjs +1 -1
- package/esm2020/public-api.mjs +1 -1
- package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs +20 -20
- package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs +20 -20
- package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -230,12 +230,12 @@ export class CalibrationComponent {
|
|
|
230
230
|
// console.log(this.floors);
|
|
231
231
|
setTimeout(async () => {
|
|
232
232
|
/** Move Floor mode */
|
|
233
|
-
|
|
234
|
-
// Move successful
|
|
235
|
-
console.log(`Arrived at new view mode ${nextMode}`);
|
|
233
|
+
sdk.Mode.moveTo(sdk.Mode.Mode.FLOORPLAN).then(async (nextMode) => {
|
|
236
234
|
/** Display the correct floor for the plan */
|
|
237
235
|
try {
|
|
238
|
-
|
|
236
|
+
const matterportFloor = this.chosenPlan.zone.metadata ?
|
|
237
|
+
JSON.parse(this.chosenPlan.zone.metadata).matterportFloorSequence : null;
|
|
238
|
+
await this.matterportImportService.moveToFloor(this.chosenPlan.zone.name, matterportFloor);
|
|
239
239
|
/** When the user try to change the view mode we set it back to floorpan */
|
|
240
240
|
sdk.on(sdk.Mode.Event.CHANGE_END, (oldMode, newMode) => {
|
|
241
241
|
if (newMode !== sdk.Mode.Mode.FLOORPLAN) {
|
|
@@ -465,4 +465,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
465
465
|
type: ViewChild,
|
|
466
466
|
args: ['canvasDiv']
|
|
467
467
|
}] } });
|
|
468
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsaWJyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvY2FsaWJyYXRpb24vY2FsaWJyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvY2FsaWJyYXRpb24vY2FsaWJyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekMsT0FBTyxFQVVMLGVBQWUsR0FFaEIsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7Ozs7Ozs7OztBQU85QixNQUFNLE9BQU8sb0JBQW9CO0lBb0YvQixZQUNVLHVCQUFnRCxFQUNoRCxXQUF3QixFQUN4QixLQUFxQixFQUNyQixNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsaUJBQW9DLEVBQ3BDLFNBQTJCO1FBUDNCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUEzRnJDLHFDQUFxQztRQUNyQyxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBVzNCLHFDQUFxQztRQUNyQyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRWYsb0NBQW9DO1FBQ3BDLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFFckIsNEZBQTRGO1FBQzVGLGFBQVEsR0FBVyxHQUFHLENBQUM7UUFFdkIseUhBQXlIO1FBQ3pILGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBSzNCLG9IQUFvSDtRQUNwSCxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVqQyxpREFBaUQ7UUFDakQsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBRWxDLDZDQUE2QztRQUM3QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLCtDQUErQztRQUMvQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBVWpCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLCtEQUErRDtRQUMvRCxtQkFBYyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFaEMsZ0VBQWdFO1FBQ2hFLG9CQUFlLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUVyQyxnREFBZ0Q7UUFDaEQsa0JBQWEsR0FBNkIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUV6RCxpREFBaUQ7UUFDakQsbUJBQWMsR0FBNkIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUUxRCxtREFBbUQ7UUFDbkQsY0FBUyxHQUFRLEVBQUUsQ0FBQztRQUVwQiwyQ0FBMkM7UUFDM0MsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQiw0QkFBNEI7UUFDNUIsWUFBTyxHQUFHLElBQUksQ0FBQztRQU9mLGNBQVMsR0FBOEQsRUFBRSxDQUFDO1FBRTFFLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFJbkIscUJBQWdCLEdBQVksS0FBSyxDQUFDO0lBVy9CLENBQUM7SUFFSixXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkUsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFbkQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO3dCQUNsQyxNQUFNLEVBQUUsSUFBSTt3QkFDWixhQUFhLEVBQUUsQ0FBQzt3QkFDaEIsT0FBTyxFQUFFLEdBQUc7d0JBQ1osT0FBTyxFQUFFLEdBQUc7d0JBQ1osV0FBVyxFQUFFLENBQUM7d0JBQ2QsU0FBUyxFQUFFLElBQUk7cUJBQ2hCLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNUO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUMxRTtJQUNILENBQUM7SUFFRDs7dUdBRW1HO0lBQ25HLGNBQWM7UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2YsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUU7WUFDNUM7Z0JBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSTtnQkFDN0IsR0FBRyxFQUFFLGlCQUFpQixJQUFJLENBQUMsT0FBTyxFQUFFO2FBQ3JDO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsR0FBRyxFQUFFLGlCQUFpQixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUTthQUNuRDtZQUNEO2dCQUNFLEtBQUssRUFBRSxhQUFhO2dCQUNwQixHQUFHLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSw2QkFBNkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUU7YUFDOUY7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzt1R0FFbUc7SUFFbkcsdUJBQXVCO0lBQ3ZCLEtBQUssQ0FBQyxlQUFlO1FBQ25CLGlCQUFpQjtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBc0IsQ0FBQztZQUN0RSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUN0QjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUQsMkdBQTJHO1lBQzNHLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU5RCxrRUFBa0U7WUFDbEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFFdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV0Qiw4QkFBOEI7WUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDTCxPQUFPO1lBQ1AsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxVQUFVLENBQUMsSUFBSTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLFNBQVMsQ0FBQyxHQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxLQUFLO1FBQ2hELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QyxxQ0FBcUM7UUFDckMsdUJBQXVCO1FBQ3ZCLG9DQUFvQztRQUNwQyw0QkFBNEI7UUFDNUIsSUFBSTtRQUNKLHVCQUF1QjtRQUN2QixvQ0FBb0M7UUFDcEMsNEJBQTRCO1FBQzVCLElBQUk7UUFFSixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDekIsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDbEMsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ3pCLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO2FBQzVCO1lBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FDZixLQUFLLEVBQ0wsQ0FBQyxFQUNELENBQUMsRUFDRCxLQUFLLENBQUMsS0FBSyxFQUNYLEtBQUssQ0FBQyxNQUFNLEVBQ1osQ0FBQyxFQUNELENBQUMsRUFDRCxVQUFVLEVBQ1YsV0FBVyxDQUNaLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1FBQ3ZELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUV4RCxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdEMsSUFBSSxVQUFVLEdBQUcsV0FBVyxFQUFFO1lBQzVCLE9BQU8sR0FBRyxPQUFPLEdBQUcsVUFBVSxDQUFDO1NBQ2hDO2FBQU07WUFDTCxPQUFPLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQztTQUNoQztRQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLEtBQUssQ0FBQyxXQUFXO1FBQ2YsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBRXRFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO1FBRWxELE1BQU0sR0FBRyxHQUFxQixNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQzthQUN0RSxPQUFPLENBQUM7UUFDWCxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBRW5DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBRXZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBRTFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBNkIsQ0FBQztRQUN6RSxNQUFNLGFBQWEsR0FBRztZQUNwQixhQUFhLEVBQUUsT0FBTztZQUN0QixRQUFRO1NBQ1QsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDO1FBRXRELFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBRXBELGtDQUFrQztRQUNsQyxrQ0FBa0M7UUFDbEMsY0FBYztJQUNoQixDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLFVBQVU7UUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxVQUFVO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7dUdBRW1HO0lBRW5HLHdCQUF3QjtJQUN4QixLQUFLLENBQUMsWUFBWTtRQUNoQixNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1RSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsNEJBQTRCO1FBQzVCLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQixzQkFBc0I7WUFDdEIsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUNyRSxrQkFBa0I7Z0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBRXBELDZDQUE2QztnQkFDN0MsSUFBSTtvQkFDRixNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFckUsMkVBQTJFO29CQUMzRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTt3QkFDckQsSUFBSSxPQUFPLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFOzRCQUN2QyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0NBQ3ZDLFVBQVUsRUFBRSxvQkFBb0I7NkJBQ2pDLENBQUMsQ0FBQzt5QkFDSjtvQkFDSCxDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFBQyxNQUFNO29CQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztpQkFDdkM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILDZDQUE2QztZQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFVCw4Q0FBOEM7UUFDOUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEMsd0hBQXdIO1lBQ3hILElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzthQUN6QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1EQUFtRDtJQUNuRCxLQUFLLENBQUMsZ0JBQWdCO1FBQ3BCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFbEMsaUZBQWlGO1FBQ2pGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFNUMsMERBQTBEO1FBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzVCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxLQUFLLENBQUMseUJBQXlCO1FBQzdCLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUM7UUFFN0MsbUNBQW1DO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekMscUVBQXFFO1lBQ3JFLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRTtnQkFDMUQsS0FBSyxFQUFFLEdBQUc7YUFDWCxDQUFDLENBQUM7U0FDSjtRQUVELDRGQUE0RjtRQUM1RixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQ7O3VHQUVtRztJQUVuRywwQkFBMEI7SUFDMUIsS0FBSyxDQUFDLFNBQVM7UUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLGFBQWE7WUFDaEIsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDaEUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNiLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDYixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDZCxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsY0FBYztZQUNqQixNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO2dCQUNoRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2IsQ0FBQyxFQUFFLENBQUM7Z0JBQ0osQ0FBQyxFQUFFLENBQUM7YUFDTCxDQUFDLENBQUM7UUFDTCxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLFVBQVUsS0FBSyxDQUFDLEVBQUU7WUFDcEIsZ0RBQWdEO1lBQ2hELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxHQUFHLFdBQVcsQ0FBQztTQUNsRDthQUFNO1lBQ0wsaURBQWlEO1lBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxHQUFHLFdBQVcsQ0FBQztTQUNsRDtRQUNELE1BQU0sYUFBYSxHQUNqQixNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hFLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDZCxDQUFDLENBQUM7UUFDTCxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLFVBQVUsS0FBSyxDQUFDLEVBQUU7WUFDcEIsaURBQWlEO1lBQ2pELFVBQVUsR0FBRyxhQUFhLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxHQUFHLFdBQVcsQ0FBQztTQUNsRDthQUFNO1lBQ0wsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsR0FBRyxXQUFXLENBQUM7U0FDbEQ7UUFFRCwyREFBMkQ7UUFDM0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsRCxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUM7UUFDdEMsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsS0FBSyxDQUFDLGFBQWE7UUFDakIsdUJBQXVCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRSxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUNwRSxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1lBQ0YsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztZQUN0QyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMxQixLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRTtvQkFDcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3JELE1BQU0sU0FBUyxHQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztvQkFDckUsTUFBTSxTQUFTLEdBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNyRSxNQUFNLEtBQUssR0FDVCxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7b0JBQzdELE1BQU0sS0FBSyxHQUNULFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztvQkFDN0Qsb0RBQW9EO29CQUNwRCxNQUFNLFlBQVksR0FDaEIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGtDQUFrQztvQkFDckcsTUFBTSxZQUFZLEdBQ2hCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ2xFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO3dCQUNsQixLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUU7d0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7d0JBQzFCLENBQUMsRUFBRSxZQUFZO3dCQUNmLENBQUMsRUFBRSxZQUFZO3FCQUNoQixDQUFDLENBQUM7b0JBQ0gsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUMvQyxNQUFNLEtBQUssR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMsU0FBUyxDQUNaLDBFQUEwRSxFQUMxRSxZQUFZLEdBQUcsS0FBSyxFQUNwQixZQUFZLEdBQUcsS0FBSyxFQUNwQixJQUFJLENBQ0wsQ0FBQztpQkFDSDthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLEtBQUssQ0FBQyxNQUFNO1FBQ1YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLDhCQUE4QjtZQUM5Qiw2Q0FBNkM7WUFDN0MsNkNBQTZDO1lBQzdDLHVDQUF1QztZQUN2Qyx1Q0FBdUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBRTdDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2hDLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3RCLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDNUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDcEMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQztnQkFDM0IsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLHFCQUFxQixDQUFDO2dCQUMxQixJQUFJLEdBQUcsQ0FBQyxjQUFjLEVBQUU7b0JBQ3RCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FDbEIsQ0FBQztvQkFDRixNQUFNLHNCQUFzQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQ2hELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUMvQyxDQUFDO29CQUNGLElBQUksc0JBQXNCLEVBQUU7d0JBQzFCLGNBQWMsQ0FBQyxNQUFNLENBQ25CLGNBQWMsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFDOUMsQ0FBQyxFQUNELFFBQVEsQ0FDVCxDQUFDO3FCQUNIO3lCQUFNO3dCQUNMLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQy9CO29CQUNELHFCQUFxQixHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztpQkFDN0M7cUJBQU07b0JBQ0wscUJBQXFCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDcEM7Z0JBQ0Qsc0NBQXNDO2dCQUN0QyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDNUMsRUFBRSxFQUFFLEtBQUs7b0JBQ1QsY0FBYyxFQUFFLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQ3RCO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUUzQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN6RSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsT0FBTztRQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXJCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLFFBQVE7UUFDTixJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQWdCLENBQUM7UUFDdEUsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQzs7aUhBamtCVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiwrSkN6QmpDLGl6SkFpR007MkZEeEVPLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxpQkFBaUI7OFNBWUgsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gJ3BkZmpzLWRpc3QnO1xyXG5pbXBvcnQgeyBQREZEb2N1bWVudFByb3h5IH0gZnJvbSAnbmcyLXBkZi12aWV3ZXInO1xyXG5pbXBvcnQge1xyXG4gIFpvbmUsXHJcbiAgTWVudUl0ZW0sXHJcbiAgUGxhbixcclxuICBTcGFjZSxcclxuICBOYXZpZ2F0aW9uLFxyXG4gIFBsYW5TZXJ2aWNlLFxyXG4gIFpvbmVTZXJ2aWNlLFxyXG4gIFNwYWNlU2VydmljZSxcclxuICBOYXZpZ2F0aW9uU2VydmljZSxcclxuICBnZXRNZXRhRm9ySW1hZ2UsXHJcbiAgTWF0dGVycG9ydEltcG9ydFNlcnZpY2UsXHJcbn0gZnJvbSAnQHNtYXJ0ZXJwbGFuL25neC1zbWFydGVycGxhbi1jb3JlJztcclxuaW1wb3J0IHBhbnpvb20gZnJvbSAncGFuem9vbSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jYWxpYnJhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGlicmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jYWxpYnJhdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsaWJyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8qKiBJdGVtIHRvIGRpc3BsYXkgZm9yIHRoZSBuYXZiYXIgKi9cclxuICBtZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcbiAgLyoqIENhbnZhcyAoUGxhbikgKi9cclxuICBjYW52YXM7XHJcblxyXG4gIC8qKiBDYW52YXNEaXYgKERpdiB0aGF0IGNvbnRhaW4gdGhlIGNhbnZhcyArIG1hdHRlcnBvcnQgaWZyYW1lKSAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc0RpdicpIGNhbnZhc0RpdjogRWxlbWVudFJlZjtcclxuXHJcbiAgLyoqIFNpemUgb2YgdGhlIGNhbnZhcyAmIG1hdHRlcnBvcnQgaWZyYW1lICovXHJcbiAgY2FudmFzU2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9O1xyXG5cclxuICAvKiogWm9vbSByYXRpbyBvZiB0aGUgY2FudmFzL3BsYW4gICovXHJcbiAgY2FudmFzWm9vbSA9IDA7XHJcblxyXG4gIC8qKiBPcGFjaXR5IGZvciBtYXR0ZXJwb3J0IGlmcmFtZSAqL1xyXG4gIG9wYWNpdHk6IG51bWJlciA9IDUwO1xyXG5cclxuICAvKiogQ3VycmVudCByb3RhdGlvbiBmb3IgbWF0dGVycG9ydCwgWzAtMzYwXSwgIG1hdHRlcnBvcnQgcm90YXRpb24gaXMgYmluZCB0byBpbnB1dCByYW5nZSAqL1xyXG4gIHJvdGF0aW9uOiBudW1iZXIgPSAxODA7XHJcblxyXG4gIC8qKiBQcmV2aW91cyByb3RhdGlvbiwgdXNlIHRvIGNhbGN1bGF0ZSB0aGUgZGVsdGFSb3RhdGlvbiB0byByb3RhdGUsIHdoZW4gdXNlciBjaGFuZ2Ugcm90YXRpb24gdmFsdWUgdXNpbmcgcmFuZ2UgaW5wdXQgKi9cclxuICBwcmV2Um90YXRpb246IG51bWJlciA9IDE4MDtcclxuXHJcbiAgLyoqIEN1cnJlbnQgQ2FtZXJhIFBvc2UgKi9cclxuICBjYW1lcmFQb3NlOiBhbnk7XHJcblxyXG4gIC8qKiBUcnVlIHdoZW4gdGhlIHVzZXIgaXMgY3VycmVudGx5IHJvdGF0aW5nIHdpdGggdGhlIGlucHV0IHJhbmdlLCB0aGUgbWF0dGVycG9ydCByb3RhdGlvbiBldmVudHMgd2lsbCBiZSBpZ25vcmVkICovXHJcbiAgaXNSb3RhdGluZ1JhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBSb3RhdGluZyBxdWV1ZSBldmVudCB0byBzZW5kIHRvIG1hdHRlcnBvcnQgKi9cclxuICByb3RhdGluZ1F1ZXVlRXZlbnQ6IG51bWJlcltdID0gW107XHJcblxyXG4gIC8qKiBUcnVlIHdoZW4gVmVydGljYWwgc3ltbWV0cnkgaXMgZW5hYmxlZCAqL1xyXG4gIHJlZmxlY3RWID0gZmFsc2U7XHJcblxyXG4gIC8qKiBUcnVlIHdoZW4gSG9yaXpvbnRhbCBzeW1tZXRyeSBpcyBlbmFibGVkICovXHJcbiAgcmVmbGVjdEggPSBmYWxzZTtcclxuXHJcbiAgY2hvc2VuUGxhbjogUGxhbjtcclxuXHJcbiAgc3BhY2VJRDogc3RyaW5nO1xyXG5cclxuICBjdXJyZW50U3BhY2U6IFNwYWNlO1xyXG5cclxuICBjdXJyZW50Wm9uZTogWm9uZTtcclxuXHJcbiAgY2hvc2VuUGxhbklzUGRmID0gZmFsc2U7XHJcblxyXG4gIC8qKiBGaXJzdCBQb2ludCBpbiB2aXNpdCwgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGNhbGlicmF0aW9uICAqL1xyXG4gIGZpcnN0TWFya1Zpc2l0ID0geyB4OiAwLCB5OiAwIH07XHJcblxyXG4gIC8qKiBTZWNvbmQgUG9pbnQgaW4gdmlzaXQsIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBjYWxpYnJhdGlvbiAgKi9cclxuICBzZWNvbmRNYXJrVmlzaXQgPSB7IHg6IDAuNSwgeTogMC41IH07XHJcblxyXG4gIC8qKiBFcXVpdmFsZW50IG9mICdmaXJzdE1hcmtWaXNpdCcgaW4gY2FudmFzICAqL1xyXG4gIGZpcnN0TWFya1BsYW46IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9IHsgeDogMCwgeTogMCB9O1xyXG5cclxuICAvKiogRXF1aXZhbGVudCBvZiAnc2Vjb25kTWFya1Zpc2l0JyBpbiBjYW52YXMgICovXHJcbiAgc2Vjb25kTWFya1BsYW46IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9IHsgeDogMCwgeTogMCB9O1xyXG5cclxuICAvKiogQ2FsaWJyYXRpb24gcmVzdWx0LCAob2Zmc2V0WCwgb2Zmc2V0WSwgeCwgeSkgKi9cclxuICBjYWxpYnJhZ2U6IGFueSA9IHt9O1xyXG5cclxuICAvKiogSXMgaW4gcHJldmlldyBtb2RlIChzZWUgc2NhbiByZXN1bHQpICovXHJcbiAgcHJldmlldyA9IGZhbHNlO1xyXG5cclxuICAvKiogTWF0dGVycG9ydCBpcyBsb2FkaW5nICovXHJcbiAgbG9hZGluZyA9IHRydWU7XHJcblxyXG4gIC8qIGZvciBwYW4gYW5kIHpvb20gb2YgY2FudmFzICovXHJcbiAgcGFuem9vbTogYW55O1xyXG5cclxuICBjdXJyZW50TmF2aWdhdGlvbnM6IE5hdmlnYXRpb25bXTtcclxuXHJcbiAgcG9zaXRpb25zOiB7IG5hdklEOiBzdHJpbmc7IHBsYW5JRDogc3RyaW5nOyB4OiBudW1iZXI7IHk6IG51bWJlciB9W10gPSBbXTtcclxuXHJcbiAgZmxvb3JzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBjdXJyZW50Rmxvb3I7XHJcblxyXG4gIHpvb21DYW5CZUNoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlOiBNYXR0ZXJwb3J0SW1wb3J0U2VydmljZSxcclxuICAgIHByaXZhdGUgcGxhblNlcnZpY2U6IFBsYW5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSB6b25lU2VydmljZTogWm9uZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNwYWNlU2VydmljZTogU3BhY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubG9hZGluZykge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLnJlbW92ZUZyYW1lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc3BhY2VJRCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMuc3BhY2VJRDtcclxuICAgIHRoaXMuY3VycmVudFNwYWNlID0gYXdhaXQgdGhpcy5zcGFjZVNlcnZpY2UuZ2V0U3BhY2UodGhpcy5zcGFjZUlEKTtcclxuXHJcbiAgICAvKiogTWVudSBuYXYgYmFyICovXHJcbiAgICB0aGlzLnNldHVwTWVudUl0ZW1zKCk7XHJcblxyXG4gICAgdGhpcy5jaG9zZW5QbGFuID0gdGhpcy5wbGFuU2VydmljZS5nZXRDaG9zZW5QbGFuKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuY2hvc2VuUGxhbikge1xyXG4gICAgICB0aGlzLmNob3NlblBsYW5Jc1BkZiA9IHRoaXMuY2hvc2VuUGxhbi5hbm5leGUuaW5jbHVkZXMoJ3BkZicpO1xyXG4gICAgICB0aGlzLmxhdW5jaFZpZXdlcigpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyZUNhbnZhcygpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wYW56b29tID0gcGFuem9vbSh0aGlzLmNhbnZhcywge1xyXG4gICAgICAgICAgICBib3VuZHM6IHRydWUsXHJcbiAgICAgICAgICAgIGJvdW5kc1BhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgIG1heFpvb206IDIuNSxcclxuICAgICAgICAgICAgbWluWm9vbTogMC4xLFxyXG4gICAgICAgICAgICBpbml0aWFsWm9vbTogMSxcclxuICAgICAgICAgICAgem9vbVNwZWVkOiAwLjAyLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sIDUwMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9kYXNoYm9hcmQvbG9jYWxpc2F0aW9uJywgdGhpcy5zcGFjZUlELCAncGxhbnMnXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRU5VIE5BViBCQVJcclxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuICBzZXR1cE1lbnVJdGVtcygpIHtcclxuICAgIHRoaXMubWVudUl0ZW1zID0gW1xyXG4gICAgICB7IGxhYmVsOiAnTG9jYXRpb25zJywgdXJsOiAnL2xvY2FsaXNhdGlvbicgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLmN1cnJlbnRTcGFjZS5uYW1lLFxyXG4gICAgICAgIHVybDogYC9sb2NhbGlzYXRpb24vJHt0aGlzLnNwYWNlSUR9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiAnUGxhbnMnLFxyXG4gICAgICAgIHVybDogYC9sb2NhbGlzYXRpb24vJHt0aGlzLmN1cnJlbnRTcGFjZS5pZH0vcGxhbnNgLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6ICdDYWxpYnJhdGlvbicsXHJcbiAgICAgICAgdXJsOiBgL2xvY2FsaXNhdGlvbi8ke3RoaXMuY3VycmVudFNwYWNlLmlkfS9wbGFuLWNhbGlicmF0aW9uP3NwYWNlSUQ9JHt0aGlzLmN1cnJlbnRTcGFjZS5pZH1gLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIC8qKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOVkFTXHJcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcblxyXG4gIC8qKiBEaXNwbGF5IHRoZSBwbGFuICovXHJcbiAgYXN5bmMgY29uZmlndXJlQ2FudmFzKCkge1xyXG4gICAgLyoqIEdldCBjYW52YXMgKi9cclxuICAgIGlmICghdGhpcy5jYW52YXMpIHtcclxuICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NhbnZhcycpIGFzIEhUTUxDYW52YXNFbGVtZW50O1xyXG4gICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhcztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuY2hvc2VuUGxhbklzUGRmKSB7XHJcbiAgICAgIGNvbnN0IGltYWdlID0gYXdhaXQgZ2V0TWV0YUZvckltYWdlKHRoaXMuY2hvc2VuUGxhbi5maWxlcGF0aCk7XHJcbiAgICAgIC8qKiBDb21wdXRlIHRoZSBuZXcgc2l6ZSBmb3IgdGhlIGNhbnZhcy9tYXR0ZXJwb3J0LCBiYXNlIG9uIHRoZSBkaW1lbnNpb24gb2YgdGhlIHBsYW4sIGtlZXBpbmcgdGhlIHJhdGlvICovXHJcbiAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmdldFNpemVGb3JDYW52YXMoaW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdodCk7XHJcblxyXG4gICAgICAvKiogQ29tcHV0ZSB0aGUgcGxhbiB6b29tIHJhdGlvICh1c2UgZm9yIHRoZSBjYWxpYnJhdGlvbiBsYXRlcikgKi9cclxuICAgICAgdGhpcy5jYW52YXNab29tID0gc2l6ZS53IC8gaW1hZ2Uud2lkdGg7XHJcblxyXG4gICAgICB0aGlzLnJlc2l6ZVZpZXcoc2l6ZSk7XHJcblxyXG4gICAgICAvKiogRHJhdyBQbGFuIG9uIHRoZSBjYW52YXMgKi9cclxuICAgICAgdGhpcy5kcmF3SW1hZ2UodGhpcy5jaG9zZW5QbGFuLmZpbGVwYXRoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFRPRE9cclxuICAgICAgdGhpcy5wZGZUb0NhbnZhcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFVwZGF0ZSBzaXplIG9mIHRoZSBjYW52YXMvbWF0dGVycG9ydCAqL1xyXG4gIHJlc2l6ZVZpZXcoc2l6ZSkge1xyXG4gICAgdGhpcy5jYW52YXNEaXYubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3NpemUud31weGA7XHJcbiAgICB0aGlzLmNhbnZhc0Rpdi5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke3NpemUuaH1weGA7XHJcbiAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9IGAke3NpemUud31weGA7XHJcbiAgICB0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHQgPSBgJHtzaXplLmh9cHhgO1xyXG4gICAgdGhpcy5jYW52YXMud2lkdGggPSBzaXplLnc7XHJcbiAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSBzaXplLmg7XHJcbiAgICB0aGlzLmNhbnZhc1NpemUgPSBzaXplO1xyXG4gIH1cclxuXHJcbiAgLyoqIERyYXcgc29tZXRoaW5nIG9uIHRoZSBjYW52YXMgKi9cclxuICBkcmF3SW1hZ2UodXJsOiBzdHJpbmcsIHggPSAwLCB5ID0gMCwgaWNvbmUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxuICAgIGNvbnN0IHNpemUgPSB0aGlzLmNhbnZhc1NpemU7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuXHJcbiAgICAvKiogRmxpcCB0aGUgY29udGV4dCwgZm9yIHN5bW1ldHJ5ICovXHJcbiAgICAvLyBpZiAodGhpcy5yZWZsZWN0Vikge1xyXG4gICAgLy8gICAgIGNvbnRleHQudHJhbnNsYXRlKHNpemUudywgMCk7XHJcbiAgICAvLyAgICAgY29udGV4dC5zY2FsZSgtMSwgMSk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZiAodGhpcy5yZWZsZWN0SCkge1xyXG4gICAgLy8gICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIHNpemUuaCk7XHJcbiAgICAvLyAgICAgY29udGV4dC5zY2FsZSgxLCAtMSk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgbGV0IGltYWdlV2lkdGggPSBzaXplLnc7XHJcbiAgICBsZXQgaW1hZ2VIZWlnaHQgPSBzaXplLmg7XHJcbiAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xyXG4gICAgICBpZiAoaWNvbmUpIHtcclxuICAgICAgICBpbWFnZVdpZHRoID0gaW1hZ2Uud2lkdGg7XHJcbiAgICAgICAgaW1hZ2VIZWlnaHQgPSBpbWFnZS5oZWlnaHQ7XHJcbiAgICAgIH1cclxuICAgICAgY29udGV4dC5kcmF3SW1hZ2UoXHJcbiAgICAgICAgaW1hZ2UsXHJcbiAgICAgICAgMCxcclxuICAgICAgICAwLFxyXG4gICAgICAgIGltYWdlLndpZHRoLFxyXG4gICAgICAgIGltYWdlLmhlaWdodCxcclxuICAgICAgICB4LFxyXG4gICAgICAgIHksXHJcbiAgICAgICAgaW1hZ2VXaWR0aCxcclxuICAgICAgICBpbWFnZUhlaWdodFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgICBpbWFnZS5zcmMgPSB1cmw7XHJcbiAgfVxyXG5cclxuICAvKiogR2V0IHRoZSBzaXplIGZvciB0aGUgY2FudmFzLCBiYXNlZCBvbiB0aGUgcGxhbiBzaXplLCBrZWVwaW5nIHRoZSByYXRpbyAqL1xyXG4gIGdldFNpemVGb3JDYW52YXModywgaCkge1xyXG4gICAgbGV0IGNhbnZhc1cgPSB0aGlzLmNhbnZhc0Rpdi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgbGV0IGNhbnZhc0ggPSB0aGlzLmNhbnZhc0Rpdi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuXHJcbiAgICBjb25zdCBpbWFnZVJhdGlvID0gdyAvIGg7XHJcbiAgICBjb25zdCBjYW52YXNSYXRpbyA9IGNhbnZhc1cgLyBjYW52YXNIO1xyXG5cclxuICAgIGlmIChpbWFnZVJhdGlvID4gY2FudmFzUmF0aW8pIHtcclxuICAgICAgY2FudmFzSCA9IGNhbnZhc1cgLyBpbWFnZVJhdGlvO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2FudmFzVyA9IGNhbnZhc0ggKiBpbWFnZVJhdGlvO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgdzogY2FudmFzVywgaDogY2FudmFzSCB9O1xyXG4gIH1cclxuXHJcbiAgLyoqIFtUT0RPXSBDb252ZXJ0IGEgUERGIHRvIGEgQ2FudmFzICovXHJcbiAgYXN5bmMgcGRmVG9DYW52YXMoKSB7XHJcbiAgICBjb25zdCBwZGZqcyA9IGF3YWl0IGltcG9ydCgncGRmanMtZGlzdC9idWlsZC9wZGYnKTtcclxuICAgIGNvbnN0IHBkZmpzV29ya2VyID0gYXdhaXQgaW1wb3J0KCdwZGZqcy1kaXN0L2J1aWxkL3BkZi53b3JrZXIuZW50cnknKTtcclxuXHJcbiAgICBwZGZqcy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyA9IHBkZmpzV29ya2VyO1xyXG5cclxuICAgIGNvbnN0IHBkZjogUERGRG9jdW1lbnRQcm94eSA9IGF3YWl0IGdldERvY3VtZW50KHRoaXMuY2hvc2VuUGxhbi5maWxlcGF0aClcclxuICAgICAgLnByb21pc2U7XHJcbiAgICBjb25zdCBwYWdlID0gYXdhaXQgcGRmLmdldFBhZ2UoMSk7XHJcblxyXG4gICAgY29uc3Qgdmlld1BvcnRQYXJhbWV0ZXJzID0geyBzY2FsZTogMSB9O1xyXG4gICAgY29uc3Qgdmlld3BvcnQgPSBwYWdlLmdldFZpZXdwb3J0KHZpZXdQb3J0UGFyYW1ldGVycyk7XHJcblxyXG4gICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gdmlld3BvcnQuaGVpZ2h0O1xyXG4gICAgdGhpcy5jYW52YXMud2lkdGggPSB2aWV3cG9ydC53aWR0aDtcclxuXHJcbiAgICBjb25zdCBzaXplID0gdGhpcy5nZXRTaXplRm9yQ2FudmFzKHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQpO1xyXG4gICAgY29uc29sZS5sb2coc2l6ZSk7XHJcbiAgICB0aGlzLmNhbnZhc1NpemUgPSBzaXplO1xyXG5cclxuICAgIHRoaXMuY2FudmFzWm9vbSA9IHNpemUudyAvIHZpZXdwb3J0LndpZHRoO1xyXG5cclxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcclxuICAgIGNvbnN0IHJlbmRlckNvbnRleHQgPSB7XHJcbiAgICAgIGNhbnZhc0NvbnRleHQ6IGNvbnRleHQsXHJcbiAgICAgIHZpZXdwb3J0LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlbmRlclRhc2sgPSBwYWdlLnJlbmRlcihyZW5kZXJDb250ZXh0KS5wcm9taXNlO1xyXG5cclxuICAgIHJlbmRlclRhc2sudGhlbigoKSA9PiBjb25zb2xlLmxvZygnUGFnZSByZW5kZXJlZCcpKTtcclxuXHJcbiAgICAvLyBjb25zdCByZXMgPSBjYW52YXMudG9EYXRhVVJMKCk7XHJcbiAgICAvLyBpZiAocGRmICE9IG51bGwpIHBkZi5kZXN0cm95KCk7XHJcbiAgICAvLyByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgLyoqIFVzZXIgY2xpY2sgdG8gdXNlciBTeW1tZXRyeSBWZXJ0aWNhbCAqL1xyXG4gIG9uUmVmbGVjdFYoKSB7XHJcbiAgICB0aGlzLnJlZmxlY3RWID0gIXRoaXMucmVmbGVjdFY7XHJcbiAgICB0aGlzLmNvbmZpZ3VyZUNhbnZhcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFVzZXIgY2xpY2sgdG8gdXNlciBTeW1tZXRyeSBIb3Jpem9udGFsICovXHJcbiAgb25SZWZsZWN0SCgpIHtcclxuICAgIHRoaXMucmVmbGVjdEggPSAhdGhpcy5yZWZsZWN0SDtcclxuICAgIHRoaXMuY29uZmlndXJlQ2FudmFzKCk7XHJcbiAgfVxyXG5cclxuICAvKiogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BVFRFUlBPUlRcclxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbiAgLyoqIExhdW5jaCBtYXR0ZXJwb3J0ICovXHJcbiAgYXN5bmMgbGF1bmNoVmlld2VyKCkge1xyXG4gICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0SW1wb3J0U2VydmljZS5pbml0U2RrRm9yTW9kZWwodGhpcy5jaG9zZW5QbGFuLm1vZGVsM2QpO1xyXG5cclxuICAgIGNvbnN0IHsgc2RrIH0gPSB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlO1xyXG4gICAgdGhpcy5mbG9vcnMgPSBPYmplY3QudmFsdWVzKHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2UuZmxvb3JzKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZmxvb3JzKTtcclxuICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAvKiogTW92ZSBGbG9vciBtb2RlICovXHJcbiAgICAgIGF3YWl0IHNkay5Nb2RlLm1vdmVUbyhzZGsuTW9kZS5Nb2RlLkZMT09SUExBTikudGhlbihhc3luYyAobmV4dE1vZGUpID0+IHtcclxuICAgICAgICAvLyBNb3ZlIHN1Y2Nlc3NmdWxcclxuICAgICAgICBjb25zb2xlLmxvZyhgQXJyaXZlZCBhdCBuZXcgdmlldyBtb2RlICR7bmV4dE1vZGV9YCk7XHJcblxyXG4gICAgICAgIC8qKiBEaXNwbGF5IHRoZSBjb3JyZWN0IGZsb29yIGZvciB0aGUgcGxhbiAqL1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLm1vdmVUb0Zsb29yKHRoaXMuY2hvc2VuUGxhbi5uYW1lKTtcclxuXHJcbiAgICAgICAgICAvKiogV2hlbiB0aGUgdXNlciB0cnkgdG8gY2hhbmdlIHRoZSB2aWV3IG1vZGUgd2Ugc2V0IGl0IGJhY2sgdG8gZmxvb3JwYW4gKi9cclxuICAgICAgICAgIHNkay5vbihzZGsuTW9kZS5FdmVudC5DSEFOR0VfRU5ELCAob2xkTW9kZSwgbmV3TW9kZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAobmV3TW9kZSAhPT0gc2RrLk1vZGUuTW9kZS5GTE9PUlBMQU4pIHtcclxuICAgICAgICAgICAgICBzZGsuTW9kZS5tb3ZlVG8oc2RrLk1vZGUuTW9kZS5GTE9PUlBMQU4sIHtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246ICd0cmFuc2l0aW9uLmluc3RhbnQnLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdjb3VsZG5vdCBtb3ZlIHRvIGZsb29yJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8qKiBXZSBjYW4gZGlzcGxheSB0aGUgbWF0dGVycG9ydCB2aWV3IG5vdyAqL1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sIDEwMDApO1xyXG5cclxuICAgIC8qKiBVcGRhdGUgY3VycmVudCBjYW1lcmEgcG9zZSBhbmQgcm90YXRpb24gKi9cclxuICAgIHNkay5DYW1lcmEucG9zZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIC8qKiBXZSB1cGRhdGUgb25seSBpZiB0aGUgdXNlciBpcyBub3QgY2hhbmdpbmcgdGhlIHJvdGF0aW9uIHdpdGggdGhlIDxpbnB1dD4gcmFuZ2UsIHRvIG5vdCBvdmVycmlkZSB0aGUgPGlucHV0PiB2YWx1ZSAqL1xyXG4gICAgICBpZiAoIXRoaXMuaXNSb3RhdGluZ1JhbmdlKSB7XHJcbiAgICAgICAgdGhpcy5yb3RhdGlvbiA9IGV2ZW50LnJvdGF0aW9uLnkgKyAxODA7XHJcbiAgICAgICAgdGhpcy5wcmV2Um90YXRpb24gPSB0aGlzLnJvdGF0aW9uO1xyXG4gICAgICAgIHRoaXMuY2FtZXJhUG9zZSA9IGV2ZW50O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBXaGVuIHRoZSA8aW5wdXQ+IHJhbmdlLCBmb3Igcm90YXRpb24sIGNoYW5nZSAqL1xyXG4gIGFzeW5jIG9uUm90YXRpb25DaGFuZ2UoKSB7XHJcbiAgICBjb25zdCByb3RhdGlvbkRlbHRhID0gdGhpcy5yb3RhdGlvbiAtIHRoaXMucHJldlJvdGF0aW9uO1xyXG4gICAgdGhpcy5wcmV2Um90YXRpb24gPSB0aGlzLnJvdGF0aW9uO1xyXG5cclxuICAgIC8qKiBTZW5kIHRoZSByb3RhdGlvbkRlbHRhIHRvIHRoIHF1ZXVlIGV2ZW50IGluIG9yZGVyIHRvIGJlIHNlbmQgdG8gbWF0dGVycG9ydCAqL1xyXG4gICAgdGhpcy5yb3RhdGluZ1F1ZXVlRXZlbnQucHVzaChyb3RhdGlvbkRlbHRhKTtcclxuXHJcbiAgICAvKiogU3RhcnQgdG8gcHJvY2VzcyB0aGUgcXVldWUsIGlmIGl0J3MgdGhlIGZpcnN0IGV2ZW50ICovXHJcbiAgICBpZiAoIXRoaXMuaXNSb3RhdGluZ1JhbmdlKSB7XHJcbiAgICAgIHRoaXMuaXNSb3RhdGluZ1JhbmdlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5wcm9jZXNzUm90YXRpbmdRdWV1ZUV2ZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogUHJvY2VzcyB0aGUgcm90YXRpbmcgZXZlbnQgcXVldWUsIHNlbmQgZXZlbnQgb25lIGJ5IG9uZSB0byBtYXR0ZXJwb3J0ICAqL1xyXG4gIGFzeW5jIHByb2Nlc3NSb3RhdGluZ1F1ZXVlRXZlbnQoKSB7XHJcbiAgICBjb25zdCB7IHNkayB9ID0gdGhpcy5tYXR0ZXJwb3J0SW1wb3J0U2VydmljZTtcclxuXHJcbiAgICAvKiogV2hpbGUgdGhlIHF1ZXVlIGlzIG5vdCBlbXB0eSAqL1xyXG4gICAgd2hpbGUgKHRoaXMucm90YXRpbmdRdWV1ZUV2ZW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgLyoqIFJvdGF0ZSBtYXR0ZXJwb3J0IGJ5IGRlbHRhUm90YXRpb24gYW5kIHJlbW92ZSBldmVudCBmcm9tIHF1ZXVlICovXHJcbiAgICAgIGF3YWl0IHNkay5DYW1lcmEucm90YXRlKHRoaXMucm90YXRpbmdRdWV1ZUV2ZW50LnNoaWZ0KCksIDAsIHtcclxuICAgICAgICBzcGVlZDogMzYwLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogV2hlbiB0aGUgcXVldWUgaXMgZW1wdHksIHRoZW4gdGhlIHVzZXIgaXMgbm90IHJvdGF0aW5nIHdpdGggdGhlIDxpbnB1dD4gcmFuZ2UgYW55bW9yZSAqL1xyXG4gICAgdGhpcy5pc1JvdGF0aW5nUmFuZ2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNFUiBBQ1RJT05TXHJcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcblxyXG4gIC8qKiBQcmV2aWV3IGNhbGlicmF0aW9uICovXHJcbiAgYXN5bmMgb25QcmV2aWV3KCkge1xyXG4gICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcclxuICAgIC8qKiBQbGFjZSBzd2VlcHMgKi9cclxuICAgIHRoaXMub25QbGFjZVN3ZWVwcygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY2FsaWJyYXRlKCkge1xyXG4gICAgY29uc3QgW25hdmlnYXRpb25dID0gdGhpcy5jdXJyZW50TmF2aWdhdGlvbnM7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IEpTT04ucGFyc2UobmF2aWdhdGlvbi5wb3NpdGlvbik7XHJcbiAgICB0aGlzLmZpcnN0TWFya1BsYW4gPVxyXG4gICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLnNkay5SZW5kZXJlci5nZXRTY3JlZW5Qb3NpdGlvbih7XHJcbiAgICAgICAgeDogcG9zaXRpb24ueCxcclxuICAgICAgICB5OiBwb3NpdGlvbi55LFxyXG4gICAgICAgIHo6IHBvc2l0aW9uLnosXHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zZWNvbmRNYXJrUGxhbiA9XHJcbiAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2Uuc2RrLlJlbmRlcmVyLmdldFNjcmVlblBvc2l0aW9uKHtcclxuICAgICAgICB4OiBwb3NpdGlvbi54LFxyXG4gICAgICAgIHk6IDAsXHJcbiAgICAgICAgejogMCxcclxuICAgICAgfSk7XHJcbiAgICBjb25zdCBkZWx0YVpWaXNpdCA9IDAgLSBwb3NpdGlvbi56O1xyXG4gICAgbGV0IGRlbHRhWFBsYW4gPSB0aGlzLnNlY29uZE1hcmtQbGFuLnggLSB0aGlzLmZpcnN0TWFya1BsYW4ueDtcclxuICAgIGlmIChkZWx0YVhQbGFuID09PSAwKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwid2UgbW92ZWQgYWxvbmcgWSBheGlzIG9uIFBsYW5cIik7XHJcbiAgICAgIGNvbnN0IGRlbHRhWVBsYW4gPSB0aGlzLnNlY29uZE1hcmtQbGFuLnkgLSB0aGlzLmZpcnN0TWFya1BsYW4ueTtcclxuICAgICAgdGhpcy5jYWxpYnJhZ2UubmFtZVlBeGlzID0gJ3onO1xyXG4gICAgICB0aGlzLmNhbGlicmFnZS5uYW1lWEF4aXMgPSAneCc7XHJcbiAgICAgIHRoaXMuY2FsaWJyYWdlLm9mZnNldFkgPSB0aGlzLnNlY29uZE1hcmtQbGFuLnk7XHJcbiAgICAgIHRoaXMuY2FsaWJyYWdlLnNjYWxlWSA9IGRlbHRhWVBsYW4gLyBkZWx0YVpWaXNpdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiIHdlIG1vdmVkIGFsb25nIFggYXhpcyBvbiBQbGFuXCIpO1xyXG4gICAgICB0aGlzLmNhbGlicmFnZS5uYW1lWUF4aXMgPSAneCc7XHJcbiAgICAgIHRoaXMuY2FsaWJyYWdlLm5hbWVYQXhpcyA9ICd6JztcclxuICAgICAgdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WCA9IHRoaXMuc2Vjb25kTWFya1BsYW4ueDtcclxuICAgICAgdGhpcy5jYWxpYnJhZ2Uuc2NhbGVYID0gZGVsdGFYUGxhbiAvIGRlbHRhWlZpc2l0O1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGhpcmRNYXJrUGxhbiA9XHJcbiAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2Uuc2RrLlJlbmRlcmVyLmdldFNjcmVlblBvc2l0aW9uKHtcclxuICAgICAgICB4OiAwLFxyXG4gICAgICAgIHk6IDAsXHJcbiAgICAgICAgejogcG9zaXRpb24ueixcclxuICAgICAgfSk7XHJcbiAgICBjb25zdCBkZWx0YVhWaXNpdCA9IDAgLSBwb3NpdGlvbi54O1xyXG4gICAgaWYgKGRlbHRhWFBsYW4gPT09IDApIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coXCIgd2UgbW92ZWQgYWxvbmcgWCBheGlzIG9uIFBsYW5cIik7XHJcbiAgICAgIGRlbHRhWFBsYW4gPSB0aGlyZE1hcmtQbGFuLnggLSB0aGlzLmZpcnN0TWFya1BsYW4ueDtcclxuICAgICAgdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WCA9IHRoaXJkTWFya1BsYW4ueDtcclxuICAgICAgdGhpcy5jYWxpYnJhZ2Uuc2NhbGVYID0gZGVsdGFYUGxhbiAvIGRlbHRhWFZpc2l0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZGVsdGFZUGxhbiA9IHRoaXJkTWFya1BsYW4ueSAtIHRoaXMuZmlyc3RNYXJrUGxhbi55O1xyXG4gICAgICB0aGlzLmNhbGlicmFnZS5vZmZzZXRZID0gdGhpcmRNYXJrUGxhbi55O1xyXG4gICAgICB0aGlzLmNhbGlicmFnZS5zY2FsZVkgPSBkZWx0YVlQbGFuIC8gZGVsdGFYVmlzaXQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFRha2UgY29uc2lkaXJhdGlvbiBvZiBwYW4gYW5kIHpvb20gb2YgcGxhbiBvbiBjYW52YXMgKi9cclxuICAgIGNvbnN0IHRyYW5zZm9ybUluZm8gPSB0aGlzLnBhbnpvb20uZ2V0VHJhbnNmb3JtKCk7XHJcbiAgICBjb25zdCB7IHNjYWxlLCB4LCB5IH0gPSB0cmFuc2Zvcm1JbmZvO1xyXG4gICAgLy8gY29uc29sZS5sb2codHJhbnNmb3JtSW5mbyk7XHJcbiAgICB0aGlzLmNhbGlicmFnZS5vZmZzZXRYUGxhbiA9IHg7XHJcbiAgICB0aGlzLmNhbGlicmFnZS5vZmZzZXRZUGxhbiA9IHk7XHJcbiAgICB0aGlzLmNhbGlicmFnZS5zY2FsZVBsYW4gPSBzY2FsZTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuY2FsaWJyYWdlKTtcclxuICB9XHJcblxyXG4gIC8qKiBQbGFjZSBzd2VlcHMgKi9cclxuICBhc3luYyBvblBsYWNlU3dlZXBzKCkge1xyXG4gICAgLyoqIERpc3BsYXkgYWxsIHNjYW4gKi9cclxuICAgIGNvbnN0IHpvbmUgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmUodGhpcy5jaG9zZW5QbGFuLnpvbmVJRCk7XHJcblxyXG4gICAgaWYgKHpvbmUpIHtcclxuICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IHpvbmU7XHJcbiAgICAgIGNvbnN0IG5hdmlnYXRpb25zID0gYXdhaXQgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXROYXZpZ2F0aW9uc0ZvclpvbmUoXHJcbiAgICAgICAgdGhpcy5jdXJyZW50Wm9uZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmN1cnJlbnROYXZpZ2F0aW9ucyA9IG5hdmlnYXRpb25zO1xyXG4gICAgICBhd2FpdCB0aGlzLmNhbGlicmF0ZSgpO1xyXG4gICAgICBpZiAobmF2aWdhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgbmF2aWdhdGlvbiBvZiBuYXZpZ2F0aW9ucykge1xyXG4gICAgICAgICAgY29uc3QgdGVzdFBvc2l0aW9uID0gSlNPTi5wYXJzZShuYXZpZ2F0aW9uLnBvc2l0aW9uKTtcclxuICAgICAgICAgIGNvbnN0IHBvc2l0aW9uWCA9XHJcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm5hbWVYQXhpcyA9PT0gJ3gnID8gdGVzdFBvc2l0aW9uLnggOiB0ZXN0UG9zaXRpb24uejtcclxuICAgICAgICAgIGNvbnN0IHBvc2l0aW9uWSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm5hbWVZQXhpcyA9PT0gJ3gnID8gdGVzdFBvc2l0aW9uLnggOiB0ZXN0UG9zaXRpb24uejtcclxuICAgICAgICAgIGNvbnN0IHRlc3RYID1cclxuICAgICAgICAgICAgcG9zaXRpb25YICogdGhpcy5jYWxpYnJhZ2Uuc2NhbGVYICsgdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WDtcclxuICAgICAgICAgIGNvbnN0IHRlc3RZID1cclxuICAgICAgICAgICAgcG9zaXRpb25ZICogdGhpcy5jYWxpYnJhZ2Uuc2NhbGVZICsgdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwidGVzdCBwb3NpdGlvbiBHUkVFTlwiLCB0ZXN0WCwgdGVzdFkpO1xyXG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRYID1cclxuICAgICAgICAgICAgKHRlc3RYIC0gdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WFBsYW4pIC8gdGhpcy5jYWxpYnJhZ2Uuc2NhbGVQbGFuOyAvLyB3ZSBhcmUgdW5kb2luZyB0aGUgcGFuIGFuZCB6b29tXHJcbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFkgPVxyXG4gICAgICAgICAgICAodGVzdFkgLSB0aGlzLmNhbGlicmFnZS5vZmZzZXRZUGxhbikgLyB0aGlzLmNhbGlicmFnZS5zY2FsZVBsYW47XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgbmF2SUQ6IG5hdmlnYXRpb24uaWQsXHJcbiAgICAgICAgICAgIHBsYW5JRDogdGhpcy5jaG9zZW5QbGFuLmlkLFxyXG4gICAgICAgICAgICB4OiB0cmFuc2Zvcm1lZFgsXHJcbiAgICAgICAgICAgIHk6IHRyYW5zZm9ybWVkWSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3QgaWNvblNpemUgPSAzMCAqIHRoaXMuY2FsaWJyYWdlLnNjYWxlUGxhbjtcclxuICAgICAgICAgIGNvbnN0IHNoaWZ0ID0gaWNvblNpemUgLyAyO1xyXG4gICAgICAgICAgdGhpcy5kcmF3SW1hZ2UoXHJcbiAgICAgICAgICAgICdodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1ncmVlbiZoZWlnaHQ9MzAmd2lkdGg9MzAnLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFggLSBzaGlmdCxcclxuICAgICAgICAgICAgdHJhbnNmb3JtZWRZIC0gc2hpZnQsXHJcbiAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogU2F2ZSBjYWxpYnJhdGlvbiAqL1xyXG4gIGFzeW5jIG9uU2F2ZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRab25lKSB7XHJcbiAgICAgIC8qKiBOb3JtYWxpemUgd2l0aCB0aGUgem9vbSAqL1xyXG4gICAgICAvLyB0aGlzLmNhbGlicmFnZS5vZmZzZXRYIC89IHRoaXMuY2FudmFzWm9vbTtcclxuICAgICAgLy8gdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WSAvPSB0aGlzLmNhbnZhc1pvb207XHJcbiAgICAgIC8vIHRoaXMuY2FsaWJyYWdlLnggLz0gdGhpcy5jYW52YXNab29tO1xyXG4gICAgICAvLyB0aGlzLmNhbGlicmFnZS55IC89IHRoaXMuY2FudmFzWm9vbTtcclxuICAgICAgdGhpcy5jYWxpYnJhZ2UubmV3ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jYWxpYnJhZ2UuaW1nV2lkdGggPSB0aGlzLmNhbnZhc1NpemUudztcclxuICAgICAgdGhpcy5jYWxpYnJhZ2UuaW1nSGVpZ2h0ID0gdGhpcy5jYW52YXNTaXplLmg7XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLnVwZGF0ZVBsYW4oe1xyXG4gICAgICAgIGlkOiB0aGlzLmNob3NlblBsYW4uaWQsXHJcbiAgICAgICAgY2FsaWJyYXRpb246IEpTT04uc3RyaW5naWZ5KHRoaXMuY2FsaWJyYWdlKSxcclxuICAgICAgfSk7XHJcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zLm1hcChhc3luYyAocG9zaXRpb24pID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgbmF2SUQgfSA9IHBvc2l0aW9uO1xyXG4gICAgICAgICAgZGVsZXRlIHBvc2l0aW9uLm5hdklEO1xyXG4gICAgICAgICAgY29uc3QgbmF2ID0gdGhpcy5jdXJyZW50TmF2aWdhdGlvbnMuZmluZCgoX25hdikgPT4gX25hdi5pZCA9PT0gbmF2SUQpO1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9uc0RhdGFUb1VwZGF0ZTtcclxuICAgICAgICAgIGlmIChuYXYucG9zaXRpb25PblBsYW4pIHtcclxuICAgICAgICAgICAgY29uc3QgcG9zaXRpb25PblBsYW4gPSBuYXYucG9zaXRpb25PblBsYW4ubWFwKChlbnRyeSkgPT5cclxuICAgICAgICAgICAgICBKU09OLnBhcnNlKGVudHJ5KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbkZvckN1cnJlbnRQbGFuID0gcG9zaXRpb25PblBsYW4uZmluZChcclxuICAgICAgICAgICAgICAoZW50cnkpID0+IGVudHJ5LnBsYW5JRCA9PT0gdGhpcy5jaG9zZW5QbGFuLmlkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChwb3NpdGlvbkZvckN1cnJlbnRQbGFuKSB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb25PblBsYW4uc3BsaWNlKFxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25PblBsYW4uaW5kZXhPZihwb3NpdGlvbkZvckN1cnJlbnRQbGFuKSxcclxuICAgICAgICAgICAgICAgIDEsXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvblxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb25PblBsYW4ucHVzaChwb3NpdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcG9zaXRpb25zRGF0YVRvVXBkYXRlID0gWy4uLnBvc2l0aW9uT25QbGFuXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uc0RhdGFUb1VwZGF0ZSA9IFtwb3NpdGlvbl07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhwb3NpdGlvbnNEYXRhVG9VcGRhdGUpO1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS51cGRhdGVOYXZpZ2F0aW9uKHtcclxuICAgICAgICAgICAgaWQ6IG5hdklELFxyXG4gICAgICAgICAgICBwb3NpdGlvbk9uUGxhbjogcG9zaXRpb25zRGF0YVRvVXBkYXRlLm1hcCgoZW50cnkpID0+XHJcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZW50cnkpXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tYXR0ZXJwb3J0SW1wb3J0U2VydmljZS5yZW1vdmVGcmFtZSgpO1xyXG5cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Rhc2hib2FyZC9sb2NhbGlzYXRpb24nLCB0aGlzLnNwYWNlSUQsICdwbGFucyddKTtcclxuICAgIGFsZXJ0KHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2NhbGlicmF0aW9uLnN1Y2Nlc3MnKSk7XHJcbiAgfVxyXG5cclxuICAvKiogUmVzZXQgdGhlIGNhbnZhcyAqL1xyXG4gIG9uUmVzZXQoKSB7XHJcbiAgICB0aGlzLnJlZmxlY3RIID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlZmxlY3RWID0gZmFsc2U7XHJcbiAgICB0aGlzLnByZXZpZXcgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmNvbmZpZ3VyZUNhbnZhcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqIENhbmNlbCwgbGVhdmUgKi9cclxuICBvbkNhbmNlbCgpIHtcclxuICAgIHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2UucmVtb3ZlRnJhbWUoKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Rhc2hib2FyZC9sb2NhbGlzYXRpb24nLCB0aGlzLnNwYWNlSUQsICdwbGFucyddKTtcclxuICAgIGFsZXJ0KHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2NhbGlicmF0aW9uLmNhbmNlbGVkJykpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25GbG9vckNsaWNrKGZsb29yKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRGbG9vciA9IGZsb29yO1xyXG4gICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0SW1wb3J0U2VydmljZS5tb3ZlVG9GbG9vcihmbG9vci5pZCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGl2YXRlWm9vbUNoYW5nZSgpIHtcclxuICAgIHRoaXMuem9vbUNhbkJlQ2hhbmdlZCA9ICF0aGlzLnpvb21DYW5CZUNoYW5nZWQ7XHJcbiAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdmlld2VyLWZyYW1lJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoaWZyYW1lKSB7XHJcbiAgICAgIGlmcmFtZS5zdHlsZS56SW5kZXggPSB0aGlzLnpvb21DYW5CZUNoYW5nZWQgPyAnMScgOiAnMCc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTNcIj5cclxuICAgICAgICAgICAgPGxpYi10YWItbmF2aWdhdGlvbiBbbWVudUl0ZW1zXT0nbWVudUl0ZW1zJz48L2xpYi10YWItbmF2aWdhdGlvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgaWQ9XCJyb3dDYW52YXNcIj5cclxuICAgIDxkaXYgI2NhbnZhc0RpdiBpZD1cImNhbnZhc0RpdlwiPlxyXG5cclxuICAgICAgICA8ZGl2IGlkPVwidmlld2VyLWZyYW1lXCIgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cInpvb21DYW5CZUNoYW5nZWQ/J2F1dG8nOidub25lJ1wiPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJibHVyXCI+PC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxjYW52YXMgaWQ9XCJjYW52YXNcIiBbbmdTdHlsZV09XCJ7J29wYWNpdHknOiAocHJldmlld3x8bG9hZGluZykgPyAnMScgOiAnY2FsYygnICsgb3BhY2l0eSArICcvIDEwMCknfVwiPjwvY2FudmFzPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNhbGlicmF0aW9uLXRvb2xzIGNvbnRhaW5lci1mbHVpZFwiICpuZ0lmPVwiIShwcmV2aWV3IHx8IGxvYWRpbmcpXCI+XHJcbiAgICAgICAgPGgxPnt7J0NhbGlicmF0aW9uIHRvb2wnIHwgdHJhbnNsYXRlfX08L2gxPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXMtMCBtZS0wIGxlZ2VuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1iYXItaW5kaWNhdG9yXCIgW25nU3R5bGVdPVwieydvcGFjaXR5JzogJ2NhbGMoJyArICgtKG9wYWNpdHktMTAwKSsxMCkgKyAnLyAxMDApJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydMZXNzJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLXRpdGxlXCI+e3snUGxhbiBPcGFjaXR5JyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1iYXItaW5kaWNhdG9yXCIgW25nU3R5bGVdPVwieydvcGFjaXR5JzogJ2NhbGMoJyArIChvcGFjaXR5KzEwKSArICcvIDEwMCknfVwiPnt7J01vcmUnIHxcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtcy0wIG1lLTAgXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgW2Rpc2FibGVkXT1cImZhbHNlXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiIFsobmdNb2RlbCldPVwib3BhY2l0eVwiIHR5cGU9XCJyYW5nZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXJhbmdlXCIgbWluPVwiMFwiIG1heD1cIjEwMFwiIHZhbHVlPVwiNTBcIiBpZD1cIm9wYWNpdHlcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvb2xcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtcy0wIG1lLTAgXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtbGVnZW5kXCI+e3snQ2hhbmdlIFZpc2l0IEZsb29yJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxhYmVsLWZpbGUgcm91bmRlZC1waWxsXCIgaWQ9XCJkcm9wZG93bkJhc2ljMVwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2N1cnJlbnRGbG9vciA/IGN1cnJlbnRGbG9vci5pZCA6ICgnRmxvb3InIHwgdHJhbnNsYXRlKSB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duQmFzaWMxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtICpuZ0Zvcj1cImxldCBmbG9vciBvZiBmbG9vcnNcIiAoY2xpY2spPVwib25GbG9vckNsaWNrKGZsb29yKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmxvb3IubmFtZS5sZW5ndGggPiAwID8gZmxvb3IubmFtZSA6ICgnRmxvb3IgJyArIGZsb29yLmlkKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvb2xcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtcy0wIG1lLTAgXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbC1jaGVja2JveC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbC1jaGVja2JveC1zdWJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWxlZ2VuZCBtZS0zXCI+e3snUGFuL1pvb20gVmlzaXQnIHwgdHJhbnNsYXRlfX0ge3t6b29tQ2FuQmVDaGFuZ2VkID8gXCJPTlwiIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT0ZGXCJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwib25BY3RpdmF0ZVpvb21DaGFuZ2UoKVwiIHN0eWxlPVwibWFyZ2luLXRvcDogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci13YXJuaW5nIG1iLTMgbXQtM1wiICpuZ0lmPVwiem9vbUNhbkJlQ2hhbmdlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHRleHQtd2FybmluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7XCJjYWxpYnJhdGlvbi53YWl0LW1lc3NhZ2VcIiB8IHRyYW5zbGF0ZX19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIiAoY2xpY2spPVwib25QcmV2aWV3KClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInpvb21DYW5CZUNoYW5nZWRcIj57eydQcmV2aWV3JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj57eydDYW5jZWwnIHxcclxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhbGlicmF0aW9uLXRvb2xzIGNvbnRhaW5lci1mbHVpZFwiICpuZ0lmPVwicHJldmlld1wiPlxyXG4gICAgICAgIDxoMT57eydWYWxpZGF0aW9uJyB8IHRyYW5zbGF0ZX19PC9oMT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uU2F2ZSgpXCI+e3snVmFsaWRhdGUnIHxcclxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uUmVzZXQoKVwiPnt7J1Jlc2V0JyB8XHJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+e3snQ2FuY2VsJyB8XHJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FsaWJyYXRpb24tdG9vbHMgY29udGFpbmVyLWZsdWlkXCIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgPGgzPnt7XCJXYWl0aW5nIGZvciBNYXR0ZXJwb3J0XCIgfCB0cmFuc2xhdGV9fS4uLjwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlclwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
468
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsaWJyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvY2FsaWJyYXRpb24vY2FsaWJyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvY2FsaWJyYXRpb24vY2FsaWJyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekMsT0FBTyxFQVVILGVBQWUsR0FFbEIsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7Ozs7Ozs7OztBQU85QixNQUFNLE9BQU8sb0JBQW9CO0lBb0Y3QixZQUNZLHVCQUFnRCxFQUNoRCxXQUF3QixFQUN4QixLQUFxQixFQUNyQixNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsaUJBQW9DLEVBQ3BDLFNBQTJCO1FBUDNCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUEzRnZDLHFDQUFxQztRQUNyQyxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBVzNCLHFDQUFxQztRQUNyQyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRWYsb0NBQW9DO1FBQ3BDLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFFckIsNEZBQTRGO1FBQzVGLGFBQVEsR0FBVyxHQUFHLENBQUM7UUFFdkIseUhBQXlIO1FBQ3pILGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBSzNCLG9IQUFvSDtRQUNwSCxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVqQyxpREFBaUQ7UUFDakQsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBRWxDLDZDQUE2QztRQUM3QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLCtDQUErQztRQUMvQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBVWpCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLCtEQUErRDtRQUMvRCxtQkFBYyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFaEMsZ0VBQWdFO1FBQ2hFLG9CQUFlLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUVyQyxnREFBZ0Q7UUFDaEQsa0JBQWEsR0FBOEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUUxRCxpREFBaUQ7UUFDakQsbUJBQWMsR0FBOEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUUzRCxtREFBbUQ7UUFDbkQsY0FBUyxHQUFRLEVBQUUsQ0FBQztRQUVwQiwyQ0FBMkM7UUFDM0MsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQiw0QkFBNEI7UUFDNUIsWUFBTyxHQUFHLElBQUksQ0FBQztRQU9mLGNBQVMsR0FBK0QsRUFBRSxDQUFDO1FBRTNFLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFJbkIscUJBQWdCLEdBQVksS0FBSyxDQUFDO0lBVzlCLENBQUM7SUFFTCxXQUFXO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZixJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDOUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDVixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRSxtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVuRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7d0JBQ2hDLE1BQU0sRUFBRSxJQUFJO3dCQUNaLGFBQWEsRUFBRSxDQUFDO3dCQUNoQixPQUFPLEVBQUUsR0FBRzt3QkFDWixPQUFPLEVBQUUsR0FBRzt3QkFDWixXQUFXLEVBQUUsQ0FBQzt3QkFDZCxTQUFTLEVBQUUsSUFBSTtxQkFDbEIsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7YUFBTTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQzVFO0lBQ0wsQ0FBQztJQUVEOzt1R0FFbUc7SUFDbkcsY0FBYztRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDYixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRTtZQUM1QztnQkFDSSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJO2dCQUM3QixHQUFHLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxPQUFPLEVBQUU7YUFDdkM7WUFDRDtnQkFDSSxLQUFLLEVBQUUsT0FBTztnQkFDZCxHQUFHLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRO2FBQ3JEO1lBQ0Q7Z0JBQ0ksS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLEdBQUcsRUFBRSxpQkFBaUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLDZCQUE2QixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRTthQUNoRztTQUNKLENBQUM7SUFDTixDQUFDO0lBRUQ7O3VHQUVtRztJQUVuRyx1QkFBdUI7SUFDdkIsS0FBSyxDQUFDLGVBQWU7UUFDakIsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQXNCLENBQUM7WUFDdEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDeEI7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN2QixNQUFNLEtBQUssR0FBRyxNQUFNLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlELDJHQUEyRztZQUMzRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFOUQsa0VBQWtFO1lBQ2xFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBRXZDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEIsOEJBQThCO1lBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM1QzthQUFNO1lBQ0gsT0FBTztZQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsVUFBVSxDQUFDLElBQUk7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxTQUFTLENBQUMsR0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSztRQUM5QyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0MscUNBQXFDO1FBQ3JDLHVCQUF1QjtRQUN2QixvQ0FBb0M7UUFDcEMsNEJBQTRCO1FBQzVCLElBQUk7UUFDSix1QkFBdUI7UUFDdkIsb0NBQW9DO1FBQ3BDLDRCQUE0QjtRQUM1QixJQUFJO1FBRUosSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ2hDLElBQUksS0FBSyxFQUFFO2dCQUNQLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUN6QixXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQzthQUM5QjtZQUNELE9BQU8sQ0FBQyxTQUFTLENBQ2IsS0FBSyxFQUNMLENBQUMsRUFDRCxDQUFDLEVBQ0QsS0FBSyxDQUFDLEtBQUssRUFDWCxLQUFLLENBQUMsTUFBTSxFQUNaLENBQUMsRUFDRCxDQUFDLEVBQ0QsVUFBVSxFQUNWLFdBQVcsQ0FDZCxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUN2RCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7UUFFeEQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixNQUFNLFdBQVcsR0FBRyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXRDLElBQUksVUFBVSxHQUFHLFdBQVcsRUFBRTtZQUMxQixPQUFPLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQztTQUNsQzthQUFNO1lBQ0gsT0FBTyxHQUFHLE9BQU8sR0FBRyxVQUFVLENBQUM7U0FDbEM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxLQUFLLENBQUMsV0FBVztRQUNiLE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbkQsTUFBTSxXQUFXLEdBQUcsTUFBTSxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUV0RSxLQUFLLENBQUMsbUJBQW1CLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztRQUVsRCxNQUFNLEdBQUcsR0FBcUIsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7YUFDcEUsT0FBTyxDQUFDO1FBQ2IsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxDLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUVuQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUV2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUUxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQTZCLENBQUM7UUFDekUsTUFBTSxhQUFhLEdBQUc7WUFDbEIsYUFBYSxFQUFFLE9BQU87WUFDdEIsUUFBUTtTQUNYLENBQUM7UUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUV0RCxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUVwRCxrQ0FBa0M7UUFDbEMsa0NBQWtDO1FBQ2xDLGNBQWM7SUFDbEIsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxVQUFVO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCw2Q0FBNkM7SUFDN0MsVUFBVTtRQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O3VHQUVtRztJQUVuRyx3QkFBd0I7SUFDeEIsS0FBSyxDQUFDLFlBQVk7UUFDZCxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1RSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsNEJBQTRCO1FBQzVCLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNsQixzQkFBc0I7WUFDdEIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDN0QsNkNBQTZDO2dCQUM3QyxJQUFJO29CQUNBLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQzdFLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7b0JBRTNGLDJFQUEyRTtvQkFDM0UsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUU7d0JBQ25ELElBQUksT0FBTyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTs0QkFDckMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dDQUNyQyxVQUFVLEVBQUUsb0JBQW9COzZCQUNuQyxDQUFDLENBQUM7eUJBQ047b0JBQ0wsQ0FBQyxDQUFDLENBQUM7aUJBQ047Z0JBQUMsTUFBTTtvQkFDSixPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7aUJBQ3pDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCw2Q0FBNkM7WUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDekIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRVQsOENBQThDO1FBQzlDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2hDLHdIQUF3SDtZQUN4SCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7YUFDM0I7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsS0FBSyxDQUFDLGdCQUFnQjtRQUNsQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDeEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRWxDLGlGQUFpRjtRQUNqRixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTVDLDBEQUEwRDtRQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsS0FBSyxDQUFDLHlCQUF5QjtRQUMzQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBRTdDLG1DQUFtQztRQUNuQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZDLHFFQUFxRTtZQUNyRSxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQ3hELEtBQUssRUFBRSxHQUFHO2FBQ2IsQ0FBQyxDQUFDO1NBQ047UUFFRCw0RkFBNEY7UUFDNUYsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVEOzt1R0FFbUc7SUFFbkcsMEJBQTBCO0lBQzFCLEtBQUssQ0FBQyxTQUFTO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVM7UUFDWCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxhQUFhO1lBQ2QsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDOUQsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNiLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDYixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDaEIsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxDQUFDLGNBQWM7WUFDZixNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO2dCQUM5RCxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2IsQ0FBQyxFQUFFLENBQUM7Z0JBQ0osQ0FBQyxFQUFFLENBQUM7YUFDUCxDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLFVBQVUsS0FBSyxDQUFDLEVBQUU7WUFDbEIsZ0RBQWdEO1lBQ2hELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxHQUFHLFdBQVcsQ0FBQztTQUNwRDthQUFNO1lBQ0gsaURBQWlEO1lBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxHQUFHLFdBQVcsQ0FBQztTQUNwRDtRQUNELE1BQU0sYUFBYSxHQUNmLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7WUFDOUQsQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNoQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLFVBQVUsS0FBSyxDQUFDLEVBQUU7WUFDbEIsaURBQWlEO1lBQ2pELFVBQVUsR0FBRyxhQUFhLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxHQUFHLFdBQVcsQ0FBQztTQUNwRDthQUFNO1lBQ0gsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsR0FBRyxXQUFXLENBQUM7U0FDcEQ7UUFFRCwyREFBMkQ7UUFDM0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsRCxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUM7UUFDdEMsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsS0FBSyxDQUFDLGFBQWE7UUFDZix1QkFBdUI7UUFDdkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBFLElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQ2xFLElBQUksQ0FBQyxXQUFXLENBQ25CLENBQUM7WUFDRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3hCLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFO29CQUNsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDckQsTUFBTSxTQUFTLEdBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUN2RSxNQUFNLFNBQVMsR0FDWCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQ3ZFLE1BQU0sS0FBSyxHQUNQLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztvQkFDL0QsTUFBTSxLQUFLLEdBQ1AsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO29CQUMvRCxvREFBb0Q7b0JBQ3BELE1BQU0sWUFBWSxHQUNkLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxrQ0FBa0M7b0JBQ3ZHLE1BQU0sWUFBWSxHQUNkLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ3BFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO3dCQUNoQixLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUU7d0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7d0JBQzFCLENBQUMsRUFBRSxZQUFZO3dCQUNmLENBQUMsRUFBRSxZQUFZO3FCQUNsQixDQUFDLENBQUM7b0JBQ0gsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUMvQyxNQUFNLEtBQUssR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMsU0FBUyxDQUNWLDBFQUEwRSxFQUMxRSxZQUFZLEdBQUcsS0FBSyxFQUNwQixZQUFZLEdBQUcsS0FBSyxFQUNwQixJQUFJLENBQ1AsQ0FBQztpQkFDTDthQUNKO1NBQ0o7SUFDTCxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLEtBQUssQ0FBQyxNQUFNO1FBQ1IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLDhCQUE4QjtZQUM5Qiw2Q0FBNkM7WUFDN0MsNkNBQTZDO1lBQzdDLHVDQUF1QztZQUN2Qyx1Q0FBdUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBRTdDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7Z0JBQzlCLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3RCLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDOUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDbEMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQztnQkFDM0IsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLHFCQUFxQixDQUFDO2dCQUMxQixJQUFJLEdBQUcsQ0FBQyxjQUFjLEVBQUU7b0JBQ3BCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FDcEIsQ0FBQztvQkFDRixNQUFNLHNCQUFzQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQzlDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUNqRCxDQUFDO29CQUNGLElBQUksc0JBQXNCLEVBQUU7d0JBQ3hCLGNBQWMsQ0FBQyxNQUFNLENBQ2pCLGNBQWMsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFDOUMsQ0FBQyxFQUNELFFBQVEsQ0FDWCxDQUFDO3FCQUNMO3lCQUFNO3dCQUNILGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQ2pDO29CQUNELHFCQUFxQixHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztpQkFDL0M7cUJBQU07b0JBQ0gscUJBQXFCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDdEM7Z0JBQ0Qsc0NBQXNDO2dCQUN0QyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDMUMsRUFBRSxFQUFFLEtBQUs7b0JBQ1QsY0FBYyxFQUFFLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQ3hCO2lCQUNKLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUNMLENBQUM7U0FDTDtRQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUUzQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN6RSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsT0FBTztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXJCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLFFBQVE7UUFDSixJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQWdCLENBQUM7UUFDdEUsSUFBSSxNQUFNLEVBQUU7WUFDUixNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1NBQzNEO0lBQ0wsQ0FBQzs7aUhBaGtCUSxvQkFBb0I7cUdBQXBCLG9CQUFvQiwrSkN6QmpDLGl6SkFpR007MkZEeEVPLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSxpQkFBaUI7OFNBWUgsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gJ3BkZmpzLWRpc3QnO1xyXG5pbXBvcnQgeyBQREZEb2N1bWVudFByb3h5IH0gZnJvbSAnbmcyLXBkZi12aWV3ZXInO1xyXG5pbXBvcnQge1xyXG4gICAgWm9uZSxcclxuICAgIE1lbnVJdGVtLFxyXG4gICAgUGxhbixcclxuICAgIFNwYWNlLFxyXG4gICAgTmF2aWdhdGlvbixcclxuICAgIFBsYW5TZXJ2aWNlLFxyXG4gICAgWm9uZVNlcnZpY2UsXHJcbiAgICBTcGFjZVNlcnZpY2UsXHJcbiAgICBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgIGdldE1ldGFGb3JJbWFnZSxcclxuICAgIE1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLFxyXG59IGZyb20gJ0BzbWFydGVycGxhbi9uZ3gtc21hcnRlcnBsYW4tY29yZSc7XHJcbmltcG9ydCBwYW56b29tIGZyb20gJ3Bhbnpvb20nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1jYWxpYnJhdGlvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsaWJyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsaWJyYXRpb24uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGlicmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIC8qKiBJdGVtIHRvIGRpc3BsYXkgZm9yIHRoZSBuYXZiYXIgKi9cclxuICAgIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIC8qKiBDYW52YXMgKFBsYW4pICovXHJcbiAgICBjYW52YXM7XHJcblxyXG4gICAgLyoqIENhbnZhc0RpdiAoRGl2IHRoYXQgY29udGFpbiB0aGUgY2FudmFzICsgbWF0dGVycG9ydCBpZnJhbWUpICovXHJcbiAgICBAVmlld0NoaWxkKCdjYW52YXNEaXYnKSBjYW52YXNEaXY6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqIFNpemUgb2YgdGhlIGNhbnZhcyAmIG1hdHRlcnBvcnQgaWZyYW1lICovXHJcbiAgICBjYW52YXNTaXplOiB7IHc6IG51bWJlcjsgaDogbnVtYmVyOyB9O1xyXG5cclxuICAgIC8qKiBab29tIHJhdGlvIG9mIHRoZSBjYW52YXMvcGxhbiAgKi9cclxuICAgIGNhbnZhc1pvb20gPSAwO1xyXG5cclxuICAgIC8qKiBPcGFjaXR5IGZvciBtYXR0ZXJwb3J0IGlmcmFtZSAqL1xyXG4gICAgb3BhY2l0eTogbnVtYmVyID0gNTA7XHJcblxyXG4gICAgLyoqIEN1cnJlbnQgcm90YXRpb24gZm9yIG1hdHRlcnBvcnQsIFswLTM2MF0sICBtYXR0ZXJwb3J0IHJvdGF0aW9uIGlzIGJpbmQgdG8gaW5wdXQgcmFuZ2UgKi9cclxuICAgIHJvdGF0aW9uOiBudW1iZXIgPSAxODA7XHJcblxyXG4gICAgLyoqIFByZXZpb3VzIHJvdGF0aW9uLCB1c2UgdG8gY2FsY3VsYXRlIHRoZSBkZWx0YVJvdGF0aW9uIHRvIHJvdGF0ZSwgd2hlbiB1c2VyIGNoYW5nZSByb3RhdGlvbiB2YWx1ZSB1c2luZyByYW5nZSBpbnB1dCAqL1xyXG4gICAgcHJldlJvdGF0aW9uOiBudW1iZXIgPSAxODA7XHJcblxyXG4gICAgLyoqIEN1cnJlbnQgQ2FtZXJhIFBvc2UgKi9cclxuICAgIGNhbWVyYVBvc2U6IGFueTtcclxuXHJcbiAgICAvKiogVHJ1ZSB3aGVuIHRoZSB1c2VyIGlzIGN1cnJlbnRseSByb3RhdGluZyB3aXRoIHRoZSBpbnB1dCByYW5nZSwgdGhlIG1hdHRlcnBvcnQgcm90YXRpb24gZXZlbnRzIHdpbGwgYmUgaWdub3JlZCAqL1xyXG4gICAgaXNSb3RhdGluZ1JhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIFJvdGF0aW5nIHF1ZXVlIGV2ZW50IHRvIHNlbmQgdG8gbWF0dGVycG9ydCAqL1xyXG4gICAgcm90YXRpbmdRdWV1ZUV2ZW50OiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICAgIC8qKiBUcnVlIHdoZW4gVmVydGljYWwgc3ltbWV0cnkgaXMgZW5hYmxlZCAqL1xyXG4gICAgcmVmbGVjdFYgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogVHJ1ZSB3aGVuIEhvcml6b250YWwgc3ltbWV0cnkgaXMgZW5hYmxlZCAqL1xyXG4gICAgcmVmbGVjdEggPSBmYWxzZTtcclxuXHJcbiAgICBjaG9zZW5QbGFuOiBQbGFuO1xyXG5cclxuICAgIHNwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgICBjdXJyZW50U3BhY2U6IFNwYWNlO1xyXG5cclxuICAgIGN1cnJlbnRab25lOiBab25lO1xyXG5cclxuICAgIGNob3NlblBsYW5Jc1BkZiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBGaXJzdCBQb2ludCBpbiB2aXNpdCwgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGNhbGlicmF0aW9uICAqL1xyXG4gICAgZmlyc3RNYXJrVmlzaXQgPSB7IHg6IDAsIHk6IDAgfTtcclxuXHJcbiAgICAvKiogU2Vjb25kIFBvaW50IGluIHZpc2l0LCB1c2VkIHRvIGRldGVybWluZSB0aGUgY2FsaWJyYXRpb24gICovXHJcbiAgICBzZWNvbmRNYXJrVmlzaXQgPSB7IHg6IDAuNSwgeTogMC41IH07XHJcblxyXG4gICAgLyoqIEVxdWl2YWxlbnQgb2YgJ2ZpcnN0TWFya1Zpc2l0JyBpbiBjYW52YXMgICovXHJcbiAgICBmaXJzdE1hcmtQbGFuOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB9ID0geyB4OiAwLCB5OiAwIH07XHJcblxyXG4gICAgLyoqIEVxdWl2YWxlbnQgb2YgJ3NlY29uZE1hcmtWaXNpdCcgaW4gY2FudmFzICAqL1xyXG4gICAgc2Vjb25kTWFya1BsYW46IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH0gPSB7IHg6IDAsIHk6IDAgfTtcclxuXHJcbiAgICAvKiogQ2FsaWJyYXRpb24gcmVzdWx0LCAob2Zmc2V0WCwgb2Zmc2V0WSwgeCwgeSkgKi9cclxuICAgIGNhbGlicmFnZTogYW55ID0ge307XHJcblxyXG4gICAgLyoqIElzIGluIHByZXZpZXcgbW9kZSAoc2VlIHNjYW4gcmVzdWx0KSAqL1xyXG4gICAgcHJldmlldyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBNYXR0ZXJwb3J0IGlzIGxvYWRpbmcgKi9cclxuICAgIGxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIC8qIGZvciBwYW4gYW5kIHpvb20gb2YgY2FudmFzICovXHJcbiAgICBwYW56b29tOiBhbnk7XHJcblxyXG4gICAgY3VycmVudE5hdmlnYXRpb25zOiBOYXZpZ2F0aW9uW107XHJcblxyXG4gICAgcG9zaXRpb25zOiB7IG5hdklEOiBzdHJpbmc7IHBsYW5JRDogc3RyaW5nOyB4OiBudW1iZXI7IHk6IG51bWJlcjsgfVtdID0gW107XHJcblxyXG4gICAgZmxvb3JzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGN1cnJlbnRGbG9vcjtcclxuXHJcbiAgICB6b29tQ2FuQmVDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBtYXR0ZXJwb3J0SW1wb3J0U2VydmljZTogTWF0dGVycG9ydEltcG9ydFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBwbGFuU2VydmljZTogUGxhblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHNwYWNlU2VydmljZTogU3BhY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2UucmVtb3ZlRnJhbWUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhpcy5zcGFjZUlEID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5zcGFjZUlEO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlID0gYXdhaXQgdGhpcy5zcGFjZVNlcnZpY2UuZ2V0U3BhY2UodGhpcy5zcGFjZUlEKTtcclxuXHJcbiAgICAgICAgLyoqIE1lbnUgbmF2IGJhciAqL1xyXG4gICAgICAgIHRoaXMuc2V0dXBNZW51SXRlbXMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5jaG9zZW5QbGFuID0gdGhpcy5wbGFuU2VydmljZS5nZXRDaG9zZW5QbGFuKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNob3NlblBsYW4pIHtcclxuICAgICAgICAgICAgdGhpcy5jaG9zZW5QbGFuSXNQZGYgPSB0aGlzLmNob3NlblBsYW4uYW5uZXhlLmluY2x1ZGVzKCdwZGYnKTtcclxuICAgICAgICAgICAgdGhpcy5sYXVuY2hWaWV3ZXIoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyZUNhbnZhcygpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuem9vbSA9IHBhbnpvb20odGhpcy5jYW52YXMsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNQYWRkaW5nOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhab29tOiAyLjUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pblpvb206IDAuMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFpvb206IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvb21TcGVlZDogMC4wMixcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Rhc2hib2FyZC9sb2NhbGlzYXRpb24nLCB0aGlzLnNwYWNlSUQsICdwbGFucyddKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRU5VIE5BViBCQVJcclxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4gICAgc2V0dXBNZW51SXRlbXMoKSB7XHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMgPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdMb2NhdGlvbnMnLCB1cmw6ICcvbG9jYWxpc2F0aW9uJyB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jdXJyZW50U3BhY2UubmFtZSxcclxuICAgICAgICAgICAgICAgIHVybDogYC9sb2NhbGlzYXRpb24vJHt0aGlzLnNwYWNlSUR9YCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdQbGFucycsXHJcbiAgICAgICAgICAgICAgICB1cmw6IGAvbG9jYWxpc2F0aW9uLyR7dGhpcy5jdXJyZW50U3BhY2UuaWR9L3BsYW5zYCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDYWxpYnJhdGlvbicsXHJcbiAgICAgICAgICAgICAgICB1cmw6IGAvbG9jYWxpc2F0aW9uLyR7dGhpcy5jdXJyZW50U3BhY2UuaWR9L3BsYW4tY2FsaWJyYXRpb24/c3BhY2VJRD0ke3RoaXMuY3VycmVudFNwYWNlLmlkfWAsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOVkFTXHJcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbiAgICAvKiogRGlzcGxheSB0aGUgcGxhbiAqL1xyXG4gICAgYXN5bmMgY29uZmlndXJlQ2FudmFzKCkge1xyXG4gICAgICAgIC8qKiBHZXQgY2FudmFzICovXHJcbiAgICAgICAgaWYgKCF0aGlzLmNhbnZhcykge1xyXG4gICAgICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY2FudmFzJykgYXMgSFRNTENhbnZhc0VsZW1lbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY2FudmFzID0gY2FudmFzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNob3NlblBsYW5Jc1BkZikge1xyXG4gICAgICAgICAgICBjb25zdCBpbWFnZSA9IGF3YWl0IGdldE1ldGFGb3JJbWFnZSh0aGlzLmNob3NlblBsYW4uZmlsZXBhdGgpO1xyXG4gICAgICAgICAgICAvKiogQ29tcHV0ZSB0aGUgbmV3IHNpemUgZm9yIHRoZSBjYW52YXMvbWF0dGVycG9ydCwgYmFzZSBvbiB0aGUgZGltZW5zaW9uIG9mIHRoZSBwbGFuLCBrZWVwaW5nIHRoZSByYXRpbyAqL1xyXG4gICAgICAgICAgICBjb25zdCBzaXplID0gdGhpcy5nZXRTaXplRm9yQ2FudmFzKGltYWdlLndpZHRoLCBpbWFnZS5oZWlnaHQpO1xyXG5cclxuICAgICAgICAgICAgLyoqIENvbXB1dGUgdGhlIHBsYW4gem9vbSByYXRpbyAodXNlIGZvciB0aGUgY2FsaWJyYXRpb24gbGF0ZXIpICovXHJcbiAgICAgICAgICAgIHRoaXMuY2FudmFzWm9vbSA9IHNpemUudyAvIGltYWdlLndpZHRoO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5yZXNpemVWaWV3KHNpemUpO1xyXG5cclxuICAgICAgICAgICAgLyoqIERyYXcgUGxhbiBvbiB0aGUgY2FudmFzICovXHJcbiAgICAgICAgICAgIHRoaXMuZHJhd0ltYWdlKHRoaXMuY2hvc2VuUGxhbi5maWxlcGF0aCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gVE9ET1xyXG4gICAgICAgICAgICB0aGlzLnBkZlRvQ2FudmFzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBVcGRhdGUgc2l6ZSBvZiB0aGUgY2FudmFzL21hdHRlcnBvcnQgKi9cclxuICAgIHJlc2l6ZVZpZXcoc2l6ZSkge1xyXG4gICAgICAgIHRoaXMuY2FudmFzRGl2Lm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtzaXplLnd9cHhgO1xyXG4gICAgICAgIHRoaXMuY2FudmFzRGl2Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7c2l6ZS5ofXB4YDtcclxuICAgICAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9IGAke3NpemUud31weGA7XHJcbiAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUuaGVpZ2h0ID0gYCR7c2l6ZS5ofXB4YDtcclxuICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHNpemUudztcclxuICAgICAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSBzaXplLmg7XHJcbiAgICAgICAgdGhpcy5jYW52YXNTaXplID0gc2l6ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogRHJhdyBzb21ldGhpbmcgb24gdGhlIGNhbnZhcyAqL1xyXG4gICAgZHJhd0ltYWdlKHVybDogc3RyaW5nLCB4ID0gMCwgeSA9IDAsIGljb25lID0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmNhbnZhc1NpemU7XHJcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcblxyXG4gICAgICAgIC8qKiBGbGlwIHRoZSBjb250ZXh0LCBmb3Igc3ltbWV0cnkgKi9cclxuICAgICAgICAvLyBpZiAodGhpcy5yZWZsZWN0Vikge1xyXG4gICAgICAgIC8vICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplLncsIDApO1xyXG4gICAgICAgIC8vICAgICBjb250ZXh0LnNjYWxlKC0xLCAxKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gaWYgKHRoaXMucmVmbGVjdEgpIHtcclxuICAgICAgICAvLyAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgc2l6ZS5oKTtcclxuICAgICAgICAvLyAgICAgY29udGV4dC5zY2FsZSgxLCAtMSk7XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICBsZXQgaW1hZ2VXaWR0aCA9IHNpemUudztcclxuICAgICAgICBsZXQgaW1hZ2VIZWlnaHQgPSBzaXplLmg7XHJcbiAgICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGljb25lKSB7XHJcbiAgICAgICAgICAgICAgICBpbWFnZVdpZHRoID0gaW1hZ2Uud2lkdGg7XHJcbiAgICAgICAgICAgICAgICBpbWFnZUhlaWdodCA9IGltYWdlLmhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShcclxuICAgICAgICAgICAgICAgIGltYWdlLFxyXG4gICAgICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICBpbWFnZS53aWR0aCxcclxuICAgICAgICAgICAgICAgIGltYWdlLmhlaWdodCxcclxuICAgICAgICAgICAgICAgIHgsXHJcbiAgICAgICAgICAgICAgICB5LFxyXG4gICAgICAgICAgICAgICAgaW1hZ2VXaWR0aCxcclxuICAgICAgICAgICAgICAgIGltYWdlSGVpZ2h0XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaW1hZ2Uuc3JjID0gdXJsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBHZXQgdGhlIHNpemUgZm9yIHRoZSBjYW52YXMsIGJhc2VkIG9uIHRoZSBwbGFuIHNpemUsIGtlZXBpbmcgdGhlIHJhdGlvICovXHJcbiAgICBnZXRTaXplRm9yQ2FudmFzKHcsIGgpIHtcclxuICAgICAgICBsZXQgY2FudmFzVyA9IHRoaXMuY2FudmFzRGl2Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgbGV0IGNhbnZhc0ggPSB0aGlzLmNhbnZhc0Rpdi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuXHJcbiAgICAgICAgY29uc3QgaW1hZ2VSYXRpbyA9IHcgLyBoO1xyXG4gICAgICAgIGNvbnN0IGNhbnZhc1JhdGlvID0gY2FudmFzVyAvIGNhbnZhc0g7XHJcblxyXG4gICAgICAgIGlmIChpbWFnZVJhdGlvID4gY2FudmFzUmF0aW8pIHtcclxuICAgICAgICAgICAgY2FudmFzSCA9IGNhbnZhc1cgLyBpbWFnZVJhdGlvO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNhbnZhc1cgPSBjYW52YXNIICogaW1hZ2VSYXRpbztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHsgdzogY2FudmFzVywgaDogY2FudmFzSCB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBbVE9ET10gQ29udmVydCBhIFBERiB0byBhIENhbnZhcyAqL1xyXG4gICAgYXN5bmMgcGRmVG9DYW52YXMoKSB7XHJcbiAgICAgICAgY29uc3QgcGRmanMgPSBhd2FpdCBpbXBvcnQoJ3BkZmpzLWRpc3QvYnVpbGQvcGRmJyk7XHJcbiAgICAgICAgY29uc3QgcGRmanNXb3JrZXIgPSBhd2FpdCBpbXBvcnQoJ3BkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlci5lbnRyeScpO1xyXG5cclxuICAgICAgICBwZGZqcy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyA9IHBkZmpzV29ya2VyO1xyXG5cclxuICAgICAgICBjb25zdCBwZGY6IFBERkRvY3VtZW50UHJveHkgPSBhd2FpdCBnZXREb2N1bWVudCh0aGlzLmNob3NlblBsYW4uZmlsZXBhdGgpXHJcbiAgICAgICAgICAgIC5wcm9taXNlO1xyXG4gICAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCBwZGYuZ2V0UGFnZSgxKTtcclxuXHJcbiAgICAgICAgY29uc3Qgdmlld1BvcnRQYXJhbWV0ZXJzID0geyBzY2FsZTogMSB9O1xyXG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gcGFnZS5nZXRWaWV3cG9ydCh2aWV3UG9ydFBhcmFtZXRlcnMpO1xyXG5cclxuICAgICAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSB2aWV3cG9ydC5oZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5jYW52YXMud2lkdGggPSB2aWV3cG9ydC53aWR0aDtcclxuXHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuZ2V0U2l6ZUZvckNhbnZhcyh2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTtcclxuICAgICAgICBjb25zb2xlLmxvZyhzaXplKTtcclxuICAgICAgICB0aGlzLmNhbnZhc1NpemUgPSBzaXplO1xyXG5cclxuICAgICAgICB0aGlzLmNhbnZhc1pvb20gPSBzaXplLncgLyB2aWV3cG9ydC53aWR0aDtcclxuXHJcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJykgYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xyXG4gICAgICAgIGNvbnN0IHJlbmRlckNvbnRleHQgPSB7XHJcbiAgICAgICAgICAgIGNhbnZhc0NvbnRleHQ6IGNvbnRleHQsXHJcbiAgICAgICAgICAgIHZpZXdwb3J0LFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgcmVuZGVyVGFzayA9IHBhZ2UucmVuZGVyKHJlbmRlckNvbnRleHQpLnByb21pc2U7XHJcblxyXG4gICAgICAgIHJlbmRlclRhc2sudGhlbigoKSA9PiBjb25zb2xlLmxvZygnUGFnZSByZW5kZXJlZCcpKTtcclxuXHJcbiAgICAgICAgLy8gY29uc3QgcmVzID0gY2FudmFzLnRvRGF0YVVSTCgpO1xyXG4gICAgICAgIC8vIGlmIChwZGYgIT0gbnVsbCkgcGRmLmRlc3Ryb3koKTtcclxuICAgICAgICAvLyByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBVc2VyIGNsaWNrIHRvIHVzZXIgU3ltbWV0cnkgVmVydGljYWwgKi9cclxuICAgIG9uUmVmbGVjdFYoKSB7XHJcbiAgICAgICAgdGhpcy5yZWZsZWN0ViA9ICF0aGlzLnJlZmxlY3RWO1xyXG4gICAgICAgIHRoaXMuY29uZmlndXJlQ2FudmFzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFVzZXIgY2xpY2sgdG8gdXNlciBTeW1tZXRyeSBIb3Jpem9udGFsICovXHJcbiAgICBvblJlZmxlY3RIKCkge1xyXG4gICAgICAgIHRoaXMucmVmbGVjdEggPSAhdGhpcy5yZWZsZWN0SDtcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyZUNhbnZhcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVRURVJQT1JUXHJcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbiAgICAvKiogTGF1bmNoIG1hdHRlcnBvcnQgKi9cclxuICAgIGFzeW5jIGxhdW5jaFZpZXdlcigpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLmluaXRTZGtGb3JNb2RlbCh0aGlzLmNob3NlblBsYW4ubW9kZWwzZCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHsgc2RrIH0gPSB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuZmxvb3JzID0gT2JqZWN0LnZhbHVlcyh0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLmZsb29ycyk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5mbG9vcnMpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAvKiogTW92ZSBGbG9vciBtb2RlICovXHJcbiAgICAgICAgICAgIHNkay5Nb2RlLm1vdmVUbyhzZGsuTW9kZS5Nb2RlLkZMT09SUExBTikudGhlbihhc3luYyAobmV4dE1vZGUpID0+IHtcclxuICAgICAgICAgICAgICAgIC8qKiBEaXNwbGF5IHRoZSBjb3JyZWN0IGZsb29yIGZvciB0aGUgcGxhbiAqL1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXR0ZXJwb3J0Rmxvb3IgPSB0aGlzLmNob3NlblBsYW4uem9uZS5tZXRhZGF0YSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04ucGFyc2UodGhpcy5jaG9zZW5QbGFuLnpvbmUubWV0YWRhdGEpLm1hdHRlcnBvcnRGbG9vclNlcXVlbmNlIDogbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLm1vdmVUb0Zsb29yKHRoaXMuY2hvc2VuUGxhbi56b25lLm5hbWUsIG1hdHRlcnBvcnRGbG9vcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8qKiBXaGVuIHRoZSB1c2VyIHRyeSB0byBjaGFuZ2UgdGhlIHZpZXcgbW9kZSB3ZSBzZXQgaXQgYmFjayB0byBmbG9vcnBhbiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIHNkay5vbihzZGsuTW9kZS5FdmVudC5DSEFOR0VfRU5ELCAob2xkTW9kZSwgbmV3TW9kZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3TW9kZSAhPT0gc2RrLk1vZGUuTW9kZS5GTE9PUlBMQU4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkay5Nb2RlLm1vdmVUbyhzZGsuTW9kZS5Nb2RlLkZMT09SUExBTiwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246ICd0cmFuc2l0aW9uLmluc3RhbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjb3VsZG5vdCBtb3ZlIHRvIGZsb29yJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgLyoqIFdlIGNhbiBkaXNwbGF5IHRoZSBtYXR0ZXJwb3J0IHZpZXcgbm93ICovXHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG5cclxuICAgICAgICAvKiogVXBkYXRlIGN1cnJlbnQgY2FtZXJhIHBvc2UgYW5kIHJvdGF0aW9uICovXHJcbiAgICAgICAgc2RrLkNhbWVyYS5wb3NlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgLyoqIFdlIHVwZGF0ZSBvbmx5IGlmIHRoZSB1c2VyIGlzIG5vdCBjaGFuZ2luZyB0aGUgcm90YXRpb24gd2l0aCB0aGUgPGlucHV0PiByYW5nZSwgdG8gbm90IG92ZXJyaWRlIHRoZSA8aW5wdXQ+IHZhbHVlICovXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pc1JvdGF0aW5nUmFuZ2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucm90YXRpb24gPSBldmVudC5yb3RhdGlvbi55ICsgMTgwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2Um90YXRpb24gPSB0aGlzLnJvdGF0aW9uO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYW1lcmFQb3NlID0gZXZlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogV2hlbiB0aGUgPGlucHV0PiByYW5nZSwgZm9yIHJvdGF0aW9uLCBjaGFuZ2UgKi9cclxuICAgIGFzeW5jIG9uUm90YXRpb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgY29uc3Qgcm90YXRpb25EZWx0YSA9IHRoaXMucm90YXRpb24gLSB0aGlzLnByZXZSb3RhdGlvbjtcclxuICAgICAgICB0aGlzLnByZXZSb3RhdGlvbiA9IHRoaXMucm90YXRpb247XHJcblxyXG4gICAgICAgIC8qKiBTZW5kIHRoZSByb3RhdGlvbkRlbHRhIHRvIHRoIHF1ZXVlIGV2ZW50IGluIG9yZGVyIHRvIGJlIHNlbmQgdG8gbWF0dGVycG9ydCAqL1xyXG4gICAgICAgIHRoaXMucm90YXRpbmdRdWV1ZUV2ZW50LnB1c2gocm90YXRpb25EZWx0YSk7XHJcblxyXG4gICAgICAgIC8qKiBTdGFydCB0byBwcm9jZXNzIHRoZSBxdWV1ZSwgaWYgaXQncyB0aGUgZmlyc3QgZXZlbnQgKi9cclxuICAgICAgICBpZiAoIXRoaXMuaXNSb3RhdGluZ1JhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNSb3RhdGluZ1JhbmdlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzUm90YXRpbmdRdWV1ZUV2ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQcm9jZXNzIHRoZSByb3RhdGluZyBldmVudCBxdWV1ZSwgc2VuZCBldmVudCBvbmUgYnkgb25lIHRvIG1hdHRlcnBvcnQgICovXHJcbiAgICBhc3luYyBwcm9jZXNzUm90YXRpbmdRdWV1ZUV2ZW50KCkge1xyXG4gICAgICAgIGNvbnN0IHsgc2RrIH0gPSB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlO1xyXG5cclxuICAgICAgICAvKiogV2hpbGUgdGhlIHF1ZXVlIGlzIG5vdCBlbXB0eSAqL1xyXG4gICAgICAgIHdoaWxlICh0aGlzLnJvdGF0aW5nUXVldWVFdmVudC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIC8qKiBSb3RhdGUgbWF0dGVycG9ydCBieSBkZWx0YVJvdGF0aW9uIGFuZCByZW1vdmUgZXZlbnQgZnJvbSBxdWV1ZSAqL1xyXG4gICAgICAgICAgICBhd2FpdCBzZGsuQ2FtZXJhLnJvdGF0ZSh0aGlzLnJvdGF0aW5nUXVldWVFdmVudC5zaGlmdCgpLCAwLCB7XHJcbiAgICAgICAgICAgICAgICBzcGVlZDogMzYwLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKiBXaGVuIHRoZSBxdWV1ZSBpcyBlbXB0eSwgdGhlbiB0aGUgdXNlciBpcyBub3Qgcm90YXRpbmcgd2l0aCB0aGUgPGlucHV0PiByYW5nZSBhbnltb3JlICovXHJcbiAgICAgICAgdGhpcy5pc1JvdGF0aW5nUmFuZ2UgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNFUiBBQ1RJT05TXHJcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbiAgICAvKiogUHJldmlldyBjYWxpYnJhdGlvbiAqL1xyXG4gICAgYXN5bmMgb25QcmV2aWV3KCkge1xyXG4gICAgICAgIHRoaXMucHJldmlldyA9IHRydWU7XHJcbiAgICAgICAgLyoqIFBsYWNlIHN3ZWVwcyAqL1xyXG4gICAgICAgIHRoaXMub25QbGFjZVN3ZWVwcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNhbGlicmF0ZSgpIHtcclxuICAgICAgICBjb25zdCBbbmF2aWdhdGlvbl0gPSB0aGlzLmN1cnJlbnROYXZpZ2F0aW9ucztcclxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IEpTT04ucGFyc2UobmF2aWdhdGlvbi5wb3NpdGlvbik7XHJcbiAgICAgICAgdGhpcy5maXJzdE1hcmtQbGFuID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0SW1wb3J0U2VydmljZS5zZGsuUmVuZGVyZXIuZ2V0U2NyZWVuUG9zaXRpb24oe1xyXG4gICAgICAgICAgICAgICAgeDogcG9zaXRpb24ueCxcclxuICAgICAgICAgICAgICAgIHk6IHBvc2l0aW9uLnksXHJcbiAgICAgICAgICAgICAgICB6OiBwb3NpdGlvbi56LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNlY29uZE1hcmtQbGFuID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0SW1wb3J0U2VydmljZS5zZGsuUmVuZGVyZXIuZ2V0U2NyZWVuUG9zaXRpb24oe1xyXG4gICAgICAgICAgICAgICAgeDogcG9zaXRpb24ueCxcclxuICAgICAgICAgICAgICAgIHk6IDAsXHJcbiAgICAgICAgICAgICAgICB6OiAwLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBkZWx0YVpWaXNpdCA9IDAgLSBwb3NpdGlvbi56O1xyXG4gICAgICAgIGxldCBkZWx0YVhQbGFuID0gdGhpcy5zZWNvbmRNYXJrUGxhbi54IC0gdGhpcy5maXJzdE1hcmtQbGFuLng7XHJcbiAgICAgICAgaWYgKGRlbHRhWFBsYW4gPT09IDApIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJ3ZSBtb3ZlZCBhbG9uZyBZIGF4aXMgb24gUGxhblwiKTtcclxuICAgICAgICAgICAgY29uc3QgZGVsdGFZUGxhbiA9IHRoaXMuc2Vjb25kTWFya1BsYW4ueSAtIHRoaXMuZmlyc3RNYXJrUGxhbi55O1xyXG4gICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5uYW1lWUF4aXMgPSAneic7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm5hbWVYQXhpcyA9ICd4JztcclxuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WSA9IHRoaXMuc2Vjb25kTWFya1BsYW4ueTtcclxuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2Uuc2NhbGVZID0gZGVsdGFZUGxhbiAvIGRlbHRhWlZpc2l0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiIHdlIG1vdmVkIGFsb25nIFggYXhpcyBvbiBQbGFuXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5uYW1lWUF4aXMgPSAneCc7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm5hbWVYQXhpcyA9ICd6JztcclxuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WCA9IHRoaXMuc2Vjb25kTWFya1BsYW4ueDtcclxuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2Uuc2NhbGVYID0gZGVsdGFYUGxhbiAvIGRlbHRhWlZpc2l0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0aGlyZE1hcmtQbGFuID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0SW1wb3J0U2VydmljZS5zZGsuUmVuZGVyZXIuZ2V0U2NyZWVuUG9zaXRpb24oe1xyXG4gICAgICAgICAgICAgICAgeDogMCxcclxuICAgICAgICAgICAgICAgIHk6IDAsXHJcbiAgICAgICAgICAgICAgICB6OiBwb3NpdGlvbi56LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBkZWx0YVhWaXNpdCA9IDAgLSBwb3NpdGlvbi54O1xyXG4gICAgICAgIGlmIChkZWx0YVhQbGFuID09PSAwKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiIHdlIG1vdmVkIGFsb25nIFggYXhpcyBvbiBQbGFuXCIpO1xyXG4gICAgICAgICAgICBkZWx0YVhQbGFuID0gdGhpcmRNYXJrUGxhbi54IC0gdGhpcy5maXJzdE1hcmtQbGFuLng7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm9mZnNldFggPSB0aGlyZE1hcmtQbGFuLng7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLnNjYWxlWCA9IGRlbHRhWFBsYW4gLyBkZWx0YVhWaXNpdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBkZWx0YVlQbGFuID0gdGhpcmRNYXJrUGxhbi55IC0gdGhpcy5maXJzdE1hcmtQbGFuLnk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm9mZnNldFkgPSB0aGlyZE1hcmtQbGFuLnk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLnNjYWxlWSA9IGRlbHRhWVBsYW4gLyBkZWx0YVhWaXNpdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKiBUYWtlIGNvbnNpZGlyYXRpb24gb2YgcGFuIGFuZCB6b29tIG9mIHBsYW4gb24gY2FudmFzICovXHJcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtSW5mbyA9IHRoaXMucGFuem9vbS5nZXRUcmFuc2Zvcm0oKTtcclxuICAgICAgICBjb25zdCB7IHNjYWxlLCB4LCB5IH0gPSB0cmFuc2Zvcm1JbmZvO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRyYW5zZm9ybUluZm8pO1xyXG4gICAgICAgIHRoaXMuY2FsaWJyYWdlLm9mZnNldFhQbGFuID0geDtcclxuICAgICAgICB0aGlzLmNhbGlicmFnZS5vZmZzZXRZUGxhbiA9IHk7XHJcbiAgICAgICAgdGhpcy5jYWxpYnJhZ2Uuc2NhbGVQbGFuID0gc2NhbGU7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5jYWxpYnJhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQbGFjZSBzd2VlcHMgKi9cclxuICAgIGFzeW5jIG9uUGxhY2VTd2VlcHMoKSB7XHJcbiAgICAgICAgLyoqIERpc3BsYXkgYWxsIHNjYW4gKi9cclxuICAgICAgICBjb25zdCB6b25lID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lKHRoaXMuY2hvc2VuUGxhbi56b25lSUQpO1xyXG5cclxuICAgICAgICBpZiAoem9uZSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gem9uZTtcclxuICAgICAgICAgICAgY29uc3QgbmF2aWdhdGlvbnMgPSBhd2FpdCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldE5hdmlnYXRpb25zRm9yWm9uZShcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TmF2aWdhdGlvbnMgPSBuYXZpZ2F0aW9ucztcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jYWxpYnJhdGUoKTtcclxuICAgICAgICAgICAgaWYgKG5hdmlnYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbmF2aWdhdGlvbiBvZiBuYXZpZ2F0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RQb3NpdGlvbiA9IEpTT04ucGFyc2UobmF2aWdhdGlvbi5wb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb25YID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2UubmFtZVhBeGlzID09PSAneCcgPyB0ZXN0UG9zaXRpb24ueCA6IHRlc3RQb3NpdGlvbi56O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uWSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm5hbWVZQXhpcyA9PT0gJ3gnID8gdGVzdFBvc2l0aW9uLnggOiB0ZXN0UG9zaXRpb24uejtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXN0WCA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uWCAqIHRoaXMuY2FsaWJyYWdlLnNjYWxlWCArIHRoaXMuY2FsaWJyYWdlLm9mZnNldFg7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVzdFkgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblkgKiB0aGlzLmNhbGlicmFnZS5zY2FsZVkgKyB0aGlzLmNhbGlicmFnZS5vZmZzZXRZO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwidGVzdCBwb3NpdGlvbiBHUkVFTlwiLCB0ZXN0WCwgdGVzdFkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkWCA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0WCAtIHRoaXMuY2FsaWJyYWdlLm9mZnNldFhQbGFuKSAvIHRoaXMuY2FsaWJyYWdlLnNjYWxlUGxhbjsgLy8gd2UgYXJlIHVuZG9pbmcgdGhlIHBhbiBhbmQgem9vbVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkWSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0WSAtIHRoaXMuY2FsaWJyYWdlLm9mZnNldFlQbGFuKSAvIHRoaXMuY2FsaWJyYWdlLnNjYWxlUGxhbjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmF2SUQ6IG5hdmlnYXRpb24uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5JRDogdGhpcy5jaG9zZW5QbGFuLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB4OiB0cmFuc2Zvcm1lZFgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHRyYW5zZm9ybWVkWSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpY29uU2l6ZSA9IDMwICogdGhpcy5jYWxpYnJhZ2Uuc2NhbGVQbGFuO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoaWZ0ID0gaWNvblNpemUgLyAyO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd0ltYWdlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmFkanVzdC5zdmc/Y29sb3I9Z3JlZW4maGVpZ2h0PTMwJndpZHRoPTMwJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRYIC0gc2hpZnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkWSAtIHNoaWZ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogU2F2ZSBjYWxpYnJhdGlvbiAqL1xyXG4gICAgYXN5bmMgb25TYXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRab25lKSB7XHJcbiAgICAgICAgICAgIC8qKiBOb3JtYWxpemUgd2l0aCB0aGUgem9vbSAqL1xyXG4gICAgICAgICAgICAvLyB0aGlzLmNhbGlicmFnZS5vZmZzZXRYIC89IHRoaXMuY2FudmFzWm9vbTtcclxuICAgICAgICAgICAgLy8gdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WSAvPSB0aGlzLmNhbnZhc1pvb207XHJcbiAgICAgICAgICAgIC8vIHRoaXMuY2FsaWJyYWdlLnggLz0gdGhpcy5jYW52YXNab29tO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmNhbGlicmFnZS55IC89IHRoaXMuY2FudmFzWm9vbTtcclxuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2UubmV3ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2UuaW1nV2lkdGggPSB0aGlzLmNhbnZhc1NpemUudztcclxuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2UuaW1nSGVpZ2h0ID0gdGhpcy5jYW52YXNTaXplLmg7XHJcblxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLnVwZGF0ZVBsYW4oe1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuY2hvc2VuUGxhbi5pZCxcclxuICAgICAgICAgICAgICAgIGNhbGlicmF0aW9uOiBKU09OLnN0cmluZ2lmeSh0aGlzLmNhbGlicmFnZSksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25zLm1hcChhc3luYyAocG9zaXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IG5hdklEIH0gPSBwb3NpdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcG9zaXRpb24ubmF2SUQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmF2ID0gdGhpcy5jdXJyZW50TmF2aWdhdGlvbnMuZmluZCgoX25hdikgPT4gX25hdi5pZCA9PT0gbmF2SUQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnNEYXRhVG9VcGRhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5hdi5wb3NpdGlvbk9uUGxhbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbk9uUGxhbiA9IG5hdi5wb3NpdGlvbk9uUGxhbi5tYXAoKGVudHJ5KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5wYXJzZShlbnRyeSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb25Gb3JDdXJyZW50UGxhbiA9IHBvc2l0aW9uT25QbGFuLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW50cnkpID0+IGVudHJ5LnBsYW5JRCA9PT0gdGhpcy5jaG9zZW5QbGFuLmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbkZvckN1cnJlbnRQbGFuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbk9uUGxhbi5zcGxpY2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25PblBsYW4uaW5kZXhPZihwb3NpdGlvbkZvckN1cnJlbnRQbGFuKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25PblBsYW4ucHVzaChwb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zRGF0YVRvVXBkYXRlID0gWy4uLnBvc2l0aW9uT25QbGFuXTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnNEYXRhVG9VcGRhdGUgPSBbcG9zaXRpb25dO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhwb3NpdGlvbnNEYXRhVG9VcGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGlvblNlcnZpY2UudXBkYXRlTmF2aWdhdGlvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBuYXZJRCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25PblBsYW46IHBvc2l0aW9uc0RhdGFUb1VwZGF0ZS5tYXAoKGVudHJ5KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZW50cnkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLnJlbW92ZUZyYW1lKCk7XHJcblxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Rhc2hib2FyZC9sb2NhbGlzYXRpb24nLCB0aGlzLnNwYWNlSUQsICdwbGFucyddKTtcclxuICAgICAgICBhbGVydCh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdjYWxpYnJhdGlvbi5zdWNjZXNzJykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBSZXNldCB0aGUgY2FudmFzICovXHJcbiAgICBvblJlc2V0KCkge1xyXG4gICAgICAgIHRoaXMucmVmbGVjdEggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZmxlY3RWID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcmV2aWV3ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuY29uZmlndXJlQ2FudmFzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIENhbmNlbCwgbGVhdmUgKi9cclxuICAgIG9uQ2FuY2VsKCkge1xyXG4gICAgICAgIHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2UucmVtb3ZlRnJhbWUoKTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9kYXNoYm9hcmQvbG9jYWxpc2F0aW9uJywgdGhpcy5zcGFjZUlELCAncGxhbnMnXSk7XHJcbiAgICAgICAgYWxlcnQodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnY2FsaWJyYXRpb24uY2FuY2VsZWQnKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25GbG9vckNsaWNrKGZsb29yKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Rmxvb3IgPSBmbG9vcjtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLm1vdmVUb0Zsb29yKGZsb29yLmlkKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkFjdGl2YXRlWm9vbUNoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLnpvb21DYW5CZUNoYW5nZWQgPSAhdGhpcy56b29tQ2FuQmVDaGFuZ2VkO1xyXG4gICAgICAgIGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN2aWV3ZXItZnJhbWUnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBpZiAoaWZyYW1lKSB7XHJcbiAgICAgICAgICAgIGlmcmFtZS5zdHlsZS56SW5kZXggPSB0aGlzLnpvb21DYW5CZUNoYW5nZWQgPyAnMScgOiAnMCc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTNcIj5cclxuICAgICAgICAgICAgPGxpYi10YWItbmF2aWdhdGlvbiBbbWVudUl0ZW1zXT0nbWVudUl0ZW1zJz48L2xpYi10YWItbmF2aWdhdGlvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgaWQ9XCJyb3dDYW52YXNcIj5cclxuICAgIDxkaXYgI2NhbnZhc0RpdiBpZD1cImNhbnZhc0RpdlwiPlxyXG5cclxuICAgICAgICA8ZGl2IGlkPVwidmlld2VyLWZyYW1lXCIgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cInpvb21DYW5CZUNoYW5nZWQ/J2F1dG8nOidub25lJ1wiPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJibHVyXCI+PC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxjYW52YXMgaWQ9XCJjYW52YXNcIiBbbmdTdHlsZV09XCJ7J29wYWNpdHknOiAocHJldmlld3x8bG9hZGluZykgPyAnMScgOiAnY2FsYygnICsgb3BhY2l0eSArICcvIDEwMCknfVwiPjwvY2FudmFzPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNhbGlicmF0aW9uLXRvb2xzIGNvbnRhaW5lci1mbHVpZFwiICpuZ0lmPVwiIShwcmV2aWV3IHx8IGxvYWRpbmcpXCI+XHJcbiAgICAgICAgPGgxPnt7J0NhbGlicmF0aW9uIHRvb2wnIHwgdHJhbnNsYXRlfX08L2gxPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXMtMCBtZS0wIGxlZ2VuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1iYXItaW5kaWNhdG9yXCIgW25nU3R5bGVdPVwieydvcGFjaXR5JzogJ2NhbGMoJyArICgtKG9wYWNpdHktMTAwKSsxMCkgKyAnLyAxMDApJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydMZXNzJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLXRpdGxlXCI+e3snUGxhbiBPcGFjaXR5JyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1iYXItaW5kaWNhdG9yXCIgW25nU3R5bGVdPVwieydvcGFjaXR5JzogJ2NhbGMoJyArIChvcGFjaXR5KzEwKSArICcvIDEwMCknfVwiPnt7J01vcmUnIHxcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtcy0wIG1lLTAgXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgW2Rpc2FibGVkXT1cImZhbHNlXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiIFsobmdNb2RlbCldPVwib3BhY2l0eVwiIHR5cGU9XCJyYW5nZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXJhbmdlXCIgbWluPVwiMFwiIG1heD1cIjEwMFwiIHZhbHVlPVwiNTBcIiBpZD1cIm9wYWNpdHlcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvb2xcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtcy0wIG1lLTAgXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtbGVnZW5kXCI+e3snQ2hhbmdlIFZpc2l0IEZsb29yJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxhYmVsLWZpbGUgcm91bmRlZC1waWxsXCIgaWQ9XCJkcm9wZG93bkJhc2ljMVwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2N1cnJlbnRGbG9vciA/IGN1cnJlbnRGbG9vci5pZCA6ICgnRmxvb3InIHwgdHJhbnNsYXRlKSB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duQmFzaWMxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtICpuZ0Zvcj1cImxldCBmbG9vciBvZiBmbG9vcnNcIiAoY2xpY2spPVwib25GbG9vckNsaWNrKGZsb29yKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmxvb3IubmFtZS5sZW5ndGggPiAwID8gZmxvb3IubmFtZSA6ICgnRmxvb3IgJyArIGZsb29yLmlkKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvb2xcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtcy0wIG1lLTAgXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbC1jaGVja2JveC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbC1jaGVja2JveC1zdWJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWxlZ2VuZCBtZS0zXCI+e3snUGFuL1pvb20gVmlzaXQnIHwgdHJhbnNsYXRlfX0ge3t6b29tQ2FuQmVDaGFuZ2VkID8gXCJPTlwiIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT0ZGXCJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwib25BY3RpdmF0ZVpvb21DaGFuZ2UoKVwiIHN0eWxlPVwibWFyZ2luLXRvcDogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci13YXJuaW5nIG1iLTMgbXQtM1wiICpuZ0lmPVwiem9vbUNhbkJlQ2hhbmdlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHRleHQtd2FybmluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7XCJjYWxpYnJhdGlvbi53YWl0LW1lc3NhZ2VcIiB8IHRyYW5zbGF0ZX19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIiAoY2xpY2spPVwib25QcmV2aWV3KClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInpvb21DYW5CZUNoYW5nZWRcIj57eydQcmV2aWV3JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj57eydDYW5jZWwnIHxcclxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhbGlicmF0aW9uLXRvb2xzIGNvbnRhaW5lci1mbHVpZFwiICpuZ0lmPVwicHJldmlld1wiPlxyXG4gICAgICAgIDxoMT57eydWYWxpZGF0aW9uJyB8IHRyYW5zbGF0ZX19PC9oMT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uU2F2ZSgpXCI+e3snVmFsaWRhdGUnIHxcclxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uUmVzZXQoKVwiPnt7J1Jlc2V0JyB8XHJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+e3snQ2FuY2VsJyB8XHJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FsaWJyYXRpb24tdG9vbHMgY29udGFpbmVyLWZsdWlkXCIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgPGgzPnt7XCJXYWl0aW5nIGZvciBNYXR0ZXJwb3J0XCIgfCB0cmFuc2xhdGV9fS4uLjwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlclwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -203,9 +203,9 @@ export class PlansComponent {
|
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
205
|
PlansComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: PlansComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.SpaceService }, { token: i2.PlanService }, { token: i3.FormBuilder }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
206
|
-
PlansComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: PlansComponent, selector: "lib-plans", ngImport: i0, template: "<div class=\"container-fluid\" *ngIf=\"currentSpace\" class=\"dashboard-tab\">\
|
|
206
|
+
PlansComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: PlansComponent, selector: "lib-plans", ngImport: i0, template: "<div class=\"container-fluid\" *ngIf=\"currentSpace\" class=\"dashboard-tab\">\n <div class=\"m-3\">\n <lib-tab-navigation [menuItems]='menuItems' (onGoBack)=\"onGoBack()\"></lib-tab-navigation>\n </div>\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\n <div class=\"spinner-border\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n </div>\n <div class=\"mt-3\" *ngIf=\"!plans && !loading\">\n <h4 style=\"font-weight: bold;\">{{'No imported plans' | translate }}</h4>\n <p>{{'For import from 3D visit: go Virtual Visits => Import Images' | translate}}</p>\n </div>\n <div class=\"row ms-1\">\n <div ngbDropdown class=\"d-inline-block me-3\">\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdownBasic1\" ngbDropdownToggle>{{getChoosenPlan() ?\n getChoosenPlan().name: ('Choose Plan' | translate) }}</button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <button ngbDropdownItem *ngFor=\"let plan of plans\" (click)=\"onPlanClick(plan)\">{{plan.name }}\n </button>\n </div>\n </div>\n <div class=\"d-inline-block\" ngbDropdown #myDrop=\"ngbDropdown\">\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdownManual\" ngbDropdownToggle>{{'Choose action' |\n translate}}</button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownManual\">\n <button (click)=\"onCalibrateClick()\" ngbDropdownItem [disabled]=\"!getChoosenPlan()\">{{'Calibrate' |\n translate}}</button>\n <button (click)=\"onEditClick()\" ngbDropdownItem [disabled]=\"!getChoosenPlan()\">{{'Edit plan' |\n translate}}\n </button>\n <button (click)=\"onUploadClick()\" ngbDropdownItem>{{'Upload new plan' | translate}}</button>\n <button (click)=\"onDownloadClick()\" ngbDropdownItem [disabled]=\"!getChoosenPlan()\">{{'Download plan' |\n translate}}</button>\n <button (click)=\"onRemoveClick()\" ngbDropdownItem\n [disabled]=\"!getChoosenPlan() || getChoosenPlan().isImportedMatterport\">{{'Delete plan' |\n translate}}</button>\n <!-- <button (click)=\"onDownloadAsPng()\" ngbDropdownItem [disabled]=\"!getChoosenPlan()\">\n {{'Download plan as PNG' | translate}}</button> -->\n </div>\n </div>\n </div>\n <div class=\"row mt-3 ms-0\">\n <h4 *ngIf=\"fileToUpload\">{{'New plan' | translate }}</h4>\n <input class=\"hidden\" type=\"file\" id=\"upload-file\" name=\"upload-file\" accept=\"image/png, image/jpeg, .pdf, .svg\"\n ngf-max-size=\"6MB\" (change)=\"addPlan($event.target)\">\n </div>\n <div class=\"col-md-6 mt-3\" *ngIf=\"planForm\">\n <form (ngSubmit)=\"onSavePlan()\" [formGroup]=\"planForm\">\n <div class=\"mb-3 row\">\n <label class=\"col-sm-3\">{{'Name' | translate}} </label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n </div>\n </div>\n <div class=\"mb-3 row\">\n <label class=\"col-sm-3\">{{'Zone' | translate}} </label>\n <div class=\"col-sm-9\">\n <select class=\"form-control\" formControlName=\"zoneID\">\n <option *ngFor=\"let zone of zones\" [ngValue]=\"zone.id\">\n {{ zone.name }}\n </option>\n </select>\n </div>\n </div>\n <div class=\"mb-3 row\">\n <label class=\"col-sm-3\">{{'Set as current plan for zone' | translate}}</label>\n <div class=\"col-sm-3\">\n <input type=\"checkbox\" [(ngModel)]=\"isCurrentPlanForZone\" [ngModelOptions]=\"{standalone: true}\">\n </div>\n </div>\n <button [disabled]=\"planForm.invalid\" type='submit' class=\"btn btn-label-file rounded-pill\">{{'Save' |\n translate}}</button>\n <button class=\"btn btn-label-file rounded-pill ms-3\" type=\"button\" (click)=\"onCancelUpload()\">{{'Cancel' |\n translate}}</button>\n </form>\n </div>\n <ul class=\"col-md-6 list-group list-group-flush\" *ngIf=\"getChoosenPlan()\">\n <li class=\"list-group-item bg-transparent\">{{'Name' | translate }} : {{getChoosenPlan().name}} </li>\n <li class=\"list-group-item bg-transparent\"> {{'Plan is ' | translate }} :\n {{getChoosenPlan().calibration ? ('Calibrated' | translate) : ('Not calibrated' | translate)}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Attributed to zone ' | translate }} :\n {{getChoosenPlan().zone ? getChoosenPlan().zone.name : 'None'}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Is current plan for zone ' | translate }} :\n <input type=\"checkbox\" [(ngModel)]=\"getChoosenPlan().isCurrentForZone\" (change)=\"onCurrentPlanClick()\">\n </li>\n\n </ul>\n\n <div class=\"row mt-4\">\n <div class=\"col-md-10\">\n <embed *ngIf=\"getChoosenPlan() && chosenPlanIsPdf\" [src]=\"getChoosenPlan().filepath | safeUrl\"\n type=\"application/pdf\" frameBorder=\"0\" scrolling=\"auto\" height=\"650px;\" width=\"100%\" />\n <div *ngIf=\"!chosenPlanIsPdf\" class=\"row\" style=\"height: 500px; overflow: hidden;\" id=\"canvasDiv\">\n <canvas id=\"canvas\" width=\"4096px\" height=\"4096px\">\n <!-- <img *ngIf=\"chosenPlan\" id=\"plan-image\" [src]=\"chosenPlan.filepath\" style=\"width: 100%;\"> -->\n </canvas>\n\n </div>\n </div>\n </div>\n</div>\n", styles: [".button-visit{display:none;height:30px;width:30px;position:absolute;background:url(https://api.iconify.design/mdi:map-marker-check.svg?color=red&height=30) no-repeat scroll 0 0 transparent;border:none}#button-visit-left{left:350px;top:550px}#button-visit-right{left:500px;top:600px}.hidden{visibility:hidden;width:1px;height:1px}\n"], components: [{ type: i5.TabNavigationComponent, selector: "lib-tab-navigation", inputs: ["menuItems"], outputs: ["onGoBack"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i4.TranslatePipe, "safeUrl": i2.SafeUrlPipe } });
|
|
207
207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: PlansComponent, decorators: [{
|
|
208
208
|
type: Component,
|
|
209
|
-
args: [{ selector: 'lib-plans', template: "<div class=\"container-fluid\" *ngIf=\"currentSpace\" class=\"dashboard-tab\">\
|
|
209
|
+
args: [{ selector: 'lib-plans', template: "<div class=\"container-fluid\" *ngIf=\"currentSpace\" class=\"dashboard-tab\">\n <div class=\"m-3\">\n <lib-tab-navigation [menuItems]='menuItems' (onGoBack)=\"onGoBack()\"></lib-tab-navigation>\n </div>\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\n <div class=\"spinner-border\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n </div>\n <div class=\"mt-3\" *ngIf=\"!plans && !loading\">\n <h4 style=\"font-weight: bold;\">{{'No imported plans' | translate }}</h4>\n <p>{{'For import from 3D visit: go Virtual Visits => Import Images' | translate}}</p>\n </div>\n <div class=\"row ms-1\">\n <div ngbDropdown class=\"d-inline-block me-3\">\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdownBasic1\" ngbDropdownToggle>{{getChoosenPlan() ?\n getChoosenPlan().name: ('Choose Plan' | translate) }}</button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <button ngbDropdownItem *ngFor=\"let plan of plans\" (click)=\"onPlanClick(plan)\">{{plan.name }}\n </button>\n </div>\n </div>\n <div class=\"d-inline-block\" ngbDropdown #myDrop=\"ngbDropdown\">\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdownManual\" ngbDropdownToggle>{{'Choose action' |\n translate}}</button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownManual\">\n <button (click)=\"onCalibrateClick()\" ngbDropdownItem [disabled]=\"!getChoosenPlan()\">{{'Calibrate' |\n translate}}</button>\n <button (click)=\"onEditClick()\" ngbDropdownItem [disabled]=\"!getChoosenPlan()\">{{'Edit plan' |\n translate}}\n </button>\n <button (click)=\"onUploadClick()\" ngbDropdownItem>{{'Upload new plan' | translate}}</button>\n <button (click)=\"onDownloadClick()\" ngbDropdownItem [disabled]=\"!getChoosenPlan()\">{{'Download plan' |\n translate}}</button>\n <button (click)=\"onRemoveClick()\" ngbDropdownItem\n [disabled]=\"!getChoosenPlan() || getChoosenPlan().isImportedMatterport\">{{'Delete plan' |\n translate}}</button>\n <!-- <button (click)=\"onDownloadAsPng()\" ngbDropdownItem [disabled]=\"!getChoosenPlan()\">\n {{'Download plan as PNG' | translate}}</button> -->\n </div>\n </div>\n </div>\n <div class=\"row mt-3 ms-0\">\n <h4 *ngIf=\"fileToUpload\">{{'New plan' | translate }}</h4>\n <input class=\"hidden\" type=\"file\" id=\"upload-file\" name=\"upload-file\" accept=\"image/png, image/jpeg, .pdf, .svg\"\n ngf-max-size=\"6MB\" (change)=\"addPlan($event.target)\">\n </div>\n <div class=\"col-md-6 mt-3\" *ngIf=\"planForm\">\n <form (ngSubmit)=\"onSavePlan()\" [formGroup]=\"planForm\">\n <div class=\"mb-3 row\">\n <label class=\"col-sm-3\">{{'Name' | translate}} </label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n </div>\n </div>\n <div class=\"mb-3 row\">\n <label class=\"col-sm-3\">{{'Zone' | translate}} </label>\n <div class=\"col-sm-9\">\n <select class=\"form-control\" formControlName=\"zoneID\">\n <option *ngFor=\"let zone of zones\" [ngValue]=\"zone.id\">\n {{ zone.name }}\n </option>\n </select>\n </div>\n </div>\n <div class=\"mb-3 row\">\n <label class=\"col-sm-3\">{{'Set as current plan for zone' | translate}}</label>\n <div class=\"col-sm-3\">\n <input type=\"checkbox\" [(ngModel)]=\"isCurrentPlanForZone\" [ngModelOptions]=\"{standalone: true}\">\n </div>\n </div>\n <button [disabled]=\"planForm.invalid\" type='submit' class=\"btn btn-label-file rounded-pill\">{{'Save' |\n translate}}</button>\n <button class=\"btn btn-label-file rounded-pill ms-3\" type=\"button\" (click)=\"onCancelUpload()\">{{'Cancel' |\n translate}}</button>\n </form>\n </div>\n <ul class=\"col-md-6 list-group list-group-flush\" *ngIf=\"getChoosenPlan()\">\n <li class=\"list-group-item bg-transparent\">{{'Name' | translate }} : {{getChoosenPlan().name}} </li>\n <li class=\"list-group-item bg-transparent\"> {{'Plan is ' | translate }} :\n {{getChoosenPlan().calibration ? ('Calibrated' | translate) : ('Not calibrated' | translate)}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Attributed to zone ' | translate }} :\n {{getChoosenPlan().zone ? getChoosenPlan().zone.name : 'None'}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Is current plan for zone ' | translate }} :\n <input type=\"checkbox\" [(ngModel)]=\"getChoosenPlan().isCurrentForZone\" (change)=\"onCurrentPlanClick()\">\n </li>\n\n </ul>\n\n <div class=\"row mt-4\">\n <div class=\"col-md-10\">\n <embed *ngIf=\"getChoosenPlan() && chosenPlanIsPdf\" [src]=\"getChoosenPlan().filepath | safeUrl\"\n type=\"application/pdf\" frameBorder=\"0\" scrolling=\"auto\" height=\"650px;\" width=\"100%\" />\n <div *ngIf=\"!chosenPlanIsPdf\" class=\"row\" style=\"height: 500px; overflow: hidden;\" id=\"canvasDiv\">\n <canvas id=\"canvas\" width=\"4096px\" height=\"4096px\">\n <!-- <img *ngIf=\"chosenPlan\" id=\"plan-image\" [src]=\"chosenPlan.filepath\" style=\"width: 100%;\"> -->\n </canvas>\n\n </div>\n </div>\n </div>\n</div>\n", styles: [".button-visit{display:none;height:30px;width:30px;position:absolute;background:url(https://api.iconify.design/mdi:map-marker-check.svg?color=red&height=30) no-repeat scroll 0 0 transparent;border:none}#button-visit-left{left:350px;top:550px}#button-visit-right{left:500px;top:600px}.hidden{visibility:hidden;width:1px;height:1px}\n"] }]
|
|
210
210
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.SpaceService }, { type: i2.PlanService }, { type: i3.FormBuilder }, { type: i4.TranslateService }]; } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvcGxhbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvcGxhbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3BFLE9BQU8sRUFBMEQsZUFBZSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvSyxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7Ozs7Ozs7OztBQU85QixNQUFNLE9BQU8sY0FBYztJQW9DdkIsWUFDWSxLQUFxQixFQUNyQixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsRUFBZSxFQUNmLFNBQTJCO1FBTDNCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFsQ3ZDLG9CQUFvQjtRQUVwQixpQkFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWxCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFJdEIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBWTdCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBSXhCLGNBQVMsR0FBZSxFQUFFLENBQUM7SUFTeEIsQ0FBQztJQUVKLFFBQVE7UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQ0ksSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxFQUNsQztZQUNFLElBQUksQ0FBQyxnQkFBZ0IsQ0FDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUNuQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNiLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFO1lBQzVDO2dCQUNJLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUk7Z0JBQzdCLEdBQUcsRUFBRSxpQkFBaUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUU7YUFDL0M7WUFDRDtnQkFDSSxLQUFLLEVBQUUsT0FBTztnQkFDZCxHQUFHLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRO2FBQ3JEO1NBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxRQUFRLEtBQUksQ0FBQztJQUViLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBVztRQUN6QixJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7d0JBQ2hDLE1BQU0sRUFBRSxJQUFJO3dCQUNaLGFBQWEsRUFBRSxDQUFDO3dCQUNoQixPQUFPLEVBQUUsR0FBRzt3QkFDWixPQUFPLEVBQUUsR0FBRzt3QkFDWixXQUFXLEVBQUUsR0FBRztxQkFDbkIsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWU7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQXNCLENBQUM7UUFDdEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMzQixNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ2hDLE9BQU8sQ0FBQyxTQUFTLENBQ2IsS0FBSyxFQUNMLENBQUMsRUFDRCxDQUFDLEVBQ0QsS0FBSyxDQUFDLEtBQUssRUFDWCxLQUFLLENBQUMsTUFBTSxFQUNaLENBQUMsRUFDRCxDQUFDLEVBQ0QsVUFBVSxFQUNWLFdBQVcsQ0FDZCxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNoQixzREFBc0Q7UUFDdEQsdUhBQXVIO0lBQzNILENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFRCxjQUFjO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxXQUFXO1FBQ1AsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0I7UUFDWixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDaEIsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLEVBQzdELEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUM3QyxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQ2hCLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsRUFDdEQsRUFBRSxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQzdDLENBQUM7U0FDTDtJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1QsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FDcEMsY0FBYyxDQUNHLENBQUM7UUFDdEIsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBbUI7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBSSxNQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzFCLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsVUFBVSxFQUFFLEtBQUs7WUFDakIsV0FBVyxFQUFDLEVBQUU7U0FDakIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVUsRUFBRSxJQUFVO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDMUIsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckQsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUQsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNsQixXQUFXLEVBQ1AsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVc7Z0JBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVztnQkFDbEIsQ0FBQyxDQUFDLEVBQUU7U0FDZixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQWEsQ0FBQztRQUM5QyxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FDM0QsU0FBUyxFQUNULElBQUksQ0FBQyxZQUFZLENBQ3BCLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsSUFBSSxRQUFRLEVBQUU7WUFDVixXQUFXLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztTQUNuQztRQUNELElBQUksU0FBUyxDQUFDLGdCQUFnQixFQUFFO1lBQzVCLHFDQUFxQztZQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLDRCQUE0QixDQUN6QyxXQUFXLENBQUMsTUFBTSxFQUNsQixXQUFXLENBQUMsRUFBRSxDQUNqQixDQUFDO1NBQ0w7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCO1FBQ3BCLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDOUIsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFO1lBQzVCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxnQkFBZ0I7U0FDM0QsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsZ0JBQWdCLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyw0QkFBNEIsQ0FDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sRUFDNUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FDM0IsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlO1FBQ2pCLE1BQU0sVUFBVSxHQUFHLE1BQU0sb0JBQW9CLENBQ3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQy9CLENBQUM7UUFDRixJQUFJLFVBQVUsRUFBRTtZQUNaLGFBQWE7WUFDYixZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0Q7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWU7UUFDakIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQXNCLENBQUM7UUFDdEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUk7WUFDeEIsWUFBWSxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhO1FBQ2YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUM3RCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ25CO0lBQ0wsQ0FBQzs7MkdBalJRLGNBQWM7K0ZBQWQsY0FBYyxpRENaM0IseWxNQXNHQTsyRkQxRmEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgWm9uZSwgU3BhY2UsIFBsYW4sIE1lbnVJdGVtLCBTcGFjZVNlcnZpY2UsIFBsYW5TZXJ2aWNlLCBnZXRNZXRhRm9ySW1hZ2UsIGdldFNpZ25lZEZpbGUsIGRvd25sb2FkRmlsZUFzT2JqZWN0LCBkb3dubG9hZEJsb2IgfSBmcm9tICdAc21hcnRlcnBsYW4vbmd4LXNtYXJ0ZXJwbGFuLWNvcmUnO1xyXG5pbXBvcnQgcGFuem9vbSBmcm9tICdwYW56b29tJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXBsYW5zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGxhbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BsYW5zLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFBsYW5zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBzcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gICAgY3VycmVudFNwYWNlOiBTcGFjZTtcclxuXHJcbiAgICBwbGFuczogUGxhbltdO1xyXG5cclxuICAgIC8vIGNob3NlblBsYW46IFBsYW47XHJcblxyXG4gICAgaW5kZXhEZXRhaWxzID0gLTE7XHJcblxyXG4gICAgbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgIHVwbG9hZGluZ1BsYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwbGFuRm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICAgIGlzQ3VycmVudFBsYW5Gb3Jab25lID0gZmFsc2U7XHJcblxyXG4gICAgY2FudmFzO1xyXG5cclxuICAgIHNjYWxlOiBudW1iZXI7XHJcblxyXG4gICAgcGFuem9vbTogYW55O1xyXG5cclxuICAgIGN1cnJlbnRab25lOiBab25lO1xyXG5cclxuICAgIGZpbGVUb1VwbG9hZDogRmlsZTtcclxuXHJcbiAgICBjaG9zZW5QbGFuSXNQZGYgPSBmYWxzZTtcclxuXHJcbiAgICB6b25lczogWm9uZVtdO1xyXG5cclxuICAgIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBzcGFjZVNlcnZpY2U6IFNwYWNlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHBsYW5TZXJ2aWNlOiBQbGFuU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICkge31cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNwYWNlSUQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcImlkXCIpO1xyXG4gICAgICAgIHRoaXMuZ2V0UGxhbnMoKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMucGxhblNlcnZpY2UuZ2V0UGxhbkZpbGVDYWNoZSgpICYmXHJcbiAgICAgICAgICAgIHRoaXMucGxhblNlcnZpY2UuZ2V0Q2hvc2VuUGxhbigpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkUGxhbkZyb21DYWNoZShcclxuICAgICAgICAgICAgICAgIHRoaXMucGxhblNlcnZpY2UuZ2V0UGxhbkZpbGVDYWNoZSgpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGFuU2VydmljZS5nZXRDaG9zZW5QbGFuKCksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMucGxhblNlcnZpY2Uuc2V0UGxhbkZpbGVDYWNoZShudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wbGFuU2VydmljZS5zZXRDaG9zZW5QbGFuKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldHVwTWVudUl0ZW1zKCkge1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zID0gW1xyXG4gICAgICAgICAgICB7IGxhYmVsOiBcIkxvY2F0aW9uc1wiLCB1cmw6IFwiL2xvY2FsaXNhdGlvblwiIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmN1cnJlbnRTcGFjZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBgL2xvY2FsaXNhdGlvbi8ke3RoaXMuY3VycmVudFNwYWNlLmlkfWAsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIlBsYW5zXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IGAvbG9jYWxpc2F0aW9uLyR7dGhpcy5jdXJyZW50U3BhY2UuaWR9L3BsYW5zYCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIG9uR29CYWNrKCkge31cclxuXHJcbiAgICBhc3luYyBvblBsYW5DbGljayhwbGFuPzogUGxhbikge1xyXG4gICAgICAgIGlmIChwbGFuKSB0aGlzLnBsYW5TZXJ2aWNlLnNldENob3NlblBsYW4ocGxhbik7XHJcbiAgICAgICAgdGhpcy5jaG9zZW5QbGFuSXNQZGYgPSBwbGFuLmFubmV4ZS5pbmNsdWRlcyhcInBkZlwiKTtcclxuICAgICAgICBpZiAoIXRoaXMuY2hvc2VuUGxhbklzUGRmKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmVDYW52YXMoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbnpvb20gPSBwYW56b29tKHRoaXMuY2FudmFzLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzUGFkZGluZzogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4Wm9vbTogMy41LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5ab29tOiAwLjEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxab29tOiAwLjUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY29uZmlndXJlQ2FudmFzKCkge1xyXG4gICAgICAgIHRoaXMudXBsb2FkaW5nUGxhbiA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjYW52YXNcIikgYXMgSFRNTENhbnZhc0VsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgaW1hZ2UgPSBhd2FpdCBnZXRNZXRhRm9ySW1hZ2UodGhpcy5nZXRDaG9vc2VuUGxhbigpLmZpbGVwYXRoKTtcclxuICAgICAgICBjYW52YXMud2lkdGggPSBpbWFnZS53aWR0aDtcclxuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMuY2FudmFzID0gY2FudmFzO1xyXG4gICAgICAgIHRoaXMuZHJhd0ltYWdlKHRoaXMuZ2V0Q2hvb3NlblBsYW4oKS5maWxlcGF0aCk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRpbmdQbGFuID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZHJhd0ltYWdlKHVybDogc3RyaW5nLCB4ID0gMCwgeSA9IDApIHtcclxuICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgY29uc3QgaW1hZ2VXaWR0aCA9IHRoaXMuY2FudmFzLndpZHRoO1xyXG4gICAgICAgIGNvbnN0IGltYWdlSGVpZ2h0ID0gdGhpcy5jYW52YXMuaGVpZ2h0O1xyXG4gICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsICgpID0+IHtcclxuICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoXHJcbiAgICAgICAgICAgICAgICBpbWFnZSxcclxuICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgICAgaW1hZ2Uud2lkdGgsXHJcbiAgICAgICAgICAgICAgICBpbWFnZS5oZWlnaHQsXHJcbiAgICAgICAgICAgICAgICB4LFxyXG4gICAgICAgICAgICAgICAgeSxcclxuICAgICAgICAgICAgICAgIGltYWdlV2lkdGgsXHJcbiAgICAgICAgICAgICAgICBpbWFnZUhlaWdodCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpbWFnZS5zcmMgPSB1cmw7XHJcbiAgICAgICAgLy8gaW1hZ2UuY3Jvc3NPcmlnaW4gPSBcIipcIjsgLy9uZWVkIHRvIGRvd25sb2FkIGFzIHBuZyxcclxuICAgICAgICAvLyBCVVQ6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5NTAzMTcxL3RoZS1pbWFnZS10YWctd2l0aC1jcm9zc29yaWdpbi1hbm9ueW1vdXMtY2FudC1sb2FkLXN1Y2Nlc3MtZnJvbS1zM1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFBsYW5zKCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2UgPSBhd2FpdCB0aGlzLnNwYWNlU2VydmljZS5nZXRTcGFjZSh0aGlzLnNwYWNlSUQpO1xyXG4gICAgICAgIHRoaXMuc2V0dXBNZW51SXRlbXMoKTtcclxuXHJcbiAgICAgICAgdGhpcy56b25lcyA9IHRoaXMuY3VycmVudFNwYWNlLnpvbmVzLml0ZW1zO1xyXG4gICAgICAgIHRoaXMucGxhbnMgPSBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLmdldFNpbmdlZFBsYW5zRm9yU3BhY2UodGhpcy5zcGFjZUlEKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5wbGFucy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5vblBsYW5DbGljayh0aGlzLnBsYW5zWzBdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q2hvb3NlblBsYW4oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhblNlcnZpY2UuZ2V0Q2hvc2VuUGxhbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUltYWdlKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgNDA5NiwgNDA5Nik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICovXHJcbiAgICBvbkNhbGlicmF0ZUNsaWNrKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmdldENob29zZW5QbGFuKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXHJcbiAgICAgICAgICAgICAgICBbXCIvZGFzaGJvYXJkL2xvY2FsaXNhdGlvblwiLCB0aGlzLnNwYWNlSUQsIFwicGxhbi1jYWxpYnJhdGlvblwiXSxcclxuICAgICAgICAgICAgICAgIHsgcXVlcnlQYXJhbXM6IHsgc3BhY2VJRDogdGhpcy5zcGFjZUlEIH0gfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICovXHJcbiAgICBvbkVkaXRDbGljaygpIHtcclxuICAgICAgICBpZiAodGhpcy5nZXRDaG9vc2VuUGxhbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG4gICAgICAgICAgICAgICAgW1wiL2Rhc2hib2FyZC9sb2NhbGlzYXRpb25cIiwgdGhpcy5zcGFjZUlELCBcInBsYW4tZWRpdFwiXSxcclxuICAgICAgICAgICAgICAgIHsgcXVlcnlQYXJhbXM6IHsgc3BhY2VJRDogdGhpcy5zcGFjZUlEIH0gfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25VcGxvYWRDbGljaygpIHtcclxuICAgICAgICBjb25zdCBpbnB1dEZpbGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICAgICBcIiN1cGxvYWQtZmlsZVwiLFxyXG4gICAgICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgICAgICBpbnB1dEZpbGUuY2xpY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRQbGFuKHRhcmdldDogRXZlbnRUYXJnZXQpIHtcclxuICAgICAgICB0aGlzLmZpbGVUb1VwbG9hZCA9ICh0YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXNbMF07XHJcbiAgICAgICAgdGhpcy5wbGFuRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBuYW1lOiBbdGhpcy5maWxlVG9VcGxvYWQubmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgem9uZUlEOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgc3BhY2VJRDogdGhpcy5zcGFjZUlELFxyXG4gICAgICAgICAgICBpc01vZGlmaWVkOiBmYWxzZSxcclxuICAgICAgICAgICAgY2FsaWJyYXRpb246XCJcIixcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRQbGFuRnJvbUNhY2hlKGZpbGU6IEZpbGUsIHBsYW46IFBsYW4pIHtcclxuICAgICAgICB0aGlzLmZpbGVUb1VwbG9hZCA9IGZpbGU7XHJcbiAgICAgICAgdGhpcy5wbGFuRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBuYW1lOiBbdGhpcy5maWxlVG9VcGxvYWQubmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgem9uZUlEOiBbcGxhbiA/IHBsYW4uem9uZUlEIDogbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgc3BhY2VJRDogdGhpcy5zcGFjZUlELFxyXG4gICAgICAgICAgICBpc01vZGlmaWVkOiAhIXBsYW4sXHJcbiAgICAgICAgICAgIGNhbGlicmF0aW9uOlxyXG4gICAgICAgICAgICAgICAgcGxhbiAmJiBwbGFuLmlzTW9kaWZpZWQgJiYgcGxhbi5jYWxpYnJhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgID8gcGxhbi5jYWxpYnJhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIDogXCJcIixcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvblNhdmVQbGFuKCkge1xyXG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMucGxhbkZvcm0udmFsdWUgYXMgUGxhbjtcclxuICAgICAgICBmb3JtVmFsdWUuaXNDdXJyZW50Rm9yWm9uZSA9IHRoaXMuaXNDdXJyZW50UGxhbkZvclpvbmU7XHJcbiAgICAgICAgY29uc3QgY3JlYXRlZFBsYW4gPSBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLmNyZWF0ZVBsYW5XaXRoQW5uZXhlKFxyXG4gICAgICAgICAgICBmb3JtVmFsdWUsXHJcbiAgICAgICAgICAgIHRoaXMuZmlsZVRvVXBsb2FkLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgZmlsZXBhdGggPSBhd2FpdCBnZXRTaWduZWRGaWxlKGNyZWF0ZWRQbGFuLmFubmV4ZSk7XHJcbiAgICAgICAgaWYgKGZpbGVwYXRoKSB7XHJcbiAgICAgICAgICAgIGNyZWF0ZWRQbGFuLmZpbGVwYXRoID0gZmlsZXBhdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmb3JtVmFsdWUuaXNDdXJyZW50Rm9yWm9uZSkge1xyXG4gICAgICAgICAgICAvLyBzZXQgYWxsIG90aGVyIHBsYW5zIHRvIG5vdCBjdXJyZW50XHJcbiAgICAgICAgICAgIHRoaXMucGxhblNlcnZpY2Uuc2V0QWxsUGxhbnNGb3Jab25lTm90Q3VycmVudChcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRQbGFuLnpvbmVJRCxcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRQbGFuLmlkLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBsYW5zLnB1c2goY3JlYXRlZFBsYW4pO1xyXG4gICAgICAgIHRoaXMucGxhbkZvcm0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZmlsZVRvVXBsb2FkID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhbmNlbFVwbG9hZCgpIHtcclxuICAgICAgICB0aGlzLmZpbGVUb1VwbG9hZCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5wbGFuRm9ybSA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25DdXJyZW50UGxhbkNsaWNrKCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucGxhblNlcnZpY2UudXBkYXRlUGxhbih7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmdldENob29zZW5QbGFuKCkuaWQsXHJcbiAgICAgICAgICAgIGlzQ3VycmVudEZvclpvbmU6IHRoaXMuZ2V0Q2hvb3NlblBsYW4oKS5pc0N1cnJlbnRGb3Jab25lLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLmdldENob29zZW5QbGFuKCkuaXNDdXJyZW50Rm9yWm9uZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBsYW5TZXJ2aWNlLnNldEFsbFBsYW5zRm9yWm9uZU5vdEN1cnJlbnQoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldENob29zZW5QbGFuKCkuem9uZUlELFxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDaG9vc2VuUGxhbigpLmlkLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvbkRvd25sb2FkQ2xpY2soKSB7XHJcbiAgICAgICAgY29uc3Qgc2lnbmVkRmlsZSA9IGF3YWl0IGRvd25sb2FkRmlsZUFzT2JqZWN0KFxyXG4gICAgICAgICAgICB0aGlzLmdldENob29zZW5QbGFuKCkuYW5uZXhlLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHNpZ25lZEZpbGUpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBkb3dubG9hZEJsb2Ioc2lnbmVkRmlsZS5Cb2R5LCB0aGlzLmdldENob29zZW5QbGFuKCkubmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uRG93bmxvYWRBc1BuZygpIHtcclxuICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2NhbnZhc1wiKSBhcyBIVE1MQ2FudmFzRWxlbWVudDtcclxuICAgICAgICBjYW52YXMudG9CbG9iKGZ1bmN0aW9uIChibG9iKSB7XHJcbiAgICAgICAgICAgIGRvd25sb2FkQmxvYihibG9iLCBcInBsYW4tYXMtcG5nLnBuZ1wiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvblJlbW92ZUNsaWNrKCkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiY29uZmlybS5kZWxldGVQbGFuXCIpO1xyXG4gICAgICAgIGlmICh3aW5kb3cuY29uZmlybShtZXNzYWdlKSkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLmRlbGV0ZVBsYW4odGhpcy5nZXRDaG9vc2VuUGxhbigpKTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVJbWFnZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnBsYW5TZXJ2aWNlLnNldENob3NlblBsYW4obnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UGxhbnMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiICpuZ0lmPVwiY3VycmVudFNwYWNlXCIgY2xhc3M9XCJkYXNoYm9hcmQtdGFiXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibS0zXCI+XHJcbiAgICAgICAgPGxpYi10YWItbmF2aWdhdGlvbiBbbWVudUl0ZW1zXT0nbWVudUl0ZW1zJyAob25Hb0JhY2spPVwib25Hb0JhY2soKVwiPjwvbGliLXRhYi1uYXZpZ2F0aW9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXJcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj1cIiFwbGFucyAmJiAhbG9hZGluZ1wiPlxyXG4gICAgICAgIDxoNCBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO1wiPnt7J05vIGltcG9ydGVkIHBsYW5zJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XHJcbiAgICAgICAgPHA+e3snRm9yIGltcG9ydCBmcm9tIDNEIHZpc2l0OiBnbyBWaXJ0dWFsIFZpc2l0cyA9PiBJbXBvcnQgSW1hZ2VzJyB8IHRyYW5zbGF0ZX19PC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IG1zLTFcIj5cclxuICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbWUtM1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1sYWJlbC1maWxlIHJvdW5kZWQtcGlsbFwiIGlkPVwiZHJvcGRvd25CYXNpYzFcIiBuZ2JEcm9wZG93blRvZ2dsZT57e2dldENob29zZW5QbGFuKCkgP1xyXG4gICAgICAgICAgICAgICAgZ2V0Q2hvb3NlblBsYW4oKS5uYW1lOiAoJ0Nob29zZSBQbGFuJyB8IHRyYW5zbGF0ZSkgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25CYXNpYzFcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtICpuZ0Zvcj1cImxldCBwbGFuIG9mIHBsYW5zXCIgKGNsaWNrKT1cIm9uUGxhbkNsaWNrKHBsYW4pXCI+e3twbGFuLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIiBuZ2JEcm9wZG93biAjbXlEcm9wPVwibmdiRHJvcGRvd25cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGFiZWwtZmlsZSByb3VuZGVkLXBpbGxcIiBpZD1cImRyb3Bkb3duTWFudWFsXCIgbmdiRHJvcGRvd25Ub2dnbGU+e3snQ2hvb3NlIGFjdGlvbicgfFxyXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25NYW51YWxcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uQ2FsaWJyYXRlQ2xpY2soKVwiIG5nYkRyb3Bkb3duSXRlbSBbZGlzYWJsZWRdPVwiIWdldENob29zZW5QbGFuKClcIj57eydDYWxpYnJhdGUnIHxcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25FZGl0Q2xpY2soKVwiIG5nYkRyb3Bkb3duSXRlbSBbZGlzYWJsZWRdPVwiIWdldENob29zZW5QbGFuKClcIj57eydFZGl0IHBsYW4nIHxcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvblVwbG9hZENsaWNrKClcIiBuZ2JEcm9wZG93bkl0ZW0+e3snVXBsb2FkIG5ldyBwbGFuJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbkRvd25sb2FkQ2xpY2soKVwiIG5nYkRyb3Bkb3duSXRlbSBbZGlzYWJsZWRdPVwiIWdldENob29zZW5QbGFuKClcIj57eydEb3dubG9hZCBwbGFuJyB8XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uUmVtb3ZlQ2xpY2soKVwiIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZ2V0Q2hvb3NlblBsYW4oKSB8fCBnZXRDaG9vc2VuUGxhbigpLmlzSW1wb3J0ZWRNYXR0ZXJwb3J0XCI+e3snRGVsZXRlIHBsYW4nIHxcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIChjbGljayk9XCJvbkRvd25sb2FkQXNQbmcoKVwiIG5nYkRyb3Bkb3duSXRlbSBbZGlzYWJsZWRdPVwiIWdldENob29zZW5QbGFuKClcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydEb3dubG9hZCBwbGFuIGFzIFBORycgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMyBtcy0wXCI+XHJcbiAgICAgICAgPGg0ICpuZ0lmPVwiZmlsZVRvVXBsb2FkXCI+e3snTmV3IHBsYW4nIHwgdHJhbnNsYXRlIH19PC9oND5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJoaWRkZW5cIiB0eXBlPVwiZmlsZVwiIGlkPVwidXBsb2FkLWZpbGVcIiBuYW1lPVwidXBsb2FkLWZpbGVcIiBhY2NlcHQ9XCJpbWFnZS9wbmcsIGltYWdlL2pwZWcsIC5wZGYsIC5zdmdcIlxyXG4gICAgICAgICAgICBuZ2YtbWF4LXNpemU9XCI2TUJcIiAoY2hhbmdlKT1cImFkZFBsYW4oJGV2ZW50LnRhcmdldClcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG10LTNcIiAqbmdJZj1cInBsYW5Gb3JtXCI+XHJcbiAgICAgICAgPGZvcm0gKG5nU3VibWl0KT1cIm9uU2F2ZVBsYW4oKVwiIFtmb3JtR3JvdXBdPVwicGxhbkZvcm1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtc20tM1wiPnt7J05hbWUnIHwgdHJhbnNsYXRlfX0gPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyByb3dcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1zbS0zXCI+e3snWm9uZScgfCB0cmFuc2xhdGV9fSA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInpvbmVJRFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB6b25lIG9mIHpvbmVzXCIgW25nVmFsdWVdPVwiem9uZS5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgem9uZS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyByb3dcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1zbS0zXCI+e3snU2V0IGFzIGN1cnJlbnQgcGxhbiBmb3Igem9uZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJpc0N1cnJlbnRQbGFuRm9yWm9uZVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwicGxhbkZvcm0uaW52YWxpZFwiIHR5cGU9J3N1Ym1pdCcgY2xhc3M9XCJidG4gYnRuLWxhYmVsLWZpbGUgcm91bmRlZC1waWxsXCI+e3snU2F2ZScgfFxyXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGFiZWwtZmlsZSByb3VuZGVkLXBpbGwgbXMtM1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DYW5jZWxVcGxvYWQoKVwiPnt7J0NhbmNlbCcgfFxyXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDx1bCBjbGFzcz1cImNvbC1tZC02IGxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiICpuZ0lmPVwiZ2V0Q2hvb3NlblBsYW4oKVwiPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiPnt7J05hbWUnIHwgdHJhbnNsYXRlIH19IDoge3tnZXRDaG9vc2VuUGxhbigpLm5hbWV9fSA8L2xpPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiPiB7eydQbGFuIGlzICcgfCB0cmFuc2xhdGUgfX0gOlxyXG4gICAgICAgICAgICB7e2dldENob29zZW5QbGFuKCkuY2FsaWJyYXRpb24gPyAoJ0NhbGlicmF0ZWQnIHwgdHJhbnNsYXRlKSA6ICgnTm90IGNhbGlicmF0ZWQnIHwgdHJhbnNsYXRlKX19PC9saT5cclxuICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIj57eydBdHRyaWJ1dGVkIHRvIHpvbmUgJyB8IHRyYW5zbGF0ZSB9fSA6XHJcbiAgICAgICAgICAgIHt7Z2V0Q2hvb3NlblBsYW4oKS56b25lID8gZ2V0Q2hvb3NlblBsYW4oKS56b25lLm5hbWUgOiAnTm9uZSd9fTwvbGk+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCI+e3snSXMgY3VycmVudCBwbGFuIGZvciB6b25lICcgfCB0cmFuc2xhdGUgfX0gOlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJnZXRDaG9vc2VuUGxhbigpLmlzQ3VycmVudEZvclpvbmVcIiAoY2hhbmdlKT1cIm9uQ3VycmVudFBsYW5DbGljaygpXCI+XHJcbiAgICAgICAgPC9saT5cclxuXHJcbiAgICA8L3VsPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICAgICAgPGVtYmVkICpuZ0lmPVwiZ2V0Q2hvb3NlblBsYW4oKSAmJiBjaG9zZW5QbGFuSXNQZGZcIiBbc3JjXT1cImdldENob29zZW5QbGFuKCkuZmlsZXBhdGggfCBzYWZlVXJsXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJhcHBsaWNhdGlvbi9wZGZcIiBmcmFtZUJvcmRlcj1cIjBcIiBzY3JvbGxpbmc9XCJhdXRvXCIgaGVpZ2h0PVwiNjUwcHg7XCIgd2lkdGg9XCIxMDAlXCIgLz5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFjaG9zZW5QbGFuSXNQZGZcIiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiaGVpZ2h0OiA1MDBweDsgb3ZlcmZsb3c6IGhpZGRlbjtcIiBpZD1cImNhbnZhc0RpdlwiPlxyXG4gICAgICAgICAgICAgICAgPGNhbnZhcyBpZD1cImNhbnZhc1wiIHdpZHRoPVwiNDA5NnB4XCIgaGVpZ2h0PVwiNDA5NnB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW1nICpuZ0lmPVwiY2hvc2VuUGxhblwiIGlkPVwicGxhbi1pbWFnZVwiIFtzcmNdPVwiY2hvc2VuUGxhbi5maWxlcGF0aFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgPC9jYW52YXM+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvcGxhbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvcGxhbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3BFLE9BQU8sRUFBMEQsZUFBZSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvSyxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7Ozs7Ozs7OztBQU85QixNQUFNLE9BQU8sY0FBYztJQW9DdkIsWUFDWSxLQUFxQixFQUNyQixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsRUFBZSxFQUNmLFNBQTJCO1FBTDNCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFsQ3ZDLG9CQUFvQjtRQUVwQixpQkFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWxCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFJdEIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBWTdCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FB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RENaM0IsNjRMQXNHQTsyRkQxRmEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFpvbmUsIFNwYWNlLCBQbGFuLCBNZW51SXRlbSwgU3BhY2VTZXJ2aWNlLCBQbGFuU2VydmljZSwgZ2V0TWV0YUZvckltYWdlLCBnZXRTaWduZWRGaWxlLCBkb3dubG9hZEZpbGVBc09iamVjdCwgZG93bmxvYWRCbG9iIH0gZnJvbSAnQHNtYXJ0ZXJwbGFuL25neC1zbWFydGVycGxhbi1jb3JlJztcbmltcG9ydCBwYW56b29tIGZyb20gJ3Bhbnpvb20nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcGxhbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGxhbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbGFucy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBsYW5zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHNwYWNlSUQ6IHN0cmluZztcblxuICAgIGN1cnJlbnRTcGFjZTogU3BhY2U7XG5cbiAgICBwbGFuczogUGxhbltdO1xuXG4gICAgLy8gY2hvc2VuUGxhbjogUGxhbjtcblxuICAgIGluZGV4RGV0YWlscyA9IC0xO1xuXG4gICAgbG9hZGluZyA9IGZhbHNlO1xuXG4gICAgdXBsb2FkaW5nUGxhbiA9IGZhbHNlO1xuXG4gICAgcGxhbkZvcm06IEZvcm1Hcm91cDtcblxuICAgIGlzQ3VycmVudFBsYW5Gb3Jab25lID0gZmFsc2U7XG5cbiAgICBjYW52YXM7XG5cbiAgICBzY2FsZTogbnVtYmVyO1xuXG4gICAgcGFuem9vbTogYW55O1xuXG4gICAgY3VycmVudFpvbmU6IFpvbmU7XG5cbiAgICBmaWxlVG9VcGxvYWQ6IEZpbGU7XG5cbiAgICBjaG9zZW5QbGFuSXNQZGYgPSBmYWxzZTtcblxuICAgIHpvbmVzOiBab25lW107XG5cbiAgICBtZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBzcGFjZVNlcnZpY2U6IFNwYWNlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBwbGFuU2VydmljZTogUGxhblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zcGFjZUlEID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJpZFwiKTtcbiAgICAgICAgdGhpcy5nZXRQbGFucygpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnBsYW5TZXJ2aWNlLmdldFBsYW5GaWxlQ2FjaGUoKSAmJlxuICAgICAgICAgICAgdGhpcy5wbGFuU2VydmljZS5nZXRDaG9zZW5QbGFuKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFBsYW5Gcm9tQ2FjaGUoXG4gICAgICAgICAgICAgICAgdGhpcy5wbGFuU2VydmljZS5nZXRQbGFuRmlsZUNhY2hlKCksXG4gICAgICAgICAgICAgICAgdGhpcy5wbGFuU2VydmljZS5nZXRDaG9zZW5QbGFuKCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5wbGFuU2VydmljZS5zZXRQbGFuRmlsZUNhY2hlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGxhblNlcnZpY2Uuc2V0Q2hvc2VuUGxhbihudWxsKTtcbiAgICB9XG5cbiAgICBzZXR1cE1lbnVJdGVtcygpIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbXMgPSBbXG4gICAgICAgICAgICB7IGxhYmVsOiBcIkxvY2F0aW9uc1wiLCB1cmw6IFwiL2xvY2FsaXNhdGlvblwiIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3VycmVudFNwYWNlLm5hbWUsXG4gICAgICAgICAgICAgICAgdXJsOiBgL2xvY2FsaXNhdGlvbi8ke3RoaXMuY3VycmVudFNwYWNlLmlkfWAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBcIlBsYW5zXCIsXG4gICAgICAgICAgICAgICAgdXJsOiBgL2xvY2FsaXNhdGlvbi8ke3RoaXMuY3VycmVudFNwYWNlLmlkfS9wbGFuc2AsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIG9uR29CYWNrKCkge31cblxuICAgIGFzeW5jIG9uUGxhbkNsaWNrKHBsYW4/OiBQbGFuKSB7XG4gICAgICAgIGlmIChwbGFuKSB0aGlzLnBsYW5TZXJ2aWNlLnNldENob3NlblBsYW4ocGxhbik7XG4gICAgICAgIHRoaXMuY2hvc2VuUGxhbklzUGRmID0gcGxhbi5hbm5leGUuaW5jbHVkZXMoXCJwZGZcIik7XG4gICAgICAgIGlmICghdGhpcy5jaG9zZW5QbGFuSXNQZGYpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJlQ2FudmFzKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuem9vbSA9IHBhbnpvb20odGhpcy5jYW52YXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kc1BhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhab29tOiAzLjUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5ab29tOiAwLjEsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsWm9vbTogMC41LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBjb25maWd1cmVDYW52YXMoKSB7XG4gICAgICAgIHRoaXMudXBsb2FkaW5nUGxhbiA9IHRydWU7XG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2FudmFzXCIpIGFzIEhUTUxDYW52YXNFbGVtZW50O1xuICAgICAgICBjb25zdCBpbWFnZSA9IGF3YWl0IGdldE1ldGFGb3JJbWFnZSh0aGlzLmdldENob29zZW5QbGFuKCkuZmlsZXBhdGgpO1xuICAgICAgICBjYW52YXMud2lkdGggPSBpbWFnZS53aWR0aDtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IGltYWdlLmhlaWdodDtcbiAgICAgICAgdGhpcy5jYW52YXMgPSBjYW52YXM7XG4gICAgICAgIHRoaXMuZHJhd0ltYWdlKHRoaXMuZ2V0Q2hvb3NlblBsYW4oKS5maWxlcGF0aCk7XG4gICAgICAgIHRoaXMudXBsb2FkaW5nUGxhbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIGRyYXdJbWFnZSh1cmw6IHN0cmluZywgeCA9IDAsIHkgPSAwKSB7XG4gICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgIGNvbnN0IGltYWdlV2lkdGggPSB0aGlzLmNhbnZhcy53aWR0aDtcbiAgICAgICAgY29uc3QgaW1hZ2VIZWlnaHQgPSB0aGlzLmNhbnZhcy5oZWlnaHQ7XG4gICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKFxuICAgICAgICAgICAgICAgIGltYWdlLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBpbWFnZS53aWR0aCxcbiAgICAgICAgICAgICAgICBpbWFnZS5oZWlnaHQsXG4gICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICB5LFxuICAgICAgICAgICAgICAgIGltYWdlV2lkdGgsXG4gICAgICAgICAgICAgICAgaW1hZ2VIZWlnaHQsXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgaW1hZ2Uuc3JjID0gdXJsO1xuICAgICAgICAvLyBpbWFnZS5jcm9zc09yaWdpbiA9IFwiKlwiOyAvL25lZWQgdG8gZG93bmxvYWQgYXMgcG5nLFxuICAgICAgICAvLyBCVVQ6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5NTAzMTcxL3RoZS1pbWFnZS10YWctd2l0aC1jcm9zc29yaWdpbi1hbm9ueW1vdXMtY2FudC1sb2FkLXN1Y2Nlc3MtZnJvbS1zM1xuICAgIH1cblxuICAgIGFzeW5jIGdldFBsYW5zKCkge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZSA9IGF3YWl0IHRoaXMuc3BhY2VTZXJ2aWNlLmdldFNwYWNlKHRoaXMuc3BhY2VJRCk7XG4gICAgICAgIHRoaXMuc2V0dXBNZW51SXRlbXMoKTtcblxuICAgICAgICB0aGlzLnpvbmVzID0gdGhpcy5jdXJyZW50U3BhY2Uuem9uZXMuaXRlbXM7XG4gICAgICAgIHRoaXMucGxhbnMgPSBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLmdldFNpbmdlZFBsYW5zRm9yU3BhY2UodGhpcy5zcGFjZUlEKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnBsYW5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5vblBsYW5DbGljayh0aGlzLnBsYW5zWzBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldENob29zZW5QbGFuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGFuU2VydmljZS5nZXRDaG9zZW5QbGFuKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlSW1hZ2UoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIDQwOTYsIDQwOTYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICovXG4gICAgb25DYWxpYnJhdGVDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0Q2hvb3NlblBsYW4oKSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXG4gICAgICAgICAgICAgICAgW1wiL2Rhc2hib2FyZC9sb2NhbGlzYXRpb25cIiwgdGhpcy5zcGFjZUlELCBcInBsYW4tY2FsaWJyYXRpb25cIl0sXG4gICAgICAgICAgICAgICAgeyBxdWVyeVBhcmFtczogeyBzcGFjZUlEOiB0aGlzLnNwYWNlSUQgfSB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICovXG4gICAgb25FZGl0Q2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLmdldENob29zZW5QbGFuKCkpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxuICAgICAgICAgICAgICAgIFtcIi9kYXNoYm9hcmQvbG9jYWxpc2F0aW9uXCIsIHRoaXMuc3BhY2VJRCwgXCJwbGFuLWVkaXRcIl0sXG4gICAgICAgICAgICAgICAgeyBxdWVyeVBhcmFtczogeyBzcGFjZUlEOiB0aGlzLnNwYWNlSUQgfSB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVXBsb2FkQ2xpY2soKSB7XG4gICAgICAgIGNvbnN0IGlucHV0RmlsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICBcIiN1cGxvYWQtZmlsZVwiLFxuICAgICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0RmlsZS5jbGljaygpO1xuICAgIH1cblxuICAgIGFkZFBsYW4odGFyZ2V0OiBFdmVudFRhcmdldCkge1xuICAgICAgICB0aGlzLmZpbGVUb1VwbG9hZCA9ICh0YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXNbMF07XG4gICAgICAgIHRoaXMucGxhbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIG5hbWU6IFt0aGlzLmZpbGVUb1VwbG9hZC5uYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgem9uZUlEOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgIHNwYWNlSUQ6IHRoaXMuc3BhY2VJRCxcbiAgICAgICAgICAgIGlzTW9kaWZpZWQ6IGZhbHNlLFxuICAgICAgICAgICAgY2FsaWJyYXRpb246XCJcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkUGxhbkZyb21DYWNoZShmaWxlOiBGaWxlLCBwbGFuOiBQbGFuKSB7XG4gICAgICAgIHRoaXMuZmlsZVRvVXBsb2FkID0gZmlsZTtcbiAgICAgICAgdGhpcy5wbGFuRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgbmFtZTogW3RoaXMuZmlsZVRvVXBsb2FkLm5hbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICB6b25lSUQ6IFtwbGFuID8gcGxhbi56b25lSUQgOiBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgc3BhY2VJRDogdGhpcy5zcGFjZUlELFxuICAgICAgICAgICAgaXNNb2RpZmllZDogISFwbGFuLFxuICAgICAgICAgICAgY2FsaWJyYXRpb246XG4gICAgICAgICAgICAgICAgcGxhbiAmJiBwbGFuLmlzTW9kaWZpZWQgJiYgcGxhbi5jYWxpYnJhdGlvblxuICAgICAgICAgICAgICAgICAgICA/IHBsYW4uY2FsaWJyYXRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBcIlwiLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBvblNhdmVQbGFuKCkge1xuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnBsYW5Gb3JtLnZhbHVlIGFzIFBsYW47XG4gICAgICAgIGZvcm1WYWx1ZS5pc0N1cnJlbnRGb3Jab25lID0gdGhpcy5pc0N1cnJlbnRQbGFuRm9yWm9uZTtcbiAgICAgICAgY29uc3QgY3JlYXRlZFBsYW4gPSBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLmNyZWF0ZVBsYW5XaXRoQW5uZXhlKFxuICAgICAgICAgICAgZm9ybVZhbHVlLFxuICAgICAgICAgICAgdGhpcy5maWxlVG9VcGxvYWQsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVwYXRoID0gYXdhaXQgZ2V0U2lnbmVkRmlsZShjcmVhdGVkUGxhbi5hbm5leGUpO1xuICAgICAgICBpZiAoZmlsZXBhdGgpIHtcbiAgICAgICAgICAgIGNyZWF0ZWRQbGFuLmZpbGVwYXRoID0gZmlsZXBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1WYWx1ZS5pc0N1cnJlbnRGb3Jab25lKSB7XG4gICAgICAgICAgICAvLyBzZXQgYWxsIG90aGVyIHBsYW5zIHRvIG5vdCBjdXJyZW50XG4gICAgICAgICAgICB0aGlzLnBsYW5TZXJ2aWNlLnNldEFsbFBsYW5zRm9yWm9uZU5vdEN1cnJlbnQoXG4gICAgICAgICAgICAgICAgY3JlYXRlZFBsYW4uem9uZUlELFxuICAgICAgICAgICAgICAgIGNyZWF0ZWRQbGFuLmlkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBsYW5zLnB1c2goY3JlYXRlZFBsYW4pO1xuICAgICAgICB0aGlzLnBsYW5Gb3JtID0gbnVsbDtcbiAgICAgICAgdGhpcy5maWxlVG9VcGxvYWQgPSBudWxsO1xuICAgIH1cblxuICAgIG9uQ2FuY2VsVXBsb2FkKCkge1xuICAgICAgICB0aGlzLmZpbGVUb1VwbG9hZCA9IG51bGw7XG4gICAgICAgIHRoaXMucGxhbkZvcm0gPSBudWxsO1xuICAgIH1cblxuICAgIGFzeW5jIG9uQ3VycmVudFBsYW5DbGljaygpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5wbGFuU2VydmljZS51cGRhdGVQbGFuKHtcbiAgICAgICAgICAgIGlkOiB0aGlzLmdldENob29zZW5QbGFuKCkuaWQsXG4gICAgICAgICAgICBpc0N1cnJlbnRGb3Jab25lOiB0aGlzLmdldENob29zZW5QbGFuKCkuaXNDdXJyZW50Rm9yWm9uZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLmdldENob29zZW5QbGFuKCkuaXNDdXJyZW50Rm9yWm9uZSkge1xuICAgICAgICAgICAgdGhpcy5wbGFuU2VydmljZS5zZXRBbGxQbGFuc0ZvclpvbmVOb3RDdXJyZW50KFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2hvb3NlblBsYW4oKS56b25lSUQsXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDaG9vc2VuUGxhbigpLmlkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIG9uRG93bmxvYWRDbGljaygpIHtcbiAgICAgICAgY29uc3Qgc2lnbmVkRmlsZSA9IGF3YWl0IGRvd25sb2FkRmlsZUFzT2JqZWN0KFxuICAgICAgICAgICAgdGhpcy5nZXRDaG9vc2VuUGxhbigpLmFubmV4ZSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHNpZ25lZEZpbGUpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGRvd25sb2FkQmxvYihzaWduZWRGaWxlLkJvZHksIHRoaXMuZ2V0Q2hvb3NlblBsYW4oKS5uYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIG9uRG93bmxvYWRBc1BuZygpIHtcbiAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjYW52YXNcIikgYXMgSFRNTENhbnZhc0VsZW1lbnQ7XG4gICAgICAgIGNhbnZhcy50b0Jsb2IoZnVuY3Rpb24gKGJsb2IpIHtcbiAgICAgICAgICAgIGRvd25sb2FkQmxvYihibG9iLCBcInBsYW4tYXMtcG5nLnBuZ1wiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25SZW1vdmVDbGljaygpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJjb25maXJtLmRlbGV0ZVBsYW5cIik7XG4gICAgICAgIGlmICh3aW5kb3cuY29uZmlybShtZXNzYWdlKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbGFuU2VydmljZS5kZWxldGVQbGFuKHRoaXMuZ2V0Q2hvb3NlblBsYW4oKSk7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUltYWdlKCk7XG4gICAgICAgICAgICB0aGlzLnBsYW5TZXJ2aWNlLnNldENob3NlblBsYW4obnVsbCk7XG4gICAgICAgICAgICB0aGlzLmdldFBsYW5zKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgKm5nSWY9XCJjdXJyZW50U3BhY2VcIiBjbGFzcz1cImRhc2hib2FyZC10YWJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibS0zXCI+XG4gICAgICAgIDxsaWItdGFiLW5hdmlnYXRpb24gW21lbnVJdGVtc109J21lbnVJdGVtcycgKG9uR29CYWNrKT1cIm9uR29CYWNrKClcIj48L2xpYi10YWItbmF2aWdhdGlvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyXCIgcm9sZT1cInN0YXR1c1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPVwiIXBsYW5zICYmICFsb2FkaW5nXCI+XG4gICAgICAgIDxoNCBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO1wiPnt7J05vIGltcG9ydGVkIHBsYW5zJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gICAgICAgIDxwPnt7J0ZvciBpbXBvcnQgZnJvbSAzRCB2aXNpdDogZ28gVmlydHVhbCBWaXNpdHMgPT4gSW1wb3J0IEltYWdlcycgfCB0cmFuc2xhdGV9fTwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG1zLTFcIj5cbiAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1lLTNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxhYmVsLWZpbGUgcm91bmRlZC1waWxsXCIgaWQ9XCJkcm9wZG93bkJhc2ljMVwiIG5nYkRyb3Bkb3duVG9nZ2xlPnt7Z2V0Q2hvb3NlblBsYW4oKSA/XG4gICAgICAgICAgICAgICAgZ2V0Q2hvb3NlblBsYW4oKS5uYW1lOiAoJ0Nob29zZSBQbGFuJyB8IHRyYW5zbGF0ZSkgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duQmFzaWMxXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKm5nRm9yPVwibGV0IHBsYW4gb2YgcGxhbnNcIiAoY2xpY2spPVwib25QbGFuQ2xpY2socGxhbilcIj57e3BsYW4ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIiBuZ2JEcm9wZG93biAjbXlEcm9wPVwibmdiRHJvcGRvd25cIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxhYmVsLWZpbGUgcm91bmRlZC1waWxsXCIgaWQ9XCJkcm9wZG93bk1hbnVhbFwiIG5nYkRyb3Bkb3duVG9nZ2xlPnt7J0Nob29zZSBhY3Rpb24nIHxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25NYW51YWxcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbkNhbGlicmF0ZUNsaWNrKClcIiBuZ2JEcm9wZG93bkl0ZW0gW2Rpc2FibGVkXT1cIiFnZXRDaG9vc2VuUGxhbigpXCI+e3snQ2FsaWJyYXRlJyB8XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25FZGl0Q2xpY2soKVwiIG5nYkRyb3Bkb3duSXRlbSBbZGlzYWJsZWRdPVwiIWdldENob29zZW5QbGFuKClcIj57eydFZGl0IHBsYW4nIHxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvblVwbG9hZENsaWNrKClcIiBuZ2JEcm9wZG93bkl0ZW0+e3snVXBsb2FkIG5ldyBwbGFuJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25Eb3dubG9hZENsaWNrKClcIiBuZ2JEcm9wZG93bkl0ZW0gW2Rpc2FibGVkXT1cIiFnZXRDaG9vc2VuUGxhbigpXCI+e3snRG93bmxvYWQgcGxhbicgfFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uUmVtb3ZlQ2xpY2soKVwiIG5nYkRyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWdldENob29zZW5QbGFuKCkgfHwgZ2V0Q2hvb3NlblBsYW4oKS5pc0ltcG9ydGVkTWF0dGVycG9ydFwiPnt7J0RlbGV0ZSBwbGFuJyB8XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIChjbGljayk9XCJvbkRvd25sb2FkQXNQbmcoKVwiIG5nYkRyb3Bkb3duSXRlbSBbZGlzYWJsZWRdPVwiIWdldENob29zZW5QbGFuKClcIj5cbiAgICAgICAgICAgICAgICAgICAge3snRG93bmxvYWQgcGxhbiBhcyBQTkcnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBtdC0zIG1zLTBcIj5cbiAgICAgICAgPGg0ICpuZ0lmPVwiZmlsZVRvVXBsb2FkXCI+e3snTmV3IHBsYW4nIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiaGlkZGVuXCIgdHlwZT1cImZpbGVcIiBpZD1cInVwbG9hZC1maWxlXCIgbmFtZT1cInVwbG9hZC1maWxlXCIgYWNjZXB0PVwiaW1hZ2UvcG5nLCBpbWFnZS9qcGVnLCAucGRmLCAuc3ZnXCJcbiAgICAgICAgICAgIG5nZi1tYXgtc2l6ZT1cIjZNQlwiIChjaGFuZ2UpPVwiYWRkUGxhbigkZXZlbnQudGFyZ2V0KVwiPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtdC0zXCIgKm5nSWY9XCJwbGFuRm9ybVwiPlxuICAgICAgICA8Zm9ybSAobmdTdWJtaXQpPVwib25TYXZlUGxhbigpXCIgW2Zvcm1Hcm91cF09XCJwbGFuRm9ybVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcm93XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLXNtLTNcIj57eydOYW1lJyB8IHRyYW5zbGF0ZX19IDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS05XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyByb3dcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtc20tM1wiPnt7J1pvbmUnIHwgdHJhbnNsYXRlfX0gPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInpvbmVJRFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgem9uZSBvZiB6b25lc1wiIFtuZ1ZhbHVlXT1cInpvbmUuaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB6b25lLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcm93XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLXNtLTNcIj57eydTZXQgYXMgY3VycmVudCBwbGFuIGZvciB6b25lJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwiaXNDdXJyZW50UGxhbkZvclpvbmVcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInBsYW5Gb3JtLmludmFsaWRcIiB0eXBlPSdzdWJtaXQnIGNsYXNzPVwiYnRuIGJ0bi1sYWJlbC1maWxlIHJvdW5kZWQtcGlsbFwiPnt7J1NhdmUnIHxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGFiZWwtZmlsZSByb3VuZGVkLXBpbGwgbXMtM1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DYW5jZWxVcGxvYWQoKVwiPnt7J0NhbmNlbCcgfFxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbiAgICA8dWwgY2xhc3M9XCJjb2wtbWQtNiBsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIiAqbmdJZj1cImdldENob29zZW5QbGFuKClcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCI+e3snTmFtZScgfCB0cmFuc2xhdGUgfX0gOiB7e2dldENob29zZW5QbGFuKCkubmFtZX19IDwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiPiB7eydQbGFuIGlzICcgfCB0cmFuc2xhdGUgfX0gOlxuICAgICAgICAgICAge3tnZXRDaG9vc2VuUGxhbigpLmNhbGlicmF0aW9uID8gKCdDYWxpYnJhdGVkJyB8IHRyYW5zbGF0ZSkgOiAoJ05vdCBjYWxpYnJhdGVkJyB8IHRyYW5zbGF0ZSl9fTwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiPnt7J0F0dHJpYnV0ZWQgdG8gem9uZSAnIHwgdHJhbnNsYXRlIH19IDpcbiAgICAgICAgICAgIHt7Z2V0Q2hvb3NlblBsYW4oKS56b25lID8gZ2V0Q2hvb3NlblBsYW4oKS56b25lLm5hbWUgOiAnTm9uZSd9fTwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiPnt7J0lzIGN1cnJlbnQgcGxhbiBmb3Igem9uZSAnIHwgdHJhbnNsYXRlIH19IDpcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImdldENob29zZW5QbGFuKCkuaXNDdXJyZW50Rm9yWm9uZVwiIChjaGFuZ2UpPVwib25DdXJyZW50UGxhbkNsaWNrKClcIj5cbiAgICAgICAgPC9saT5cblxuICAgIDwvdWw+XG5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG10LTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMFwiPlxuICAgICAgICAgICAgPGVtYmVkICpuZ0lmPVwiZ2V0Q2hvb3NlblBsYW4oKSAmJiBjaG9zZW5QbGFuSXNQZGZcIiBbc3JjXT1cImdldENob29zZW5QbGFuKCkuZmlsZXBhdGggfCBzYWZlVXJsXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYXBwbGljYXRpb24vcGRmXCIgZnJhbWVCb3JkZXI9XCIwXCIgc2Nyb2xsaW5nPVwiYXV0b1wiIGhlaWdodD1cIjY1MHB4O1wiIHdpZHRoPVwiMTAwJVwiIC8+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNob3NlblBsYW5Jc1BkZlwiIGNsYXNzPVwicm93XCIgc3R5bGU9XCJoZWlnaHQ6IDUwMHB4OyBvdmVyZmxvdzogaGlkZGVuO1wiIGlkPVwiY2FudmFzRGl2XCI+XG4gICAgICAgICAgICAgICAgPGNhbnZhcyBpZD1cImNhbnZhc1wiIHdpZHRoPVwiNDA5NnB4XCIgaGVpZ2h0PVwiNDA5NnB4XCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGltZyAqbmdJZj1cImNob3NlblBsYW5cIiBpZD1cInBsYW4taW1hZ2VcIiBbc3JjXT1cImNob3NlblBsYW4uZmlsZXBhdGhcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPiAtLT5cbiAgICAgICAgICAgICAgICA8L2NhbnZhcz5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -29,13 +29,13 @@ export class TabNavigationComponent {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
TabNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: TabNavigationComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
-
TabNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: TabNavigationComponent, selector: "lib-tab-navigation", inputs: { menuItems: "menuItems" }, outputs: { onGoBack: "onGoBack" }, ngImport: i0, template: "<span class=\"menu\">\
|
|
32
|
+
TabNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: TabNavigationComponent, selector: "lib-tab-navigation", inputs: { menuItems: "menuItems" }, outputs: { onGoBack: "onGoBack" }, ngImport: i0, template: "<span class=\"menu\">\n <span *ngFor=\"let item of menuItems; let index = index;\">\n <span class=\"item\" [ngClass]=\"{'current':index === menuItems.length - 1}\"\n (click)=\"onClick(item.url,item.back, index)\">{{item.label | translate}}</span> <span\n *ngIf=\"index !== menuItems.length - 1\" class=\"separator\">></span>\n </span>\n</span>\n", styles: [".item{font-size:1.35em;color:var(--smarterplan-primary);cursor:pointer}.current{color:var(--smarterplan-primary)!important;cursor:default!important;text-decoration:none!important}.separator{font-size:1.4em;margin-left:10px;margin-right:10px;color:var(--smarterplan-primary)}.item:hover{text-decoration:underline}.menu{margin-top:15px;margin-bottom:20px}\n"], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i3.TranslatePipe } });
|
|
33
33
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: TabNavigationComponent, decorators: [{
|
|
34
34
|
type: Component,
|
|
35
|
-
args: [{ selector: 'lib-tab-navigation', template: "<span class=\"menu\">\
|
|
35
|
+
args: [{ selector: 'lib-tab-navigation', template: "<span class=\"menu\">\n <span *ngFor=\"let item of menuItems; let index = index;\">\n <span class=\"item\" [ngClass]=\"{'current':index === menuItems.length - 1}\"\n (click)=\"onClick(item.url,item.back, index)\">{{item.label | translate}}</span> <span\n *ngIf=\"index !== menuItems.length - 1\" class=\"separator\">></span>\n </span>\n</span>\n", styles: [".item{font-size:1.35em;color:var(--smarterplan-primary);cursor:pointer}.current{color:var(--smarterplan-primary)!important;cursor:default!important;text-decoration:none!important}.separator{font-size:1.4em;margin-left:10px;margin-right:10px;color:var(--smarterplan-primary)}.item:hover{text-decoration:underline}.menu{margin-top:15px;margin-bottom:20px}\n"] }]
|
|
36
36
|
}], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { onGoBack: [{
|
|
37
37
|
type: Output
|
|
38
38
|
}], menuItems: [{
|
|
39
39
|
type: Input
|
|
40
40
|
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLW5hdmlnYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvdGFiLW5hdmlnYXRpb24vdGFiLW5hdmlnYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvdGFiLW5hdmlnYXRpb24vdGFiLW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTL0UsTUFBTSxPQUFPLHNCQUFzQjtJQU0vQixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUp4QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVyQyxjQUFTLEdBQWUsRUFBRSxDQUFDO0lBRUUsQ0FBQztJQUV2QyxPQUFPLENBQUMsR0FBVyxFQUFFLFNBQWMsRUFBRSxLQUFhO1FBQzlDLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLEdBQUcsRUFBRTtZQUNMLE1BQU0sTUFBTSxHQUFHLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDbEMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxNQUFNLEVBQUU7Z0JBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDbEM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDakM7U0FDSjthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDakM7SUFDTCxDQUFDOzttSEF2QlEsc0JBQXNCO3VHQUF0QixzQkFBc0IsaUlDVG5DLDhYQU9BOzJGREVhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDSSxvQkFBb0I7NkZBTXBCLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUUsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdAc21hcnRlcnBsYW4vbmd4LXNtYXJ0ZXJwbGFuLWNvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi10YWItbmF2aWdhdGlvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFiLW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFiLW5hdmlnYXRpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFiTmF2aWdhdGlvbkNvbXBvbmVudCB7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uR29CYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBJbnB1dCgpIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsgfVxyXG5cclxuICAgIG9uQ2xpY2sodXJsOiBzdHJpbmcsIHBhcmFtZXRlcjogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLm1lbnVJdGVtcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdVUkwgPSBgL2Rhc2hib2FyZCR7dXJsfWA7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlci51cmwgIT09IG5ld1VSTCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25ldyB1cmwnLCBuZXdVUkwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW25ld1VSTF0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkdvQmFjay5lbWl0KHBhcmFtZXRlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uR29CYWNrLmVtaXQocGFyYW1ldGVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxzcGFuIGNsYXNzPVwibWVudVwiPlxuICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1lbnVJdGVtczsgbGV0IGluZGV4ID0gaW5kZXg7XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbVwiIFtuZ0NsYXNzXT1cInsnY3VycmVudCc6aW5kZXggPT09IG1lbnVJdGVtcy5sZW5ndGggLSAxfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25DbGljayhpdGVtLnVybCxpdGVtLmJhY2ssIGluZGV4KVwiPnt7aXRlbS5sYWJlbCB8IHRyYW5zbGF0ZX19PC9zcGFuPiA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJpbmRleCAhPT0gbWVudUl0ZW1zLmxlbmd0aCAtIDFcIiBjbGFzcz1cInNlcGFyYXRvclwiPj48L3NwYW4+XG4gICAgPC9zcGFuPlxuPC9zcGFuPlxuIl19
|