@ieeesa-npm/events-and-meetings 0.3.7 → 0.3.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.
@@ -15,7 +15,7 @@ import { EventsAndMeetingsViewType } from './models/list-calendar-view-action.mo
15
15
  import { EventAndMeetingFunctionType } from './models/event-meeting-function-types.model';
16
16
  import { PermissionType } from './models/permission-type.model';
17
17
  import { EventAction, MeetingAction, } from './models/event-or-meeting-menu-action.model';
18
- import { EventAndMeetingStatus, } from '@ieeesa-npm/shared';
18
+ import { EventAndMeetingStatus } from '@ieeesa-npm/shared';
19
19
  import * as i0 from "@angular/core";
20
20
  import * as i1 from "@angular/material/dialog";
21
21
  import * as i2 from "@ieeesa-npm/utility";
@@ -931,4 +931,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
931
931
  }], routePaths: [{
932
932
  type: Input
933
933
  }] } });
934
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLWFuZC1tZWV0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ldmVudHMtYW5kLW1lZXRpbmdzL3NyYy9saWIvZXZlbnRzLWFuZC1tZWV0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ldmVudHMtYW5kLW1lZXRpbmdzL3NyYy9saWIvZXZlbnRzLWFuZC1NZWV0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQztBQUUzSSxPQUFPLEVBQ0wsU0FBUyxFQUdULEtBQUssRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLDBIQUEwSDtBQUMxSCxPQUFPLEtBQUssU0FBUyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFLTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFFVixxQkFBcUIsRUFDckIsU0FBUyxFQUNULDBCQUEwQixFQUMxQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLHdCQUF3QixFQUV4QixrQkFBa0IsRUFJbEIsZ0JBQWdCLEVBQ2hCLGVBQWUsR0FFaEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUNMLFNBQVMsRUFHVCxRQUFRLEVBQ1IsUUFBUSxHQUNULE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FB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UUFDZixlQUFlLDBNQUNmLGVBQWUsdVFBQ2YsUUFBUTs7NEZBTUMsMEJBQTBCO2tCQWxCdEMsU0FBUzsrQkFDRSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUNBQW1DO3dCQUNuQyxrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixRQUFRO3FCQUNULGlCQUNjLGlCQUFpQixDQUFDLElBQUk7cVNBVTVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDc0IsWUFBWTtzQkFBdkMsU0FBUzt1QkFBQyxlQUFlO2dCQTRFakIsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENyZWF0ZU1vZGlmeUV2ZW50T3JNZWV0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NyZWF0ZS1tb2RpZnktZXZlbnQtb3ItbWVldGluZy9jcmVhdGUtbW9kaWZ5LWV2ZW50LW9yLW1lZXRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ldmVudHMtYW5kLW1lZXRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4vLyBUb0RvOiBjb25zdGFudHMuanNvbiB0byBiZSBtYWludGFpbmVkIGF0IGxpYnJhcnkgc2lkZSBhcyBhIGZhbGxiYWNrIGlmIG5vdCBmb3VuZCBhcHBsaWNhdGlvbiBzcGVjaWZpYyBmcm9tIHNlcnZlciBzaWRlLlxyXG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQge1xyXG4gIFBhZ2luYXRvckNvbmZpZyxcclxuICBUYWJsZUFjdGlvbnMsXHJcbiAgVG9nZ2xlQnV0dG9uLFxyXG4gIEljb25CdXR0b24sXHJcbiAgQ2hpcHNUeXBlLFxyXG4gIFNlYXJjaENvbXBvbmVudCxcclxuICBTZWFyY2hUeXBlLFxyXG4gIE1lbnUsXHJcbiAgVG9nZ2xlQnV0dG9uQ29tcG9uZW50LFxyXG4gIEFsaWduVHlwZSxcclxuICBNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCxcclxuICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gIFRhYmxlQ29sdW1uVHlwZSxcclxuICBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24sXHJcbiAgVGFibGVDb2x1bW5TY2hlbWEsXHJcbiAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG4gIExlZ2VuZCxcclxuICBGaWx0ZXJzQW5kT3B0aW9ucyxcclxuICBDaGlwT3B0aW9uLFxyXG4gIEZpbHRlck9wdGlvblR5cGUsXHJcbiAgRmlsdGVyQ29tcG9uZW50LFxyXG4gIENoZWNrYm94T3B0aW9uLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgRXZlbnRzQW5kTWVldGluZ3MsXHJcbiAgR2V0RXZlbnRzQW5kTWVldGluZ3NQYXlsb2FkLFxyXG59IGZyb20gJy4vbW9kZWxzL2V2ZW50cy1hbmQtbWVldGluZ3MtbGlzdC5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tICcuL21vZGVscy9maWx0ZXItdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IERhdGVGb3JtYXRzIH0gZnJvbSAnLi9hc3NldHMvZGF0ZS1mb3JtYXRzJztcclxuaW1wb3J0IHtcclxuICBBbGVydFR5cGUsXHJcbiAgQWxlcnRzU2VydmljZSxcclxuICBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gIFNhZmVQaXBlLFxyXG4gIFNhZmVUeXBlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBWaWV3RWRpdEFjdGlvbiB9IGZyb20gJy4vbW9kZWxzL3ZpZXctZWRpdC1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBFdmVudHNBbmRNZWV0aW5nc1ZpZXdUeXBlIH0gZnJvbSAnLi9tb2RlbHMvbGlzdC1jYWxlbmRhci12aWV3LWFjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL2V2ZW50LW1lZXRpbmctZnVuY3Rpb24tdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91c2VyLXBlcm1pc3Npb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIE1lZXRpbmdQZXJtaXNzaW9ucyxcclxuICBVc2VyUGVybWlzc2lvbixcclxufSBmcm9tICcuL21vZGVscy9tZWV0aW5nLXBlcm1pc3Npb25zLm1vZGVsJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblR5cGUgfSBmcm9tICcuL21vZGVscy9wZXJtaXNzaW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBFdmVudHNBbmRNZWV0aW5nUm91dGVDb25maWcgfSBmcm9tICcuL21vZGVscy9yb3V0ZS1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZCxcclxuICBNZWV0aW5nLFxyXG59IGZyb20gJy4vbW9kZWxzL21lZXRpbmdzLXVuZGVyLWV2ZW50cy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgRXZlbnRBY3Rpb24sXHJcbiAgTWVldGluZ0FjdGlvbixcclxufSBmcm9tICcuL21vZGVscy9ldmVudC1vci1tZWV0aW5nLW1lbnUtYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgU29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQge1xyXG4gIEdldEdyb3VwUmVzcG9uc2UsXHJcbiAgR3JvdXBJbmZvLFxyXG4gIEV2ZW50QW5kTWVldGluZ1N0YXR1cyxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9zaGFyZWQnO1xyXG5jb25zdCBDT0xVTU5fREVGID0ge1xyXG4gIG5hbWU6ICduYW1lJyxcclxuICBzdGFydERhdGVUaW1lOiAnc3RhcnQtZGF0ZS10aW1lJyxcclxuICBlbmREYXRlVGltZTogJ2VuZC1kYXRlLXRpbWUnLFxyXG4gIHRpbWVab25lOiAndGltZS16b25lJyxcclxuICBncm91cDogJ3JlbGF0ZWQtZ3JvdXAnLFxyXG4gIGxvY2F0aW9uOiAnbG9jYXRpb24nLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIGV2ZW50IGFuZCBtZWV0aW5nIGZlYXR1cmVzXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkRlc3Ryb3l9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmcnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQ3JlYXRlTW9kaWZ5RXZlbnRPck1lZXRpbmdDb21wb25lbnQsXHJcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXHJcbiAgICBUb2dnbGVCdXR0b25Db21wb25lbnQsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgRmlsdGVyQ29tcG9uZW50LFxyXG4gICAgU2VhcmNoQ29tcG9uZW50LFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgU2FmZVBpcGUsXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ldmVudHMtYW5kLU1lZXRpbmdzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ldmVudHMtYW5kLU1lZXRpbmdzLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyVmlld0luaXRcclxue1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRpYWxvZ1JlZjogYW55O1xyXG4gIEBJbnB1dCgpIGFwaUJhc2VVUkwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlclBlcm1pc3Npb25zITogVXNlclBlcm1pc3Npb25bXTtcclxuICBAVmlld0NoaWxkKEZpbHRlckNvbXBvbmVudCkgaWVlZXNhRmlsdGVyITogRmlsdGVyQ29tcG9uZW50O1xyXG4gIHNlYXJjaFBsYWNlaG9sZGVyVGV4dCE6IHN0cmluZztcclxuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcclxuICBpc1NlYXJjaEFjdGl2ZSA9IGZhbHNlO1xyXG4gIGV2ZW50RGF0YSE6IEV2ZW50c0FuZE1lZXRpbmdzO1xyXG4gIG1lZXRpbmdEYXRhITogRXZlbnRzQW5kTWVldGluZ3M7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBzZWxlY3RlZERhdGEhOiBhbnk7XHJcbiAgbWVudURhdGEhOiBNZW51O1xyXG4gIHNlYXJjaFR5cGU6IFNlYXJjaFR5cGUgPSBTZWFyY2hUeXBlLk9OX0NMSUNLO1xyXG4gIGRlZmF1bHRTb3J0ZWRDb2x1bW4gPSAnc3RhcnREYXRlVGltZSc7XHJcbiAgbmVzdGVkVGFibGVEZWZhdWx0U29ydGVkQ29sdW1uID0gJ21lZXRpbmdTdERhdGUnO1xyXG4gIGZpbHRlcnM6IENoaXBPcHRpb25bXSA9IFtcclxuICAgIHtcclxuICAgICAgaWQ6IEZpbHRlclR5cGUuUkVMQVRFRF9HUk9VUCxcclxuICAgICAgbmFtZTogRmlsdGVyVHlwZS5SRUxBVEVEX0dST1VQLFxyXG4gICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgY2hpcFR5cGU6IENoaXBzVHlwZS5UT0dHTEUsXHJcbiAgICAgIG9wdGlvblR5cGU6IEZpbHRlck9wdGlvblR5cGUuRFJPUERPV04sXHJcbiAgICAgIGNhblNob3dTZWxlY3Rpb246IGZhbHNlLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IEZpbHRlclR5cGUuU1RBVFVTLFxyXG4gICAgICBuYW1lOiBGaWx0ZXJUeXBlLlNUQVRVUyxcclxuICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgIGNoaXBUeXBlOiBDaGlwc1R5cGUuVE9HR0xFLFxyXG4gICAgICBjYW5TaG93U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBjb25zdGFudHM7XHJcbiAgc2NyZWVuVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8udmlld0V2ZW50c0FuZE1lZXRpbmdzO1xyXG4gIHBhZ2luYXRvckNvbmZpZzogUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgcmVjb3Jkc1BlclBhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/LnBhZ2VTaXplT3B0aW9ucz8uWzFdLFxyXG4gICAgcGFnZVNpemVPcHRpb25zOiB0aGlzLnNjcmVlblRleHRzLnBhZ2VTaXplT3B0aW9ucyxcclxuICAgIHRvdGFsUmVjb3JkczogMCxcclxuICB9O1xyXG4gIG5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnOiBQYWdpbmF0b3JDb25maWcgPSB7XHJcbiAgICByZWNvcmRzUGVyUGFnZTogdGhpcy5zY3JlZW5UZXh0cz8ucGFnZVNpemVPcHRpb25zPy5bMV0sXHJcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IHRoaXMuc2NyZWVuVGV4dHMucGFnZVNpemVPcHRpb25zLFxyXG4gICAgdG90YWxSZWNvcmRzOiAwLFxyXG4gIH07XHJcbiAgZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeSA9IHRoaXMuc2NyZWVuVGV4dHM/LmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnk7XHJcbiAgY29sdW1uSGVhZGluZyA9IHRoaXMuc2NyZWVuVGV4dHM/LmNvbHVtblNjaGVtYT8uY29sdW1uSGVhZGluZztcclxuICB2aWV3QWxsTWVldGluZ3NUZXh0ID0gdGhpcy5zY3JlZW5UZXh0cz8udmlld0FsbE1lZXRpbmdzO1xyXG4gIGNvbHVtblNjaGVtYSE6IFRhYmxlQ29sdW1uU2NoZW1hW107XHJcbiAgbmVzdGVkVGFibGVDb2x1bW5TY2hlbWEhOiBUYWJsZUNvbHVtblNjaGVtYVtdO1xyXG4gIGV2ZW50c0FuZE1lZXRpbmdzQWN0aW9uczogVGFibGVBY3Rpb25zID0ge1xyXG4gICAgaXNTZWFyY2hOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNGaWx0ZXJOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNBZGROZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNEZWxldGVOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNFZGl0TmVlZGVkOiBmYWxzZSxcclxuICAgIGlzUGFnaW5hdGlvbk5lZWRlZDogdHJ1ZSxcclxuICB9O1xyXG4gIGV2ZW50QW5kTWVldGluZ0xlZ2VuZHM6IExlZ2VuZFtdID0gdGhpcy5jb25zdGFudHM/LmV2ZW50T3JNZWV0aW5nTGVnZW5kcztcclxuICBsaXN0T3JDYWxlbmRhclZpZXdzOiBUb2dnbGVCdXR0b25bXSA9IHRoaXMuc2NyZWVuVGV4dHM/LnRvZ2dsZUJ1dHRvbnM7XHJcbiAgZGVsZXRlQnV0dG9uOiBJY29uQnV0dG9uID0gdGhpcy5zY3JlZW5UZXh0cz8uYnV0dG9ucz8uWzFdO1xyXG4gIGNyZWF0ZUJ1dHRvbjogSWNvbkJ1dHRvbiA9IHRoaXMuc2NyZWVuVGV4dHM/LmJ1dHRvbnM/LlswXTtcclxuICBldmVudEFuZE1lZXRpbmdWaWV3VHlwZSA9IEV2ZW50c0FuZE1lZXRpbmdzVmlld1R5cGU7XHJcbiAgc2VsZWN0ZWRWaWV3VHlwZTogRXZlbnRzQW5kTWVldGluZ3NWaWV3VHlwZSA9XHJcbiAgICBFdmVudHNBbmRNZWV0aW5nc1ZpZXdUeXBlLkxJU1RfVklFVztcclxuICBldmVudHNBbmRNZWV0aW5nc0xpc3Q6IEV2ZW50c0FuZE1lZXRpbmdzW10gPSBbXTtcclxuICB1c2VyTWVldGluZ1Blcm1pc3Npb25zITogTWVldGluZ1Blcm1pc3Npb25zW107XHJcbiAgcGVybWlzc2lvblR5cGUgPSBQZXJtaXNzaW9uVHlwZTtcclxuICBzdXBwb3J0TWVzc2FnZSE6IHN0cmluZztcclxuICBtaW5DaGFyYWN0ZXJUb1NlYXJjaCA9IDM7XHJcbiAgdHJpbW1lZFNlYXJjaFRlcm0gPSAnJztcclxuICBzZWFyY2hSZXN1bHRNZXNzYWdlITogc3RyaW5nO1xyXG4gIGV2ZW50c09yTWVldGluZ3NJbmZvITogRXZlbnRzQW5kTWVldGluZ3NbXTtcclxuICBzZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGlzRGVsZXRlRXZlbnRBbmRNZWV0aW5nQWxsb3dlZCA9IGZhbHNlO1xyXG4gIGlzQ3JlYXRlRXZlbnRBbmRNZWV0aW5nQWxsb3dlZCA9IGZhbHNlO1xyXG4gIGRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRFdmVudE9yTWVldGluZ0lkOiBzdHJpbmdbXSA9IFtdO1xyXG4gIC8vIFRvRG8gZW1pdCB0aGUgYXNzb2NpYXRlZCBidXR0b24gZXZlbnRzIG9mIENSRUFURSwgVklFVywgRURJVCBldmVudHMgYW5kIG1lZXRpbmdzIHVzaW5nIEBPdXRwdXQgYXMgd2UgZGlzY3Vzc2VkIHRoZSBjb25zdW1lciBhcHBsaWNhdGlvbiBtYXkgbG9hZCB0aGUgbWVldGluZyBhbmQgZXZlbnRzIGNvbXBvbmVudHMgaW50byB0aGUgdGFiYmVkIHZpZXcgb3Igb3RoZXIgd2F5IGluc3RlYWQgb2Ygcm91dGluZ1xyXG4gIEBJbnB1dCgpIHJvdXRlUGF0aHMhOiBFdmVudHNBbmRNZWV0aW5nUm91dGVDb25maWc7XHJcbiAgbWVldGluZ3M6IE1lZXRpbmdbXSA9IFtdO1xyXG4gIHNhZmVUeXBlOiBTYWZlVHlwZSA9IFNhZmVUeXBlLkhUTUw7XHJcbiAgZmlsdGVyZWRPcHRpb25zITogRmlsdGVyc0FuZE9wdGlvbnNbXTtcclxuICBhcHBsaWVkRmlsdGVyT3B0aW9ucyE6IENoaXBPcHRpb25bXTtcclxuICBjbGVhckFsbCA9IHRoaXMuc2NyZWVuVGV4dHM/LmNsZWFyQWxsO1xyXG4gIHNlbGVjdGVkU3RhdHVzSWRzOiBzdHJpbmdbXSA9IFtcclxuICAgIEV2ZW50QW5kTWVldGluZ1N0YXR1cy5JTlBST0dSRVNTLFxyXG4gICAgRXZlbnRBbmRNZWV0aW5nU3RhdHVzLlVQQ09NSU5HLFxyXG4gIF07XHJcbiAgc2VsZWN0ZWRHcm91cElkczogc3RyaW5nW10gPSBbXTtcclxuICBzZWxlY3RlZEdyb3VwczogRmlsdGVyc0FuZE9wdGlvbnMgPSB7fTtcclxuICBzZWxlY3RlZFN0YXR1czogRmlsdGVyc0FuZE9wdGlvbnMgPSB7fTtcclxuICBmaWx0ZXJPcHRpb25zOiBDaGVja2JveE9wdGlvbltdID0gW107XHJcbiAgZ3JvdXBzOiBDaGVja2JveE9wdGlvbltdID0gW107XHJcbiAgc3RhdHVzT3B0aW9uczogQ2hlY2tib3hPcHRpb25bXSA9XHJcbiAgICB0aGlzLnNjcmVlblRleHRzPy5ldmVudE9yTWVldGluZ1N0YXR1c0NoZWNrYm94T3B0aW9ucztcclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlOiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyU2VydmljZTogQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSB1c2VyUGVybWlzc2lvblNlcnZpY2U6IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2VcclxuICAgICAgLmdldEJyZWFrcG9pbnQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogeyBtYXRjaGVzOiBib29sZWFuIH0pID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdC5tYXRjaGVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRlbGV0ZUJ1dHRvbikgdGhpcy5kZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zdXBwb3J0TWVzc2FnZSA9XHJcbiAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1pbkNoYXJSZXF1aXJlZFRvU2VhcmNoMSArXHJcbiAgICAgICcgJyArXHJcbiAgICAgIHRoaXMubWluQ2hhcmFjdGVyVG9TZWFyY2ggK1xyXG4gICAgICAnICcgK1xyXG4gICAgICB0aGlzLnNjcmVlblRleHRzPy5taW5DaGFyUmVxdWlyZWRUb1NlYXJjaDI7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uc2V0U2VsZWN0ZWRFdmVudERhdGEobnVsbCk7XHJcbiAgICB0aGlzLnJvdXRlUGF0aHMgPSB0aGlzLnJvdXRlUGF0aHMgPz8gdGhpcy5jb25zdGFudHM/LnJvdXRlQ29uZmlnUGF0aDtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZXRSb3V0ZVBhdGhzKHRoaXMucm91dGVQYXRocyk7XHJcbiAgICB0aGlzLnVzZXJNZWV0aW5nUGVybWlzc2lvbnMgPVxyXG4gICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2VydmljZS5maWx0ZXJVc2VyTWVldGluZ1Blcm1pc3Npb25zKFxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25zXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uc2V0QXBwQ29uZmlnKFxyXG4gICAgICB0aGlzLmFwaUJhc2VVUkwsXHJcbiAgICAgIHRoaXMudXNlclBlcm1pc3Npb25zXHJcbiAgICApO1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2V0VXNlck1lZXRpbmdQZXJtaXNzaW9ucyhcclxuICAgICAgdGhpcy51c2VyTWVldGluZ1Blcm1pc3Npb25zXHJcbiAgICApO1xyXG4gICAgdGhpcy5nZXRHcm91cE9wdGlvbnMoKTtcclxuICAgIHRoaXMuaXNDcmVhdGVFdmVudEFuZE1lZXRpbmdBbGxvd2VkID1cclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudmFsaWRhdGVBY2Nlc3MoUGVybWlzc2lvblR5cGUuQ1JFQVRFX0VWRU5UKTtcclxuICAgIHRoaXMuZmlsdGVyRXZlbnRBbmRNZWV0aW5nQWN0aW9ucygpO1xyXG4gICAgdGhpcy5pc0RlbGV0ZUV2ZW50QW5kTWVldGluZ0FsbG93ZWQgPVxyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS52YWxpZGF0ZUFjY2VzcyhcclxuICAgICAgICBQZXJtaXNzaW9uVHlwZS5ERUxFVEVfRVZFTlRcclxuICAgICAgKSAmJlxyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS52YWxpZGF0ZUFjY2VzcyhcclxuICAgICAgICBQZXJtaXNzaW9uVHlwZS5ERUxFVEVfTUVFVElOR1xyXG4gICAgICApO1xyXG4gICAgdGhpcy5pbml0aWFsaXplQ29sdW1uU2NoZW1hKCk7XHJcbiAgICB0aGlzLmdldEV2ZW50c0FuZE1lZXRpbmdzKHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50SWQ6IG51bGwsXHJcbiAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgIGFzY2VuZGluZ09yZGVyOiB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICAgIGZpbHRlcjoge1xyXG4gICAgICAgICAgc3RhdHVzOiB0aGlzLnNlbGVjdGVkU3RhdHVzSWRzLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGZpbHRlciB3aXRoIGRlZmF1bHQgU3RhdHVzLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaWVlZXNhRmlsdGVyLm9uRmlsdGVyU2VsZWN0ZWQodGhpcy5maWx0ZXJzWzFdKTtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRGaWx0ZXJPcHRpb25zKHRoaXMuZmlsdGVyc1sxXSk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmlsdGVyIHRoZSBldmVudCBhbmQgbWVldGluZyBhY3Rpb25zIGJhc2VkIG9uIGV2ZW50IGFuZCBtZWV0aW5nIHBlcm1pc3Npb25zLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGZpbHRlckV2ZW50QW5kTWVldGluZ0FjdGlvbnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zY3JlZW5UZXh0cz8uZXZlbnRBY3Rpb25zKVxyXG4gICAgICB0aGlzLnNjcmVlblRleHRzLmV2ZW50QWN0aW9ucyA9XHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZ2V0RmlsdGVyZWRFdmVudEFjdGlvbnMoXHJcbiAgICAgICAgICB0aGlzLnNjcmVlblRleHRzLmV2ZW50QWN0aW9uc1xyXG4gICAgICAgICk7XHJcbiAgICBpZiAodGhpcy5zY3JlZW5UZXh0cz8ubWVldGluZ0FjdGlvbnMpXHJcbiAgICAgIHRoaXMuc2NyZWVuVGV4dHMubWVldGluZ0FjdGlvbnMgPVxyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldEZpbHRlcmVkTWVldGluZ0FjdGlvbnMoXHJcbiAgICAgICAgICB0aGlzLnNjcmVlblRleHRzLm1lZXRpbmdBY3Rpb25zXHJcbiAgICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGFibGUgY29sdW1uIHNjaGVtYSB0byBkaXNwbGF5IHRoZSBtZWV0aW5nIGFuZCBldmVudCBkZXRhaWxzIGluIHRhYnVsYXIgdmlldy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBpbml0aWFsaXplQ29sdW1uU2NoZW1hKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5TY2hlbWEgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogMSxcclxuICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgaGVhZGluZzogJycsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlNFTEVDVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50LnNlbGVjdH1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuTkVTVEVEX1RBQkxFLFxyXG4gICAgICAgIGhlYWRpbmc6ICcnLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5ORVNURURfVEFCTEUsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5oYXNDaGlsZHJlbixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAzLFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8ubmFtZSxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/Lm5hbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkxJTkssXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5uYW1lfWAsXHJcbiAgICAgICAgaXNDb250ZW50VW5kZXJMaW5rOiB0cnVlLFxyXG4gICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNCxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LnN0YXJ0RGF0ZVRpbWUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5zdGFydERhdGVUaW1lLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAhZWxlbWVudC5pc01lZXRpbmdFdmVudFxyXG4gICAgICAgICAgICA/IGAke21vbWVudChlbGVtZW50LnN0YXJ0RGF0ZVRpbWUpLmZvcm1hdChcclxuICAgICAgICAgICAgICAgIERhdGVGb3JtYXRzLmRpc3BsYXlGb3JtYXRcclxuICAgICAgICAgICAgICApfTxicj4ke21vbWVudChlbGVtZW50LnN0YXJ0RGF0ZVRpbWUpLmZvcm1hdChcclxuICAgICAgICAgICAgICAgIERhdGVGb3JtYXRzLnRpbWVGb3JtYXRcclxuICAgICAgICAgICAgICApfWBcclxuICAgICAgICAgICAgOiBgJHttb21lbnQoZWxlbWVudC5zdGFydERhdGVUaW1lKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICBEYXRlRm9ybWF0cy5kaXNwbGF5Rm9ybWF0XHJcbiAgICAgICAgICAgICAgKX1gLFxyXG4gICAgICAgIGlzSFRNTENlbGxEYXRhOiB0cnVlLFxyXG4gICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNSxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LmVuZERhdGVUaW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uZW5kRGF0ZVRpbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICFlbGVtZW50LmlzTWVldGluZ0V2ZW50XHJcbiAgICAgICAgICAgID8gYCR7bW9tZW50KGVsZW1lbnQuZW5kRGF0ZVRpbWUpLmZvcm1hdChcclxuICAgICAgICAgICAgICAgIERhdGVGb3JtYXRzLmRpc3BsYXlGb3JtYXRcclxuICAgICAgICAgICAgICApfTxicj4ke21vbWVudChlbGVtZW50LmVuZERhdGVUaW1lKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICBEYXRlRm9ybWF0cy50aW1lRm9ybWF0XHJcbiAgICAgICAgICAgICAgKX1gXHJcbiAgICAgICAgICAgIDogYCR7bW9tZW50KGVsZW1lbnQuZW5kRGF0ZVRpbWUpLmZvcm1hdChcclxuICAgICAgICAgICAgICAgIERhdGVGb3JtYXRzLmRpc3BsYXlGb3JtYXRcclxuICAgICAgICAgICAgICApfWAsXHJcbiAgICAgICAgaXNIVE1MQ2VsbERhdGE6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNixcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LnRpbWVab25lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8udGltZVpvbmUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke2VsZW1lbnQudGltZVpvbmUgPz8gdGhpcy5lbXB0eUZpZWxkVmFsdWVSZXBsYWNlZEJ5fWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNyxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/Lmdyb3VwLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uZ3JvdXAsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke2VsZW1lbnQuZ3JvdXBOYW1lID8/IHRoaXMuZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeX1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDgsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5sb2NhdGlvbixcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LmxvY2F0aW9uLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICBgJHtlbGVtZW50Lm1lZXRpbmdMb2NhdGlvbiA/PyB0aGlzLmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnl9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA5LFxyXG4gICAgICAgIGNvbHVtbkRlZjogVGFibGVDb2x1bW5UeXBlLkFDVElPTlMsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5hY3Rpb25zLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5BQ1RJT05TLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQubWVudUFjdGlvbn1gLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZXZlbnRzIGFuZCBtZWV0aW5ncyBsaXN0IGZyb20gdGhlIHNlcnZlci5cclxuICAgKiBAcGFyYW0ge0dldEV2ZW50c0FuZE1lZXRpbmdzUGF5bG9hZH0gcGF5bG9hZFxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEV2ZW50c0FuZE1lZXRpbmdzKHBheWxvYWQ6IEdldEV2ZW50c0FuZE1lZXRpbmdzUGF5bG9hZCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmdldEV2ZW50c0FuZE1lZXRpbmdzKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzTGlzdCA9IFtdO1xyXG4gICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LmV2ZW50TWVldGluZ0xpc3Q/LmZvckVhY2goKGV2ZW50TWVldGluZykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0aXRsZSA9IGV2ZW50TWVldGluZy5pc01lZXRpbmdFdmVudFxyXG4gICAgICAgICAgICAgID8gdGhpcy5zY3JlZW5UZXh0cz8uZXZlbnRcclxuICAgICAgICAgICAgICA6IHRoaXMuc2NyZWVuVGV4dHM/Lm1lZXRpbmc7XHJcbiAgICAgICAgICAgIGV2ZW50TWVldGluZy50b29sVGlwVGV4dCA9IGV2ZW50TWVldGluZy5uYW1lICsgJyAnICsgdGl0bGU7XHJcbiAgICAgICAgICAgIGV2ZW50TWVldGluZy5jb250ZW50VW5kZXJMaW5rID0gZXZlbnRNZWV0aW5nLnN0YXR1cztcclxuICAgICAgICAgICAgZXZlbnRNZWV0aW5nLmxlZ2VuZENvbG9yID1cclxuICAgICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5nZXRFdmVudE9yTWVldGluZ0xlZ2VuZENvbG9yKFxyXG4gICAgICAgICAgICAgICAgZXZlbnRNZWV0aW5nPy5zdGF0dXNcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzTGlzdC5wdXNoKGV2ZW50TWVldGluZyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMucGFnaW5hdG9yQ29uZmlnLnRvdGFsUmVjb3JkcyA9XHJcbiAgICAgICAgICAgIHJlc3BvbnNlPy5ib2R5Py50b3RhbFJlY29yZHMgPz8gdGhpcy5ldmVudHNBbmRNZWV0aW5nc0xpc3QubGVuZ3RoO1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc0xpc3QgPSB0aGlzLm1hcE1lbnVBY3Rpb25Ub0xpc3QoXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NMaXN0XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc0xpc3QgPSBbLi4udGhpcy5ldmVudHNBbmRNZWV0aW5nc0xpc3RdO1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcgPSB7IC4uLnRoaXMucGFnaW5hdG9yQ29uZmlnIH07XHJcbiAgICAgICAgICBpZiAodGhpcy5pc1NlYXJjaEFjdGl2ZSlcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHRNZXNzYWdlID0gYDxkaXY+JHt0aGlzLnNjcmVlblRleHRzPy5zZWFyY2hSZXN1bHRNc2dQYXJ0MX0gJHt0aGlzLnBhZ2luYXRvckNvbmZpZz8udG90YWxSZWNvcmRzfVxyXG4gICAgICAgICR7dGhpcy5zY3JlZW5UZXh0cz8uc2VhcmNoUmVzdWx0TXNnUGFydDJ9IFwiPHN0cm9uZz4ke3RoaXMudHJpbW1lZFNlYXJjaFRlcm19PC9zdHJvbmc+XCI8L2Rpdj5gO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHRhYmxlIHJvdyBhY3Rpb25zIGZvciBlYWNoIHJvdyBvZiBldmVudHMgYW5kIG1lZXRpbmdzIHRhYmxlIHRoZW4gcmV0dXJucyBFdmVuc0FuZE1lZXRpbmdzLlxyXG4gICAqIEBwYXJhbSB7RXZlbnRzQW5kTWVldGluZ3NbXX1cclxuICAgKiAqIEByZXR1cm4ge0V2ZW50c0FuZE1lZXRpbmdzW119IC1JdCByZXR1cm5zIGV2ZW50c0FuZE1lZXRpbmdzTGlzdCB3aXRoIG1lbnUgYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHJvdy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBtYXBNZW51QWN0aW9uVG9MaXN0KFxyXG4gICAgZXZlbnRzQW5kTWVldGluZ3NMaXN0OiBFdmVudHNBbmRNZWV0aW5nc1tdXHJcbiAgKTogRXZlbnRzQW5kTWVldGluZ3NbXSB7XHJcbiAgICBldmVudHNBbmRNZWV0aW5nc0xpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLm1lbnVBY3Rpb24gPSBpdGVtLmlzTWVldGluZ0V2ZW50XHJcbiAgICAgICAgPyB0aGlzLnNjcmVlblRleHRzPy5ldmVudEFjdGlvbnNcclxuICAgICAgICA6IHRoaXMuc2NyZWVuVGV4dHM/Lm1lZXRpbmdBY3Rpb25zO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZXZlbnRzQW5kTWVldGluZ3NMaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgbWVldGluZ3MgYW5kIGV2ZW50cyBsaXN0IGRldGFpbHMgb24gY2hhbmdlIG9mIHRhYmxlIHBhZ2luYXRpb24uXHJcbiAgICogQHBhcmFtIHt7UGFnZUV2ZW50fX0gcGFnZUV2ZW50XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25FdmVudHNBbmRNZWV0aW5nc1RhYmxlUGFnZUNoYW5nZShwYWdlRXZlbnQ6IFBhZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRFdmVudHNBbmRNZWV0aW5ncyh7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBldmVudElkOiAnJyxcclxuICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4sXHJcbiAgICAgICAgYXNjZW5kaW5nT3JkZXI6IHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb24sXHJcbiAgICAgICAgcGFnZTogcGFnZUV2ZW50LnBhZ2VJbmRleCArIDEsXHJcbiAgICAgICAgc2l6ZTogcGFnZUV2ZW50LnBhZ2VTaXplLFxyXG4gICAgICAgIHNlYXJjaFRlcm06IHRoaXMudHJpbW1lZFNlYXJjaFRlcm0gPz8gbnVsbCxcclxuICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgIGdyb3VwSWRzOiBbLi4udGhpcy5zZWxlY3RlZEdyb3VwSWRzXSxcclxuICAgICAgICAgIHN0YXR1czogWy4uLnRoaXMuc2VsZWN0ZWRTdGF0dXNJZHNdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJhc2VkIG9uIGNsaWNrIGV2ZW50IG5hdmlnYXRlIHRvIHZpZXcgbWVldGluZyBvciBldmVudCBwYWdlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgbmF2aWdhdGVUb1ZpZXdEZXRhaWxzUGFnZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZXRTdGFuZGFsb25lTWVldGluZ1N0YXR1cyh0cnVlKTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmFjdGlvblR5cGUgPSBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVDtcclxuICAgIGlmIChldmVudD8ucm93Py5pc01lZXRpbmdFdmVudCkge1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZWxlY3RlZEV2ZW50SWQgPSBldmVudD8ucm93Py5pZDtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJvdXRlUGF0aHMuZWRpdEV2ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkTWVldGluZ0lkID0gZXZlbnQ/LnJvdz8uaWQ7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yb3V0ZVBhdGhzLmVkaXRNZWV0aW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlcyB0byBjcmVhdGUgbWVldGluZyBvciBldmVudCBwYWdlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5hdmlnYXRlVG9DcmVhdGVFdmVudE1lZXRpbmdGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9XHJcbiAgICAgIEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZS5DUkVBVEU7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZWxlY3RlZEV2ZW50SWQgPSAnJztcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkTWVldGluZ0lkID0gJyc7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVQYXRocy5jcmVhdGVFdmVudE1lZXRpbmcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyBiZXR3ZWVuIHRoZSBMaXN0IHZpZXcgb3IgQ2FsZW5kYXIgdmlldy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBvblRvZ2dsZUJ1dHRvbkNoYW5nZSh0b2dnbGVCdXR0b246IFRvZ2dsZUJ1dHRvbikge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZpZXdUeXBlID1cclxuICAgICAgdG9nZ2xlQnV0dG9uPy5pZCA9PT0gRXZlbnRzQW5kTWVldGluZ3NWaWV3VHlwZS5MSVNUX1ZJRVdcclxuICAgICAgICA/IEV2ZW50c0FuZE1lZXRpbmdzVmlld1R5cGUuTElTVF9WSUVXXHJcbiAgICAgICAgOiBFdmVudHNBbmRNZWV0aW5nc1ZpZXdUeXBlLkNBTEVOREFSX1ZJRVc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93cyB0aGUgc2VhcmNoIGZpZWxkIG9uIGNsaWNrIG9mIHNlYXJjaCBpY29uIGluIGNhc2Ugb2YgbW9iaWxlIHZpZXcuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25FdmVudE1lZXRpbmdTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2VhcmNoQWN0aXZlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJhc2VkIG9uIGNsaWNrIG1lbnUgaXRlbXMgbmF2aWdhdGUgdG8gZWRpdCBtZWV0aW5nIG9yIGV2ZW50IHBhZ2UuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBoYW5kbGVFZGl0QWN0aW9ucyhyb3c6IGFueSkge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2V0U3RhbmRhbG9uZU1lZXRpbmdTdGF0dXModHJ1ZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IHJvdztcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0YT8ubGFiZWwgPT09IFZpZXdFZGl0QWN0aW9uLlZJRVdfRURJVF9FVkVOVF9ERVRBSUxTKSB7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmFjdGlvblR5cGUgPVxyXG4gICAgICAgIEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZS5FRElUO1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZWxlY3RlZEV2ZW50SWQgPSB0aGlzLmV2ZW50RGF0YT8uaWQ7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yb3V0ZVBhdGhzLmVkaXRFdmVudCk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YT8ubGFiZWwgPT09IFZpZXdFZGl0QWN0aW9uLlZJRVdfRURJVF9NRUVUSU5HX0RFVEFJTFNcclxuICAgICkge1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5hY3Rpb25UeXBlID1cclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVDtcclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2VsZWN0ZWRNZWV0aW5nSWQgPSB0aGlzLmV2ZW50RGF0YT8uaWQ7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yb3V0ZVBhdGhzLmVkaXRNZWV0aW5nKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhPy5pZCA9PT0gRXZlbnRBY3Rpb24uREVMRVRFX0VWRU5UIHx8XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhPy5pZCA9PT0gTWVldGluZ0FjdGlvbi5ERUxFVEVfTUVFVElOR1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMub3BlbkRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsKHRydWUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRGF0YT8uaWQgPT09IEV2ZW50QWN0aW9uLkNSRUFURV9NRUVUSU5HKSB7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmFjdGlvblR5cGUgPVxyXG4gICAgICAgIEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZS5DUkVBVEU7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldFN0YW5kYWxvbmVNZWV0aW5nU3RhdHVzKGZhbHNlKTtcclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2VsZWN0ZWRFdmVudElkID0gdGhpcy5ldmVudERhdGE/LmlkO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVQYXRocy5lZGl0RXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBCYXNlZCBvbiBjbGljayBldmVudCBuYXZpZ2F0ZSB0byBlZGl0IG1lZXRpbmcgb3IgZXZlbnQgcGFnZS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKiBAcGFyYW0geyp9IGV2ZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBlZGl0RXZlbnRNZWV0aW5nKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZXZlbnREYXRhID0gZXZlbnQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXZlbnRPck1lZXRpbmdJZCA9IFtdO1xyXG4gICAgaWYgKGV2ZW50Py5pZCkgdGhpcy5zZWxlY3RlZEV2ZW50T3JNZWV0aW5nSWQucHVzaChldmVudD8uaWQpO1xyXG4gICAgZWxzZSBpZiAoZXZlbnQ/Lm1lZXRpbmdJZClcclxuICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50T3JNZWV0aW5nSWQucHVzaChldmVudD8ubWVldGluZ0lkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyBpZHMgb2YgYWxsIHRoZSBzZWxlY3RlZCBldmVudHMgYW5kIG1lZXRpbmdzIHRvIGJlIGRlbGV0ZWQuXHJcbiAgICogQHBhcmFtIHsqfSBzZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0U2VsZWN0ZWRNZWV0aW5nc0FuZEV2ZW50c1RvRGVsZXRlKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgIHNlbGVjdGVkRXZlbnRzQW5kTWVldGluZ3M6IGFueVxyXG4gICkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzSWRzID0gW107XHJcbiAgICBzZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzPy5mb3JFYWNoKChldmVudE9yTWVldGluZzogRXZlbnRzQW5kTWVldGluZ3MpID0+IHtcclxuICAgICAgaWYgKGV2ZW50T3JNZWV0aW5nPy5pZClcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRXZlbnRzQW5kTWVldGluZ3NJZHMucHVzaChldmVudE9yTWVldGluZy5pZCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGVsZXRlQnV0dG9uLmRpc2FibGVkID0gdGhpcy5zZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzSWRzLmxlbmd0aCA9PT0gMDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT3BlbnMgZXZlbnRzIGFuZCBtZWV0aW5ncyBkZWxldGUgY29uZmlybWF0aW9uIG1vZGFsIGFuZCBjYWxscyBkZWxldGVFdmVudHNPck1lZXRpbmdzIG1ldGhvZCBvbiBjb25maXJtYXRpb24uXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb3BlbkRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsKGlzU2luZ2xlRGVsZXRlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgY29uZmlybWF0aW9uSW5mbyA9XHJcbiAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmRlbGV0ZUV2ZW50c09yTWVldGluZ3M/LmNvbmZpcm1hdGlvbkluZm87XHJcbiAgICBjb25zdCBkZWxldGVNb2RhbE9wdGlvbnMgPSB7XHJcbiAgICAgIGxlZnRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ubGVmdEJ1dHRvbkxhYmVsLFxyXG4gICAgICByaWdodEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5yaWdodEJ1dHRvbkxhYmVsLFxyXG4gICAgICBwcm9tcHRNZXNzYWdlOiBjb25maXJtYXRpb25JbmZvPy5wcm9tcHRNZXNzYWdlLFxyXG4gICAgICBhY3Rpb25CdXR0b25BbGlnbjogQWxpZ25UeXBlPy5NSURETEUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZz8ub3BlbihNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiBkZWxldGVNb2RhbE9wdGlvbnMsXHJcbiAgICAgIGF1dG9Gb2N1czogJ2RpYWxvZycsXHJcbiAgICAgIGFyaWFMYWJlbDogdGhpcy5jb25zdGFudHM/LmFyaWFMYWJlbD8uYWxlcnQsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnaWVlZXNhLWRlbGV0ZS1ldmVudHMtbWVldGluZ3MtbW9kYWwnXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmRlbGV0ZUV2ZW50c09yTWVldGluZ3MoaXNTaW5nbGVEZWxldGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIEFQSSBSZXF1ZXN0IHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgZXZlbnRzIGFuZCBtZWV0aW5ncyBhbmQgaGFuZGxlcyB0aGUgc3VjY2VzcyBhbmQgZXJyb3IgcmVzcG9uc2Ugb2YgdGhlIGh0dHAgcmVxdWVzdC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBkZWxldGVFdmVudHNPck1lZXRpbmdzKGlzU2luZ2xlRGVsZXRlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgY291bnQgPSBpc1NpbmdsZURlbGV0ZVxyXG4gICAgICA/IHRoaXMuc2VsZWN0ZWRFdmVudE9yTWVldGluZ0lkPy5sZW5ndGhcclxuICAgICAgOiB0aGlzLnNlbGVjdGVkRXZlbnRzQW5kTWVldGluZ3NJZHMubGVuZ3RoO1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmRlbGV0ZUV2ZW50c09yTWVldGluZ3Moe1xyXG4gICAgICAgIHBheWxvYWQ6IGlzU2luZ2xlRGVsZXRlXHJcbiAgICAgICAgICA/IHRoaXMuc2VsZWN0ZWRFdmVudE9yTWVldGluZ0lkXHJcbiAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRFdmVudHNBbmRNZWV0aW5nc0lkcyxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdldEV2ZW50c0FuZE1lZXRpbmdzKHtcclxuICAgICAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgICAgIGV2ZW50SWQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgICAgICAgIGFzY2VuZGluZ09yZGVyOiB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gICAgICAgICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICAgICAgICAgIHNlYXJjaFRlcm06IHRoaXMudHJpbW1lZFNlYXJjaFRlcm0gPz8gbnVsbCxcclxuICAgICAgICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgICAgICAgIGdyb3VwSWRzOiBbLi4udGhpcy5zZWxlY3RlZEdyb3VwSWRzXSxcclxuICAgICAgICAgICAgICAgIHN0YXR1czogWy4uLnRoaXMuc2VsZWN0ZWRTdGF0dXNJZHNdLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlPy5zaG93TWVzc2FnZSh7XHJcbiAgICAgICAgICAgIHN0YXR1czogJ2N1c3RvbScsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgY291bnQgK1xyXG4gICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmRlbGV0ZUV2ZW50c09yTWVldGluZ3M/Lm1lc3NhZ2U/LnN1Y2Nlc3NcclxuICAgICAgICAgICAgICAgID8uZGVsZXRpb24sXHJcbiAgICAgICAgICAgIGFsZXJ0VHlwZTogQWxlcnRUeXBlLlNVQ0NFU1MsXHJcbiAgICAgICAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBtZWV0aW5ncyBjcmVhdGVkIGZvciB0aGUgc2VsZWN0ZWQgZXZlbnQgZnJvbSBzZXJ2ZXIuXHJcbiAgICogQHBhcmFtIHtHZXRNZWV0aW5nc0J5RXZlbnRJZFBheWxvYWR9IHBheWxvYWRcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldE1lZXRpbmdzQnlFdmVudElkKHBheWxvYWQ6IEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmdldE1lZXRpbmdzQnlFdmVudElkKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lZXRpbmdzID0gW107XHJcbiAgICAgICAgICB0aGlzLm5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLm5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMubWVldGluZ3MgPVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5tYXBNZWV0aW5nc0luZm9Ub0RhdGFUYWJsZShcclxuICAgICAgICAgICAgICByZXNwb25zZT8uYm9keT8ubWVldGluZ3NcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMubmVzdGVkVGFibGVQYWdpbmF0b3JDb25maWcudG90YWxSZWNvcmRzID1cclxuICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LnRvdGFsUmVjb3JkcyA/PyB0aGlzLm1lZXRpbmdzPy5sZW5ndGg7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgdGFibGUgY29sdW1uIHNjaGVtYSBhbmQgZ2V0cyBtZWV0aW5ncyBvZiB0aGUgc2VsZWN0ZWQgZXZlbnQgdXNpbmcgZXZlbnQgaWQgZnJvbSBzZXJ2ZXIgdG8gZGlzcGxheSB0aGUgbWVldGluZ3MgaW4gdGhlIG5lc3RlZCB0YWJ1bGFyIHZpZXcuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKiBAcGFyYW0ge0V2ZW50c0FuZE1lZXRpbmdzfSBldmVudERldGFpbFxyXG4gICAqL1xyXG4gIGdldEV2ZW50TWVldGluZ3NPblJvd0V4cGFuZChldmVudERldGFpbDogRXZlbnRzQW5kTWVldGluZ3MpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZU5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hKCk7XHJcbiAgICB0aGlzLmdldE1lZXRpbmdzQnlFdmVudElkKHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50SWQ6IGV2ZW50RGV0YWlsPy5pZCxcclxuICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLm5lc3RlZFRhYmxlRGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICBhc2NlbmRpbmdPcmRlcjogdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbixcclxuICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgIHNpemU6IHRoaXMubmVzdGVkVGFibGVQYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0YWJsZSBjb2x1bW4gc2NoZW1hIHRvIGRpc3BsYXkgdGhlIG1lZXRpbmdzIHVuZGVyIGFuIGV2ZW50IGluIHRhYnVsYXIgdmlldy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBpbml0aWFsaXplTmVzdGVkVGFibGVDb2x1bW5TY2hlbWEoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDEsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5uYW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8ubmFtZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuTElOSyxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50Lm1lZXRpbmdUaXRsZX1gLFxyXG4gICAgICAgIGlzQ29udGVudFVuZGVyTGluazogdHJ1ZSxcclxuICAgICAgICBpc1NvcnRhYmxlQ29sdW1uOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5zdGFydERhdGVUaW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uc3RhcnREYXRlVGltZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7bW9tZW50KGVsZW1lbnQubWVldGluZ1N0RGF0ZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICBEYXRlRm9ybWF0cy5kaXNwbGF5Rm9ybWF0XHJcbiAgICAgICAgICApfTxicj4ke21vbWVudChlbGVtZW50Lm1lZXRpbmdTdERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMudGltZUZvcm1hdFxyXG4gICAgICAgICAgKX1gLFxyXG4gICAgICAgIGlzSFRNTENlbGxEYXRhOiB0cnVlLFxyXG4gICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogMyxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LmVuZERhdGVUaW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uZW5kRGF0ZVRpbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke21vbWVudChlbGVtZW50Lm1lZXRpbmdFZERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdFxyXG4gICAgICAgICAgKX08YnI+JHttb21lbnQoZWxlbWVudC5tZWV0aW5nRWREYXRlKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIERhdGVGb3JtYXRzLnRpbWVGb3JtYXRcclxuICAgICAgICAgICl9YCxcclxuICAgICAgICBpc0hUTUxDZWxsRGF0YTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA0LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8udGltZVpvbmUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy50aW1lWm9uZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7ZWxlbWVudC50aW1lWm9uZSA/PyB0aGlzLmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnl9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA1LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uZ3JvdXAsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5ncm91cCxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7ZWxlbWVudC5ncm91cE5hbWUgPz8gdGhpcy5lbXB0eUZpZWxkVmFsdWVSZXBsYWNlZEJ5fWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNixcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LmxvY2F0aW9uLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8ubG9jYXRpb24sXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke2VsZW1lbnQubWVldGluZ0xvY2F0aW9uID8/IHRoaXMuZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeX1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDcsXHJcbiAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuQUNUSU9OUyxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LmFjdGlvbnMsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkFDVElPTlMsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5hY3Rpb259YCxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBldmVudHMgb3IgbWVldGluZ3MgYmFzZWQgb24gdGhlIGNvbHVtbiBuYW1lIGFuZCBzb3J0IGRpcmVjdGlvbi5cclxuICAgKiBAcGFyYW0ge1NvcnR9IHNvcnRcclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBvblNvcnRNZWV0aW5nT3JFdmVudChzb3J0OiBTb3J0KTogdm9pZCB7XHJcbiAgICB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4gPVxyXG4gICAgICBzb3J0LmFjdGl2ZSA9PT0gJ3N0YXJ0LWRhdGUtdGltZScgPyAnc3RhcnREYXRlVGltZScgOiBzb3J0LmFjdGl2ZTtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEZWZhdWx0U29ydGVkQ29sdW1uID0gc29ydC5hY3RpdmU7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlRGVmYXVsdFNvcnRlZENvbHVtbiA9XHJcbiAgICAgIHNvcnQuYWN0aXZlID09PSBDT0xVTU5fREVGLm5hbWUgPyAnbWVldGluZ1RpdGxlJyA6ICdtZWV0aW5nU3REYXRlJztcclxuICAgIHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb24gPVxyXG4gICAgICBzb3J0LmRpcmVjdGlvbiA9PT0gVGFibGVDb2x1bW5Tb3J0RGlyZWN0aW9uLkFTQ0VORElORztcclxuICAgIHRoaXMuZ2V0RXZlbnRzQW5kTWVldGluZ3Moe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnRJZDogbnVsbCxcclxuICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4sXHJcbiAgICAgICAgYXNjZW5kaW5nT3JkZXI6IHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb24sXHJcbiAgICAgICAgcGFnZTogMSxcclxuICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgICAgc2VhcmNoVGVybTogdGhpcy50cmltbWVkU2VhcmNoVGVybSA/PyBudWxsLFxyXG4gICAgICAgIGZpbHRlcjoge1xyXG4gICAgICAgICAgZ3JvdXBJZHM6IFsuLi50aGlzLnNlbGVjdGVkR3JvdXBJZHNdLFxyXG4gICAgICAgICAgc3RhdHVzOiBbLi4udGhpcy5zZWxlY3RlZFN0YXR1c0lkc10sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBpc1NlYXJjaEFjdGl2ZSB0byB0cnVlIGFuZCBsb2FkcyB0aGUgZXZlbnRzIG9yIG1lZXRpbmdzLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hUZXJtXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25FdmVudHNPck1lZXRpbmdzU2VhcmNoQ2xpY2soc2VhcmNoVGVybTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoc2VhcmNoVGVybSkge1xyXG4gICAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID0gc2VhcmNoVGVybS50cmltKCk7XHJcbiAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSB0cnVlO1xyXG4gICAgICBpZiAoIXRoaXMudHJpbW1lZFNlYXJjaFRlcm0pIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0TWVzc2FnZSA9ICcnO1xyXG4gICAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID0gJyc7XHJcbiAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzPy5sZW5ndGggPT09IDAgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZFN0YXR1c0lkcz8ubGVuZ3RoID09PSAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFN0YXR1c0lkcyA9IFtcclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdTdGF0dXMuSU5QUk9HUkVTUyxcclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdTdGF0dXMuVVBDT01JTkcsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEV2ZW50c0FuZE1lZXRpbmdzKHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50SWQ6IG51bGwsXHJcbiAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgIGFzY2VuZGluZ09yZGVyOiB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICAgIHNlYXJjaFRlcm06IHNlYXJjaFRlcm0gPyB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtIDogbnVsbCxcclxuICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgIGdyb3VwSWRzOiBbLi4udGhpcy5zZWxlY3RlZEdyb3VwSWRzXSxcclxuICAgICAgICAgIHN0YXR1czogWy4uLnRoaXMuc2VsZWN0ZWRTdGF0dXNJZHNdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uU2VsZWN0ZWRGaWx0ZXJPcHRpb25zIG1ldGhvZCB3aWxsIHNldCB0aGUgc2VsZWN0ZWQgb3B0aW9uIGNoaXBzIGFuZCBhZGRzIFwiQ2xlYXIgYWxsXCIgb3B0aW9uIHRvIGNsZWFyIHRoZSBhbGwgc2VsZWN0aW9ucy5cclxuICAgKiBAcGFyYW0ge0ZpbHRlcnNBbmRPcHRpb25zW119IHNlbGVjdGVkT3B0aW9uc1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uU2VsZWN0ZWRGaWx0ZXJPcHRpb25zKHNlbGVjdGVkT3B0aW9uczogRmlsdGVyc0FuZE9wdGlvbnNbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkZpbHRlckV2ZW50c0FuZE1lZXRpbmdMaXN0KHNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJPcHRpb25zID0gW107XHJcbiAgICBzZWxlY3RlZE9wdGlvbnM/LmZvckVhY2goKG9wdGlvbnMpID0+IHtcclxuICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zKSkge1xyXG4gICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zPy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbi5jaGVja2VkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBsaWVkRmlsdGVyT3B0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBvcHRpb24uaWQsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBvcHRpb24ubmFtZSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICBjaGVja2VkOiBvcHRpb24uY2hlY2tlZCxcclxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiBvcHRpb24uZGlzYWJsZWQsXHJcbiAgICAgICAgICAgICAgICBjaGlwVHlwZTogQ2hpcHNUeXBlLlRPR0dMRSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYXBwbGllZEZpbHRlck9wdGlvbnMucHVzaCh7XHJcbiAgICAgIGlkOiB0aGlzLmNsZWFyQWxsLFxyXG4gICAgICBuYW1lOiB0aGlzLmNsZWFyQWxsLFxyXG4gICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICBjaGlwVHlwZTogQ2hpcHNUeXBlLlNUQVRJQyxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPblJlbW92YWxPZkZpbHRlcmVkT3B0aW9uIG1ldGhvZCByZW1vdmUgdGhlIHNlbGVjdGVkIG9wdGlvbnMgYW5kIGNhbGwgb25GaWx0ZXJFdmVudHNBbmRNZWV0aW5nTGlzdCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtDaGlwT3B0aW9ufSBvcHRpb25cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKiovXHJcbiAgb25SZW1vdmFsT2ZGaWx0ZXJlZE9wdGlvbihvcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9uc1tdKTogdm9pZCB7XHJcbiAgICBpZiAob3B0aW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5zdGF0dXNPcHRpb25zLmZvckVhY2goKHN0YXR1czogQ2hlY2tib3hPcHRpb24pID0+IHtcclxuICAgICAgICBzdGF0dXMuY2hlY2tlZCA9XHJcbiAgICAgICAgICBzdGF0dXMuaWQgPT09IEV2ZW50QW5kTWVldGluZ1N0YXR1cy5JTlBST0dSRVNTIHx8XHJcbiAgICAgICAgICBzdGF0dXMuaWQgPT09IEV2ZW50QW5kTWVldGluZ1N0YXR1cy5VUENPTUlORztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uRmlsdGVyRXZlbnRzQW5kTWVldGluZ0xpc3Qob3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGV2ZW50cyBvciBtZWV0aW5ncyBiYXNlZCBvbiB0aGUgZmlsdGVyIGFwcGxpZWQgd2l0aCBncm91cHMgYW5kIHN0YXR1cy5cclxuICAgKiBAcGFyYW0ge0ZpbHRlcnNBbmRPcHRpb25zW119IHNlbGVjdGVkT3B0aW9uc1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqIEByZXR1cm4geyp9XHJcbiAgICoqL1xyXG4gIG9uRmlsdGVyRXZlbnRzQW5kTWVldGluZ0xpc3Qoc2VsZWN0ZWRPcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9uc1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RhdHVzSWRzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBJZHMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMgPSB7fTtcclxuICAgIHRoaXMuc2VsZWN0ZWRTdGF0dXMgPSB7fTtcclxuICAgIHRoaXMuZ2V0U2VsZWN0ZWRGaWx0ZXJPcHRpb25zQW5kSWRzKFxyXG4gICAgICBzZWxlY3RlZE9wdGlvbnMsXHJcbiAgICAgIEZpbHRlclR5cGUuU1RBVFVTLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkU3RhdHVzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkU3RhdHVzSWRzXHJcbiAgICApO1xyXG4gICAgdGhpcy5nZXRTZWxlY3RlZEZpbHRlck9wdGlvbnNBbmRJZHMoXHJcbiAgICAgIHNlbGVjdGVkT3B0aW9ucyxcclxuICAgICAgRmlsdGVyVHlwZS5SRUxBVEVEX0dST1VQLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBJZHNcclxuICAgICk7XHJcbiAgICBpZiAoc2VsZWN0ZWRPcHRpb25zPy5sZW5ndGggPT09IDAgJiYgdGhpcy50cmltbWVkU2VhcmNoVGVybSA9PT0gJycpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFN0YXR1c0lkcyA9IFtcclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdTdGF0dXMuSU5QUk9HUkVTUyxcclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdTdGF0dXMuVVBDT01JTkcsXHJcbiAgICAgIF07XHJcbiAgICAgIGNvbnN0IHBheWxvYWQ6IEdldEV2ZW50c0FuZE1lZXRpbmdzUGF5bG9hZCA9IHtcclxuICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICBldmVudElkOiBudWxsLFxyXG4gICAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgICAgYXNjZW5kaW5nT3JkZXI6IHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb24sXHJcbiAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgIGdyb3VwSWRzOiBbLi4udGhpcy5zZWxlY3RlZEdyb3VwSWRzXSxcclxuICAgICAgICAgICAgc3RhdHVzOiBbLi4udGhpcy5zZWxlY3RlZFN0YXR1c0lkc10sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZ2V0RXZlbnRzQW5kTWVldGluZ3MocGF5bG9hZCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50cmltbWVkU2VhcmNoVGVybSkge1xyXG4gICAgICB0aGlzLm9uRXZlbnRzT3JNZWV0aW5nc1NlYXJjaENsaWNrKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXlsb2FkOiBHZXRFdmVudHNBbmRNZWV0aW5nc1BheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBldmVudElkOiBudWxsLFxyXG4gICAgICAgIHNvcnRDb2x1bW46IHRoaXMuZGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICBhc2NlbmRpbmdPcmRlcjogdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbixcclxuICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgIGZpbHRlcjoge1xyXG4gICAgICAgICAgZ3JvdXBJZHM6IFsuLi50aGlzLnNlbGVjdGVkR3JvdXBJZHNdLFxyXG4gICAgICAgICAgc3RhdHVzOiBbLi4udGhpcy5zZWxlY3RlZFN0YXR1c0lkc10sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZXRFdmVudHNBbmRNZWV0aW5ncyhwYXlsb2FkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgc2VsZWN0ZWQgb3B0aW9ucyBvZiBmaWx0ZXJzIGFuZCByZXR1cm5zIGlkIG9mIHNlbGVjdGVkIG9wdGlvbnMuXHJcbiAgICogQHBhcmFtIHtGaWx0ZXJzQW5kT3B0aW9uc1tdfSBzZWxlY3RlZE9wdGlvbnNcclxuICAgKiBAcGFyYW0ge0ZpbHRlclR5cGV9IGZpbHRlclR5cGVcclxuICAgKiBAcGFyYW0ge0ZpbHRlcnNBbmRPcHRpb25zfSBzZWxlY3RlZEZpbHRlck9wdGlvbnNcclxuICAgKiBAcmV0dXJuIHsqfVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqKi9cclxuICBnZXRTZWxlY3RlZEZpbHRlck9wdGlvbnNBbmRJZHMoXHJcbiAgICBzZWxlY3RlZE9wdGlvbnM6IEZpbHRlcnNBbmRPcHRpb25zW10sXHJcbiAgICBmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlLFxyXG4gICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9ucyxcclxuICAgIHNlbGVjdGVkRmlsdGVySWRzOiBzdHJpbmdbXVxyXG4gICkge1xyXG4gICAgc2VsZWN0ZWRPcHRpb25zPy5mb3JFYWNoKChzZWxlY3RlZE9wdGlvbikgPT4ge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIG9wdGlvbnNdIG9mIE9iamVjdC5lbnRyaWVzKHNlbGVjdGVkT3B0aW9uKSkge1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0gZmlsdGVyVHlwZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEZpbHRlck9wdGlvbnNMaXN0OiBDaGVja2JveE9wdGlvbltdID0gW107XHJcbiAgICAgICAgICAgIG9wdGlvbnM/LmZvckVhY2goKG9wdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVySWRzLnB1c2gob3B0aW9uLmlkIGFzIHN0cmluZyk7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zTGlzdC5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBzZWxlY3RlZEZpbHRlck9wdGlvbnNba2V5XSA9IHNlbGVjdGVkRmlsdGVyT3B0aW9uc0xpc3Q7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHNlbGVjdGVkIGZpbHRlciBvcHRpb25zIGZvciByZWxhdGVkIGdyb3VwcyBvciBzdGF0dXMgZmlsdGVyIGRlcGVuZHMgb24gdGhlIHNlbGVjdGlvbi5cclxuICAgKiBAcGFyYW0ge0NoaXBPcHRpb259IG9wdGlvblxyXG4gICAqIEByZXR1cm4geyp9XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2V0U2VsZWN0ZWRGaWx0ZXJPcHRpb25zKG9wdGlvbjogQ2hpcE9wdGlvbik6IHZvaWQge1xyXG4gICAgc3dpdGNoIChvcHRpb24uaWQpIHtcclxuICAgICAgY2FzZSBGaWx0ZXJUeXBlLlJFTEFURURfR1JPVVA6IHtcclxuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSB0aGlzLmdyb3VwcztcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIEZpbHRlclR5cGUuU1RBVFVTOiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zID0gdGhpcy5zdGF0dXNPcHRpb25zO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgZ3JvdXBzIGZyb20gc2VydmVyIHVzaW5nIGdldEdyb3VwcygpIG9mIGV2ZW50c0FuZE1lZXRpbmdzU2VydmljZSBiYXNlZCBvbiByb2xlQmFzZWQgZmxhZy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cE9wdGlvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAgICAuZ2V0R3JvdXBzKGZhbHNlKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IEdldEdyb3VwUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJlcz8uYm9keT8uZm9yRWFjaCgoZ3JvdXA6IEdyb3VwSW5mbykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdyb3Vwcz8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IGdyb3VwPy5ncm91cElkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGdyb3VwPy5ncm91cEFjcm9ueW0sXHJcbiAgICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ1wiXHJcbiAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmctLW1vYmlsZS12aWV3IHAtMCcgOiAnJ1wiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2hlYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcGItM1wiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2hlYWRlci0tbW9iaWxlLXZpZXcnIDogJydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPHBcclxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS10aXRsZS1sZy0yNCcgOiAnaWVlZXNhLWhlYWRsaW5lLWxnLTM0J1wiXHJcbiAgICA+XHJcbiAgICAgIHt7IHNjcmVlblRleHRzPy50aXRsZSB9fVxyXG4gICAgPC9wPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zdGFydCBnYXAtbGctMyBnYXAtbWQtMyBnYXAtc20tMyBnYXAtMyBjb2wtbWQtNSBjb2wtbGctNCBqdXN0aWZ5LWNvbnRlbnQtZW5kIHBzLTBcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTW9iaWxlVmlld1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hGaWVsZFwiPiA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cImlzQ3JlYXRlRXZlbnRBbmRNZWV0aW5nQWxsb3dlZFwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nX19oZWFkZXJfX2NyZWF0ZS1idXR0b24gZC1ub25lIGQtc20tbm9uZSBkLW1kLWJsb2NrIGQtbGctYmxvY2sgZC14bC1ibG9jayBjb2wtbGctMyBwYi0wXCJcclxuICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb0NyZWF0ZUV2ZW50TWVldGluZ0Zvcm0oKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2hlYWRlcl9fY3JlYXRlLWJ1dHRvbl9faWNvbiBtZS0yXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8dXNlIFthdHRyLnhsaW5rOmhyZWZdPVwiY3JlYXRlQnV0dG9uPy5pY29uVVJMXCI+PC91c2U+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nX19oZWFkZXJfX2NyZWF0ZS1idXR0b25fX2xhYmVsXCI+e3tcclxuICAgICAgICAgIGNyZWF0ZUJ1dHRvbj8ubGFiZWxcclxuICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXggZC1zbS1mbGV4IGQtbWQtbm9uZSBkLWxnLW5vbmUgZC14bC1ub25lIGllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2hlYWRlcl9fbW9iaWxlLWljb25zIGdhcC0yXCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNjcmVlblRleHRzPy5zZWFyY2hQbGFjZWhvbGRlclRleHRcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkV2ZW50TWVldGluZ1NlYXJjaCgpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzcyBzZWFyY2gtZXZlbnRzLW1lZXRpbmdzLWljb25cIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJpc0NyZWF0ZUV2ZW50QW5kTWVldGluZ0FsbG93ZWRcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cImNyZWF0ZUJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJuYXZpZ2F0ZVRvQ3JlYXRlRXZlbnRNZWV0aW5nRm9ybSgpXCJcclxuICAgICAgPlxyXG4gICAgICA8L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxuZy10ZW1wbGF0ZSAjc2VhcmNoRmllbGQ+XHJcbiAgICA8aWVlZXNhLXNlYXJjaFxyXG4gICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJzY3JlZW5UZXh0cz8uc2VhcmNoUGxhY2Vob2xkZXJUZXh0XCJcclxuICAgICAgW3NlYXJjaFR5cGVdPVwic2VhcmNoVHlwZVwiXHJcbiAgICAgIChzZWFyY2hWYWx1ZSk9XCJvbkV2ZW50c09yTWVldGluZ3NTZWFyY2hDbGljaygkZXZlbnQpXCJcclxuICAgICAgW3NlYXJjaFRlcm1dPVwidHJpbW1lZFNlYXJjaFRlcm1cIlxyXG4gICAgICBbbWluQ2hhcmFjdGVyVG9TZWFyY2hdPVwibWluQ2hhcmFjdGVyVG9TZWFyY2hcIlxyXG4gICAgICBbc3VwcG9ydE1lc3NhZ2VdPVwic3VwcG9ydE1lc3NhZ2VcIlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX3NlYXJjaC13cmFwcGVyXCJcclxuICAgID48L2llZWVzYS1zZWFyY2g+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2ZpbHRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcGItM1wiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2ZpbHRlci0tbW9iaWxlLXZpZXcnIDogJydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGllZWVzYS1maWx0ZXJcclxuICAgICAgI2llZWVzYUZpbHRlclxyXG4gICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcclxuICAgICAgW2FwcGxpZWRGaWx0ZXJPcHRpb25zXT1cImFwcGxpZWRGaWx0ZXJPcHRpb25zXCJcclxuICAgICAgW3NlbGVjdGVkRmlsdGVyT3B0aW9uc109XCJmaWx0ZXJPcHRpb25zXCJcclxuICAgICAgKHNlbGVjdGVkRmlsdGVyKT1cInNldFNlbGVjdGVkRmlsdGVyT3B0aW9ucygkZXZlbnQpXCJcclxuICAgICAgKHJlbW92ZUZpbHRlcmVkT3B0aW9uKT1cIm9uUmVtb3ZhbE9mRmlsdGVyZWRPcHRpb24oJGV2ZW50KVwiXHJcbiAgICAgIChmaWx0ZXJlZE9wdGlvbnMpPVwib25TZWxlY3RlZEZpbHRlck9wdGlvbnMoJGV2ZW50KVwiXHJcbiAgICAgIFtjYW5TaG93U2VsZWN0aW9uXT1cInRydWVcIlxyXG4gICAgPjwvaWVlZXNhLWZpbHRlcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX3ZpZXdcIlxyXG4gICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgIGlzTW9iaWxlVmlldyA/ICdpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nX192aWV3LS1tb2JpbGUtdmlldyBwLTAnIDogJydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX3RhYi1hY3Rpb24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICAgICAgPyAnaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ19fdGFiLWFjdGlvbi0tbW9iaWxlLXZpZXcgcGItMydcclxuICAgICAgICAgIDogJydcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGllZWVzYS10b2dnbGUtYnV0dG9uXHJcbiAgICAgICAgW3NlbGVjdGVkTGFiZWxdPVwibGlzdE9yQ2FsZW5kYXJWaWV3c1swXT8ubGFiZWwgPz8gJydcIlxyXG4gICAgICAgIFtidXR0b25zXT1cImxpc3RPckNhbGVuZGFyVmlld3NcIlxyXG4gICAgICAgICh0b2dnbGVTZWxlY3RlZCk9XCJvblRvZ2dsZUJ1dHRvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgPjwvaWVlZXNhLXRvZ2dsZS1idXR0b24+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJkZWxldGVCdXR0b25cIlxyXG4gICAgICAgICpuZ0lmPVwiaXNEZWxldGVFdmVudEFuZE1lZXRpbmdBbGxvd2VkXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9wZW5EZWxldGVDb25maXJtYXRpb25Nb2RhbCgpXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2RlbGV0ZS1idXR0b25cIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxwXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ19fdGFiLWFjdGlvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcclxuICAgICAgKm5nSWY9XCJ0cmltbWVkU2VhcmNoVGVybVwiXHJcbiAgICAgIFtpbm5lckhUTUxdPVwic2VhcmNoUmVzdWx0TWVzc2FnZSB8IHNhZmUgOiBzYWZlVHlwZVwiXHJcbiAgICA+PC9wPlxyXG4gICAgPGllZWVzYS1kYXRhLXRhYmxlXHJcbiAgICAgICpuZ0lmPVwic2VsZWN0ZWRWaWV3VHlwZSA9PT0gZXZlbnRBbmRNZWV0aW5nVmlld1R5cGUuTElTVF9WSUVXXCJcclxuICAgICAgW3RhYmxlRGF0YUluZm9dPVwiZXZlbnRzQW5kTWVldGluZ3NMaXN0XCJcclxuICAgICAgW25lc3RlZFRhYmxlRGF0YUluZm9dPVwibWVldGluZ3NcIlxyXG4gICAgICBbY29sdW1uU2NoZW1hSW5mb109XCJjb2x1bW5TY2hlbWFcIlxyXG4gICAgICBbbmVzdGVkVGFibGVDb2x1bW5TY2hlbWFJbmZvXT1cIm5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hXCJcclxuICAgICAgW3BhZ2luYXRvckNvbmZpZ109XCJwYWdpbmF0b3JDb25maWdcIlxyXG4gICAgICBbbmVzdGVkUGFnaW5hdG9yQ29uZmlnXT1cIm5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnXCJcclxuICAgICAgW3ZpZXdBbGxdPVwidmlld0FsbE1lZXRpbmdzVGV4dFwiXHJcbiAgICAgIFt0YWJsZUFjdGlvbnNdPVwiZXZlbnRzQW5kTWVldGluZ3NBY3Rpb25zXCJcclxuICAgICAgW25lc3RlZFRhYmxlUm93QWN0aW9uc109XCJzY3JlZW5UZXh0cz8ubWVldGluZ0FjdGlvbnNcIlxyXG4gICAgICBbY2xhc3NOYW1lXT1cIidpZWVlc2Etdmlldy1ldmVudHMtYW5kLW1lZXRpbmdzJ1wiXHJcbiAgICAgIFtsZWdlbmRzXT1cImV2ZW50QW5kTWVldGluZ0xlZ2VuZHNcIlxyXG4gICAgICAoY29sdW1uRGF0YU9uUm93TGlua0NsaWNrKT1cIm5hdmlnYXRlVG9WaWV3RGV0YWlsc1BhZ2UoJGV2ZW50KVwiXHJcbiAgICAgIChtZW51QWN0aW9uQ2xpY2spPVwiZWRpdEV2ZW50TWVldGluZygkZXZlbnQpXCJcclxuICAgICAgKHJvd0V4cGFuc2lvbkNsaWNrKT1cImdldEV2ZW50TWVldGluZ3NPblJvd0V4cGFuZCgkZXZlbnQpXCJcclxuICAgICAgKHNlbGVjdEFjdGlvbk1lbnUpPVwiaGFuZGxlRWRpdEFjdGlvbnMoJGV2ZW50KVwiXHJcbiAgICAgIChwYWdpbmF0aW9uQ2hhbmdlKT1cIm9uRXZlbnRzQW5kTWVldGluZ3NUYWJsZVBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIChzb3J0Q2hhbmdlKT1cIm9uU29ydE1lZXRpbmdPckV2ZW50KCRldmVudClcIlxyXG4gICAgICAoc2VsZWN0ZWRSb3dzSW5mbyk9XCJnZXRTZWxlY3RlZE1lZXRpbmdzQW5kRXZlbnRzVG9EZWxldGUoJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2EtZGF0YS10YWJsZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
934
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLWFuZC1tZWV0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ldmVudHMtYW5kLW1lZXRpbmdzL3NyYy9saWIvZXZlbnRzLWFuZC1tZWV0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ldmVudHMtYW5kLW1lZXRpbmdzL3NyYy9saWIvZXZlbnRzLWFuZC1NZWV0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQztBQUUzSSxPQUFPLEVBQ0wsU0FBUyxFQUdULEtBQUssRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLDBIQUEwSDtBQUMxSCxPQUFPLEtBQUssU0FBUyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFLTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFFVixxQkFBcUIsRUFDckIsU0FBUyxFQUNULDBCQUEwQixFQUMxQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLHdCQUF3QixFQUV4QixrQkFBa0IsRUFJbEIsZ0JBQWdCLEVBQ2hCLGVBQWUsR0FFaEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUNMLFNBQVMsRUFHVCxRQUFRLEVBQ1IsUUFBUSxHQUNULE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FB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UUFDZixlQUFlLDBNQUNmLGVBQWUsdVFBQ2YsUUFBUTs7NEZBTUMsMEJBQTBCO2tCQWxCdEMsU0FBUzsrQkFDRSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUNBQW1DO3dCQUNuQyxrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixRQUFRO3FCQUNULGlCQUNjLGlCQUFpQixDQUFDLElBQUk7cVNBVTVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDc0IsWUFBWTtzQkFBdkMsU0FBUzt1QkFBQyxlQUFlO2dCQTRFakIsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENyZWF0ZU1vZGlmeUV2ZW50T3JNZWV0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NyZWF0ZS1tb2RpZnktZXZlbnQtb3ItbWVldGluZy9jcmVhdGUtbW9kaWZ5LWV2ZW50LW9yLW1lZXRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ldmVudHMtYW5kLW1lZXRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4vLyBUb0RvOiBjb25zdGFudHMuanNvbiB0byBiZSBtYWludGFpbmVkIGF0IGxpYnJhcnkgc2lkZSBhcyBhIGZhbGxiYWNrIGlmIG5vdCBmb3VuZCBhcHBsaWNhdGlvbiBzcGVjaWZpYyBmcm9tIHNlcnZlciBzaWRlLlxyXG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQge1xyXG4gIFBhZ2luYXRvckNvbmZpZyxcclxuICBUYWJsZUFjdGlvbnMsXHJcbiAgVG9nZ2xlQnV0dG9uLFxyXG4gIEljb25CdXR0b24sXHJcbiAgQ2hpcHNUeXBlLFxyXG4gIFNlYXJjaENvbXBvbmVudCxcclxuICBTZWFyY2hUeXBlLFxyXG4gIE1lbnUsXHJcbiAgVG9nZ2xlQnV0dG9uQ29tcG9uZW50LFxyXG4gIEFsaWduVHlwZSxcclxuICBNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCxcclxuICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gIFRhYmxlQ29sdW1uVHlwZSxcclxuICBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24sXHJcbiAgVGFibGVDb2x1bW5TY2hlbWEsXHJcbiAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG4gIExlZ2VuZCxcclxuICBGaWx0ZXJzQW5kT3B0aW9ucyxcclxuICBDaGlwT3B0aW9uLFxyXG4gIEZpbHRlck9wdGlvblR5cGUsXHJcbiAgRmlsdGVyQ29tcG9uZW50LFxyXG4gIENoZWNrYm94T3B0aW9uLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgRXZlbnRzQW5kTWVldGluZ3MsXHJcbiAgR2V0RXZlbnRzQW5kTWVldGluZ3NQYXlsb2FkLFxyXG59IGZyb20gJy4vbW9kZWxzL2V2ZW50cy1hbmQtbWVldGluZ3MtbGlzdC5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tICcuL21vZGVscy9maWx0ZXItdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IERhdGVGb3JtYXRzIH0gZnJvbSAnLi9hc3NldHMvZGF0ZS1mb3JtYXRzJztcclxuaW1wb3J0IHtcclxuICBBbGVydFR5cGUsXHJcbiAgQWxlcnRzU2VydmljZSxcclxuICBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gIFNhZmVQaXBlLFxyXG4gIFNhZmVUeXBlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBWaWV3RWRpdEFjdGlvbiB9IGZyb20gJy4vbW9kZWxzL3ZpZXctZWRpdC1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBFdmVudHNBbmRNZWV0aW5nc1ZpZXdUeXBlIH0gZnJvbSAnLi9tb2RlbHMvbGlzdC1jYWxlbmRhci12aWV3LWFjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL2V2ZW50LW1lZXRpbmctZnVuY3Rpb24tdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91c2VyLXBlcm1pc3Npb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIE1lZXRpbmdQZXJtaXNzaW9ucyxcclxuICBVc2VyUGVybWlzc2lvbixcclxufSBmcm9tICcuL21vZGVscy9tZWV0aW5nLXBlcm1pc3Npb25zLm1vZGVsJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblR5cGUgfSBmcm9tICcuL21vZGVscy9wZXJtaXNzaW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge1xyXG4gIEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZCxcclxuICBNZWV0aW5nLFxyXG59IGZyb20gJy4vbW9kZWxzL21lZXRpbmdzLXVuZGVyLWV2ZW50cy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgRXZlbnRBY3Rpb24sXHJcbiAgTWVldGluZ0FjdGlvbixcclxufSBmcm9tICcuL21vZGVscy9ldmVudC1vci1tZWV0aW5nLW1lbnUtYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgU29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQge1xyXG4gIEdldEdyb3VwUmVzcG9uc2UsXHJcbiAgR3JvdXBJbmZvLFxyXG4gIEV2ZW50QW5kTWVldGluZ1N0YXR1cyxcclxuICBFdmVudHNBbmRNZWV0aW5nUm91dGVDb25maWdcclxufSBmcm9tICdAaWVlZXNhLW5wbS9zaGFyZWQnO1xyXG5jb25zdCBDT0xVTU5fREVGID0ge1xyXG4gIG5hbWU6ICduYW1lJyxcclxuICBzdGFydERhdGVUaW1lOiAnc3RhcnQtZGF0ZS10aW1lJyxcclxuICBlbmREYXRlVGltZTogJ2VuZC1kYXRlLXRpbWUnLFxyXG4gIHRpbWVab25lOiAndGltZS16b25lJyxcclxuICBncm91cDogJ3JlbGF0ZWQtZ3JvdXAnLFxyXG4gIGxvY2F0aW9uOiAnbG9jYXRpb24nLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIGV2ZW50IGFuZCBtZWV0aW5nIGZlYXR1cmVzXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkRlc3Ryb3l9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmcnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQ3JlYXRlTW9kaWZ5RXZlbnRPck1lZXRpbmdDb21wb25lbnQsXHJcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXHJcbiAgICBUb2dnbGVCdXR0b25Db21wb25lbnQsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgRmlsdGVyQ29tcG9uZW50LFxyXG4gICAgU2VhcmNoQ29tcG9uZW50LFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgU2FmZVBpcGUsXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ldmVudHMtYW5kLU1lZXRpbmdzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ldmVudHMtYW5kLU1lZXRpbmdzLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyVmlld0luaXRcclxue1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRpYWxvZ1JlZjogYW55O1xyXG4gIEBJbnB1dCgpIGFwaUJhc2VVUkwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlclBlcm1pc3Npb25zITogVXNlclBlcm1pc3Npb25bXTtcclxuICBAVmlld0NoaWxkKEZpbHRlckNvbXBvbmVudCkgaWVlZXNhRmlsdGVyITogRmlsdGVyQ29tcG9uZW50O1xyXG4gIHNlYXJjaFBsYWNlaG9sZGVyVGV4dCE6IHN0cmluZztcclxuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcclxuICBpc1NlYXJjaEFjdGl2ZSA9IGZhbHNlO1xyXG4gIGV2ZW50RGF0YSE6IEV2ZW50c0FuZE1lZXRpbmdzO1xyXG4gIG1lZXRpbmdEYXRhITogRXZlbnRzQW5kTWVldGluZ3M7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBzZWxlY3RlZERhdGEhOiBhbnk7XHJcbiAgbWVudURhdGEhOiBNZW51O1xyXG4gIHNlYXJjaFR5cGU6IFNlYXJjaFR5cGUgPSBTZWFyY2hUeXBlLk9OX0NMSUNLO1xyXG4gIGRlZmF1bHRTb3J0ZWRDb2x1bW4gPSAnc3RhcnREYXRlVGltZSc7XHJcbiAgbmVzdGVkVGFibGVEZWZhdWx0U29ydGVkQ29sdW1uID0gJ21lZXRpbmdTdERhdGUnO1xyXG4gIGZpbHRlcnM6IENoaXBPcHRpb25bXSA9IFtcclxuICAgIHtcclxuICAgICAgaWQ6IEZpbHRlclR5cGUuUkVMQVRFRF9HUk9VUCxcclxuICAgICAgbmFtZTogRmlsdGVyVHlwZS5SRUxBVEVEX0dST1VQLFxyXG4gICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgY2hpcFR5cGU6IENoaXBzVHlwZS5UT0dHTEUsXHJcbiAgICAgIG9wdGlvblR5cGU6IEZpbHRlck9wdGlvblR5cGUuRFJPUERPV04sXHJcbiAgICAgIGNhblNob3dTZWxlY3Rpb246IGZhbHNlLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IEZpbHRlclR5cGUuU1RBVFVTLFxyXG4gICAgICBuYW1lOiBGaWx0ZXJUeXBlLlNUQVRVUyxcclxuICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgIGNoaXBUeXBlOiBDaGlwc1R5cGUuVE9HR0xFLFxyXG4gICAgICBjYW5TaG93U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBjb25zdGFudHM7XHJcbiAgc2NyZWVuVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8udmlld0V2ZW50c0FuZE1lZXRpbmdzO1xyXG4gIHBhZ2luYXRvckNvbmZpZzogUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgcmVjb3Jkc1BlclBhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/LnBhZ2VTaXplT3B0aW9ucz8uWzFdLFxyXG4gICAgcGFnZVNpemVPcHRpb25zOiB0aGlzLnNjcmVlblRleHRzLnBhZ2VTaXplT3B0aW9ucyxcclxuICAgIHRvdGFsUmVjb3JkczogMCxcclxuICB9O1xyXG4gIG5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnOiBQYWdpbmF0b3JDb25maWcgPSB7XHJcbiAgICByZWNvcmRzUGVyUGFnZTogdGhpcy5zY3JlZW5UZXh0cz8ucGFnZVNpemVPcHRpb25zPy5bMV0sXHJcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IHRoaXMuc2NyZWVuVGV4dHMucGFnZVNpemVPcHRpb25zLFxyXG4gICAgdG90YWxSZWNvcmRzOiAwLFxyXG4gIH07XHJcbiAgZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeSA9IHRoaXMuc2NyZWVuVGV4dHM/LmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnk7XHJcbiAgY29sdW1uSGVhZGluZyA9IHRoaXMuc2NyZWVuVGV4dHM/LmNvbHVtblNjaGVtYT8uY29sdW1uSGVhZGluZztcclxuICB2aWV3QWxsTWVldGluZ3NUZXh0ID0gdGhpcy5zY3JlZW5UZXh0cz8udmlld0FsbE1lZXRpbmdzO1xyXG4gIGNvbHVtblNjaGVtYSE6IFRhYmxlQ29sdW1uU2NoZW1hW107XHJcbiAgbmVzdGVkVGFibGVDb2x1bW5TY2hlbWEhOiBUYWJsZUNvbHVtblNjaGVtYVtdO1xyXG4gIGV2ZW50c0FuZE1lZXRpbmdzQWN0aW9uczogVGFibGVBY3Rpb25zID0ge1xyXG4gICAgaXNTZWFyY2hOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNGaWx0ZXJOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNBZGROZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNEZWxldGVOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNFZGl0TmVlZGVkOiBmYWxzZSxcclxuICAgIGlzUGFnaW5hdGlvbk5lZWRlZDogdHJ1ZSxcclxuICB9O1xyXG4gIGV2ZW50QW5kTWVldGluZ0xlZ2VuZHM6IExlZ2VuZFtdID0gdGhpcy5jb25zdGFudHM/LmV2ZW50T3JNZWV0aW5nTGVnZW5kcztcclxuICBsaXN0T3JDYWxlbmRhclZpZXdzOiBUb2dnbGVCdXR0b25bXSA9IHRoaXMuc2NyZWVuVGV4dHM/LnRvZ2dsZUJ1dHRvbnM7XHJcbiAgZGVsZXRlQnV0dG9uOiBJY29uQnV0dG9uID0gdGhpcy5zY3JlZW5UZXh0cz8uYnV0dG9ucz8uWzFdO1xyXG4gIGNyZWF0ZUJ1dHRvbjogSWNvbkJ1dHRvbiA9IHRoaXMuc2NyZWVuVGV4dHM/LmJ1dHRvbnM/LlswXTtcclxuICBldmVudEFuZE1lZXRpbmdWaWV3VHlwZSA9IEV2ZW50c0FuZE1lZXRpbmdzVmlld1R5cGU7XHJcbiAgc2VsZWN0ZWRWaWV3VHlwZTogRXZlbnRzQW5kTWVldGluZ3NWaWV3VHlwZSA9XHJcbiAgICBFdmVudHNBbmRNZWV0aW5nc1ZpZXdUeXBlLkxJU1RfVklFVztcclxuICBldmVudHNBbmRNZWV0aW5nc0xpc3Q6IEV2ZW50c0FuZE1lZXRpbmdzW10gPSBbXTtcclxuICB1c2VyTWVldGluZ1Blcm1pc3Npb25zITogTWVldGluZ1Blcm1pc3Npb25zW107XHJcbiAgcGVybWlzc2lvblR5cGUgPSBQZXJtaXNzaW9uVHlwZTtcclxuICBzdXBwb3J0TWVzc2FnZSE6IHN0cmluZztcclxuICBtaW5DaGFyYWN0ZXJUb1NlYXJjaCA9IDM7XHJcbiAgdHJpbW1lZFNlYXJjaFRlcm0gPSAnJztcclxuICBzZWFyY2hSZXN1bHRNZXNzYWdlITogc3RyaW5nO1xyXG4gIGV2ZW50c09yTWVldGluZ3NJbmZvITogRXZlbnRzQW5kTWVldGluZ3NbXTtcclxuICBzZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGlzRGVsZXRlRXZlbnRBbmRNZWV0aW5nQWxsb3dlZCA9IGZhbHNlO1xyXG4gIGlzQ3JlYXRlRXZlbnRBbmRNZWV0aW5nQWxsb3dlZCA9IGZhbHNlO1xyXG4gIGRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRFdmVudE9yTWVldGluZ0lkOiBzdHJpbmdbXSA9IFtdO1xyXG4gIC8vIFRvRG8gZW1pdCB0aGUgYXNzb2NpYXRlZCBidXR0b24gZXZlbnRzIG9mIENSRUFURSwgVklFVywgRURJVCBldmVudHMgYW5kIG1lZXRpbmdzIHVzaW5nIEBPdXRwdXQgYXMgd2UgZGlzY3Vzc2VkIHRoZSBjb25zdW1lciBhcHBsaWNhdGlvbiBtYXkgbG9hZCB0aGUgbWVldGluZyBhbmQgZXZlbnRzIGNvbXBvbmVudHMgaW50byB0aGUgdGFiYmVkIHZpZXcgb3Igb3RoZXIgd2F5IGluc3RlYWQgb2Ygcm91dGluZ1xyXG4gIEBJbnB1dCgpIHJvdXRlUGF0aHMhOiBFdmVudHNBbmRNZWV0aW5nUm91dGVDb25maWc7XHJcbiAgbWVldGluZ3M6IE1lZXRpbmdbXSA9IFtdO1xyXG4gIHNhZmVUeXBlOiBTYWZlVHlwZSA9IFNhZmVUeXBlLkhUTUw7XHJcbiAgZmlsdGVyZWRPcHRpb25zITogRmlsdGVyc0FuZE9wdGlvbnNbXTtcclxuICBhcHBsaWVkRmlsdGVyT3B0aW9ucyE6IENoaXBPcHRpb25bXTtcclxuICBjbGVhckFsbCA9IHRoaXMuc2NyZWVuVGV4dHM/LmNsZWFyQWxsO1xyXG4gIHNlbGVjdGVkU3RhdHVzSWRzOiBzdHJpbmdbXSA9IFtcclxuICAgIEV2ZW50QW5kTWVldGluZ1N0YXR1cy5JTlBST0dSRVNTLFxyXG4gICAgRXZlbnRBbmRNZWV0aW5nU3RhdHVzLlVQQ09NSU5HLFxyXG4gIF07XHJcbiAgc2VsZWN0ZWRHcm91cElkczogc3RyaW5nW10gPSBbXTtcclxuICBzZWxlY3RlZEdyb3VwczogRmlsdGVyc0FuZE9wdGlvbnMgPSB7fTtcclxuICBzZWxlY3RlZFN0YXR1czogRmlsdGVyc0FuZE9wdGlvbnMgPSB7fTtcclxuICBmaWx0ZXJPcHRpb25zOiBDaGVja2JveE9wdGlvbltdID0gW107XHJcbiAgZ3JvdXBzOiBDaGVja2JveE9wdGlvbltdID0gW107XHJcbiAgc3RhdHVzT3B0aW9uczogQ2hlY2tib3hPcHRpb25bXSA9XHJcbiAgICB0aGlzLnNjcmVlblRleHRzPy5ldmVudE9yTWVldGluZ1N0YXR1c0NoZWNrYm94T3B0aW9ucztcclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlOiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyU2VydmljZTogQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSB1c2VyUGVybWlzc2lvblNlcnZpY2U6IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2VcclxuICAgICAgLmdldEJyZWFrcG9pbnQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogeyBtYXRjaGVzOiBib29sZWFuIH0pID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdC5tYXRjaGVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRlbGV0ZUJ1dHRvbikgdGhpcy5kZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zdXBwb3J0TWVzc2FnZSA9XHJcbiAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1pbkNoYXJSZXF1aXJlZFRvU2VhcmNoMSArXHJcbiAgICAgICcgJyArXHJcbiAgICAgIHRoaXMubWluQ2hhcmFjdGVyVG9TZWFyY2ggK1xyXG4gICAgICAnICcgK1xyXG4gICAgICB0aGlzLnNjcmVlblRleHRzPy5taW5DaGFyUmVxdWlyZWRUb1NlYXJjaDI7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uc2V0U2VsZWN0ZWRFdmVudERhdGEobnVsbCk7XHJcbiAgICB0aGlzLnJvdXRlUGF0aHMgPSB0aGlzLnJvdXRlUGF0aHMgPz8gdGhpcy5jb25zdGFudHM/LnJvdXRlQ29uZmlnUGF0aDtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZXRSb3V0ZVBhdGhzKHRoaXMucm91dGVQYXRocyk7XHJcbiAgICB0aGlzLnVzZXJNZWV0aW5nUGVybWlzc2lvbnMgPVxyXG4gICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2VydmljZS5maWx0ZXJVc2VyTWVldGluZ1Blcm1pc3Npb25zKFxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25zXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uc2V0QXBwQ29uZmlnKFxyXG4gICAgICB0aGlzLmFwaUJhc2VVUkwsXHJcbiAgICAgIHRoaXMudXNlclBlcm1pc3Npb25zXHJcbiAgICApO1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2V0VXNlck1lZXRpbmdQZXJtaXNzaW9ucyhcclxuICAgICAgdGhpcy51c2VyTWVldGluZ1Blcm1pc3Npb25zXHJcbiAgICApO1xyXG4gICAgdGhpcy5nZXRHcm91cE9wdGlvbnMoKTtcclxuICAgIHRoaXMuaXNDcmVhdGVFdmVudEFuZE1lZXRpbmdBbGxvd2VkID1cclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudmFsaWRhdGVBY2Nlc3MoUGVybWlzc2lvblR5cGUuQ1JFQVRFX0VWRU5UKTtcclxuICAgIHRoaXMuZmlsdGVyRXZlbnRBbmRNZWV0aW5nQWN0aW9ucygpO1xyXG4gICAgdGhpcy5pc0RlbGV0ZUV2ZW50QW5kTWVldGluZ0FsbG93ZWQgPVxyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS52YWxpZGF0ZUFjY2VzcyhcclxuICAgICAgICBQZXJtaXNzaW9uVHlwZS5ERUxFVEVfRVZFTlRcclxuICAgICAgKSAmJlxyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS52YWxpZGF0ZUFjY2VzcyhcclxuICAgICAgICBQZXJtaXNzaW9uVHlwZS5ERUxFVEVfTUVFVElOR1xyXG4gICAgICApO1xyXG4gICAgdGhpcy5pbml0aWFsaXplQ29sdW1uU2NoZW1hKCk7XHJcbiAgICB0aGlzLmdldEV2ZW50c0FuZE1lZXRpbmdzKHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50SWQ6IG51bGwsXHJcbiAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgIGFzY2VuZGluZ09yZGVyOiB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICAgIGZpbHRlcjoge1xyXG4gICAgICAgICAgc3RhdHVzOiB0aGlzLnNlbGVjdGVkU3RhdHVzSWRzLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGZpbHRlciB3aXRoIGRlZmF1bHQgU3RhdHVzLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaWVlZXNhRmlsdGVyLm9uRmlsdGVyU2VsZWN0ZWQodGhpcy5maWx0ZXJzWzFdKTtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRGaWx0ZXJPcHRpb25zKHRoaXMuZmlsdGVyc1sxXSk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmlsdGVyIHRoZSBldmVudCBhbmQgbWVldGluZyBhY3Rpb25zIGJhc2VkIG9uIGV2ZW50IGFuZCBtZWV0aW5nIHBlcm1pc3Npb25zLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGZpbHRlckV2ZW50QW5kTWVldGluZ0FjdGlvbnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zY3JlZW5UZXh0cz8uZXZlbnRBY3Rpb25zKVxyXG4gICAgICB0aGlzLnNjcmVlblRleHRzLmV2ZW50QWN0aW9ucyA9XHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZ2V0RmlsdGVyZWRFdmVudEFjdGlvbnMoXHJcbiAgICAgICAgICB0aGlzLnNjcmVlblRleHRzLmV2ZW50QWN0aW9uc1xyXG4gICAgICAgICk7XHJcbiAgICBpZiAodGhpcy5zY3JlZW5UZXh0cz8ubWVldGluZ0FjdGlvbnMpXHJcbiAgICAgIHRoaXMuc2NyZWVuVGV4dHMubWVldGluZ0FjdGlvbnMgPVxyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldEZpbHRlcmVkTWVldGluZ0FjdGlvbnMoXHJcbiAgICAgICAgICB0aGlzLnNjcmVlblRleHRzLm1lZXRpbmdBY3Rpb25zXHJcbiAgICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGFibGUgY29sdW1uIHNjaGVtYSB0byBkaXNwbGF5IHRoZSBtZWV0aW5nIGFuZCBldmVudCBkZXRhaWxzIGluIHRhYnVsYXIgdmlldy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBpbml0aWFsaXplQ29sdW1uU2NoZW1hKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5TY2hlbWEgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogMSxcclxuICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgaGVhZGluZzogJycsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlNFTEVDVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50LnNlbGVjdH1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuTkVTVEVEX1RBQkxFLFxyXG4gICAgICAgIGhlYWRpbmc6ICcnLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5ORVNURURfVEFCTEUsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5oYXNDaGlsZHJlbixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAzLFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8ubmFtZSxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/Lm5hbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkxJTkssXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5uYW1lfWAsXHJcbiAgICAgICAgaXNDb250ZW50VW5kZXJMaW5rOiB0cnVlLFxyXG4gICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNCxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LnN0YXJ0RGF0ZVRpbWUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5zdGFydERhdGVUaW1lLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAhZWxlbWVudC5pc01lZXRpbmdFdmVudFxyXG4gICAgICAgICAgICA/IGAke21vbWVudChlbGVtZW50LnN0YXJ0RGF0ZVRpbWUpLmZvcm1hdChcclxuICAgICAgICAgICAgICAgIERhdGVGb3JtYXRzLmRpc3BsYXlGb3JtYXRcclxuICAgICAgICAgICAgICApfTxicj4ke21vbWVudChlbGVtZW50LnN0YXJ0RGF0ZVRpbWUpLmZvcm1hdChcclxuICAgICAgICAgICAgICAgIERhdGVGb3JtYXRzLnRpbWVGb3JtYXRcclxuICAgICAgICAgICAgICApfWBcclxuICAgICAgICAgICAgOiBgJHttb21lbnQoZWxlbWVudC5zdGFydERhdGVUaW1lKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICBEYXRlRm9ybWF0cy5kaXNwbGF5Rm9ybWF0XHJcbiAgICAgICAgICAgICAgKX1gLFxyXG4gICAgICAgIGlzSFRNTENlbGxEYXRhOiB0cnVlLFxyXG4gICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNSxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LmVuZERhdGVUaW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uZW5kRGF0ZVRpbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICFlbGVtZW50LmlzTWVldGluZ0V2ZW50XHJcbiAgICAgICAgICAgID8gYCR7bW9tZW50KGVsZW1lbnQuZW5kRGF0ZVRpbWUpLmZvcm1hdChcclxuICAgICAgICAgICAgICAgIERhdGVGb3JtYXRzLmRpc3BsYXlGb3JtYXRcclxuICAgICAgICAgICAgICApfTxicj4ke21vbWVudChlbGVtZW50LmVuZERhdGVUaW1lKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICBEYXRlRm9ybWF0cy50aW1lRm9ybWF0XHJcbiAgICAgICAgICAgICAgKX1gXHJcbiAgICAgICAgICAgIDogYCR7bW9tZW50KGVsZW1lbnQuZW5kRGF0ZVRpbWUpLmZvcm1hdChcclxuICAgICAgICAgICAgICAgIERhdGVGb3JtYXRzLmRpc3BsYXlGb3JtYXRcclxuICAgICAgICAgICAgICApfWAsXHJcbiAgICAgICAgaXNIVE1MQ2VsbERhdGE6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNixcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LnRpbWVab25lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8udGltZVpvbmUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke2VsZW1lbnQudGltZVpvbmUgPz8gdGhpcy5lbXB0eUZpZWxkVmFsdWVSZXBsYWNlZEJ5fWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNyxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/Lmdyb3VwLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uZ3JvdXAsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke2VsZW1lbnQuZ3JvdXBOYW1lID8/IHRoaXMuZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeX1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDgsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5sb2NhdGlvbixcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LmxvY2F0aW9uLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICBgJHtlbGVtZW50Lm1lZXRpbmdMb2NhdGlvbiA/PyB0aGlzLmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnl9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA5LFxyXG4gICAgICAgIGNvbHVtbkRlZjogVGFibGVDb2x1bW5UeXBlLkFDVElPTlMsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5hY3Rpb25zLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5BQ1RJT05TLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQubWVudUFjdGlvbn1gLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZXZlbnRzIGFuZCBtZWV0aW5ncyBsaXN0IGZyb20gdGhlIHNlcnZlci5cclxuICAgKiBAcGFyYW0ge0dldEV2ZW50c0FuZE1lZXRpbmdzUGF5bG9hZH0gcGF5bG9hZFxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEV2ZW50c0FuZE1lZXRpbmdzKHBheWxvYWQ6IEdldEV2ZW50c0FuZE1lZXRpbmdzUGF5bG9hZCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmdldEV2ZW50c0FuZE1lZXRpbmdzKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzTGlzdCA9IFtdO1xyXG4gICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LmV2ZW50TWVldGluZ0xpc3Q/LmZvckVhY2goKGV2ZW50TWVldGluZykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0aXRsZSA9IGV2ZW50TWVldGluZy5pc01lZXRpbmdFdmVudFxyXG4gICAgICAgICAgICAgID8gdGhpcy5zY3JlZW5UZXh0cz8uZXZlbnRcclxuICAgICAgICAgICAgICA6IHRoaXMuc2NyZWVuVGV4dHM/Lm1lZXRpbmc7XHJcbiAgICAgICAgICAgIGV2ZW50TWVldGluZy50b29sVGlwVGV4dCA9IGV2ZW50TWVldGluZy5uYW1lICsgJyAnICsgdGl0bGU7XHJcbiAgICAgICAgICAgIGV2ZW50TWVldGluZy5jb250ZW50VW5kZXJMaW5rID0gZXZlbnRNZWV0aW5nLnN0YXR1cztcclxuICAgICAgICAgICAgZXZlbnRNZWV0aW5nLmxlZ2VuZENvbG9yID1cclxuICAgICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5nZXRFdmVudE9yTWVldGluZ0xlZ2VuZENvbG9yKFxyXG4gICAgICAgICAgICAgICAgZXZlbnRNZWV0aW5nPy5zdGF0dXNcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzTGlzdC5wdXNoKGV2ZW50TWVldGluZyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMucGFnaW5hdG9yQ29uZmlnLnRvdGFsUmVjb3JkcyA9XHJcbiAgICAgICAgICAgIHJlc3BvbnNlPy5ib2R5Py50b3RhbFJlY29yZHMgPz8gdGhpcy5ldmVudHNBbmRNZWV0aW5nc0xpc3QubGVuZ3RoO1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc0xpc3QgPSB0aGlzLm1hcE1lbnVBY3Rpb25Ub0xpc3QoXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NMaXN0XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc0xpc3QgPSBbLi4udGhpcy5ldmVudHNBbmRNZWV0aW5nc0xpc3RdO1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcgPSB7IC4uLnRoaXMucGFnaW5hdG9yQ29uZmlnIH07XHJcbiAgICAgICAgICBpZiAodGhpcy5pc1NlYXJjaEFjdGl2ZSlcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHRNZXNzYWdlID0gYDxkaXY+JHt0aGlzLnNjcmVlblRleHRzPy5zZWFyY2hSZXN1bHRNc2dQYXJ0MX0gJHt0aGlzLnBhZ2luYXRvckNvbmZpZz8udG90YWxSZWNvcmRzfVxyXG4gICAgICAgICR7dGhpcy5zY3JlZW5UZXh0cz8uc2VhcmNoUmVzdWx0TXNnUGFydDJ9IFwiPHN0cm9uZz4ke3RoaXMudHJpbW1lZFNlYXJjaFRlcm19PC9zdHJvbmc+XCI8L2Rpdj5gO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHRhYmxlIHJvdyBhY3Rpb25zIGZvciBlYWNoIHJvdyBvZiBldmVudHMgYW5kIG1lZXRpbmdzIHRhYmxlIHRoZW4gcmV0dXJucyBFdmVuc0FuZE1lZXRpbmdzLlxyXG4gICAqIEBwYXJhbSB7RXZlbnRzQW5kTWVldGluZ3NbXX1cclxuICAgKiAqIEByZXR1cm4ge0V2ZW50c0FuZE1lZXRpbmdzW119IC1JdCByZXR1cm5zIGV2ZW50c0FuZE1lZXRpbmdzTGlzdCB3aXRoIG1lbnUgYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHJvdy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBtYXBNZW51QWN0aW9uVG9MaXN0KFxyXG4gICAgZXZlbnRzQW5kTWVldGluZ3NMaXN0OiBFdmVudHNBbmRNZWV0aW5nc1tdXHJcbiAgKTogRXZlbnRzQW5kTWVldGluZ3NbXSB7XHJcbiAgICBldmVudHNBbmRNZWV0aW5nc0xpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLm1lbnVBY3Rpb24gPSBpdGVtLmlzTWVldGluZ0V2ZW50XHJcbiAgICAgICAgPyB0aGlzLnNjcmVlblRleHRzPy5ldmVudEFjdGlvbnNcclxuICAgICAgICA6IHRoaXMuc2NyZWVuVGV4dHM/Lm1lZXRpbmdBY3Rpb25zO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZXZlbnRzQW5kTWVldGluZ3NMaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgbWVldGluZ3MgYW5kIGV2ZW50cyBsaXN0IGRldGFpbHMgb24gY2hhbmdlIG9mIHRhYmxlIHBhZ2luYXRpb24uXHJcbiAgICogQHBhcmFtIHt7UGFnZUV2ZW50fX0gcGFnZUV2ZW50XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25FdmVudHNBbmRNZWV0aW5nc1RhYmxlUGFnZUNoYW5nZShwYWdlRXZlbnQ6IFBhZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRFdmVudHNBbmRNZWV0aW5ncyh7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBldmVudElkOiAnJyxcclxuICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4sXHJcbiAgICAgICAgYXNjZW5kaW5nT3JkZXI6IHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb24sXHJcbiAgICAgICAgcGFnZTogcGFnZUV2ZW50LnBhZ2VJbmRleCArIDEsXHJcbiAgICAgICAgc2l6ZTogcGFnZUV2ZW50LnBhZ2VTaXplLFxyXG4gICAgICAgIHNlYXJjaFRlcm06IHRoaXMudHJpbW1lZFNlYXJjaFRlcm0gPz8gbnVsbCxcclxuICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgIGdyb3VwSWRzOiBbLi4udGhpcy5zZWxlY3RlZEdyb3VwSWRzXSxcclxuICAgICAgICAgIHN0YXR1czogWy4uLnRoaXMuc2VsZWN0ZWRTdGF0dXNJZHNdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJhc2VkIG9uIGNsaWNrIGV2ZW50IG5hdmlnYXRlIHRvIHZpZXcgbWVldGluZyBvciBldmVudCBwYWdlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgbmF2aWdhdGVUb1ZpZXdEZXRhaWxzUGFnZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZXRTdGFuZGFsb25lTWVldGluZ1N0YXR1cyh0cnVlKTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmFjdGlvblR5cGUgPSBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVDtcclxuICAgIGlmIChldmVudD8ucm93Py5pc01lZXRpbmdFdmVudCkge1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZWxlY3RlZEV2ZW50SWQgPSBldmVudD8ucm93Py5pZDtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJvdXRlUGF0aHMuZWRpdEV2ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkTWVldGluZ0lkID0gZXZlbnQ/LnJvdz8uaWQ7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yb3V0ZVBhdGhzLmVkaXRNZWV0aW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlcyB0byBjcmVhdGUgbWVldGluZyBvciBldmVudCBwYWdlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5hdmlnYXRlVG9DcmVhdGVFdmVudE1lZXRpbmdGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9XHJcbiAgICAgIEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZS5DUkVBVEU7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZWxlY3RlZEV2ZW50SWQgPSAnJztcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkTWVldGluZ0lkID0gJyc7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVQYXRocy5jcmVhdGVFdmVudE1lZXRpbmcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyBiZXR3ZWVuIHRoZSBMaXN0IHZpZXcgb3IgQ2FsZW5kYXIgdmlldy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBvblRvZ2dsZUJ1dHRvbkNoYW5nZSh0b2dnbGVCdXR0b246IFRvZ2dsZUJ1dHRvbikge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZpZXdUeXBlID1cclxuICAgICAgdG9nZ2xlQnV0dG9uPy5pZCA9PT0gRXZlbnRzQW5kTWVldGluZ3NWaWV3VHlwZS5MSVNUX1ZJRVdcclxuICAgICAgICA/IEV2ZW50c0FuZE1lZXRpbmdzVmlld1R5cGUuTElTVF9WSUVXXHJcbiAgICAgICAgOiBFdmVudHNBbmRNZWV0aW5nc1ZpZXdUeXBlLkNBTEVOREFSX1ZJRVc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93cyB0aGUgc2VhcmNoIGZpZWxkIG9uIGNsaWNrIG9mIHNlYXJjaCBpY29uIGluIGNhc2Ugb2YgbW9iaWxlIHZpZXcuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25FdmVudE1lZXRpbmdTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2VhcmNoQWN0aXZlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJhc2VkIG9uIGNsaWNrIG1lbnUgaXRlbXMgbmF2aWdhdGUgdG8gZWRpdCBtZWV0aW5nIG9yIGV2ZW50IHBhZ2UuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBoYW5kbGVFZGl0QWN0aW9ucyhyb3c6IGFueSkge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2V0U3RhbmRhbG9uZU1lZXRpbmdTdGF0dXModHJ1ZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IHJvdztcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0YT8ubGFiZWwgPT09IFZpZXdFZGl0QWN0aW9uLlZJRVdfRURJVF9FVkVOVF9ERVRBSUxTKSB7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmFjdGlvblR5cGUgPVxyXG4gICAgICAgIEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZS5FRElUO1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZWxlY3RlZEV2ZW50SWQgPSB0aGlzLmV2ZW50RGF0YT8uaWQ7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yb3V0ZVBhdGhzLmVkaXRFdmVudCk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YT8ubGFiZWwgPT09IFZpZXdFZGl0QWN0aW9uLlZJRVdfRURJVF9NRUVUSU5HX0RFVEFJTFNcclxuICAgICkge1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5hY3Rpb25UeXBlID1cclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVDtcclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2VsZWN0ZWRNZWV0aW5nSWQgPSB0aGlzLmV2ZW50RGF0YT8uaWQ7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yb3V0ZVBhdGhzLmVkaXRNZWV0aW5nKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhPy5pZCA9PT0gRXZlbnRBY3Rpb24uREVMRVRFX0VWRU5UIHx8XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhPy5pZCA9PT0gTWVldGluZ0FjdGlvbi5ERUxFVEVfTUVFVElOR1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMub3BlbkRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsKHRydWUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRGF0YT8uaWQgPT09IEV2ZW50QWN0aW9uLkNSRUFURV9NRUVUSU5HKSB7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmFjdGlvblR5cGUgPVxyXG4gICAgICAgIEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZS5DUkVBVEU7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldFN0YW5kYWxvbmVNZWV0aW5nU3RhdHVzKGZhbHNlKTtcclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2VsZWN0ZWRFdmVudElkID0gdGhpcy5ldmVudERhdGE/LmlkO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVQYXRocy5lZGl0RXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBCYXNlZCBvbiBjbGljayBldmVudCBuYXZpZ2F0ZSB0byBlZGl0IG1lZXRpbmcgb3IgZXZlbnQgcGFnZS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKiBAcGFyYW0geyp9IGV2ZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBlZGl0RXZlbnRNZWV0aW5nKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZXZlbnREYXRhID0gZXZlbnQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXZlbnRPck1lZXRpbmdJZCA9IFtdO1xyXG4gICAgaWYgKGV2ZW50Py5pZCkgdGhpcy5zZWxlY3RlZEV2ZW50T3JNZWV0aW5nSWQucHVzaChldmVudD8uaWQpO1xyXG4gICAgZWxzZSBpZiAoZXZlbnQ/Lm1lZXRpbmdJZClcclxuICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50T3JNZWV0aW5nSWQucHVzaChldmVudD8ubWVldGluZ0lkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyBpZHMgb2YgYWxsIHRoZSBzZWxlY3RlZCBldmVudHMgYW5kIG1lZXRpbmdzIHRvIGJlIGRlbGV0ZWQuXHJcbiAgICogQHBhcmFtIHsqfSBzZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0U2VsZWN0ZWRNZWV0aW5nc0FuZEV2ZW50c1RvRGVsZXRlKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgIHNlbGVjdGVkRXZlbnRzQW5kTWVldGluZ3M6IGFueVxyXG4gICkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzSWRzID0gW107XHJcbiAgICBzZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzPy5mb3JFYWNoKChldmVudE9yTWVldGluZzogRXZlbnRzQW5kTWVldGluZ3MpID0+IHtcclxuICAgICAgaWYgKGV2ZW50T3JNZWV0aW5nPy5pZClcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRXZlbnRzQW5kTWVldGluZ3NJZHMucHVzaChldmVudE9yTWVldGluZy5pZCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGVsZXRlQnV0dG9uLmRpc2FibGVkID0gdGhpcy5zZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzSWRzLmxlbmd0aCA9PT0gMDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT3BlbnMgZXZlbnRzIGFuZCBtZWV0aW5ncyBkZWxldGUgY29uZmlybWF0aW9uIG1vZGFsIGFuZCBjYWxscyBkZWxldGVFdmVudHNPck1lZXRpbmdzIG1ldGhvZCBvbiBjb25maXJtYXRpb24uXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb3BlbkRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsKGlzU2luZ2xlRGVsZXRlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgY29uZmlybWF0aW9uSW5mbyA9XHJcbiAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmRlbGV0ZUV2ZW50c09yTWVldGluZ3M/LmNvbmZpcm1hdGlvbkluZm87XHJcbiAgICBjb25zdCBkZWxldGVNb2RhbE9wdGlvbnMgPSB7XHJcbiAgICAgIGxlZnRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ubGVmdEJ1dHRvbkxhYmVsLFxyXG4gICAgICByaWdodEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5yaWdodEJ1dHRvbkxhYmVsLFxyXG4gICAgICBwcm9tcHRNZXNzYWdlOiBjb25maXJtYXRpb25JbmZvPy5wcm9tcHRNZXNzYWdlLFxyXG4gICAgICBhY3Rpb25CdXR0b25BbGlnbjogQWxpZ25UeXBlPy5NSURETEUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZz8ub3BlbihNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiBkZWxldGVNb2RhbE9wdGlvbnMsXHJcbiAgICAgIGF1dG9Gb2N1czogJ2RpYWxvZycsXHJcbiAgICAgIGFyaWFMYWJlbDogdGhpcy5jb25zdGFudHM/LmFyaWFMYWJlbD8uYWxlcnQsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnaWVlZXNhLWRlbGV0ZS1ldmVudHMtbWVldGluZ3MtbW9kYWwnXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmRlbGV0ZUV2ZW50c09yTWVldGluZ3MoaXNTaW5nbGVEZWxldGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIEFQSSBSZXF1ZXN0IHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgZXZlbnRzIGFuZCBtZWV0aW5ncyBhbmQgaGFuZGxlcyB0aGUgc3VjY2VzcyBhbmQgZXJyb3IgcmVzcG9uc2Ugb2YgdGhlIGh0dHAgcmVxdWVzdC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBkZWxldGVFdmVudHNPck1lZXRpbmdzKGlzU2luZ2xlRGVsZXRlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgY291bnQgPSBpc1NpbmdsZURlbGV0ZVxyXG4gICAgICA/IHRoaXMuc2VsZWN0ZWRFdmVudE9yTWVldGluZ0lkPy5sZW5ndGhcclxuICAgICAgOiB0aGlzLnNlbGVjdGVkRXZlbnRzQW5kTWVldGluZ3NJZHMubGVuZ3RoO1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmRlbGV0ZUV2ZW50c09yTWVldGluZ3Moe1xyXG4gICAgICAgIHBheWxvYWQ6IGlzU2luZ2xlRGVsZXRlXHJcbiAgICAgICAgICA/IHRoaXMuc2VsZWN0ZWRFdmVudE9yTWVldGluZ0lkXHJcbiAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRFdmVudHNBbmRNZWV0aW5nc0lkcyxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdldEV2ZW50c0FuZE1lZXRpbmdzKHtcclxuICAgICAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgICAgIGV2ZW50SWQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgICAgICAgIGFzY2VuZGluZ09yZGVyOiB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gICAgICAgICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICAgICAgICAgIHNlYXJjaFRlcm06IHRoaXMudHJpbW1lZFNlYXJjaFRlcm0gPz8gbnVsbCxcclxuICAgICAgICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgICAgICAgIGdyb3VwSWRzOiBbLi4udGhpcy5zZWxlY3RlZEdyb3VwSWRzXSxcclxuICAgICAgICAgICAgICAgIHN0YXR1czogWy4uLnRoaXMuc2VsZWN0ZWRTdGF0dXNJZHNdLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlPy5zaG93TWVzc2FnZSh7XHJcbiAgICAgICAgICAgIHN0YXR1czogJ2N1c3RvbScsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgY291bnQgK1xyXG4gICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmRlbGV0ZUV2ZW50c09yTWVldGluZ3M/Lm1lc3NhZ2U/LnN1Y2Nlc3NcclxuICAgICAgICAgICAgICAgID8uZGVsZXRpb24sXHJcbiAgICAgICAgICAgIGFsZXJ0VHlwZTogQWxlcnRUeXBlLlNVQ0NFU1MsXHJcbiAgICAgICAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBtZWV0aW5ncyBjcmVhdGVkIGZvciB0aGUgc2VsZWN0ZWQgZXZlbnQgZnJvbSBzZXJ2ZXIuXHJcbiAgICogQHBhcmFtIHtHZXRNZWV0aW5nc0J5RXZlbnRJZFBheWxvYWR9IHBheWxvYWRcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldE1lZXRpbmdzQnlFdmVudElkKHBheWxvYWQ6IEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmdldE1lZXRpbmdzQnlFdmVudElkKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lZXRpbmdzID0gW107XHJcbiAgICAgICAgICB0aGlzLm5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLm5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMubWVldGluZ3MgPVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5tYXBNZWV0aW5nc0luZm9Ub0RhdGFUYWJsZShcclxuICAgICAgICAgICAgICByZXNwb25zZT8uYm9keT8ubWVldGluZ3NcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMubmVzdGVkVGFibGVQYWdpbmF0b3JDb25maWcudG90YWxSZWNvcmRzID1cclxuICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LnRvdGFsUmVjb3JkcyA/PyB0aGlzLm1lZXRpbmdzPy5sZW5ndGg7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgdGFibGUgY29sdW1uIHNjaGVtYSBhbmQgZ2V0cyBtZWV0aW5ncyBvZiB0aGUgc2VsZWN0ZWQgZXZlbnQgdXNpbmcgZXZlbnQgaWQgZnJvbSBzZXJ2ZXIgdG8gZGlzcGxheSB0aGUgbWVldGluZ3MgaW4gdGhlIG5lc3RlZCB0YWJ1bGFyIHZpZXcuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKiBAcGFyYW0ge0V2ZW50c0FuZE1lZXRpbmdzfSBldmVudERldGFpbFxyXG4gICAqL1xyXG4gIGdldEV2ZW50TWVldGluZ3NPblJvd0V4cGFuZChldmVudERldGFpbDogRXZlbnRzQW5kTWVldGluZ3MpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZU5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hKCk7XHJcbiAgICB0aGlzLmdldE1lZXRpbmdzQnlFdmVudElkKHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50SWQ6IGV2ZW50RGV0YWlsPy5pZCxcclxuICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLm5lc3RlZFRhYmxlRGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICBhc2NlbmRpbmdPcmRlcjogdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbixcclxuICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgIHNpemU6IHRoaXMubmVzdGVkVGFibGVQYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0YWJsZSBjb2x1bW4gc2NoZW1hIHRvIGRpc3BsYXkgdGhlIG1lZXRpbmdzIHVuZGVyIGFuIGV2ZW50IGluIHRhYnVsYXIgdmlldy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBpbml0aWFsaXplTmVzdGVkVGFibGVDb2x1bW5TY2hlbWEoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDEsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5uYW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8ubmFtZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuTElOSyxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50Lm1lZXRpbmdUaXRsZX1gLFxyXG4gICAgICAgIGlzQ29udGVudFVuZGVyTGluazogdHJ1ZSxcclxuICAgICAgICBpc1NvcnRhYmxlQ29sdW1uOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5zdGFydERhdGVUaW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uc3RhcnREYXRlVGltZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7bW9tZW50KGVsZW1lbnQubWVldGluZ1N0RGF0ZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICBEYXRlRm9ybWF0cy5kaXNwbGF5Rm9ybWF0XHJcbiAgICAgICAgICApfTxicj4ke21vbWVudChlbGVtZW50Lm1lZXRpbmdTdERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMudGltZUZvcm1hdFxyXG4gICAgICAgICAgKX1gLFxyXG4gICAgICAgIGlzSFRNTENlbGxEYXRhOiB0cnVlLFxyXG4gICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogMyxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LmVuZERhdGVUaW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uZW5kRGF0ZVRpbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke21vbWVudChlbGVtZW50Lm1lZXRpbmdFZERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdFxyXG4gICAgICAgICAgKX08YnI+JHttb21lbnQoZWxlbWVudC5tZWV0aW5nRWREYXRlKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIERhdGVGb3JtYXRzLnRpbWVGb3JtYXRcclxuICAgICAgICAgICl9YCxcclxuICAgICAgICBpc0hUTUxDZWxsRGF0YTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA0LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8udGltZVpvbmUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy50aW1lWm9uZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7ZWxlbWVudC50aW1lWm9uZSA/PyB0aGlzLmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnl9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA1LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uZ3JvdXAsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5ncm91cCxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7ZWxlbWVudC5ncm91cE5hbWUgPz8gdGhpcy5lbXB0eUZpZWxkVmFsdWVSZXBsYWNlZEJ5fWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNixcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LmxvY2F0aW9uLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8ubG9jYXRpb24sXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke2VsZW1lbnQubWVldGluZ0xvY2F0aW9uID8/IHRoaXMuZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeX1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDcsXHJcbiAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuQUNUSU9OUyxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LmFjdGlvbnMsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkFDVElPTlMsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5hY3Rpb259YCxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBldmVudHMgb3IgbWVldGluZ3MgYmFzZWQgb24gdGhlIGNvbHVtbiBuYW1lIGFuZCBzb3J0IGRpcmVjdGlvbi5cclxuICAgKiBAcGFyYW0ge1NvcnR9IHNvcnRcclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBvblNvcnRNZWV0aW5nT3JFdmVudChzb3J0OiBTb3J0KTogdm9pZCB7XHJcbiAgICB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4gPVxyXG4gICAgICBzb3J0LmFjdGl2ZSA9PT0gJ3N0YXJ0LWRhdGUtdGltZScgPyAnc3RhcnREYXRlVGltZScgOiBzb3J0LmFjdGl2ZTtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEZWZhdWx0U29ydGVkQ29sdW1uID0gc29ydC5hY3RpdmU7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlRGVmYXVsdFNvcnRlZENvbHVtbiA9XHJcbiAgICAgIHNvcnQuYWN0aXZlID09PSBDT0xVTU5fREVGLm5hbWUgPyAnbWVldGluZ1RpdGxlJyA6ICdtZWV0aW5nU3REYXRlJztcclxuICAgIHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb24gPVxyXG4gICAgICBzb3J0LmRpcmVjdGlvbiA9PT0gVGFibGVDb2x1bW5Tb3J0RGlyZWN0aW9uLkFTQ0VORElORztcclxuICAgIHRoaXMuZ2V0RXZlbnRzQW5kTWVldGluZ3Moe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnRJZDogbnVsbCxcclxuICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4sXHJcbiAgICAgICAgYXNjZW5kaW5nT3JkZXI6IHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb24sXHJcbiAgICAgICAgcGFnZTogMSxcclxuICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgICAgc2VhcmNoVGVybTogdGhpcy50cmltbWVkU2VhcmNoVGVybSA/PyBudWxsLFxyXG4gICAgICAgIGZpbHRlcjoge1xyXG4gICAgICAgICAgZ3JvdXBJZHM6IFsuLi50aGlzLnNlbGVjdGVkR3JvdXBJZHNdLFxyXG4gICAgICAgICAgc3RhdHVzOiBbLi4udGhpcy5zZWxlY3RlZFN0YXR1c0lkc10sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBpc1NlYXJjaEFjdGl2ZSB0byB0cnVlIGFuZCBsb2FkcyB0aGUgZXZlbnRzIG9yIG1lZXRpbmdzLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hUZXJtXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25FdmVudHNPck1lZXRpbmdzU2VhcmNoQ2xpY2soc2VhcmNoVGVybTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoc2VhcmNoVGVybSkge1xyXG4gICAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID0gc2VhcmNoVGVybS50cmltKCk7XHJcbiAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSB0cnVlO1xyXG4gICAgICBpZiAoIXRoaXMudHJpbW1lZFNlYXJjaFRlcm0pIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0TWVzc2FnZSA9ICcnO1xyXG4gICAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID0gJyc7XHJcbiAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzPy5sZW5ndGggPT09IDAgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZFN0YXR1c0lkcz8ubGVuZ3RoID09PSAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFN0YXR1c0lkcyA9IFtcclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdTdGF0dXMuSU5QUk9HUkVTUyxcclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdTdGF0dXMuVVBDT01JTkcsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEV2ZW50c0FuZE1lZXRpbmdzKHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50SWQ6IG51bGwsXHJcbiAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgIGFzY2VuZGluZ09yZGVyOiB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICAgIHNlYXJjaFRlcm06IHNlYXJjaFRlcm0gPyB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtIDogbnVsbCxcclxuICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgIGdyb3VwSWRzOiBbLi4udGhpcy5zZWxlY3RlZEdyb3VwSWRzXSxcclxuICAgICAgICAgIHN0YXR1czogWy4uLnRoaXMuc2VsZWN0ZWRTdGF0dXNJZHNdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uU2VsZWN0ZWRGaWx0ZXJPcHRpb25zIG1ldGhvZCB3aWxsIHNldCB0aGUgc2VsZWN0ZWQgb3B0aW9uIGNoaXBzIGFuZCBhZGRzIFwiQ2xlYXIgYWxsXCIgb3B0aW9uIHRvIGNsZWFyIHRoZSBhbGwgc2VsZWN0aW9ucy5cclxuICAgKiBAcGFyYW0ge0ZpbHRlcnNBbmRPcHRpb25zW119IHNlbGVjdGVkT3B0aW9uc1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uU2VsZWN0ZWRGaWx0ZXJPcHRpb25zKHNlbGVjdGVkT3B0aW9uczogRmlsdGVyc0FuZE9wdGlvbnNbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkZpbHRlckV2ZW50c0FuZE1lZXRpbmdMaXN0KHNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJPcHRpb25zID0gW107XHJcbiAgICBzZWxlY3RlZE9wdGlvbnM/LmZvckVhY2goKG9wdGlvbnMpID0+IHtcclxuICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zKSkge1xyXG4gICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zPy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbi5jaGVja2VkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBsaWVkRmlsdGVyT3B0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBvcHRpb24uaWQsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBvcHRpb24ubmFtZSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICBjaGVja2VkOiBvcHRpb24uY2hlY2tlZCxcclxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiBvcHRpb24uZGlzYWJsZWQsXHJcbiAgICAgICAgICAgICAgICBjaGlwVHlwZTogQ2hpcHNUeXBlLlRPR0dMRSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYXBwbGllZEZpbHRlck9wdGlvbnMucHVzaCh7XHJcbiAgICAgIGlkOiB0aGlzLmNsZWFyQWxsLFxyXG4gICAgICBuYW1lOiB0aGlzLmNsZWFyQWxsLFxyXG4gICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICBjaGlwVHlwZTogQ2hpcHNUeXBlLlNUQVRJQyxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPblJlbW92YWxPZkZpbHRlcmVkT3B0aW9uIG1ldGhvZCByZW1vdmUgdGhlIHNlbGVjdGVkIG9wdGlvbnMgYW5kIGNhbGwgb25GaWx0ZXJFdmVudHNBbmRNZWV0aW5nTGlzdCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtDaGlwT3B0aW9ufSBvcHRpb25cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKiovXHJcbiAgb25SZW1vdmFsT2ZGaWx0ZXJlZE9wdGlvbihvcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9uc1tdKTogdm9pZCB7XHJcbiAgICBpZiAob3B0aW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5zdGF0dXNPcHRpb25zLmZvckVhY2goKHN0YXR1czogQ2hlY2tib3hPcHRpb24pID0+IHtcclxuICAgICAgICBzdGF0dXMuY2hlY2tlZCA9XHJcbiAgICAgICAgICBzdGF0dXMuaWQgPT09IEV2ZW50QW5kTWVldGluZ1N0YXR1cy5JTlBST0dSRVNTIHx8XHJcbiAgICAgICAgICBzdGF0dXMuaWQgPT09IEV2ZW50QW5kTWVldGluZ1N0YXR1cy5VUENPTUlORztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uRmlsdGVyRXZlbnRzQW5kTWVldGluZ0xpc3Qob3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGV2ZW50cyBvciBtZWV0aW5ncyBiYXNlZCBvbiB0aGUgZmlsdGVyIGFwcGxpZWQgd2l0aCBncm91cHMgYW5kIHN0YXR1cy5cclxuICAgKiBAcGFyYW0ge0ZpbHRlcnNBbmRPcHRpb25zW119IHNlbGVjdGVkT3B0aW9uc1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqIEByZXR1cm4geyp9XHJcbiAgICoqL1xyXG4gIG9uRmlsdGVyRXZlbnRzQW5kTWVldGluZ0xpc3Qoc2VsZWN0ZWRPcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9uc1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RhdHVzSWRzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBJZHMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMgPSB7fTtcclxuICAgIHRoaXMuc2VsZWN0ZWRTdGF0dXMgPSB7fTtcclxuICAgIHRoaXMuZ2V0U2VsZWN0ZWRGaWx0ZXJPcHRpb25zQW5kSWRzKFxyXG4gICAgICBzZWxlY3RlZE9wdGlvbnMsXHJcbiAgICAgIEZpbHRlclR5cGUuU1RBVFVTLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkU3RhdHVzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkU3RhdHVzSWRzXHJcbiAgICApO1xyXG4gICAgdGhpcy5nZXRTZWxlY3RlZEZpbHRlck9wdGlvbnNBbmRJZHMoXHJcbiAgICAgIHNlbGVjdGVkT3B0aW9ucyxcclxuICAgICAgRmlsdGVyVHlwZS5SRUxBVEVEX0dST1VQLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBJZHNcclxuICAgICk7XHJcbiAgICBpZiAoc2VsZWN0ZWRPcHRpb25zPy5sZW5ndGggPT09IDAgJiYgdGhpcy50cmltbWVkU2VhcmNoVGVybSA9PT0gJycpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFN0YXR1c0lkcyA9IFtcclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdTdGF0dXMuSU5QUk9HUkVTUyxcclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdTdGF0dXMuVVBDT01JTkcsXHJcbiAgICAgIF07XHJcbiAgICAgIGNvbnN0IHBheWxvYWQ6IEdldEV2ZW50c0FuZE1lZXRpbmdzUGF5bG9hZCA9IHtcclxuICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICBldmVudElkOiBudWxsLFxyXG4gICAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgICAgYXNjZW5kaW5nT3JkZXI6IHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb24sXHJcbiAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgIGdyb3VwSWRzOiBbLi4udGhpcy5zZWxlY3RlZEdyb3VwSWRzXSxcclxuICAgICAgICAgICAgc3RhdHVzOiBbLi4udGhpcy5zZWxlY3RlZFN0YXR1c0lkc10sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZ2V0RXZlbnRzQW5kTWVldGluZ3MocGF5bG9hZCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50cmltbWVkU2VhcmNoVGVybSkge1xyXG4gICAgICB0aGlzLm9uRXZlbnRzT3JNZWV0aW5nc1NlYXJjaENsaWNrKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXlsb2FkOiBHZXRFdmVudHNBbmRNZWV0aW5nc1BheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBldmVudElkOiBudWxsLFxyXG4gICAgICAgIHNvcnRDb2x1bW46IHRoaXMuZGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICBhc2NlbmRpbmdPcmRlcjogdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbixcclxuICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgIGZpbHRlcjoge1xyXG4gICAgICAgICAgZ3JvdXBJZHM6IFsuLi50aGlzLnNlbGVjdGVkR3JvdXBJZHNdLFxyXG4gICAgICAgICAgc3RhdHVzOiBbLi4udGhpcy5zZWxlY3RlZFN0YXR1c0lkc10sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZXRFdmVudHNBbmRNZWV0aW5ncyhwYXlsb2FkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgc2VsZWN0ZWQgb3B0aW9ucyBvZiBmaWx0ZXJzIGFuZCByZXR1cm5zIGlkIG9mIHNlbGVjdGVkIG9wdGlvbnMuXHJcbiAgICogQHBhcmFtIHtGaWx0ZXJzQW5kT3B0aW9uc1tdfSBzZWxlY3RlZE9wdGlvbnNcclxuICAgKiBAcGFyYW0ge0ZpbHRlclR5cGV9IGZpbHRlclR5cGVcclxuICAgKiBAcGFyYW0ge0ZpbHRlcnNBbmRPcHRpb25zfSBzZWxlY3RlZEZpbHRlck9wdGlvbnNcclxuICAgKiBAcmV0dXJuIHsqfVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqKi9cclxuICBnZXRTZWxlY3RlZEZpbHRlck9wdGlvbnNBbmRJZHMoXHJcbiAgICBzZWxlY3RlZE9wdGlvbnM6IEZpbHRlcnNBbmRPcHRpb25zW10sXHJcbiAgICBmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlLFxyXG4gICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9ucyxcclxuICAgIHNlbGVjdGVkRmlsdGVySWRzOiBzdHJpbmdbXVxyXG4gICkge1xyXG4gICAgc2VsZWN0ZWRPcHRpb25zPy5mb3JFYWNoKChzZWxlY3RlZE9wdGlvbikgPT4ge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIG9wdGlvbnNdIG9mIE9iamVjdC5lbnRyaWVzKHNlbGVjdGVkT3B0aW9uKSkge1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0gZmlsdGVyVHlwZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEZpbHRlck9wdGlvbnNMaXN0OiBDaGVja2JveE9wdGlvbltdID0gW107XHJcbiAgICAgICAgICAgIG9wdGlvbnM/LmZvckVhY2goKG9wdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVySWRzLnB1c2gob3B0aW9uLmlkIGFzIHN0cmluZyk7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zTGlzdC5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBzZWxlY3RlZEZpbHRlck9wdGlvbnNba2V5XSA9IHNlbGVjdGVkRmlsdGVyT3B0aW9uc0xpc3Q7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHNlbGVjdGVkIGZpbHRlciBvcHRpb25zIGZvciByZWxhdGVkIGdyb3VwcyBvciBzdGF0dXMgZmlsdGVyIGRlcGVuZHMgb24gdGhlIHNlbGVjdGlvbi5cclxuICAgKiBAcGFyYW0ge0NoaXBPcHRpb259IG9wdGlvblxyXG4gICAqIEByZXR1cm4geyp9XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2V0U2VsZWN0ZWRGaWx0ZXJPcHRpb25zKG9wdGlvbjogQ2hpcE9wdGlvbik6IHZvaWQge1xyXG4gICAgc3dpdGNoIChvcHRpb24uaWQpIHtcclxuICAgICAgY2FzZSBGaWx0ZXJUeXBlLlJFTEFURURfR1JPVVA6IHtcclxuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSB0aGlzLmdyb3VwcztcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIEZpbHRlclR5cGUuU1RBVFVTOiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zID0gdGhpcy5zdGF0dXNPcHRpb25zO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgZ3JvdXBzIGZyb20gc2VydmVyIHVzaW5nIGdldEdyb3VwcygpIG9mIGV2ZW50c0FuZE1lZXRpbmdzU2VydmljZSBiYXNlZCBvbiByb2xlQmFzZWQgZmxhZy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cE9wdGlvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAgICAuZ2V0R3JvdXBzKGZhbHNlKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IEdldEdyb3VwUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJlcz8uYm9keT8uZm9yRWFjaCgoZ3JvdXA6IEdyb3VwSW5mbykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdyb3Vwcz8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IGdyb3VwPy5ncm91cElkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGdyb3VwPy5ncm91cEFjcm9ueW0sXHJcbiAgICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ1wiXHJcbiAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmctLW1vYmlsZS12aWV3IHAtMCcgOiAnJ1wiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2hlYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcGItM1wiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2hlYWRlci0tbW9iaWxlLXZpZXcnIDogJydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPHBcclxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS10aXRsZS1sZy0yNCcgOiAnaWVlZXNhLWhlYWRsaW5lLWxnLTM0J1wiXHJcbiAgICA+XHJcbiAgICAgIHt7IHNjcmVlblRleHRzPy50aXRsZSB9fVxyXG4gICAgPC9wPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zdGFydCBnYXAtbGctMyBnYXAtbWQtMyBnYXAtc20tMyBnYXAtMyBjb2wtbWQtNSBjb2wtbGctNCBqdXN0aWZ5LWNvbnRlbnQtZW5kIHBzLTBcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTW9iaWxlVmlld1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hGaWVsZFwiPiA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cImlzQ3JlYXRlRXZlbnRBbmRNZWV0aW5nQWxsb3dlZFwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nX19oZWFkZXJfX2NyZWF0ZS1idXR0b24gZC1ub25lIGQtc20tbm9uZSBkLW1kLWJsb2NrIGQtbGctYmxvY2sgZC14bC1ibG9jayBjb2wtbGctMyBwYi0wXCJcclxuICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb0NyZWF0ZUV2ZW50TWVldGluZ0Zvcm0oKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2hlYWRlcl9fY3JlYXRlLWJ1dHRvbl9faWNvbiBtZS0yXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8dXNlIFthdHRyLnhsaW5rOmhyZWZdPVwiY3JlYXRlQnV0dG9uPy5pY29uVVJMXCI+PC91c2U+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nX19oZWFkZXJfX2NyZWF0ZS1idXR0b25fX2xhYmVsXCI+e3tcclxuICAgICAgICAgIGNyZWF0ZUJ1dHRvbj8ubGFiZWxcclxuICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXggZC1zbS1mbGV4IGQtbWQtbm9uZSBkLWxnLW5vbmUgZC14bC1ub25lIGllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2hlYWRlcl9fbW9iaWxlLWljb25zIGdhcC0yXCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNjcmVlblRleHRzPy5zZWFyY2hQbGFjZWhvbGRlclRleHRcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkV2ZW50TWVldGluZ1NlYXJjaCgpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzcyBzZWFyY2gtZXZlbnRzLW1lZXRpbmdzLWljb25cIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJpc0NyZWF0ZUV2ZW50QW5kTWVldGluZ0FsbG93ZWRcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cImNyZWF0ZUJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJuYXZpZ2F0ZVRvQ3JlYXRlRXZlbnRNZWV0aW5nRm9ybSgpXCJcclxuICAgICAgPlxyXG4gICAgICA8L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxuZy10ZW1wbGF0ZSAjc2VhcmNoRmllbGQ+XHJcbiAgICA8aWVlZXNhLXNlYXJjaFxyXG4gICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJzY3JlZW5UZXh0cz8uc2VhcmNoUGxhY2Vob2xkZXJUZXh0XCJcclxuICAgICAgW3NlYXJjaFR5cGVdPVwic2VhcmNoVHlwZVwiXHJcbiAgICAgIChzZWFyY2hWYWx1ZSk9XCJvbkV2ZW50c09yTWVldGluZ3NTZWFyY2hDbGljaygkZXZlbnQpXCJcclxuICAgICAgW3NlYXJjaFRlcm1dPVwidHJpbW1lZFNlYXJjaFRlcm1cIlxyXG4gICAgICBbbWluQ2hhcmFjdGVyVG9TZWFyY2hdPVwibWluQ2hhcmFjdGVyVG9TZWFyY2hcIlxyXG4gICAgICBbc3VwcG9ydE1lc3NhZ2VdPVwic3VwcG9ydE1lc3NhZ2VcIlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX3NlYXJjaC13cmFwcGVyXCJcclxuICAgID48L2llZWVzYS1zZWFyY2g+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2ZpbHRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcGItM1wiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2ZpbHRlci0tbW9iaWxlLXZpZXcnIDogJydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGllZWVzYS1maWx0ZXJcclxuICAgICAgI2llZWVzYUZpbHRlclxyXG4gICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcclxuICAgICAgW2FwcGxpZWRGaWx0ZXJPcHRpb25zXT1cImFwcGxpZWRGaWx0ZXJPcHRpb25zXCJcclxuICAgICAgW3NlbGVjdGVkRmlsdGVyT3B0aW9uc109XCJmaWx0ZXJPcHRpb25zXCJcclxuICAgICAgKHNlbGVjdGVkRmlsdGVyKT1cInNldFNlbGVjdGVkRmlsdGVyT3B0aW9ucygkZXZlbnQpXCJcclxuICAgICAgKHJlbW92ZUZpbHRlcmVkT3B0aW9uKT1cIm9uUmVtb3ZhbE9mRmlsdGVyZWRPcHRpb24oJGV2ZW50KVwiXHJcbiAgICAgIChmaWx0ZXJlZE9wdGlvbnMpPVwib25TZWxlY3RlZEZpbHRlck9wdGlvbnMoJGV2ZW50KVwiXHJcbiAgICAgIFtjYW5TaG93U2VsZWN0aW9uXT1cInRydWVcIlxyXG4gICAgPjwvaWVlZXNhLWZpbHRlcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX3ZpZXdcIlxyXG4gICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgIGlzTW9iaWxlVmlldyA/ICdpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nX192aWV3LS1tb2JpbGUtdmlldyBwLTAnIDogJydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX3RhYi1hY3Rpb24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICAgICAgPyAnaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ19fdGFiLWFjdGlvbi0tbW9iaWxlLXZpZXcgcGItMydcclxuICAgICAgICAgIDogJydcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGllZWVzYS10b2dnbGUtYnV0dG9uXHJcbiAgICAgICAgW3NlbGVjdGVkTGFiZWxdPVwibGlzdE9yQ2FsZW5kYXJWaWV3c1swXT8ubGFiZWwgPz8gJydcIlxyXG4gICAgICAgIFtidXR0b25zXT1cImxpc3RPckNhbGVuZGFyVmlld3NcIlxyXG4gICAgICAgICh0b2dnbGVTZWxlY3RlZCk9XCJvblRvZ2dsZUJ1dHRvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgPjwvaWVlZXNhLXRvZ2dsZS1idXR0b24+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJkZWxldGVCdXR0b25cIlxyXG4gICAgICAgICpuZ0lmPVwiaXNEZWxldGVFdmVudEFuZE1lZXRpbmdBbGxvd2VkXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9wZW5EZWxldGVDb25maXJtYXRpb25Nb2RhbCgpXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2RlbGV0ZS1idXR0b25cIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxwXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ19fdGFiLWFjdGlvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcclxuICAgICAgKm5nSWY9XCJ0cmltbWVkU2VhcmNoVGVybVwiXHJcbiAgICAgIFtpbm5lckhUTUxdPVwic2VhcmNoUmVzdWx0TWVzc2FnZSB8IHNhZmUgOiBzYWZlVHlwZVwiXHJcbiAgICA+PC9wPlxyXG4gICAgPGllZWVzYS1kYXRhLXRhYmxlXHJcbiAgICAgICpuZ0lmPVwic2VsZWN0ZWRWaWV3VHlwZSA9PT0gZXZlbnRBbmRNZWV0aW5nVmlld1R5cGUuTElTVF9WSUVXXCJcclxuICAgICAgW3RhYmxlRGF0YUluZm9dPVwiZXZlbnRzQW5kTWVldGluZ3NMaXN0XCJcclxuICAgICAgW25lc3RlZFRhYmxlRGF0YUluZm9dPVwibWVldGluZ3NcIlxyXG4gICAgICBbY29sdW1uU2NoZW1hSW5mb109XCJjb2x1bW5TY2hlbWFcIlxyXG4gICAgICBbbmVzdGVkVGFibGVDb2x1bW5TY2hlbWFJbmZvXT1cIm5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hXCJcclxuICAgICAgW3BhZ2luYXRvckNvbmZpZ109XCJwYWdpbmF0b3JDb25maWdcIlxyXG4gICAgICBbbmVzdGVkUGFnaW5hdG9yQ29uZmlnXT1cIm5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnXCJcclxuICAgICAgW3ZpZXdBbGxdPVwidmlld0FsbE1lZXRpbmdzVGV4dFwiXHJcbiAgICAgIFt0YWJsZUFjdGlvbnNdPVwiZXZlbnRzQW5kTWVldGluZ3NBY3Rpb25zXCJcclxuICAgICAgW25lc3RlZFRhYmxlUm93QWN0aW9uc109XCJzY3JlZW5UZXh0cz8ubWVldGluZ0FjdGlvbnNcIlxyXG4gICAgICBbY2xhc3NOYW1lXT1cIidpZWVlc2Etdmlldy1ldmVudHMtYW5kLW1lZXRpbmdzJ1wiXHJcbiAgICAgIFtsZWdlbmRzXT1cImV2ZW50QW5kTWVldGluZ0xlZ2VuZHNcIlxyXG4gICAgICAoY29sdW1uRGF0YU9uUm93TGlua0NsaWNrKT1cIm5hdmlnYXRlVG9WaWV3RGV0YWlsc1BhZ2UoJGV2ZW50KVwiXHJcbiAgICAgIChtZW51QWN0aW9uQ2xpY2spPVwiZWRpdEV2ZW50TWVldGluZygkZXZlbnQpXCJcclxuICAgICAgKHJvd0V4cGFuc2lvbkNsaWNrKT1cImdldEV2ZW50TWVldGluZ3NPblJvd0V4cGFuZCgkZXZlbnQpXCJcclxuICAgICAgKHNlbGVjdEFjdGlvbk1lbnUpPVwiaGFuZGxlRWRpdEFjdGlvbnMoJGV2ZW50KVwiXHJcbiAgICAgIChwYWdpbmF0aW9uQ2hhbmdlKT1cIm9uRXZlbnRzQW5kTWVldGluZ3NUYWJsZVBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIChzb3J0Q2hhbmdlKT1cIm9uU29ydE1lZXRpbmdPckV2ZW50KCRldmVudClcIlxyXG4gICAgICAoc2VsZWN0ZWRSb3dzSW5mbyk9XCJnZXRTZWxlY3RlZE1lZXRpbmdzQW5kRXZlbnRzVG9EZWxldGUoJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2EtZGF0YS10YWJsZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==