igniteui-angular 17.1.1 → 17.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { IgxButtonDirective } from './button.directive';
3
+ import { IgxIconButtonDirective } from './icon-button.directive';
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * @hidden
@@ -7,14 +8,14 @@ import * as i0 from "@angular/core";
7
8
  */
8
9
  export class IgxButtonModule {
9
10
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: IgxButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: IgxButtonModule, imports: [IgxButtonDirective], exports: [IgxButtonDirective] }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: IgxButtonModule, imports: [IgxButtonDirective, IgxIconButtonDirective], exports: [IgxButtonDirective, IgxIconButtonDirective] }); }
11
12
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: IgxButtonModule }); }
12
13
  }
13
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: IgxButtonModule, decorators: [{
14
15
  type: NgModule,
15
16
  args: [{
16
- imports: [IgxButtonDirective],
17
- exports: [IgxButtonDirective]
17
+ imports: [IgxButtonDirective, IgxIconButtonDirective],
18
+ exports: [IgxButtonDirective, IgxIconButtonDirective]
18
19
  }]
19
20
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXhEOzs7R0FHRztBQUtILE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7K0dBQWYsZUFBZSxZQUhkLGtCQUFrQixhQUNsQixrQkFBa0I7K0dBRW5CLGVBQWU7OzJGQUFmLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuL2J1dHRvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIElNUE9SVEFOVDogVGhlIGZvbGxvd2luZyBpcyBOZ01vZHVsZSBleHBvcnRlZCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgYmVmb3JlIHN0YW5kYWxvbmUgY29tcG9uZW50c1xuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtJZ3hCdXR0b25EaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ3hCdXR0b25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneEJ1dHRvbk1vZHVsZSB7fVxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRWpFOzs7R0FHRztBQUtILE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7K0dBQWYsZUFBZSxZQUhkLGtCQUFrQixFQUFFLHNCQUFzQixhQUMxQyxrQkFBa0IsRUFBRSxzQkFBc0I7K0dBRTNDLGVBQWU7OzJGQUFmLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsc0JBQXNCLENBQUM7b0JBQ3JELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLHNCQUFzQixDQUFDO2lCQUN4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SWNvbkJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4vaWNvbi1idXR0b24uZGlyZWN0aXZlJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBJTVBPUlRBTlQ6IFRoZSBmb2xsb3dpbmcgaXMgTmdNb2R1bGUgZXhwb3J0ZWQgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGJlZm9yZSBzdGFuZGFsb25lIGNvbXBvbmVudHNcbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbSWd4QnV0dG9uRGlyZWN0aXZlLCBJZ3hJY29uQnV0dG9uRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbSWd4QnV0dG9uRGlyZWN0aXZlLCBJZ3hJY29uQnV0dG9uRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hCdXR0b25Nb2R1bGUge31cbiJdfQ==
@@ -1,4 +1,4 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const IGX_GRID_BASE = /*@__PURE__*/ new InjectionToken('IgxGridBaseToken');
3
3
  export const IGX_GRID_SERVICE_BASE = /*@__PURE__*/ new InjectionToken('IgxGridServiceBaseToken');
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvY29tbW9uL2dyaWQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sRUFBK0MsY0FBYyxFQUE0QyxNQUFNLGVBQWUsQ0FBQztBQTZCdEksTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQSxJQUFJLGNBQWMsQ0FBVyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLGFBQWEsQ0FBQSxJQUFJLGNBQWMsQ0FBa0IseUJBQXlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbHVtblBpbm5pbmdQb3NpdGlvbiwgRmlsdGVyTW9kZSwgR3JpZFBhZ2luZ01vZGUsIEdyaWRTZWxlY3Rpb25Nb2RlLCBHcmlkU3VtbWFyeUNhbGN1bGF0aW9uTW9kZSwgR3JpZFN1bW1hcnlQb3NpdGlvbiwgR3JpZFZhbGlkYXRpb25UcmlnZ2VyLCBSb3dQaW5uaW5nUG9zaXRpb24gfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7XG4gICAgSVNlYXJjaEluZm8sIElHcmlkQ2VsbEV2ZW50QXJncywgSVJvd1NlbGVjdGlvbkV2ZW50QXJncywgSUNvbHVtblNlbGVjdGlvbkV2ZW50QXJncyxcbiAgICBJUGluQ29sdW1uQ2FuY2VsbGFibGVFdmVudEFyZ3MsIElDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZEV2ZW50QXJncywgSUNvbHVtblZpc2liaWxpdHlDaGFuZ2luZ0V2ZW50QXJncyxcbiAgICBJUm93RHJhZ0VuZEV2ZW50QXJncywgSUNvbHVtbk1vdmluZ1N0YXJ0RXZlbnRBcmdzLCBJQ29sdW1uTW92aW5nRW5kRXZlbnRBcmdzLFxuICAgIElSb3dEYXRhRXZlbnRBcmdzLCBJR3JpZEtleWRvd25FdmVudEFyZ3MsIElSb3dEcmFnU3RhcnRFdmVudEFyZ3MsXG4gICAgSUNvbHVtbk1vdmluZ0V2ZW50QXJncywgSVBpbkNvbHVtbkV2ZW50QXJncyxcbiAgICBJQWN0aXZlTm9kZUNoYW5nZUV2ZW50QXJncyxcbiAgICBJQ2VsbFBvc2l0aW9uLCBJRmlsdGVyaW5nRXZlbnRBcmdzLCBJQ29sdW1uUmVzaXplRXZlbnRBcmdzLCBJUm93VG9nZ2xlRXZlbnRBcmdzLCBJR3JpZFRvb2xiYXJFeHBvcnRFdmVudEFyZ3MsIElQaW5Sb3dFdmVudEFyZ3MsXG4gICAgSUdyaWRSb3dFdmVudEFyZ3MsIElHcmlkRWRpdEV2ZW50QXJncywgSVJvd0RhdGFDYW5jZWxhYmxlRXZlbnRBcmdzLCBJR3JpZEVkaXREb25lRXZlbnRBcmdzXG59IGZyb20gJy4uL2NvbW1vbi9ldmVudHMnO1xuaW1wb3J0IHsgRGlzcGxheURlbnNpdHksIElEZW5zaXR5Q2hhbmdlZEV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2NvcmUvZGVuc2l0eSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3Rpb25Ub2tlbiwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9ucy10cmVlJztcbmltcG9ydCB7IElHcmlkUmVzb3VyY2VTdHJpbmdzIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuL2dyaWQtcmVzb3VyY2VzJztcbmltcG9ydCB7IElHcm91cGluZ0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUdyb3VwQnlSZWNvcmQgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBieS1yZWNvcmQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElHcm91cEJ5RXhwYW5kU3RhdGUgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBieS1leHBhbmQtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneFBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IElneENlbGwsIElneEVkaXRSb3cgfSBmcm9tICcuL2NydWQuc2VydmljZSc7XG5pbXBvcnQgeyBHcmlkU2VsZWN0aW9uUmFuZ2UgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEZpbHRlcmluZ0xvZ2ljIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVyaW5nU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IERyb3BQb3NpdGlvbiwgSWd4Q29sdW1uTW92aW5nU2VydmljZSB9IGZyb20gJy4uL21vdmluZy9tb3Zpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hPdmVybGF5T3V0bGV0RGlyZWN0aXZlLCBJZ3hUb2dnbGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElUcmVlR3JpZFJlY29yZCB9IGZyb20gJy4uL3RyZWUtZ3JpZC90cmVlLWdyaWQuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTdGF0ZSwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IERhdGFUeXBlLCBHcmlkQ29sdW1uRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IElneEZpbHRlcmluZ09wZXJhbmQgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLWNvbmRpdGlvbic7XG5pbXBvcnQgeyBJQ29sdW1uUGlwZUFyZ3MsIElGaWVsZFBpcGVBcmdzLCBJU29ydGluZ09wdGlvbnMsIE1STFJlc2l6ZUNvbHVtbkluZm8gfSBmcm9tICcuLi9jb2x1bW5zL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgSWd4U3VtbWFyeVJlc3VsdCB9IGZyb20gJy4uL3N1bW1hcmllcy9ncmlkLXN1bW1hcnknO1xuaW1wb3J0IHsgSVNvcnRpbmdFeHByZXNzaW9uLCBJU29ydGluZ1N0cmF0ZWd5LCBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgSUdyaWRHcm91cGluZ1N0cmF0ZWd5LCBJR3JpZFNvcnRpbmdTdHJhdGVneSB9IGZyb20gJy4vc3RyYXRlZ3knO1xuaW1wb3J0IHsgSUZvck9mU3RhdGUsIElneEdyaWRGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmxheVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3ZlcmxheS91dGlsaXRpZXMnO1xuaW1wb3J0IHsgSURpbWVuc2lvbnNDaGFuZ2UsIElQaXZvdENvbmZpZ3VyYXRpb24sIElQaXZvdERpbWVuc2lvbiwgSVBpdm90S2V5cywgSVBpdm90VmFsdWUsIElWYWx1ZXNDaGFuZ2UsIFBpdm90RGltZW5zaW9uVHlwZSB9IGZyb20gJy4uL3Bpdm90LWdyaWQvcGl2b3QtZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSURhdGFDbG9uZVN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtY2xvbmUtc3RyYXRlZ3knO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElneEdyaWRWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uL2dyaWQvZ3JpZC12YWxpZGF0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgSUdYX0dSSURfQkFTRSA9IC8qQF9fUFVSRV9fKi9uZXcgSW5qZWN0aW9uVG9rZW48R3JpZFR5cGU+KCdJZ3hHcmlkQmFzZVRva2VuJyk7XG5leHBvcnQgY29uc3QgSUdYX0dSSURfU0VSVklDRV9CQVNFID0gLypAX19QVVJFX18qL25ldyBJbmplY3Rpb25Ub2tlbjxHcmlkU2VydmljZVR5cGU+KCdJZ3hHcmlkU2VydmljZUJhc2VUb2tlbicpO1xuXG4vKiogSW50ZXJmYWNlIHJlcHJlc2VudGluZyBhIHNlZ21lbnQgb2YgYSBwYXRoIGluIGEgaGllcmFyY2hpY2FsIGdyaWQuICovXG5leHBvcnQgaW50ZXJmYWNlIElQYXRoU2VnbWVudCB7XG4gICAgLyoqXG4gICAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSByb3cgd2l0aGluIHRoZSBzZWdtZW50LlxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMS4wXG4gICAgICogVXNlIGByb3dLZXlgIGluc3RlYWRcbiAgICAgKi9cbiAgICByb3dJRDogYW55O1xuICAgIHJvd0tleTogYW55O1xuICAgIC8qKiBUaGUga2V5IHJlcHJlc2VudGluZyB0aGUgcm93J3MgJ2hpZXJhcmNoaWNhbCBsZXZlbC4gKi9cbiAgICByb3dJc2xhbmRLZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZERhdGFCaW5kYWJsZSB7XG4gICAgZGF0YTogYW55W10gfCBudWxsO1xuICAgIGdldCBmaWx0ZXJlZERhdGEoKTogYW55W107XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHJlcHJlc2VudGluZyBhIGNlbGwgaW4gdGhlIGdyaWQuIEl0IGlzIGVzc2VudGlhbGx5IHRoZSBibHVlcHJpbnQgdG8gYSBjZWxsIG9iamVjdC5cbiAqIENvbnRhaW5zIGRlZmluaXRpb25zIG9mIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMsIHJlbGV2YW50IHRvIGEgY2VsbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxUeXBlIHtcbiAgICAvKiogVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGNlbGwuICovXG4gICAgdmFsdWU6IGFueTtcbiAgICAvKiogVGhlIHZhbHVlIHRvIGRpc3BsYXkgd2hlbiB0aGUgY2VsbCBpcyBpbiBlZGl0IG1vZGUuICovXG4gICAgZWRpdFZhbHVlOiBhbnk7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjZWxsIGlzIGN1cnJlbnRseSBzZWxlY3RlZC4gSXQgaXMgZmFsc2UsIGlmIHRoZSBzZWxsIGlzIG5vdCBzZWxlY3RlZCwgYW5kIHRydWUsIGlmIGl0IGlzLiAqL1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY2VsbCBpcyBjdXJyZW50bHkgYWN0aXZlIChmb2N1c2VkKS4gKi9cbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjZWxsIGNhbiBiZSBlZGl0ZWQuICovXG4gICAgZWRpdGFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjZWxsIGlzIGN1cnJlbnRseSBpbiBlZGl0IG1vZGUuICovXG4gICAgZWRpdE1vZGU6IGJvb2xlYW47XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG5hdGl2ZSBIVE1MIGVsZW1lbnQgb2YgdGhlIGNlbGwgaXRzZWxmICovXG4gICAgbmF0aXZlRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBjb2x1bW4gdGhhdCB0aGUgY2VsbCBiZWxvbmdzIHRvLiAqL1xuICAgIGNvbHVtbjogQ29sdW1uVHlwZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgcm93IHRoYXQgdGhlIGNlbGwgYmVsb25ncyB0byAqL1xuICAgIHJvdzogUm93VHlwZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgZ3JpZCBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBjZWxsICovXG4gICAgZ3JpZDogR3JpZFR5cGU7XG4gICAgLyoqIE9wdGlvbmFsOyBBbiBvYmplY3QgaWRlbnRpZnlpbmcgdGhlIGNlbGwuIEl0IGNvbnRhaW5zIHJvd0lELCBjb2x1bW5JRCwgYW5kIHJvd0luZGV4IG9mIHRoZSBjZWxsLiAqL1xuICAgIGlkPzogeyByb3dJRDogYW55OyBjb2x1bW5JRDogbnVtYmVyOyByb3dJbmRleDogbnVtYmVyIH07XG4gICAgLyoqIE9wdGlvbmFsOyBUaGUgYGNlbGxJRGAgaXMgdGhlIHVuaXF1ZSBrZXksIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGNlbGwgKi9cbiAgICBjZWxsSUQ/OiBhbnk7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWw7IEFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHZhbGlkYXRpb24gc3RhdGUgb2YgdGhlIGNlbGwuXG4gICAgICogV2hldGhlciBpdCdzIHZhbGlkIG9yIGludmFsaWQsIGFuZCBpZiBpdCBoYXMgZXJyb3JzXG4gICAgICovXG4gICAgcmVhZG9ubHkgdmFsaWRhdGlvbj86IElHcmlkVmFsaWRhdGlvblN0YXRlO1xuICAgIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgICAvKiogQW4gb3B0aW9uYWwgdGl0bGUgdG8gZGlzcGxheSBmb3IgdGhlIGNlbGwgKi9cbiAgICB0aXRsZT86IGFueTtcbiAgICAvKiogVGhlIENTUyB3aWR0aCBvZiB0aGUgY2VsbCBhcyBhIHN0cmluZy4gKi9cbiAgICB3aWR0aDogc3RyaW5nO1xuICAgIC8qKiBUaGUgaW5kZXggb2YgdGhlIGNvbHVtbiB0aGF0IHRoZSBjZWxsIGJlbG9uZ3MgdG8uIEl0IGNvdW50cyBvbmx5IHRoZSB2aXNpYmxlIChub3QgaGlkZGVuKSBjb2x1bW5zICovXG4gICAgdmlzaWJsZUNvbHVtbkluZGV4PzogbnVtYmVyO1xuICAgIC8qKiBBIG1ldGhvZCBkZWZpbml0aW9uIHRvIHVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIGNlbGwuICovXG4gICAgdXBkYXRlOiAodmFsdWU6IGFueSkgPT4gdm9pZDtcbiAgICAvKiogQSBtZXRob2QgZGVmaW5pdGlvbiB0byBzdGFydCBvciBlbmQgdGhlIGVkaXQgbW9kZSBvZiB0aGUgY2VsbC4gSXQgdGFrZXMgYSBib29sZWFuIHZhbHVlIGFzIGFuIGFyZ3VtZW50Ki9cbiAgICBzZXRFZGl0TW9kZT8odmFsdWU6IGJvb2xlYW4pOiB2b2lkO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsO1xuICAgICAqIEEgbWV0aG9kIGRlZmluaXRpb24gdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBjZWxsIHRvIGZpdCB0aGUgY29udGVudFxuICAgICAqIFRoZSBtZXRob2QgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBjZWxsIHdpdGggdGhlIGxvbmdlc3QgY29udGVudCBhbmQgcmVzaXplIGFsbCBjZWxscyB0byB0aGF0IHNpemVcbiAgICAgKi9cbiAgICBjYWxjdWxhdGVTaXplVG9GaXQ/KHJhbmdlOiBhbnkpOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIG1ldGhvZCB0byBhY3RpdmF0ZSB0aGUgY2VsbC5cbiAgICAgKiBJdCB0YWtlcyBhIGZvY3VzIG9yIGtleWJvYXJkIGV2ZW50IGFzIGFuIGFyZ3VtZW50XG4gICAgICovXG4gICAgYWN0aXZhdGU/KGV2ZW50OiBGb2N1c0V2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIG1ldGhvZCB0byBoYW5kbGUgZG91YmxlLWNsaWNrIGV2ZW50cyBvbiB0aGUgY2VsbFxuICAgICAqIEl0IHRha2VzIGEgbW91c2UgZXZlbnQgYXMgYW4gYXJndW1lbnRcbiAgICAgKi9cbiAgICBvbkRvdWJsZUNsaWNrPyhldmVudDogTW91c2VFdmVudCk6IHZvaWQ7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIG1ldGhvZCB0byBoYW5kbGUgY2xpY2sgZXZlbnRzIG9uIHRoZSBjZWxsXG4gICAgICogSXQgdGFrZXMgYSBtb3VzZSBldmVudCBhcyBhbiBhcmd1bWVudFxuICAgICAqL1xuICAgIG9uQ2xpY2s/KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZDtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW50aW5nIGEgaGVhZGVyIGNlbGwgaW4gdGhlIGdyaWQuIEl0IGlzIGVzc2VudGlhbGx5IHRoZSBibHVlcHJpbnQgdG8gYSBoZWFkZXIgY2VsbCBvYmplY3QuXG4gKiBDb250YWlucyBkZWZpbml0aW9ucyBvZiBwcm9wZXJ0aWVzLCByZWxldmFudCB0byB0aGUgaGVhZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyVHlwZSB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG5hdGl2ZSBIVE1MIGVsZW1lbnQgb2YgdGhlIGNlbGwgaXRzZWxmICovXG4gICAgbmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgLyoqIFRoZSBjb2x1bW4gdGhhdCB0aGUgaGVhZGVyIGNlbGwgcmVwcmVzZW50cy4gKi9cbiAgICBjb2x1bW46IENvbHVtblR5cGU7XG4gICAgZGVuc2l0eTogRGlzcGxheURlbnNpdHk7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb2x1bW4gaXMgY3VycmVudGx5IHNvcnRlZC4gKi9cbiAgICBzb3J0ZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjZWxsIGNhbiBiZSBzZWxlY3RlZCAqL1xuICAgIHNlbGVjdGFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjZWxsIGlzIGN1cnJlbnRseSBzZWxlY3RlZCAqL1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29sdW1uIGhlYWRlciBpcyBhIHRpdGxlIGNlbGwuICovXG4gICAgdGl0bGU6IGJvb2xlYW47XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIHNvcnRpbmcgZGlyZWN0aW9uIG9mIHRoZSBjb2x1bW4gKGFzY2VuZGluZywgZGVzY2VuZGluZyBvciBub25lKS4gKi9cbiAgICBzb3J0RGlyZWN0aW9uOiBTb3J0aW5nRGlyZWN0aW9uO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSByZXByZXNlbnRpbmcgYSByb3cgaW4gdGhlIGdyaWQuIEl0IGlzIGVzc2VudGlhbGx5IHRoZSBibHVlcHJpbnQgdG8gYSByb3cgb2JqZWN0LlxuICogQ29udGFpbnMgZGVmaW5pdGlvbnMgb2YgcHJvcGVydGllcyBhbmQgbWV0aG9kcywgcmVsZXZhbnQgdG8gYSByb3dcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3dUeXBlIHtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgbmF0aXZlIEhUTUwgZWxlbWVudCBvZiB0aGUgcm93IGl0c2VsZiAqL1xuICAgIG5hdGl2ZUVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgICAvKiogVGhlIGluZGV4IG9mIHRoZSByb3cgd2l0aGluIHRoZSBncmlkICovXG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICB2aWV3SW5kZXg6IG51bWJlcjtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJvdyBpcyBncm91cGVkLiAqL1xuICAgIGlzR3JvdXBCeVJvdz86IGJvb2xlYW47XG4gICAgaXNTdW1tYXJ5Um93PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEEgbWFwIG9mIGNvbHVtbiBmaWVsZCBuYW1lcyB0byB0aGUgc3VtbWFyeSByZXN1bHRzIGZvciB0aGUgcm93LlxuICAgICAqL1xuICAgIHN1bW1hcmllcz86IE1hcDxzdHJpbmcsIElneFN1bW1hcnlSZXN1bHRbXT47XG4gICAgZ3JvdXBSb3c/OiBJR3JvdXBCeVJlY29yZDtcbiAgICBrZXk/OiBhbnk7XG4gICAgcmVhZG9ubHkgdmFsaWRhdGlvbj86IElHcmlkVmFsaWRhdGlvblN0YXRlO1xuICAgIGRhdGE/OiBhbnk7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIGxpc3Qgb3IgYW4gYXJyYXkgb2YgY2VsbHMsIHRoYXQgYmVsb25nIHRvIHRoZSByb3dcbiAgICAgKi9cbiAgICBjZWxscz86IFF1ZXJ5TGlzdDxDZWxsVHlwZT4gfCBDZWxsVHlwZVtdO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgcm93IGlzIGRpc2FibGVkXG4gICAgICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogVmlydHVhbGl6YXRpb24gc3RhdGUgb2YgZGF0YSByZWNvcmQgYWRkZWQgZnJvbSBjYWNoZVxuICAgICAqL1xuICAgIHZpcnREaXJSb3c/OiBJZ3hHcmlkRm9yT2ZEaXJlY3RpdmU8Q29sdW1uVHlwZSwgQ29sdW1uVHlwZVtdPjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjdXJyZW50IHJvdyBpcyBwaW5uZWQuXG4gICAgICovXG4gICAgcGlubmVkPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjdXJyZW50IHJvdyBpcyBzZWxlY3RlZFxuICAgICAqL1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjdXJyZW50IHJvdyBpcyBleHBhbmRlZC5cbiAgICAgKiBUaGUgdmFsdWUgaXMgdHJ1ZSwgaWYgdGhlIHJvdyBpcyBleHBhbmRlZCBhbmQgZmFsc2UsIGlmIGl0IGlzIGNvbGxhcHNlZFxuICAgICAqL1xuICAgIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYWRlcyB3aGV0aGVyIHRoZSByb3cgaXMgbWFya2VkIGZvciBkZWxldGlvbi5cbiAgICAgKi9cbiAgICBkZWxldGVkPzogYm9vbGVhbjtcbiAgICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBJbmRpY2FkZXMgd2hldGhlciB0aGUgcm93IGlzIGN1cnJlbnRseSBiZWluZyBlZGl0ZWQuXG4gICAgICovXG4gICAgaW5FZGl0TW9kZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBDb250YWlucyB0aGUgY2hpbGQgcm93cyBvZiB0aGUgY3VycmVudCByb3csIGlmIHRoZXJlIGFyZSBhbnkuXG4gICAgICovXG4gICAgY2hpbGRyZW4/OiBSb3dUeXBlW107XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBDb250YWlucyB0aGUgcGFyZW50IHJvdyBvZiB0aGUgY3VycmVudCByb3csIGlmIGl0IGhhcyBvbmUuXG4gICAgICogSWYgdGhlIHBhcmVudCByb3cgZXhpc3QsIGl0IG1lYW5zIHRoYXQgdGhlIGN1cnJlbnQgcm93IGlzIGEgY2hpbGQgcm93XG4gICAgICovXG4gICAgcGFyZW50PzogUm93VHlwZTtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYWRlcyB3aGV0aGVyIHRoZSBjdXJyZW50IHJvdyBoYXMgYW55IGNoaWxkIHJvd3NcbiAgICAgKi9cbiAgICBoYXNDaGlsZHJlbj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBoaWVyYXJjaGljYWwgcmVjb3JkIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm93IChmb3IgdHJlZSBncmlkcykuXG4gICAgICogSXQgaXMgb2YgdHlwZSBJVHJlZUdyaWRSZWNvcmQsIHdoaWNoIGNvbnRhaW5zIHRoZSBkYXRhLCBjaGlsZHJlbiwgdGhlIGhpZXJhcmNoaWNhbCBsZXZlbCwgZXRjLlxuICAgICAqL1xuICAgIHRyZWVSb3c/OiBJVHJlZUdyaWRSZWNvcmQ7XG4gICAgYWRkUm93VUk/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogSW5kaWNhZGVzIHdoZXRoZXIgdGhlIHJvdyBpcyBjdXJyZW50bHkgZm9jdXNlZC5cbiAgICAgKi9cbiAgICBmb2N1c2VkPzogYm9vbGVhbjtcbiAgICAvKiogUmVwcmVzZW50IHRoZSBncmlkIGluc3RhbmNlLCB0aGUgcm93IGJlbG9uZ3MgdG8gKi9cbiAgICBncmlkOiBHcmlkVHlwZTtcbiAgICBvblJvd1NlbGVjdG9yQ2xpY2s/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIG1ldGhvZCB0byBoYW5kbGUgY2xpY2sgZXZlbnQgb24gdGhlIHJvd1xuICAgICAqIEl0IHRha2VzIGEgYE1vdXNlRXZlbnRgIGFzIGFuIGFyZ3VtZW50XG4gICAgICovXG4gICAgb25DbGljaz86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEEgbWV0aG9kIHRvIGhhbmRsZSBhZGRpbmcgYSBuZXcgcm93XG4gICAgICovXG4gICAgYmVnaW5BZGRSb3c/OiAoKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogQSBtZXRob2QgdG8gaGFuZGxlIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBlbGVtZW50cyBvZiB0aGUgcm93XG4gICAgICogSXQgdGFrZXMgdGhlIG5ldyB2YWx1ZSBhcyBhbiBhcmd1bWVudFxuICAgICAqL1xuICAgIHVwZGF0ZT86ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogQSBtZXRob2QgdG8gaGFuZGxlIGRlbGV0aW5nIHJvd3NcbiAgICAgKi9cbiAgICBkZWxldGU/OiAoKSA9PiBhbnk7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIG1ldGhvZCB0byBoYW5kbGUgcGlubmluZyBhIHJvd1xuICAgICAqL1xuICAgIHBpbj86ICgpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIG1ldGhvZCB0byBoYW5kbGUgdW5waW5uaW5nIGEgcm93LCB0aGF0IGhhcyBiZWVuIHBpbm5lZFxuICAgICAqL1xuICAgIHVucGluPzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZFR5cGUge1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgaGVhZGVyPzogc3RyaW5nO1xuICAgIGRhdGFUeXBlOiBEYXRhVHlwZTtcbiAgICBmaWx0ZXJzOiBJZ3hGaWx0ZXJpbmdPcGVyYW5kO1xuICAgIHBpcGVBcmdzOiBJRmllbGRQaXBlQXJncztcbiAgICBkZWZhdWx0VGltZUZvcm1hdDogc3RyaW5nO1xuICAgIGRlZmF1bHREYXRlVGltZUZvcm1hdDogc3RyaW5nO1xuXG4gICAgZm9ybWF0dGVyKHZhbHVlOiBhbnksIHJvd0RhdGE/OiBhbnkpOiBhbnk7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbHVtbiBpbiB0aGUgYEdyaWRUeXBlYC4gSXQgaXMgZXNzZW50aWFsbHkgdGhlIGJsdWVwcmludCB0byBhIGNvbHVtbiBvYmplY3QuXG4gKiBDb250YWlucyBkZWZpbml0aW9ucyBvZiBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLCByZWxldmFudCB0byBhIGNvbHVtblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtblR5cGUgZXh0ZW5kcyBGaWVsZFR5cGUge1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBpbmN0YW5jZSBvZiB0aGUgcGFyZW50IGBHcmlkVHlwZWAgdGhhdCBjb250YWlucyB0aGlzIGNvbHVtbi4gKi9cbiAgICBncmlkOiBHcmlkVHlwZTtcbiAgICAvKiogQSBsaXN0LCBjb250YWluaW5nIGFsbCB0aGUgY2hpbGQgY29sdW1ucyB1bmRlciB0aGlzIGNvbHVtbiAoaWYgYW55KS4gKi9cbiAgICBjaGlsZHJlbjogUXVlcnlMaXN0PENvbHVtblR5cGU+O1xuICAgIC8qKiBBbiBhcnJheSwgY29udGFpbmluZyBhbGwgdGhlIGNoaWxkIGNvbHVtbnMsIGluY2x1ZGluZyBuZXN0ZWQgY2hpbGRyZW4uICovXG4gICAgYWxsQ2hpbGRyZW46IENvbHVtblR5cGVbXTtcbiAgICAvKipcbiAgICAgKiBUaGUgaGVhZGVyIGdyb3VwIGNvbXBvbmVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb2x1bW4uXG4gICAgICogQ291bGQgYmUgb2YgYW55IHR5cGVcbiAgICAqL1xuICAgIC8vIFRZUEVcbiAgICBoZWFkZXJHcm91cDogYW55O1xuICAgIC8qKlxuICAgICAqIFRoZSBoZWFkZXIgY2VsbCBjb21wb25lbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29sdW1uLlxuICAgICAqIENvdWxkIGJlIG9mIGFueSB0eXBlXG4gICAgICovXG4gICAgLy8gVFlQRVxuICAgIGhlYWRlckNlbGw6IGFueTtcbiAgICB2YWxpZGF0b3JzOiBhbnlbXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSByZWZlcmVuY2UgZm9yIHRoZSBjdXN0b20gaGVhZGVyIG9mIHRoZSBjb2x1bW5cbiAgICAgKiBJdCBpcyBvZiB0eXBlIFRlbXBsYXRlUmVmLCB3aGljaCByZXByZXNlbnRzIGFuIGVtYmVkZGVkIHRlbXBsYXRlLCB1c2VkIHRvIGluc3RhbmNpYXRlIGVtYmVkZGVkIHZpZXdzXG4gICAgICovXG4gICAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIHJlZmVyZW5jZSBmb3IgdGhlIGNvbGxhcHNpYmxlIGluZGljYXRvciBvZiB0aGUgY29sdW1uLlxuICAgICAqIEl0IGlzIG9mIHR5cGUgVGVtcGxhdGVSZWYsIHdoaWNoIHJlcHJlc2VudHMgYW4gZW1iZWRkZWQgdGVtcGxhdGUsIHVzZWQgdG8gaW5zdGFuY2lhdGUgZW1iZWRkZWQgdmlld3NcbiAgICAgKi9cbiAgICBjb2xsYXBzaWJsZUluZGljYXRvclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKiogUmVwcmVzZW50cyBjdXN0b20gQ1NTIGNsYXNzZXMgYXBwbGllZCB0byB0aGUgaGVhZGVyIGVsZW1lbnQuIFdoZW4gYWRkZWQsIHRoZXkgdGFrZSBkaWZmZXJlbnQgc3R5bGluZyAqL1xuICAgIGhlYWRlckNsYXNzZXM6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyBjdXN0b20gQ1NTIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBoZWFkZXIgZWxlbWVudC4gV2hlbiBhZGRlZCwgdGhleSB0YWtlIGRpZmZlcmVudCBzdHlsaW5nICovXG4gICAgaGVhZGVyU3R5bGVzOiBhbnk7XG4gICAgIC8qKiBSZXByZXNlbnRzIGN1c3RvbSBDU1MgY2xhc3NlcyBhcHBsaWVkIHRvIHRoZSBoZWFkZXIgZ3JvdXAuIFdoZW4gYWRkZWQsIHRoZXkgdGFrZSBkaWZmZXJlbnQgc3R5bGluZyAqL1xuICAgIGhlYWRlckdyb3VwQ2xhc3NlczogYW55O1xuICAgICAvKiogUmVwcmVzZW50cyBjdXN0b20gQ1NTIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBoZWFkZXIgZ3JvdXAuIFdoZW4gYWRkZWQsIHRoZXkgdGFrZSBkaWZmZXJlbnQgc3R5bGluZyAqL1xuICAgIGhlYWRlckdyb3VwU3R5bGVzOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gQ1NTIHN0eWxpbmcsIGFwcHBsaWVkIHRvIGV2ZXJ5IGNvbHVtblxuICAgICAqIGNhbGNXaWR0aCwgbWluV2lkdGhQeCwgbWF4V2lkdGhQeCwgbWluV2lkdGgsIG1heFdpZHRoLCBtaW5XaWR0aFBlcmNlbnQsIG1heFdpZHRoUGVyY2VudCwgcmVzb2x2ZWRXaWR0aFxuICAgICAqL1xuICAgIGNhbGNXaWR0aDogYW55O1xuICAgIG1pbldpZHRoUHg6IG51bWJlcjtcbiAgICBtYXhXaWR0aFB4OiBudW1iZXI7XG4gICAgbWluV2lkdGg6IHN0cmluZztcbiAgICBtYXhXaWR0aDogc3RyaW5nO1xuICAgIG1pbldpZHRoUGVyY2VudDogbnVtYmVyO1xuICAgIG1heFdpZHRoUGVyY2VudDogbnVtYmVyO1xuICAgIHJlc29sdmVkV2lkdGg6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogUmVwcmVzZW50cyB0aGUgaGVhZGVyIHRleHQgb2YgdGhlIGNvbHVtblxuICAgICAqL1xuICAgIGhlYWRlcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgaW5kZXggb2YgdGhlIGNvbHVtbiB3aXRoaW4gdGhlIGdyaWQuXG4gICAgICogSW5jbHVkZXMgdGhlIGhpZGRlbiBjb2x1bW5zIHdoZW4gY291bnRpbmdcbiAgICAgKi9cbiAgICBpbmRleDogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIHR5cGUgb2YgZGF0YSBmb3IgdGhlIGNvbHVtbjpcbiAgICAgKiBzdHJpbmcsIG51bWJlciwgYnV1bGVhbiwgY3VycmVuY3ksIGRhdGUsIHRpbWUsIGV0Yy5cbiAgICAgKi9cbiAgICBkYXRhVHlwZTogR3JpZENvbHVtbkRhdGFUeXBlO1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSByZWZlcmVuY2UgZm9yIHRoZSBjdXN0b20gaW5saW5lIGVkaXRvciBvZiB0aGUgY29sdW1uXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIGlubGluZUVkaXRvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKlxuICAgICAqIFRoZSBpbmRleCBvZiB0aGUgY29sdW1uIHdpdGhpbiB0aGUgZ3JpZC5cbiAgICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBoaWRkZW4gY29sdW1ucyB3aGVuIGNvdW50aW5nXG4gICAgICovXG4gICAgdmlzaWJsZUluZGV4OiBudW1iZXI7XG4gICAgLyoqIE9wdGlvbmFsXG4gICAgICogSW5kaWNhdGVkIHdoZXRoZXIgdGhlIGNvbHVtbiBjYW4gYmUgY29sbGFwc2VkLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIGNvbHVtbiBjYW4gYmUgY29sbGFwc2VkXG4gICAgICogSXQgaXMgdXNlZCBpbiB0cmVlIGdyaWQgYW5kIGZvciBuYXZpZ2F0aW9uXG4gICAgICovXG4gICAgY29sbGFwc2libGU/OiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZWQgd2hldGhlciB0aGUgY29sdW1uIGNhbiBiZSBlZGl0ZWQuIElmIHRoZSB2YWx1ZSBpcyB0cnVlLCB0aGUgY29sdW1uIGNhbiBiZSBlZGl0ZWQgKi9cbiAgICBlZGl0YWJsZTogYm9vbGVhbjtcbiAgICAvKiogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGNvbHVtbiBjYW4gYmUgcmVzaXplZC4gSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSBjb2x1bW4gY2FuIGJlIHJlc2l6ZWQgKi9cbiAgICByZXNpemFibGU6IGJvb2xlYW47XG4gICAgLyoqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBkYXRhIG9mIHRoZSBjb2x1bW4gY2FuIGJlIHNlYXJjaGVkLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIGNvbHVtbiBkYXRhIGNhbiBiZSBzZWFyY2hlZCAqL1xuICAgIHNlYXJjaGFibGU6IGJvb2xlYW47XG4gICAgLyoqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBjb2x1bW4gYmVsb25ncyB0byBhIGdyb3VwIG9mIGNvbHVtbnMuICovXG4gICAgY29sdW1uR3JvdXA6IGJvb2xlYW47XG4gICAgLyoqIEBkZXByZWNhdGVkIGluIHZlcnNpb24gMTMuMS4wLiBVc2UgYElneEdyaWRDb21wb25lbnQubW92aW5nYCBpbnN0ZWFkLiovXG4gICAgbW92YWJsZTogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhZGVzIHdoZXRoZXIgYSBjb2x1bW4gY2FuIGJlIHB1dCBpbiBhIGdyb3VwLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIGNvbHVtbiBjYW4gYmUgcHV0IGluIGEgZ3JvdXAgKi9cbiAgICBncm91cGFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYWRlcyB3aGV0aGVyIGEgY29sdW1uIGNhbiBiZSBzb3J0ZWQuIElmIHRoZSB2YWx1ZSBpcyB0cnVlLCB0aGUgY29sdW1uIGNhbiBiZSBzb3J0ZWQuICovXG4gICAgc29ydGFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYWRlcyB3aGV0aGVyIGEgY29sdW1uIGNhbiBiZSBmaWx0ZXJlZC4gSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSBjb2x1bW4gY2FuIGJlIGZpbHRlcmVkICovXG4gICAgZmlsdGVyYWJsZTogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhZGVzIHdoZXRoZXIgYSBjb2x1bW4gaXMgY3VycmVudGx5IGhpZGRlbiAobm90IHZpc2libGUpLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIGNvbHVtbiBpcyBub3QgdmlzaWJsZSAqL1xuICAgIGhpZGRlbjogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhZGVzIHdoZXRoZXIgYSBjb2x1bW4gY2FuIGJlIHBpbm5lZC4gSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSBjb2x1bW4gY2Fubm90IGJlIHBpbm5lZCAqL1xuICAgIGRpc2FibGVQaW5uaW5nOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2FkZXMgd2hldGhlciBhIGNvbHVtbiBjYW4gYmUgaGlkZGVuLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIGNvbHVtbiBjYW5ub3QgYmUgaGlkZGVuICovXG4gICAgZGlzYWJsZUhpZGluZzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgc29ydGluZyBzdHJhdGVneSB1c2VkIGZvciBzb3J0aW5nIHRoaXMgY29sdW1uLlxuICAgICAqIFRoZSBpbnRlcmZhY2UgY29udGFpbnMgYSBtZXRob2Qgc29ydCB0aGF0IHNvcnRzIHRoZSBwcm92aWRlZCBkYXRhIGJhc2VkIG9uIHRoZSBnaXZlbiBzb3J0aW5nIGV4cHJlc3Npb25zXG4gICAgICovXG4gICAgc29ydFN0cmF0ZWd5OiBJU29ydGluZ1N0cmF0ZWd5O1xuICAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgc2VhcmNoIHNob3VsZCBtYXRjaCByZXN1bHRzLCBubyBtYXR0ZXIgdGhlIGNhc2Ugb2YgdGhlIGxldHRlcnMgKHVwcGVyIGFuZCBsb3dlcilcbiAgICAgKiBJZiB0aGUgdmFsdWUgaXMgZmFsc2UsIHRoZSByZXN1bHQgd2lsbCBkZXBlbmQgb24gdGhlIGNhc2UgKGV4YW1wbGU6IGBFYCB3aWxsIG5vdCBtYXRjaCBgZWApXG4gICAgICogSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSByZXN1bHQgd2lsbCBub3QgZGVwZW5kIG9uIHRoZSBjYXNlIChleGFtcGxlOiBgRWAgd2lsbCBtYXRjaCBgZWApXG4gICAgICovXG4gICAgc29ydGluZ0lnbm9yZUNhc2U6IGJvb2xlYW47XG4gICAgZmlsdGVyQ2VsbDogYW55O1xuICAgIGZpbHRlcmluZ0lnbm9yZUNhc2U6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVGhlIGZpbHRlcmluZyBleHByZXNzaW9ucyBmb3IgdGhlIGNvbHVtbi5cbiAgICAgKiBUaGUgdHlwZSBjb250YWlucyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGZvciBmaWx0ZXJpbmc6IGZpbHRlcmluZ09wZXJhbmRzLCBvcGVyYXRvciAobG9naWMpLCBmaWVsZE5hbWUsIGV0Yy5cbiAgICAgKi9cbiAgICBmaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU6IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICBoYXNTdW1tYXJ5OiBib29sZWFuO1xuICAgIHN1bW1hcmllczogYW55O1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSByZWZlcmVuY2UgZm9yIGEgc3VtbWFyeSBvZiB0aGUgY29sdW1uXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIHN1bW1hcnlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBjb2x1bW4gaXMgY3VycmVudGx5IHBpbm5lZC4gSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSBjb2x1bW4gaXMgcGlubmVkICovXG4gICAgcGlubmVkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGNvbHVtbiBpcyBjdXJyZW50bHkgZXhwYW5kZWQgb3IgY29sbGFwc2VkLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIGNvbHVtbiBpcyBleHBhbmRlZCAqL1xuICAgIGV4cGFuZGVkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGNvbHVtbiBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuIElmIHRoZSB2YWx1ZSBpcyB0cnVlLCB0aGUgY29sdW1uIGlzIHNlbGVjdGVkICovXG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGNhbiBiZSBzZWxlY3RlZC4gSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSBjb2x1bW4gY2FuIGJlIHNlbGVjdGVkICovXG4gICAgc2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgICBjb2x1bW5MYXlvdXQ6IGJvb2xlYW47XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGhpZXJhcmNoaWNhbCBsZXZlbCBvZiB0aGUgY29sdW1uIGluIHRoZSBjb2x1bW4gbGF5b3V0ICovXG4gICAgbGV2ZWw6IG51bWJlcjtcbiAgICByb3dTdGFydDogbnVtYmVyO1xuICAgIHJvd0VuZDogbnVtYmVyO1xuICAgIGNvbFN0YXJ0OiBudW1iZXI7XG4gICAgY29sRW5kOiBudW1iZXI7XG4gICAgZ3JpZFJvd1NwYW46IG51bWJlcjtcbiAgICBncmlkQ29sdW1uU3BhbjogbnVtYmVyO1xuICAgIGNvbHVtbkxheW91dENoaWxkOiBib29sZWFuO1xuICAgIHdpZHRoOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBUaGUgcm9vdCBwYXJlbnQgb2YgdGhpcyBjb2x1bW4gKGlmIGFueSkuXG4gICAgICogSWYgdGhlcmUgaXMgbm8gcm9vdCBwYXJlbnQsIHRoYXQgbWVhbnMgdGhlIGN1cnJlbnQgc29sdW5tIGlzIHRoZSByb290IHBhcmVudFxuICAgICAqL1xuICAgIHRvcExldmVsUGFyZW50PzogQ29sdW1uVHlwZTtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFRoZSBpbW1lZGlhdGUgcGFyZW50IChyaWdodCBhYm92ZSkgY29sdW1uIG9mIHRoaXMgY29sdW1uIChpZiBhbnkpLlxuICAgICAqIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhhdCBtZWFucyB0aGUgY3VycmVudCBzb2x1bm0gaXMgdGhlIHJvb3QgcGFyZW50XG4gICAgICovXG4gICAgcGFyZW50PzogQ29sdW1uVHlwZTtcbiAgICBwaXBlQXJnczogSUNvbHVtblBpcGVBcmdzO1xuICAgIGhhc05lc3RlZFBhdGg6IGJvb2xlYW47XG4gICAgYWRkaXRpb25hbFRlbXBsYXRlQ29udGV4dDogYW55O1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY3VycmVudCBjb2x1bW4gaXMgdGhlIGxhc3QgdG8gYmUgcGlubmVkLlxuICAgICAqIElmIHRoZSB2YWx1ZSBpcyBmYWxzZSwgdGhlcmUgYXJlIGNvbHVtbnMsIHRoYXQgaGF2ZSBiZWVuIHBpbm5lZCBhZnRlciB0aGUgY3VycmVudCAqL1xuICAgIGlzTGFzdFBpbm5lZDogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgY29sdW1uIGlzIHRoZSBmaXJzdCBmb3IgdGhlIGdyaWQgdG8gYmUgcGlubmVkLlxuICAgICAqIElmIHRoZSB2YWx1ZSBpcyBmYWxzZSwgdGhlcmUgYXJlIGNvbHVtbnMsIHRoYXQgaGF2ZSBiZWVuIHBpbm5lZCBiZWZvcmUgdGhlIGN1cnJlbnQgKi9cbiAgICBpc0ZpcnN0UGlubmVkOiBib29sZWFuO1xuICAgIGFwcGx5U2VsZWN0YWJsZUNsYXNzOiBib29sZWFuO1xuICAgIC8qKiBUaGUgdGl0bGUgb2YgdGhlIGNvbHVtbiwgdXNlZCBmb3IgYWNjZXNzaWJpbGl0eSBwdXJwb3NlcyAqL1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2Qgd2l0aCBjdXN0b20gZ3JvdXBpbmcgY29tcGFyYXRvciB0byBkZXRlcm1pbmUgdGhlIG1lbWJlcnMgb2YgdGhlIGdyb3VwLiAqL1xuICAgIGdyb3VwaW5nQ29tcGFyZXI6IChhOiBhbnksIGI6IGFueSkgPT4gbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgZmlsdGVyaW5nXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIGZpbHRlckNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIGRlZmluaXRpb24gdG8gbW92ZSB0aGUgY29sdW1uIHRvIHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAgICogSXQgdGFrZXMgdGhlIGluZGV4IG9mIHR5cGUgbnVtYmVyIGFzIGEgcGFyYW1ldGVyXG4gICAgKi9cbiAgICBtb3ZlKGluZGV4OiBudW1iZXIpOiB2b2lkO1xuICAgIC8qKiBBIG1ldGhvZCBkZWZpbml0aW9uIHRvIHJldHJpZXZlIHRoZSBzZXQgQ1NTIHNpemUgKi9cbiAgICBnZXRBdXRvU2l6ZSgpOiBzdHJpbmc7XG4gICAgZ2V0UmVzaXphYmxlQ29sVW5kZXJFbmQoKTogTVJMUmVzaXplQ29sdW1uSW5mb1tdO1xuICAgIC8qKiBBIG1ldGhvZCBkZWZpbml0aW9uIHRvIHJldHJpZXZlIHRoZSBzZXQgQ1NTIHdpZHRoIG9mIHRoZSBjZWxscyB1bmRlciB0aGUgY29sdW1uICovXG4gICAgZ2V0Q2VsbFdpZHRoKCk6IHN0cmluZztcbiAgICBnZXRHcmlkVGVtcGxhdGUoaXNSb3c6IGJvb2xlYW4pOiBzdHJpbmc7XG4gICAgLyoqIEEgbWV0aG9kIGRlZmluaXRpb24gdG8gdG9nZ2xlIGNvbHVtbiB2aWJpc2lsaXR5IChoaWRkZW4gb3IgdmlzaWJsZSkgKi9cbiAgICB0b2dnbGVWaXNpYmlsaXR5KHZhbHVlPzogYm9vbGVhbik6IHZvaWQ7XG4gICAgcG9wdWxhdGVWaXNpYmxlSW5kZXhlcz8oKTogdm9pZDtcbiAgICAvKiogUGlucyB0aGUgY29sdW1uIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggKGlmIG5vdCBhbHJlYWR5IHBpbm5lZCkuICovXG4gICAgcGluKGluZGV4PzogbnVtYmVyKTogYm9vbGVhbjtcbiAgICAvKiogVW5waW5zIHRoZSBjb2x1bW4gYXQgdGhlIHNwZWNpZmllZCBpbmRleCAoaWYgbm90IGFscmVhZHkgdW5waW5uZWQpLiAqL1xuICAgIHVucGluKGluZGV4PzogbnVtYmVyKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW50aW5nIHRoZSBldmVudCBhcmd1bWVudHMgd2hlbiBhIGZvcm0gZ3JvdXAgaXMgY3JlYXRlZCBpbiB0aGUgZ3JpZC5cbiAqIC0gZm9ybUdyb3VwOiBUaGUgZm9ybSBncm91cCB0aGF0IGlzIGNyZWF0ZWQuXG4gKiAtIG93bmVyOiBUaGUgZ3JpZCBpbnN0YW5jZSB0aGF0IG93bnMgdGhlIGZvcm0gZ3JvdXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRGb3JtR3JvdXBDcmVhdGVkRXZlbnRBcmdzIHtcbiAgICBmb3JtR3JvdXA6IEZvcm1Hcm91cCxcbiAgICBvd25lcjogR3JpZFR5cGVcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW50aW5nIHRoZSBldmVudCBhcmd1bWVudHMgZm9yIHRoZSBncmlkIHZhbGlkYXRpb24gc3RhdHVzIGNoYW5nZSBldmVudC5cbiAqIC0gc3RhdHVzOiBUaGUgdmFsaWRhdGlvbiBzdGF0dXMgKCdWQUxJRCcgb3IgJ0lOVkFMSUQnKS5cbiAqIC0gb3duZXI6IFRoZSBncmlkIGluc3RhbmNlIHRoYXQgb3ducyB0aGUgdmFsaWRhdGlvbiBzdGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZFZhbGlkYXRpb25TdGF0dXNFdmVudEFyZ3Mge1xuICAgIHN0YXR1czogVmFsaWRhdGlvblN0YXR1cyxcbiAgICBvd25lcjogR3JpZFR5cGVcbn1cblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyB0aGUgdmFsaWRhdGlvbiBzdGF0dXMuXG4gKiAtICdWQUxJRCc6IFRoZSB2YWxpZGF0aW9uIHN0YXR1cyBpcyB2YWxpZC5cbiAqIC0gJ0lOVkFMSUQnOiBUaGUgdmFsaWRhdGlvbiBzdGF0dXMgaXMgaW52YWxpZC5cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblN0YXR1cyA9ICdWQUxJRCcgfCAnSU5WQUxJRCc7XG5cbi8qKlxuICogSW50ZXJmYWNlIHJlcHJlc2VudGluZyB0aGUgdmFsaWRhdGlvbiBzdGF0ZSBvZiBhIGdyaWQuXG4gKiAtIHN0YXR1czogVGhlIHZhbGlkYXRpb24gc3RhdHVzICgnVkFMSUQnIG9yICdJTlZBTElEJykuXG4gKiAtIGVycm9yczogVGhlIHZhbGlkYXRpb24gZXJyb3JzIGlmIGFueS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZFZhbGlkYXRpb25TdGF0ZSB7XG4gICAgcmVhZG9ubHkgc3RhdHVzOiBWYWxpZGF0aW9uU3RhdHVzO1xuICAgIHJlYWRvbmx5IGVycm9ycz86IFZhbGlkYXRpb25FcnJvcnM7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHJlcHJlc2VudGluZyB0aGUgdmFsaWRhdGlvbiBzdGF0ZSBvZiBhIHJlY29yZCBpbiB0aGUgZ3JpZC5cbiAqIC0gYGtleWA6IFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcmVjb3JkLlxuICogLSBgZmllbGRzYDogQW4gYXJyYXkgb2YgdGhlIHZhbGlkYXRpb24gc3RhdGUgb2YgaW5kaXZpZHVhbCBmaWVsZHMgaW4gdGhlIHJlY29yZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVjb3JkVmFsaWRhdGlvblN0YXRlIGV4dGVuZHMgSUdyaWRWYWxpZGF0aW9uU3RhdGUge1xuICAgIGtleTogYW55O1xuICAgIGZpZWxkczogSUZpZWxkVmFsaWRhdGlvblN0YXRlW107XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHJlcHJlc2VudGluZyB0aGUgdmFsaWRhdGlvbiBzdGF0ZSBvZiBhIGZpZWxkIGluIHRoZSBncmlkLlxuICogLWBmaWVsZGA6IFRoZSBuYW1lIG9mIHRoZSBmaWVsZCAocHJvcGVydHkpIGJlaW5nIHZhbGlkYXRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmllbGRWYWxpZGF0aW9uU3RhdGUgZXh0ZW5kcyBJR3JpZFZhbGlkYXRpb25TdGF0ZSB7XG4gICAgZmllbGQ6IHN0cmluZ1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHNlcnZpY2UgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBncmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRTZXJ2aWNlVHlwZSB7XG5cbiAgICAvKiogVGhlIHJlZmVyZW5jZSB0byB0aGUgcGFyZW50IGBHcmlkVHlwZWAgdGhhdCBjb250YWlucyB0aGUgc2VydmljZS4gKi9cbiAgICBncmlkOiBHcmlkVHlwZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgdHlwZSBvZiB0aGUgQ1JVRCBzZXJ2aWNlIChDcmVhdGUsIFJlYWQsIFVwZGF0ZSwgRGVsZXRlKSBvcGVyYXRpb25zIG9uIHRoZSBncmlkIGRhdGEuICovXG4gICAgY3J1ZFNlcnZpY2U6IGFueTtcbiAgICAvKiogQSBzZXJ2aWNlIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBjb2x1bW4gbW92aW5nIHdpdGhpbiB0aGUgZ3JpZC4gSXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGNvbHVtbiwgaXRzIGljb24sIGFuZCBpbmRpY2F0b3IgZm9yIGNhbmNlbGF0aW9uLiAqL1xuICAgIGNtczogSWd4Q29sdW1uTW92aW5nU2VydmljZTtcblxuICAgIC8qKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciByZXRyaWV2aW5nIHRoZSBkYXRhIHVzZWQgaW4gdGhlIGdyaWQuIFRoZSByZXR1cm5lZCB2YWx1ZXMgY291bGQgYmUgb2YgYW55IHR5cGUgKi9cbiAgICBnZXRfZGF0YSgpOiBhbnlbXTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciByZXRyaWV2aW5nIGFsbCB0aGUgZGF0YSBhdmFpbGFibGUgaW4gdGhlIGdyaWQsIGluY2x1ZGluZyBhbnkgdHJhbnNhY3Rpb25hbCBkYXRhLlxuICAgICAqIGBpbmNsdWRlVHJhbnNhY3Rpb25zYDogT3B0aW9uYWwgcGFyYW1ldGVyLiBTcGVjaWZpZXMgd2hldGhlciB0byBpbmNsdWRlIHRyYW5zYWN0aW9uYWwgZGF0YSBpZiBwcmVzZW50LlxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIGRhdGEgYXZhaWxhYmxlIGluIHRoZSBncmlkLlxuICAgICAqL1xuICAgIGdldF9hbGxfZGF0YShpbmNsdWRlVHJhbnNhY3Rpb25zPzogYm9vbGVhbik6IGFueVtdO1xuICAgIC8qKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciByZXRyaWV2aW5nIGEgY29sdW1uIG9iamVjdCBieSBpdHMgbmFtZSwgdGFrZW4gYXMgYSBwYXJhbWV0ZXIuICovXG4gICAgZ2V0X2NvbHVtbl9ieV9uYW1lKG5hbWU6IHN0cmluZyk6IENvbHVtblR5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgcm93IGJ5IGl0cyB1bmlxdWUgaWRlbnRpZmllciAob2YgYW55IHR5cGUsIHRha2VuIGFzIGEgcGFyYW1ldGVyKS4gKi9cbiAgICBnZXRSb3dEYXRhKGlkOiBhbnkpOiBhbnk7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgcmVjb3JkIGJ5IGl0cyB1bmlxdWUgaWRlbnRpZmllciAob2YgYW55IHR5cGUsIHRha2VuIGFzIGEgcGFyYW1ldGVyKS4gKi9cbiAgICBnZXRfcmVjX2J5X2lkKGlkOiBhbnkpOiBhbnk7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIGEgc3BlY2lmaWMgcm93IGJ5IGl0cyBkYXRhLiAqL1xuICAgIGdldF9yb3dfaWQocm93RGF0YTogYW55KTogYW55O1xuICAgIC8qKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciByZXRyaWV2aW5nIHRoZSByb3cgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGluZGV4ICh0YWtlbiBhcyBhIHBhcmFtZXRlcikgaW4gdGhlIGdyaWQgKi9cbiAgICBnZXRfcm93X2J5X2luZGV4KHJvd1NlbGVjdG9yOiBhbnkpOiBSb3dUeXBlO1xuICAgIC8qKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciByZXRyaWV2aW5nIHRoZSByb3cgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGtleSAodGFrZW4gYXMgYSBwYXJhbWV0ZXIpIGluIHRoZSBncmlkICovXG4gICAgZ2V0X3Jvd19ieV9rZXkocm93U2VsZWN0b3I6IGFueSk6IFJvd1R5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGluZGV4IG9mIGEgcmVjb3JkIGluIHRoZSBncmlkJ3MgZGF0YSBjb2xsZWN0aW9uIHVzaW5nIGl0cyB1bmlxdWUgaWRlbnRpZmllci4gKi9cbiAgICBnZXRfcmVjX2luZGV4X2J5X2lkKHBrOiBzdHJpbmcgfCBudW1iZXIsIGRhdGFDb2xsZWN0aW9uPzogYW55W10pOiBudW1iZXI7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGluZGV4IG9mIGEgcmVjb3JkIGluIHRoZSBncmlkJ3MgZGF0YSBjb2xsZWN0aW9uIHVzaW5nIGl0cyBpbmRleC4gKi9cbiAgICBnZXRfcmVjX2lkX2J5X2luZGV4KGluZGV4OiBudW1iZXIsIGRhdGFDb2xsZWN0aW9uPzogYW55W10pOiBhbnk7XG4gICAgZ2V0X3Jvd19pbmRleF9pbl9kYXRhKHJvd0lEOiBhbnksIGRhdGFDb2xsZWN0aW9uPzogYW55W10pOiBudW1iZXI7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGNlbGwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIHJvdyBhbmQgY29sdW1uIGluIHRoZSBncmlkLiAqL1xuICAgIGdldF9jZWxsX2J5X2tleShyb3dTZWxlY3RvcjogYW55LCBmaWVsZDogc3RyaW5nKTogQ2VsbFR5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGNlbGwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIHJvdyBhbmQgY29sdW1uIHVzaW5nIHRoZWlyIGluZGV4ZXMuICovXG4gICAgZ2V0X2NlbGxfYnlfaW5kZXgocm93SW5kZXg6IG51bWJlciwgY29sdW1uSUQ6IG51bWJlciB8IHN0cmluZyk6IENlbGxUeXBlO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGNlbGwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIHJvdyBhbmQgY29sdW1uIHVzaW5nIHRoZWlyIGluZGV4ZXMuXG4gICAgICogSXQgY291bnRzIG9ubHkgdGhlIGluZGV4ZXMgb2YgdGhlIHZpc2libGUgY29sdW1ucyBhbmQgcm93c1xuICAgICAqL1xuICAgIGdldF9jZWxsX2J5X3Zpc2libGVfaW5kZXgocm93SW5kZXg6IG51bWJlciwgY29sdW1uSW5kZXg6IG51bWJlcik7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gdGhhdCBzZXRzIHRoZSBleHBhbnNpb24gc3RhdGUgb2YgYSBncm91cCByb3cgKHVzZWQgZm9yIHRyZWUgZ3JpZHMpXG4gICAgICogSXQgdGFrZXMgdGhlIHZhbHVlIGZvciB0aGUgZXhwYW50aW9uIGFzIGEgcGFyYW1ldGVyIChleHBhbmRlZCBvciBjb2xsYXBzZWQpXG4gICAgICovXG4gICAgc2V0X2dyb3Vwcm93X2V4cGFuc2lvbl9zdGF0ZT8oZ3JvdXBSb3c6IElHcm91cEJ5UmVjb3JkLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQ7XG4gICAgcm93X2RlbGV0ZWRfdHJhbnNhY3Rpb24oaWQ6IGFueSk6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiBmb3IgYWRkaW5nIGEgbmV3IHJvdyB0byB0aGUgZ3JpZC5cbiAgICAgKiBJdCB0YWtlcyB0aGUgcm93J3MgZGF0YSBhbmQgdGhlIGlkZW50aWZpZXIgb2YgdGhlIHBhcmVudCByb3cgaWYgYXBwbGljYWJsZSAodXNlZCBmb3IgdHJlZSBncmlkcylcbiAgICAgKi9cbiAgICBhZGRSb3dUb0RhdGEocm93RGF0YTogYW55LCBwYXJlbnRJRD86IGFueSk6IHZvaWQ7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIGRlbGV0aW5nIGEgcm93LCBzcGVjaWZpZWQgYnkgaXQncyBpZGVudGlkaWVyICh0YWtlbiBhcyBhIHBhcmFtZXRlcikgKi9cbiAgICBkZWxldGVSb3dCeUlkKGlkOiBhbnkpOiBhbnk7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIHJvdydzIGN1cnJlbnQgc3RhdGUgb2YgZXhwYW50aW9uICh1c2VkIGZvciB0cmVlIGdyaWRzKSovXG4gICAgZ2V0X3Jvd19leHBhbnNpb25fc3RhdGUoaWQ6IGFueSk6IGJvb2xlYW47XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHNldHRpbmcgYSBuZXcgZXhwYW50aW9uIHN0YXRlLiBJdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGFuIGV2ZW50ICovXG4gICAgc2V0X3Jvd19leHBhbnNpb25fc3RhdGUoaWQ6IGFueSwgZXhwYW5kZWQ6IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpOiB2b2lkO1xuICAgIGdldF9zdW1tYXJ5X2RhdGEoKTogYW55W107XG5cbiAgICBwcmVwYXJlX3NvcnRpbmdfZXhwcmVzc2lvbihzdGF0ZUNvbGxlY3Rpb25zOiBBcnJheTxBcnJheTxhbnk+PiwgZXhwcmVzc2lvbjogSVNvcnRpbmdFeHByZXNzaW9uKTogdm9pZDtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciBzb3J0aW5nIGJ5IG9ubHkgb25lIGV4cHJlc3Npb25cbiAgICAgKiBUaGUgZXhwcmVzc2lvbiBjb250YWlucyBmaWVsZE5hbWUsIHNvcnRpbmcgZGlyZWN0b3J5LCB3aGV0aGVyIGNhc2Ugc2hvdWxkIGJlIGlnbm9yZWQgYW5kIG9wdGlvbmFsIHNvcnRpbmcgc3RyYXRlZ3lcbiAgICAgKi9cbiAgICBzb3J0KGV4cHJlc3Npb246IElTb3J0aW5nRXhwcmVzc2lvbik6IHZvaWQ7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiBmb3Igc29ydGluZyBieSBtdWx0aXBsZSBleHByZXNzaW9uc1xuICAgICAqIFRoZSBleHByZXNzaW9ucyBjb250YWlucyBmaWVsZE5hbWUsIHNvcnRpbmcgZGlyZWN0b3J5LCB3aGV0aGVyIGNhc2Ugc2hvdWxkIGJlIGlnbm9yZWQgYW5kIG9wdGlvbmFsIHNvcnRpbmcgc3RyYXRlZ3lcbiAgICAgKi9cbiAgICBzb3J0X211bHRpcGxlKGV4cHJlc3Npb25zOiBJU29ydGluZ0V4cHJlc3Npb25bXSk6IHZvaWQ7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJlc2V0aW5nIHRoZSBzb3J0aW5nICovXG4gICAgY2xlYXJfc29ydChmaWVsZE5hbWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgICAvKiogUmVwcmVzZW50cyBhbiBldmVudCwgdHJpZ2dlcmVkIHdoZW4gdGhlIHBpbiBzdGF0ZSBpcyBjaGFuZ2VkICovXG4gICAgZ2V0X3Bpbl9yb3dfZXZlbnRfYXJncyhyb3dJRDogYW55LCBpbmRleD86IG51bWJlciwgcm93PzogUm93VHlwZSwgcGlubmVkPzogYm9vbGVhbik6IElQaW5Sb3dFdmVudEFyZ3M7XG5cbiAgICBmaWx0ZXJEYXRhQnlFeHByZXNzaW9ucyhleHByZXNzaW9uc1RyZWU6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpOiBhbnlbXTtcbiAgICBzb3J0RGF0YUJ5RXhwcmVzc2lvbnMoZGF0YTogYW55W10sIGV4cHJlc3Npb25zOiBJU29ydGluZ0V4cHJlc3Npb25bXSk6IGFueVtdO1xuXG4gICAgdXBkYXRlX2NlbGwoY2VsbDogSWd4Q2VsbCk6IElHcmlkRWRpdEV2ZW50QXJncztcbiAgICB1cGRhdGVfcm93KHJvdzogSWd4RWRpdFJvdywgdmFsdWU6IGFueSwgZXZlbnQ/OiBFdmVudCk6IElHcmlkRWRpdEV2ZW50QXJncztcblxuICAgIGV4cGFuZF9wYXRoX3RvX3JlY29yZD8ocmVjb3JkOiBJVHJlZUdyaWRSZWNvcmQpOiB2b2lkO1xuICAgIGdldF9zZWxlY3RlZF9jaGlsZHJlbj8ocmVjb3JkOiBJVHJlZUdyaWRSZWNvcmQsIHNlbGVjdGVkUm93SURzOiBhbnlbXSk6IHZvaWQ7XG4gICAgZ2V0X2dyb3VwQnlfcmVjb3JkX2lkPyhnUm93OiBJR3JvdXBCeVJlY29yZCk6IHN0cmluZztcbiAgICByZW1vdmVfZ3JvdXBpbmdfZXhwcmVzc2lvbj8oZmllbGROYW1lOiBzdHJpbmcpOiB2b2lkO1xuICAgIGNsZWFyX2dyb3VwYnk/KGZpZWxkOiBzdHJpbmcgfCBhbnkpOiB2b2lkO1xuICAgIGdldFBhcmVudFJvd0lkPyhjaGlsZDogR3JpZFR5cGUpOiBhbnk7XG4gICAgZ2V0Q2hpbGRHcmlkcz8oaW5EZXB0aD86IGJvb2xlYW4pOiBHcmlkVHlwZVtdO1xuICAgIGdldENoaWxkR3JpZD8ocGF0aDogSVBhdGhTZWdtZW50W10pOiBHcmlkVHlwZTtcblxuICAgIHVuc2V0Q2hpbGRSb3dJc2xhbmQ/KHJvd0lzbGFuZDogR3JpZFR5cGUpOiB2b2lkO1xuICAgIHJlZ2lzdGVyQ2hpbGRSb3dJc2xhbmQ/KHJvd0lzbGFuZDogR3JpZFR5cGUpOiB2b2lkO1xufVxuXG5cbi8qKlxuICogSW50ZXJmYWNlIHJlcHJlc2VudGluZyBhIGdyaWQgdHlwZS4gSXQgaXMgZXNzZW50aWFsbHkgdGhlIGJsdWVwcmludCB0byBhIGdyaWQgb2JqZWN0LlxuICogQ29udGFpbnMgZGVmaW5pdGlvbnMgb2YgcHJvcGVydGllcyBhbmQgbWV0aG9kcywgcmVsZXZhbnQgdG8gYSBncmlkXG4gKiBFeHRlbmRzIGBJR3JpZERhdGFCaW5kYWJsZWBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmlkVHlwZSBleHRlbmRzIElHcmlkRGF0YUJpbmRhYmxlIHtcbiAgICAvKiogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxNi4xLnguIFBsZWFzZSB1c2UgdGhlIGAtLWlnLXNpemVgIENTUyBjdXN0b20gcHJvcGVydHkuICovXG4gICAgZGlzcGxheURlbnNpdHk6IERpc3BsYXlEZW5zaXR5O1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBsb2NhbGUgb2YgdGhlIGRyaWc6IGBVU0RgLCBgRVVSYCwgYEdCUGAsIGBDTllgLCBgSlBZYCwgZXRjLiAqL1xuICAgIGxvY2FsZTogc3RyaW5nO1xuICAgIHJlc291cmNlU3RyaW5nczogSUdyaWRSZXNvdXJjZVN0cmluZ3M7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG5hdGl2ZSBIVE1MIGVsZW1lbnQgaXRzZWxmICovXG4gICAgbmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHJvd3MgaW4gdGhlIGdyaWQgYXJlIGVkaXRhYmxlLiBJZiB0ZSB2YWx1ZSBpcyB0cnVlLCB0aGUgcm93cyBjYW4gYmUgZWRpdGVkICovXG4gICAgcm93RWRpdGFibGU6IGJvb2xlYW47XG4gICAgcm9vdFN1bW1hcmllc0VuYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIGZpbHRlcmluZyBpbiB0aGUgZ3JpZCBpcyBlbmFibGVkLiBJZiB0ZSB2YWx1ZSBpcyB0cnVlLCB0aGUgZ3JpZCBjYW4gYmUgZmlsdGVyZWQgKi9cbiAgICBhbGxvd0ZpbHRlcmluZzogYm9vbGVhbjtcbiAgICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHJvd3MgaW4gdGhlIGdyaWQgY2FuIGJlIGRyYWdnZWQuIElmIHRlIHZhbHVlIGlzIHRydWUsIHRoZSByb3dzIGNhbiBiZSBkcmFnZ2VkICovXG4gICAgcm93RHJhZ2dhYmxlOiBib29sZWFuO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSB1bmlxdWUgcHJpbWFyeSBrZXkgdXNlZCBmb3IgaWRlbnRpZnlpbmcgcm93cyBpbiB0aGUgZ3JpZCAqL1xuICAgIHByaW1hcnlLZXk6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGdyaWQuICovXG4gICAgaWQ6IHN0cmluZztcbiAgICAvKiogVGhlIGhlaWdodCBvZiB0aGUgdmlzaWJsZSByb3dzIGluIHRoZSBncmlkLiAqL1xuICAgIHJlbmRlcmVkUm93SGVpZ2h0OiBudW1iZXI7XG4gICAgcGlwZVRyaWdnZXI6IG51bWJlcjtcbiAgICBzdW1tYXJ5UGlwZVRyaWdnZXI6IG51bWJlcjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBncm91cGFibGVQaXBlVHJpZ2dlcjogbnVtYmVyO1xuICAgIGZpbHRlcmluZ1BpcGVUcmlnZ2VyOiBudW1iZXI7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgaGFzQ29sdW1uTGF5b3V0czogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGdyaWQgaXMgY3VycmVudGx5IGluIGEgbW92aW5nIHN0YXRlLiAqL1xuICAgIG1vdmluZzogYm9vbGVhbjtcbiAgICBpc0xvYWRpbmc6IGJvb2xlYW47XG5cbiAgICAvKiogU3RyYXRlZ3ksIHVzZWQgZm9yIGNsb25pbmcgdGhlIHByb3ZpZGVkIGRhdGEuIFRoZSB0eXBlIGhhcyBvbmUgbWV0aG9kLCB0aGF0IHRha2VzIGFueSB0eXBlIG9mIGRhdGEgKi9cbiAgICBkYXRhQ2xvbmVTdHJhdGVneTogSURhdGFDbG9uZVN0cmF0ZWd5O1xuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGdyaWQgc2VydmljZSB0eXBlIHByb3ZpZGluZyBBUEkgbWV0aG9kcyBmb3IgdGhlIGdyaWQgKi9cbiAgICByZWFkb25seSBncmlkQVBJOiBHcmlkU2VydmljZVR5cGU7XG5cbiAgICAvKiogVGhlIGZpbHRlciBtb2RlIGZvciB0aGUgZ3JpZC4gSXQgY2FuIGJlIHF1aWNrIGZpbHRlciBvZiBleGNlbC1zdHlsZSBmaWx0ZXIgKi9cbiAgICBmaWx0ZXJNb2RlOiBGaWx0ZXJNb2RlO1xuXG4gICAgLy8gVFlQRVxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHRoZWFkUm93OiBhbnk7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgZ3JvdXBBcmVhOiBhbnk7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgZmlsdGVyQ2VsbExpc3Q6IGFueVtdO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGZpbHRlcmluZ1JvdzogYW55O1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGFjdGlvblN0cmlwOiBhbnk7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcmVzaXplTGluZTogYW55O1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgdGZvb3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHBhZ2luYXRvcjogSWd4UGFnaW5hdG9yQ29tcG9uZW50O1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHBhZ2luYXRvckxpc3Q/OiBRdWVyeUxpc3Q8SWd4UGFnaW5hdG9yQ29tcG9uZW50PjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBjcnVkU2VydmljZTogYW55O1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHN1bW1hcnlTZXJ2aWNlOiBhbnk7XG5cblxuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIHN0YXRlIG9mIHZpcnR1YWxpemF0aW9uIGZvciB0aGUgZ3JpZC4gSXQgaGFzIGFuIG93bmVyLCBzdGFydCBpbmRleCBhbmQgY2h1bmsgc2l6ZSAqL1xuICAgIHZpcnR1YWxpemF0aW9uU3RhdGU6IElGb3JPZlN0YXRlO1xuICAgIC8vIFRZUEVcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICAvKiogVGhlIHNlcnZpY2UgaGFuZGxpbmcgc2VsZWN0aW9uIGluIHRoZSBncmlkLiBTZWxlY3RpbmcsIGRlc2VsZWN0aW5nIGVsZW1lbnRzICovXG4gICAgc2VsZWN0aW9uU2VydmljZTogYW55O1xuICAgIG5hdmlnYXRpb246IGFueTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBmaWx0ZXJpbmdTZXJ2aWNlOiBhbnk7XG4gICAgb3V0bGV0OiBhbnk7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBncmlkIGhhcyBjb2x1bW5zIHRoYXQgY2FuIGJlIG1vdmVkICovXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgaGFzTW92YWJsZUNvbHVtbnM6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBncmlkJ3Mgcm93cyBjYW4gYmUgc2VsZWN0ZWQgKi9cbiAgICBpc1Jvd1NlbGVjdGFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBzZWxlY3RvcnMgb2YgdGhlIHJvd3MgYXJlIHZpc2libGUgKi9cbiAgICBzaG93Um93U2VsZWN0b3JzOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZ3JpZCdzIGVsZW1lbnQgaXMgcGlubmVkIHRvIHRoZSBzdGFydCBvZiB0aGUgZ3JpZCAqL1xuICAgIGlzUGlubmluZ1RvU3RhcnQ6IGJvb2xlYW47XG4gICAgLyoqIElkaWNhdGVzIGlmIHRoZSBjb2x1bW4gb2YgdGhlIGdyaWQgaXMgaW4gZHJhZyBtb2RlICovXG4gICAgY29sdW1uSW5EcmFnOiBhbnk7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgLyoqIFRoZSB3aWR0aCBvZiBwaW5uZWQgZWxlbWVudCAqL1xuICAgIHBpbm5lZFdpZHRoOiBudW1iZXI7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgLyoqIFRoZSB3aWR0aCBvZiB1bnBpbm5lZCBlbGVtZW50ICovXG4gICAgdW5waW5uZWRXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBUaGUgQ1NTIG1hcmdpbiBvZiB0aGUgc3VtbWFyaWVzICovXG4gICAgc3VtbWFyaWVzTWFyZ2luOiBudW1iZXI7XG4gICAgaGVhZFNlbGVjdG9yQmFzZUFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBncmlkIGhhcyBjb2x1bW5zIHRoYXQgYXJlIHNob3duICovXG4gICAgaGFzVmlzaWJsZUNvbHVtbnM6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZ3JpZCBoYXMgZXhwYW5kYWJsZSBjaGlsZHJlbiAoaGllcmFyY2hpY2FsIGFuZCB0cmVlIGdyaWQpXG4gICAgICovXG4gICAgaGFzRXhwYW5kYWJsZUNoaWxkcmVuPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIGNvbGxhcHNlZCBncmlkIGVsZW1lbnRzIHNob3VsZCBiZSBleHBhbmRlZFxuICAgICAqL1xuICAgIHNob3dFeHBhbmRBbGw/OiBib29sZWFuO1xuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGNvdW50IG9mIG9ubHkgdGhlIGhpZGRlbiAobm90IHZpc2libGUpIGNvbHVtbnMgKi9cbiAgICBoaWRkZW5Db2x1bW5zQ291bnQ6IG51bWJlcjtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgY291bnQgb2Ygb25seSB0aGUgcGlubmVkIGNvbHVtbnMgKi9cbiAgICBwaW5uZWRDb2x1bW5zQ291bnQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogVGhlIHRlbXBsYXRlIGZvciBncmlkIGljb25zLlxuICAgICAqIEl0IGlzIG9mIHR5cGUgVGVtcGxhdGVSZWYsIHdoaWNoIHJlcHJlc2VudHMgYW4gZW1iZWRkZWQgdGVtcGxhdGUsIHVzZWQgdG8gaW5zdGFuY2lhdGUgZW1iZWRkZWQgdmlld3NcbiAgICAgKi9cbiAgICBpY29uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogVGhlIHRlbXBsYXRlIGZvciBncm91cC1ieSByb3dzLlxuICAgICAqIEl0IGlzIG9mIHR5cGUgVGVtcGxhdGVSZWYsIHdoaWNoIHJlcHJlc2VudHMgYW4gZW1iZWRkZWQgdGVtcGxhdGUsIHVzZWQgdG8gaW5zdGFuY2lhdGUgZW1iZWRkZWQgdmlld3NcbiAgICAgKi9cbiAgICBncm91cFJvd1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8SWd4R3JvdXBCeVJvd1RlbXBsYXRlQ29udGV4dD47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBncm91cCByb3cgc2VsZWN0b3IuXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIGdyb3VwQnlSb3dTZWxlY3RvclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SWd4R3JvdXBCeVJvd1NlbGVjdG9yVGVtcGxhdGVDb250ZXh0PjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFRoZSB0ZW1wbGF0ZSBmb3Igcm93IGxvYWRpbmcgaW5kaWNhdG9ycy5cbiAgICAgKiBJdCBpcyBvZiB0eXBlIFRlbXBsYXRlUmVmLCB3aGljaCByZXByZXNlbnRzIGFuIGVtYmVkZGVkIHRlbXBsYXRlLCB1c2VkIHRvIGluc3RhbmNpYXRlIGVtYmVkZGVkIHZpZXdzXG4gICAgICovXG4gICAgcm93TG9hZGluZ0luZGljYXRvclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKipcbiAgICAgKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBoZWFkZXIgc2VsZWN0b3IuXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIGhlYWRTZWxlY3RvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hIZWFkU2VsZWN0b3JUZW1wbGF0ZUNvbnRleHQ+O1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSBmb3Igcm93IHNlbGVjdG9ycy5cbiAgICAgKiBJdCBpcyBvZiB0eXBlIFRlbXBsYXRlUmVmLCB3aGljaCByZXByZXNlbnRzIGFuIGVtYmVkZGVkIHRlbXBsYXRlLCB1c2VkIHRvIGluc3RhbmNpYXRlIGVtYmVkZGVkIHZpZXdzXG4gICAgICovXG4gICAgcm93U2VsZWN0b3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8SWd4Um93U2VsZWN0b3JUZW1wbGF0ZUNvbnRleHQ+O1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSBmb3Igc29ydCBoZWFkZXIgaWNvbnMuXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIHNvcnRIZWFkZXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPElneEdyaWRIZWFkZXJUZW1wbGF0ZUNvbnRleHQ+O1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSBmb3IgYXNjZW5kaW5nIHNvcnQgaGVhZGVyIGljb25zLlxuICAgICAqIEl0IGlzIG9mIHR5cGUgVGVtcGxhdGVSZWYsIHdoaWNoIHJlcHJlc2VudHMgYW4gZW1iZWRkZWQgdGVtcGxhdGUsIHVzZWQgdG8gaW5zdGFuY2lhdGUgZW1iZWRkZWQgdmlld3NcbiAgICAgKi9cbiAgICBzb3J0QXNjZW5kaW5nSGVhZGVySWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hHcmlkSGVhZGVyVGVtcGxhdGVDb250ZXh0PjtcbiAgICAvKipcbiAgICAgKiBUaGUgdGVtcGxhdGUgZm9yIGRlc2NlbmRpbmcgc29ydCBoZWFkZXIgaWNvbnMuXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIHNvcnREZXNjZW5kaW5nSGVhZGVySWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hHcmlkSGVhZGVyVGVtcGxhdGVDb250ZXh0PjtcbiAgICAvKipcbiAgICAgKiBUaGUgdGVtcGxhdGUgZm9yIGhlYWRlciBjb2xsYXBzZWQgaW5kaWNhdG9ycy5cbiAgICAgKiBJdCBpcyBvZiB0eXBlIFRlbXBsYXRlUmVmLCB3aGljaCByZXByZXNlbnRzIGFuIGVtYmVkZGVkIHRlbXBsYXRlLCB1c2VkIHRvIGluc3RhbmNpYXRlIGVtYmVkZGVkIHZpZXdzXG4gICAgICovXG4gICAgaGVhZGVyQ29sbGFwc2VkSW5kaWNhdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPElneEdyaWRUZW1wbGF0ZUNvbnRleHQ+O1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSBmb3IgaGVhZGVyIGV4cGFuZGVkIGluZGljYXRvcnMuXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIGhlYWRlckV4cGFuZGVkSW5kaWNhdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPElneEdyaWRUZW1wbGF0ZUNvbnRleHQ+O1xuICAgIC8qKiBUaGUgdGVtcGxhdGUgZm9yIGRyYWcgaW5kaWNhdG9yIGljb25zLiBDb3VsZCBiZSBvZiBhbnkgdHlwZSAqL1xuICAgIGRyYWdJbmRpY2F0b3JJY29uVGVtcGxhdGU6IGFueTtcbiAgICAvKiogVGhlIGJhc2UgZHJhZyBpbmRpY2F0b3IgaWNvbi4gQ291bGQgYmUgb2YgYW55IHR5cGUgKi9cbiAgICBkcmFnSW5kaWNhdG9ySWNvbkJhc2U6IGFueTtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdHJhbnNpdGlvbnMgYXJlIGRpc2FibGVkIGZvciB0aGUgZ3JpZC4gKi9cbiAgICBkaXNhYmxlVHJhbnNpdGlvbnM6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjdXJyZW5jeSBzeW1ib2wgaXMgcG9zaXRpb25lZCB0byB0aGUgbGVmdCBvZiB2YWx1ZXMuICovXG4gICAgY3VycmVuY3lQb3NpdGlvbkxlZnQ6IGJvb2xlYW47XG5cbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4gaXMgc2V0IGJ5IHRoZSB1c2VyLCBvciBpcyBjb25maWd1cmVkIGF1dG9tYXRpY2FsbHkuICovXG4gICAgY29sdW1uV2lkdGhTZXRCeVVzZXI6IGJvb2xlYW47XG4gICAgaGVhZGVyRmVhdHVyZXNXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBDU1Mgc3R5bGluZyBjYWxjdWxhdGVkIGZvciBhbiBlbGVtZW50OiBjYWxjSGVpZ2h0LCBjYWxjV2lkdGgsIG91dGVyV2lkdGggKi9cbiAgICBjYWxjSGVpZ2h0OiBudW1iZXI7XG4gICAgY2FsY1dpZHRoOiBudW1iZXI7XG4gICAgb3V0ZXJXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBUaGUgaGVpZ2h0IG9mIGVhY2ggcm93IGluIHRoZSBncmlkLiBTZXR0aW5nIGEgY29uc3RhbnQgaGVpZ2h0IGNhbiBzb2x2ZSBwcm9ibGVtcyB3aXRoIG5vdCBzaG93aW5nIGFsbCBhbGVtZW50cyB3aGVuIHNjcm9sbGluZyAqL1xuICAgIHJvd0hlaWdodDogbnVtYmVyO1xuICAgIG11bHRpUm93TGF5b3V0Um93U2l6ZTogbnVtYmVyO1xuICAgIC8qKiBNaW5pbWFsIHdpZHRoIGZvciBoZWFkZXJzICovXG4gICAgZGVmYXVsdEhlYWRlckdyb3VwTWluV2lkdGg6IGFueTtcbiAgICBtYXhMZXZlbEhlYWRlckRlcHRoOiBudW1iZXI7XG4gICAgZGVmYXVsdFJvd0hlaWdodDogbnVtYmVyO1xuICAgIC8qKiBUaGUgZGVmYXVsdCBmb250IHNpemUsIGNhbGN1bGF0ZWQgZm9yIGVhY2ggZWxlbWVudCAqL1xuICAgIF9iYXNlRm9udFNpemU/OiBudW1iZXI7XG4gICAgc2Nyb2xsU2l6ZTogbnVtYmVyO1xuXG4gICAgLyoqIFRoZSB0cmlnZ2VyIGZvciBncmlkIHZhbGlkYXRpb24uIEl0J3MgdmFsdWUgY2FuIGVpZ2h0ZXIgYmUgYGNoYW5nZWAgb3IgYGJsdXJgICovXG4gICAgdmFsaWRhdGlvblRyaWdnZXI6IEdyaWRWYWxpZGF0aW9uVHJpZ2dlcjtcbiAgICAvKipcbiAgICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgY29sdW1ucyBhbmQgcm93cyBwaW5uaW5nIGluIHRoZSBncmlkXG4gICAgICogSXQncyBvZiB0eXBlIElQaW5uaW5nQ29uZmlnLCB3aGljaCBjYW4gaGF2ZSB2YWx1ZSBmb3IgY29sdW1ucyAoc3RhcnQsIGVuZCkgYW5kIGZvciByb3dzICh0b3AsIGJvdHRvbSlcbiAgICAqL1xuICAgIHBpbm5pbmc6IElQaW5uaW5nQ29uZmlnO1xuICAgIGV4cGFuc2lvblN0YXRlczogTWFwPGFueSwgYm9vbGVhbj47XG4gICAgcGFyZW50VmlydERpcjogYW55O1xuICAgIHRib2R5OiBhbnk7XG4gICAgdmVydGljYWxTY3JvbGxDb250YWluZXI6IGFueTtcbiAgICBkYXRhUm93TGlzdDogYW55O1xuICAgIHJvd0xpc3Q6IGFueTtcbiAgICAvKiogQW4gdW5tb2RpZmlhYmxlIGxpc3QsIGNvbnRhaW5pbmcgYWxsIHRoZSBjb2x1bW5zIG9mIHRoZSBncmlkLiAqL1xuICAgIGNvbHVtbkxpc3Q6IFF1ZXJ5TGlzdDxDb2x1bW5UeXBlPjtcbiAgICBjb2x1bW5zOiBDb2x1bW5UeXBlW107XG4gICAgLyoqIEFuIGFycmF5IG9mIGNvbHVtbnMsIGJ1dCBpdCBjb3VudHMgb25seSB0aGUgb25lcyB2aXNpYmxlIChub3QgaGlkZGVuKSBpbiB0aGUgdmlldyAqL1xuICAgIHZpc2libGVDb2x1bW5zOiBDb2x1bW5UeXBlW107XG4gICAgLyoqIEFuIGFycmF5IG9mIGNvbHVtbnMsIGJ1dCBpdCBjb3VudHMgb25seSB0aGUgb25lcyB0aGF0IGFyZSBub3QgcGlubmVkICovXG4gICAgdW5waW5uZWRDb2x1bW5zOiBDb2x1bW5UeXBlW107XG4gICAgLyoqIEFuIGFycmF5IG9mIGNvbHVtbnMsIGJ1dCBpdCBjb3VudHMgb25seSB0aGUgb25lcyB0aGF0IGFyZSBwaW5uZWQgKi9cbiAgICBwaW5uZWRDb2x1bW5zOiBDb2x1bW5UeXBlW107XG4gICAgLyoqIHJlcHJlc2VudHMgYW4gYXJyYXkgb2YgdGhlIGhlYWRlcnMgb2YgdGhlIGNvbHVtbnMgKi9cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBoZWFkZXJDZWxsTGlzdDogYW55W107XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgaGVhZGVyR3JvdXBzOiBhbnlbXTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBoZWFkZXJHcm91cHNMaXN0OiBhbnlbXTtcbiAgICBzdW1tYXJpZXNSb3dMaXN0OiBhbnk7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgaGVhZGVyQ29udGFpbmVyOiBhbnk7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIGNlbGxzIGFyZSBzZWxlY3RhYmxlIGluIHRoZSBncmlkICovXG4gICAgaXNDZWxsU2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgaXQgaXMgYWxsb3dlZCB0byBzZWxlY3QgbW9yZSB0aGFuIG9uZSByb3cgaW4gdGhlIGdyaWQgKi9cbiAgICBpc011bHRpUm93U2VsZWN0aW9uRW5hYmxlZDogYm9vbGVhbjtcbiAgICBoYXNQaW5uZWRSZWNvcmRzOiBib29sZWFuO1xuICAgIHBpbm5lZFJlY29yZHNDb3VudDogbnVtYmVyO1xuICAgIHBpbm5lZFJlY29yZHM6IGFueVtdO1xuICAgIHVucGlubmVkUmVjb3JkczogYW55W107XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcGlubmVkRGF0YVZpZXc6IGFueVtdO1xuICAgIHBpbm5lZFJvd3M6IGFueVtdO1xuICAgIGRhdGFWaWV3OiBhbnlbXTtcbiAgICBfZmlsdGVyZWRVbnBpbm5lZERhdGE6IGFueVtdO1xuICAgIF9maWx0ZXJlZFNvcnRlZFVucGlubmVkRGF0YTogYW55W107XG4gICAgZmlsdGVyZWRTb3J0ZWREYXRhOiBhbnlbXTtcbiAgICBkYXRhV2l0aEFkZGVkSW5UcmFuc2FjdGlvblJvd3M6IGFueVtdO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSB0cmFuc2FjdGlvbiBzZXJ2aWNlIGZvciB0aGUgZ3JpZC4gKi9cbiAgICByZWFkb25seSB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uU2VydmljZTxUcmFuc2FjdGlvbiwgU3RhdGU+O1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSB2YWxpZGF0aW9uIHNlcnZpY2UgZm9yIHRoZSBncmlkLiBUaGUgdHlwZSBjb250YWlucyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIChsb2dpYykgZm9yIHZhbGlkYXRpbmcgcmVjb3JkcyAqL1xuICAgIHJlYWRvbmx5IHZhbGlkYXRpb246IElneEdyaWRWYWxpZGF0aW9uU2VydmljZTtcbiAgICBkZWZhdWx0U3VtbWFyeUhlaWdodDogbnVtYmVyO1xuICAgIHN1bW1hcnlSb3dIZWlnaHQ6IG51bWJlcjtcbiAgICByb3dFZGl0aW5nT3ZlcmxheTogSWd4VG9nZ2xlRGlyZWN0aXZlO1xuICAgIHRvdGFsUm93c0NvdW50QWZ0ZXJGaWx0ZXI6IG51bWJlcjtcbiAgICBfdG90YWxSZWNvcmRzOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgcGFnaW5nIG9mIHRoZSBncmlkLiBJdCBjYW4gYmUgZWlnaHRlciAnTG9jYWwnIG9yICdSZW1vdGUnXG4gICAgICogLSBMb2NhbDogRGVmYXVsdCB2YWx1ZTsgVGhlIGdyaWQgd2lsbCBwYWdpbmF0ZSB0aGUgZGF0YSBzb3VyY2UgYmFzZWQgb24gdGhlIHBhZ2VcbiAgICAgKi9cbiAgICBwYWdpbmdNb2RlOiBHcmlkUGFnaW5nTW9kZTtcbiAgICAvKiogVGhlIHBhZ2luZyBzdGF0ZSBmb3IgdGhlIGdyaWQ7IFVzZWQgdG8gY29uZmlndXJlIGhvdyBwYWdpbmcgc2hvdWxkIGJlIGFwcGxpZWQgLSB3aGljaCBpcyB0aGUgY3VycmVudCBwYWdlLCByZWNvcmRzIHBlciBwYWdlICovXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwYWdpbmdTdGF0ZTogYW55O1xuXG4gICAgcm93RWRpdFRhYnM6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgbGFzdCBzZWFyY2ggaW4gdGhlIGdyaWRcbiAgICAgKiBJdCBjb250YWlucyB0aGUgc2VhcmNoIHRleHQgKHRoZSB1c2VyIGhhcyBlbnRlcmVkKSwgdGhlIG1hdGNoIGFuZCBzb21lIHNldHRpbmdzIGZvciB0aGUgc2VhcmNoXG4gICAgICovXG4gICAgbGFzdFNlYXJjaEluZm86IElTZWFyY2hJbmZvO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwZXJQYWdlOiBudW1iZXI7XG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgcm93IGN1cnJlbnRseSBiZWluZyBkcmFnZ2VkIGluIHRoZSBncmlkLiAqL1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGRyYWdSb3dJRDogYW55O1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciBhIHJvdyBpcyBjdXJyZW50bHkgYmVpbmcgZHJhZ2dlZCAqL1xuICAgIHJvd0RyYWdnaW5nOiBib29sZWFuO1xuXG4gICAgZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4OiBudW1iZXI7XG4gICAgbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXg6IG51bWJlcjtcbiAgICBpc1Jvd1Bpbm5pbmdUb1RvcDogYm9vbGVhbjtcbiAgICBoYXNEZXRhaWxzOiBib29sZWFuO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGhhc1N1bW1hcml6ZWRDb2x1bW5zOiBib29sZWFuO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGhhc0NvbHVtbkdyb3VwczogYm9vbGVhbjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBoYXNFZGl0YWJsZUNvbHVtbnM6IGJvb2xlYW47XG4gICAgLyoqIFByb3BlcnR5LCB0aGF0IHByb3ZpZGVzIGEgY2FsbGJhY2sgZm9yIGxvYWRpbmcgdW5pcXVlIGNvbHVtbiB2YWx1ZXMgb24gZGVtYW5kLlxuICAgICAqIElmIHRoaXMgcHJvcGVydHkgaXMgcHJvdmlkZWQsIHRoZSB1bmlxdWUgdmFsdWVzIGl0IGdlbmVyYXRlcyB3aWxsIGJlIHVzZWQgYnkgdGhlIEV4Y2VsIFN0eWxlIEZpbHRlcmluZyAgKi9cbiAgICB1bmlxdWVDb2x1bW5WYWx1ZXNTdHJhdGVneTogKGNvbHVtbjogQ29sdW1uVHlwZSwgdHJlZTogRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBkb25lOiAodmFsdWVzOiBhbnlbXSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgICAvKiogUHJvcGVydHksIHRoYXQgZ2V0cyB0aGUgaGVhZGVyIGNlbGwgaW5uZXIgd2lkdGggZm9yIGF1dG8tc2l6aW5nLiAqL1xuICAgIGdldEhlYWRlckNlbGxXaWR0aDogKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiBJU2l6ZUluZm87XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBjaGFuZ2UgZGV0ZWN0aW9uIGZ1bmN0aW9uYWxpdHkuXG4gICAgICogQSBjaGFuZ2UtZGV0ZWN0aW9uIHRyZWUgY29sbGVjdHMgYWxsIHZpZXdzIHRoYXQgYXJlIHRvIGJlIGNoZWNrZWQgZm9yIGNoYW5nZXMuXG4gICAgICogVGhlIHByb3BlcnR5IGNhbm5vdCBiZSBjaGFuZ2VkIChyZWFkb25seSkgKi9cbiAgICByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGRvY3VtZW50OiBEb2N1bWVudDtcbiAgICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIGZvciBleHBhbmRlZCByb3cgaW5kaWNhdG9ycy5cbiAgICAgKiBJdCBpcyBvZiB0eXBlIFRlbXBsYXRlUmVmLCB3aGljaCByZXByZXNlbnRzIGFuIGVtYmVkZGVkIHRlbXBsYXRlLCB1c2VkIHRvIGluc3RhbmNpYXRlIGVtYmVkZGVkIHZpZXdzXG4gICAgICovXG4gICAgcm93RXhwYW5kZWRJbmRpY2F0b3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8SWd4R3JpZFJvd1RlbXBsYXRlQ29udGV4dD47XG4gICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIGZvciBjb2xsYXBzZWQgcm93IGluZGljYXRvcnMuXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIHJvd0NvbGxhcHNlZEluZGljYXRvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hHcmlkUm93VGVtcGxhdGVDb250ZXh0PjtcbiAgICAvKipcbiAgICAgKiBUaGUgdGVtcGxhdGUgZm9yIGhlYWRlciBpY29uXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIGV4Y2VsU3R5bGVIZWFkZXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPElneEdyaWRIZWFkZXJUZW1wbGF0ZUNvbnRleHQ+O1xuXG4gICAgc2VsZWN0Um93T25DbGljazogYm9vbGVhbjtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgc2VsZWN0aW9uIG1vZGUgZm9yIGNlbGxzOiAnbm9uZScsJ3NpbmdsZScsICdtdWx0aXBsZScsICdtdWx0aXBsZUNhc2NhZGUnICovXG4gICAgY2VsbFNlbGVjdGlvbjogR3JpZFNlbGVjdGlvbk1vZGU7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIHNlbGVjdGlvbiBtb2RlIGZvciByb3dzOiAnbm9uZScsJ3NpbmdsZScsICdtdWx0aXBsZScsICdtdWx0aXBsZUNhc2NhZGUnICovXG4gICAgcm93U2VsZWN0aW9uOiBHcmlkU2VsZWN0aW9uTW9kZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgc2VsZWN0aW9uIG1vZGUgZm9yIGNvbHVtbnM6ICdub25lJywnc2luZ2xlJywgJ211bHRpcGxlJywgJ211bHRpcGxlQ2FzY2FkZScgKi9cbiAgICBjb2x1bW5TZWxlY3Rpb246IEdyaWRTZWxlY3Rpb25Nb2RlO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBjYWxjdWxhdGlvbiBtb2RlIGZvciBzdW1tYXJpZXM6ICdyb290TGV2ZWxPbmx5JywgJ2NoaWxkTGV2ZWxzT25seScsICdyb290QW5kQ2hpbGRMZXZlbHMnICovXG4gICAgc3VtbWFyeUNhbGN1bGF0aW9uTW9kZTogR3JpZFN1bW1hcnlDYWxjdWxhdGlvbk1vZGU7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIHBvc2l0aW9uIG9mIHN1bW1hcmllczogJ3RvcCcsICdib3R0b20nICovXG4gICAgc3VtbWFyeVBvc2l0aW9uOiBHcmlkU3VtbWFyeVBvc2l0aW9uO1xuXG4gICAgLy8gWFhYOiBXb3JrIGFyb3VuZCB0aWxsIHdlIGZpeGVkIHRoZSBpbmplY3Rpb24gdG9rZW5zXG4gICAgbGFzdENoaWxkR3JpZD86IEdyaWRUeXBlO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHRvb2xiYXJPdXRsZXQ/OiBWaWV3Q29udGFpbmVyUmVmO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHBhZ2luYXRvck91dGxldD86IFZpZXdDb250YWluZXJSZWY7XG4gICAgZmxhdERhdGE/OiBhbnlbXSB8IG51bGw7XG4gICAgY2hpbGRSb3c/OiBhbnk7XG4gICAgZXhwYW5zaW9uRGVwdGg/OiBudW1iZXI7XG4gICAgY2hpbGREYXRhS2V5PzogYW55O1xuICAgIGZvcmVpZ25LZXk/OiBhbnk7XG4gICAgY2FzY2FkZU9uRGVsZXRlPzogYm9vbGVhbjtcbiAgICBsb2FkQ2hpbGRyZW5PbkRlbWFuZD86IChwYXJlbnRJRDogYW55LCBkb25lOiAoY2hpbGRyZW46IGFueVtdKSA9PiB2b2lkKSA9PiB2b2lkO1xuICAgIGhhc0NoaWxkcmVuS2V5PzogYW55O1xuICAgIGxvYWRpbmdSb3dzPzogU2V0PGFueT47XG4gICAgcGFyZW50PzogR3JpZFR5cGU7XG4gICAgaGlnaGxpZ2h0ZWRSb3dJRD86IGFueTtcbiAgICB1cGRhdGVPblJlbmRlcj86IGJvb2xlYW47XG4gICAgY2hpbGRMYXlvdXRLZXlzPzogYW55W107XG4gICAgY2hpbGRMYXlvdXRMaXN0PzogUXVlcnlMaXN0PGFueT47XG4gICAgcm9vdEdyaWQ/OiBHcmlkVHlwZTtcbiAgICBwcm9jZXNzZWRSb290UmVjb3Jkcz86IElUcmVlR3JpZFJlY29yZFtdO1xuICAgIHJvb3RSZWNvcmRzPzogSVRyZWVHcmlkUmVjb3JkW107XG4gICAgcmVjb3Jkcz86IE1hcDxhbnksIElUcmVlR3JpZFJlY29yZD47XG4gICAgcHJvY2Vzc2VkRXhwYW5kZWRGbGF0RGF0YT86IGFueVtdIHwgbnVsbDtcbiAgICBwcm9jZXNzZWRSZWNvcmRzPzogTWFwPGFueSwgSVRyZWVHcmlkUmVjb3JkPjtcbiAgICB0cmVlR3JvdXBBcmVhPzogYW55O1xuXG4gICAgYWN0aXZlTm9kZUNoYW5nZTogRXZlbnRFbWl0dGVyPElBY3RpdmVOb2RlQ2hhbmdlRXZlbnRBcmdzPjtcbiAgICBncmlkS2V5ZG93bjogRXZlbnRFbWl0dGVyPElHcmlkS2V5ZG93bkV2ZW50QXJncz47XG4gICAgY2VsbENsaWNrOiBFdmVudEVtaXR0ZXI8SUdyaWRDZWxsRXZlbnRBcmdzPjtcbiAgICByb3dDbGljazogRXZlbnRFbWl0dGVyPElHcmlkUm93RXZlbnRBcmdzPjtcbiAgICBkb3VibGVDbGljazogRXZlbnRFbWl0dGVyPElHcmlkQ2VsbEV2ZW50QXJncz47XG4gICAgY29udGV4dE1lbnU6IEV2ZW50RW1pdHRlcjxJR3JpZENlbGxFdmVudEFyZ3M+O1xuICAgIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8SUdyaWRDZWxsRXZlbnRBcmdzPjtcbiAgICByYW5nZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8R3JpZFNlbGVjdGlvblJhbmdlPjtcbiAgICByb3dTZWxlY3Rpb25DaGFuZ2luZzogRXZlbnRFbWl0dGVyPElSb3dTZWxlY3Rpb25FdmVudEFyZ3M+O1xuICAgIGxvY2FsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuICAgIGZpbHRlcmluZzogRXZlbnRFbWl0dGVyPElGaWx0ZXJpbmdFdmVudEFyZ3M+O1xuICAgIGZpbHRlcmluZ0RvbmU6IEV2ZW50RW1pdHRlcjxJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlPjtcbiAgICBjb2x1bW5QaW5uZWQ6IEV2ZW50RW1pdHRlcjxJUGluQ29sdW1uRXZlbnRBcmdzPjtcbiAgICBjb2x1bW5SZXNpemVkOiBFdmVudEVtaXR0ZXI8SUNvbHVtblJlc2l6ZUV2ZW50QXJncz47XG4gICAgY29sdW1uTW92aW5nRW5kOiBFdmVudEVtaXR0ZXI8SUNvbHVtbk1vdmluZ0VuZEV2ZW50QXJncz47XG4gICAgY29sdW1uU2VsZWN0aW9uQ2hhbmdpbmc6IEV2ZW50RW1pdHRlcjxJQ29sdW1uU2VsZWN0aW9uRXZlbnRBcmdzPjtcbiAgICBjb2x1bW5Nb3Zpbmc6IEV2ZW50RW1pdHRlcjxJQ29sdW1uTW92aW5nRXZlbnRBcmdzPjtcbiAgICBjb2x1bW5Nb3ZpbmdTdGFydDogRXZlbnRFbWl0dGVyPElDb2x1bW5Nb3ZpbmdTdGFydEV2ZW50QXJncz47XG4gICAgY29sdW1uUGluOiBFdmVudEVtaXR0ZXI8SVBpbkNvbHVtbkNhbmNlbGxhYmxlRXZlbnRBcmdzPjtcbiAgICBjb2x1bW5WaXNpYmlsaXR5Q2hhbmdpbmc6IEV2ZW50RW1pdHRlcjxJQ29sdW1uVmlzaWJpbGl0eUNoYW5naW5nRXZlbnRBcmdzPjtcbiAgICBjb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZDogRXZlbnRFbWl0dGVyPElDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZEV2ZW50QXJncz47XG4gICAgYmF0Y2hFZGl0aW5nQ2hhbmdlPzogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuICAgIGRlbnNpdHlDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8SURlbnNpdHlDaGFuZ2VkRXZlbnRBcmdzPjtcbiAgICByb3dBZGQ6IEV2ZW50RW1pdHRlcjxJUm93RGF0YUNhbmNlbGFibGVFdmVudEFyZ3M+O1xuICAgIHJvd0FkZGVkOiBFdmVudEVtaXR0ZXI8SVJvd0RhdGFFdmVudEFyZ3M+O1xuICAgIHJvd0FkZGVkTm90aWZpZXI6IFN1YmplY3Q8SVJvd0RhdGFFdmVudEFyZ3M+O1xuICAgIHJvd0RlbGV0ZTogRXZlbnRFbWl0dGVyPElSb3dEYXRhQ2FuY2VsYWJsZUV2ZW50QXJncz47XG4gICAgcm93RGVsZXRlZDogRXZlbnRFbWl0dGVyPElSb3dEYXRhRXZlbnRBcmdzPjtcbiAgICByb3dEZWxldGVkTm90aWZpZXI6IFN1YmplY3Q8SVJvd0RhdGFFdmVudEFyZ3M+O1xuICAgIGNlbGxFZGl0RW50ZXI6IEV2ZW50RW1pdHRlcjxJR3JpZEVkaXRFdmVudEFyZ3M+O1xuICAgIGNlbGxFZGl0OiBFdmVudEVtaXR0ZXI8SUdyaWRFZGl0RXZlbnRBcmdzPjtcbiAgICBjZWxsRWRpdERvbmU6IEV2ZW50RW1pdHRlcjxJR3JpZEVkaXREb25lRXZlbnRBcmdzPjtcbiAgICBjZWxsRWRpdEV4aXQ6IEV2ZW50RW1pdHRlcjxJR3JpZEVkaXREb25lRXZlbnRBcmdzPjtcbiAgICByb3dFZGl0RW50ZXI6IEV2ZW50RW1pdHRlcjxJR3JpZEVkaXRFdmVudEFyZ3M+O1xuICAgIHJvd0VkaXQ6IEV2ZW50RW1pdHRlcjxJR3JpZEVkaXRFdmVudEFyZ3M+O1xuICAgIHJvd0VkaXREb25lOiBFdmVudEVtaXR0ZXI8SUdyaWRFZGl0RG9uZUV2ZW50QXJncz47XG4gICAgcm93RWRpdEV4aXQ6IEV2ZW50RW1pdHRlcjxJR3JpZEVkaXREb25lRXZlbnRBcmdzPjtcbiAgICByb3dEcmFnU3RhcnQ6IEV2ZW50RW1pdHRlcjxJUm93RHJhZ1N0YXJ0RXZlbnRBcmdzPjtcbiAgICByb3dEcmFnRW5kOiBFdmVudEVtaXR0ZXI8SVJvd0RyYWdFbmRFdmVudEFyZ3M+O1xuICAgIHJvd1RvZ2dsZTogRXZlbnRFbWl0dGVyPElSb3dUb2dnbGVFdmVudEFyZ3M+O1xuICAgIGZvcm1Hcm91cENyZWF0ZWQ6IEV2ZW50RW1pdHRlcjxJR3JpZEZvcm1Hcm91cENyZWF0ZWRFdmVudEFyZ3M+O1xuICAgIHZhbGlkYXRpb25TdGF0dXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJR3JpZFZhbGlkYXRpb25TdGF0dXNFdmVudEFyZ3M+O1xuXG4gICAgdG9vbGJhckV4cG9ydGluZzogRXZlbnRFbWl0dGVyPElHcmlkVG9vbGJhckV4cG9ydEV2ZW50QXJncz47XG4gICAgcmVuZGVyZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHJlc2l6ZU5vdGlmeTogU3ViamVjdDx2b2lkPjtcblxuICAgIHNvcnRTdHJhdGVneTogSUdyaWRTb3J0aW5nU3RyYXRlZ3k7XG4gICAgZ3JvdXBTdHJhdGVneT86IElHcmlkR3JvdXBpbmdTdHJhdGVneTtcbiAgICBmaWx0ZXJpbmdMb2dpYzogRmlsdGVyaW5nTG9naWM7XG4gICAgZmlsdGVyU3RyYXRlZ3k6IElGaWx0ZXJpbmdTdHJhdGVneTtcbiAgICBhbGxvd0FkdmFuY2VkRmlsdGVyaW5nOiBib29sZWFuO1xuICAgIHNvcnRpbmdFeHByZXNzaW9uczogSVNvcnRpbmdFeHByZXNzaW9uW107XG4gICAgc29ydGluZ0V4cHJlc3Npb25zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVNvcnRpbmdFeHByZXNzaW9uW10+O1xuICAgIGZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICBmaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlPjtcbiAgICBhZHZhbmNlZEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICBhZHZhbmNlZEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZUNoYW5nZTogRXZlbnRFbWl0dGVyPElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU+O1xuICAgIHNvcnRpbmdPcHRpb25zOiBJU29ydGluZ09wdGlvbnM7XG5cbiAgICBiYXRjaEVkaXRpbmc6IGJvb2xlYW47XG4gICAgZ3JvdXBpbmdFeHBhbnNpb25TdGF0ZT86IElHcm91cEJ5RXhwYW5kU3RhdGVbXTtcbiAgICBncm91cGluZ0V4cHJlc3Npb25zPzogSUdyb3VwaW5nRXhwcmVzc2lvbltdO1xuICAgIGdyb3VwaW5nRXhwcmVzc2lvbnNDaGFuZ2U/OiBFdmVudEVtaXR0ZXI8SUdyb3VwaW5nRXhwcmVzc2lvbltdPjtcbiAgICBncm91cHNFeHBhbmRlZD86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgZ3JvdXBzUmVjb3Jkcz86IElHcm91cEJ5UmVjb3JkW107XG4gICAgZ3JvdXBpbmdGbGF0UmVzdWx0PzogYW55W107XG4gICAgZ3JvdXBpbmdSZXN1bHQ/OiBhbnlbXTtcbiAgICBncm91cGluZ01ldGFkYXRhPzogYW55W107XG4gICAgc2VsZWN0ZWRDZWxscz86IENlbGxUeXBlW107XG4gICAgc2VsZWN0ZWRSb3dzOiBhbnlbXTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBhY3RpdmVEZXNjZW5kYW50Pzogc3RyaW5nO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGlzUGl2b3Q/OiBib29sZWFuO1xuXG4gICAgdG9nZ2xlR3JvdXA/KGdyb3VwUm93OiBJR3JvdXBCeVJlY29yZCk6IHZvaWQ7XG4gICAgY2xlYXJHcm91cGluZz8oZmllbGQ6IHN0cmluZyk6IHZvaWQ7XG4gICAgZ3JvdXBCeT8oZXhwcmVzc2lvbjogSUdyb3VwaW5nRXhwcmVzc2lvbiB8IEFycmF5PElHcm91cGluZ0V4cHJlc3Npb24+KTogdm9pZDtcbiAgICByZXNvbHZlT3V0bGV0PygpOiBJZ3hPdmVybGF5T3V0bGV0RGlyZWN0aXZlO1xuICAgIHVwZGF0ZUNvbHVtbnMoY29sdW1uczogQ29sdW1uVHlwZVtdKTogdm9pZDtcbiAgICBnZXRTZWxlY3RlZFJhbmdlcygpOiBHcmlkU2VsZWN0aW9uUmFuZ2VbXTtcbiAgICBkZXNlbGVjdEFsbENvbHVtbnMoKTogdm9pZDtcbiAgICBkZXNlbGVjdENvbHVtbnMoY29sdW1uczogc3RyaW5nW10gfCBDb2x1bW5UeXBlW10pOiB2b2lkO1xuICAgIHNlbGVjdENvbHVtbnMoY29sdW1uczogc3RyaW5nW10gfCBDb2x1bW5UeXBlW10pOiB2b2lkO1xuICAgIHNlbGVjdGVkQ29sdW1ucygpOiBDb2x1bW5UeXBlW107XG4gICAgcmVmcmVzaFNlYXJjaCgpOiB2b2lkO1xuICAgIGdldERlZmF1bHRFeHBhbmRTdGF0ZShyZWNvcmQ6IGFueSk6IGJvb2xlYW47XG4gICAgdHJhY2tDb2x1bW5DaGFuZ2VzKGluZGV4OiBudW1iZXIsIGNvbHVtbjogYW55KTogYW55O1xuICAgIGdldFBvc3NpYmxlQ29sdW1uV2lkdGgoKTogc3RyaW5nO1xuICAgIHJlc2V0SG9yaXpvbnRhbFZpcnR1YWxpemF0aW9uKCk6IHZvaWQ7XG4gICAgaGFzVmVydGljYWxTY3JvbGwoKTogYm9vbGVhbjtcbiAgICBnZXRWaXNpYmxlQ29udGVudEhlaWdodCgpOiBudW1iZXI7XG4gICAgZ2V0RHJhZ0dob3N0Q3VzdG9tVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XG4gICAgb3BlblJvd092ZXJsYXkoaWQ6IGFueSk6IHZvaWQ7XG4gICAgb3BlbkFkdmFuY2VkRmlsdGVyaW5nRGlhbG9nKCk6IHZvaWQ7XG4gICAgc2hvd1NuYWNrYmFyRm9yKGluZGV4OiBudW1iZXIpOiB2b2lkO1xuICAgIGdldENvbHVtbkJ5TmFtZShuYW1lOiBzdHJpbmcpOiBhbnk7XG4gICAgZ2V0Q29sdW1uQnlWaXNpYmxlSW5kZXgoaW5kZXg6IG51bWJlcik6IENvbHVtblR5cGU7XG4gICAgZ2V0SGVhZGVyR3JvdXBXaWR0aChjb2x1bW46IENvbHVtblR5cGUpOiBzdHJpbmc7XG4gICAgZ2V0Um93QnlLZXk/KGtleTogYW55KTogUm93VHlwZTtcbiAgICBnZXRSb3dCeUluZGV4PyhpbmRleDogbnVtYmVyKTogUm93VHlwZTtcbiAgICBzZXRGaWx0ZXJlZERhdGEoZGF0YTogYW55LCBwaW5uZWQ6IGJvb2xlYW4pOiB2b2lkO1xuICAgIHNldEZpbHRlcmVkU29ydGVkRGF0YShkYXRhOiBhbnksIHBpbm5lZDogYm9vbGVhbik6IHZvaWQ7XG4gICAgc29ydChleHByZXNzaW9uOiBJU29ydGluZ0V4cHJlc3Npb24gfCBJU29ydGluZ0V4cHJlc3Npb25bXSk6IHZvaWQ7XG4gICAgY2xlYXJTb3J0KG5hbWU/OiBzdHJpbmcpOiB2b2lkO1xuICAgIHBpblJvdyhpZDogYW55LCBpbmRleD86IG51bWJlciwgcm93PzogUm93VHlwZSk6IGJvb2xlYW47XG4gICAgdW5waW5Sb3coaWQ6IGFueSwgcm93PzogUm93VHlwZSk6IGJvb2xlYW47XG4gICAgZ2V0VW5waW5uZWRJbmRleEJ5SWQoaWQ6IGFueSk6IG51bWJlcjtcbiAgICBnZXRFbXB0eVJlY29yZE9iamVjdEZvcihpblJvdzogUm93VHlwZSk6IGFueTtcbiAgICBpc1N1bW1hcnlSb3cocmVjOiBhbnkpOiBib29sZWFuO1xuICAgIGlzUmVjb3JkUGlubmVkKHJlYzogYW55KTogYm9vbGVhbjtcbiAgICBnZXRJbml0aWFsUGlubmVkSW5kZXgocmVjOiBhbnkpOiBudW1iZXI7XG4gICAgaXNSZWNvcmRQaW5uZWRCeVZpZXdJbmRleChyb3dJbmRleDogbnVtYmVyKTogYm9vbGVhbjtcbiAgICBpc0NvbHVtbkdyb3VwZWQoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuO1xuICAgIGlzRGV0YWlsUmVjb3JkKHJlYzogYW55KTogYm9vbGVhbjtcbiAgICBpc0dyb3VwQnlSZWNvcmQocmVjOiBhbnkpOiBib29sZWFuO1xuICAgIGlzR2hvc3RSZWNvcmQocmVjOiBhbnkpOiBib29sZWFuO1xuICAgIGlzVHJlZVJvdz8ocmVjOiBhbnkpOiBib29sZWFuO1xuICAgIGlzQ2hpbGRHcmlkUmVjb3JkPyhyZWM6IGFueSk6IGJvb2xlYW47XG4gICAgZ2V0Q2hpbGRHcmlkcz8oaW5EZXB0aD86IGJvb2xlYW4pOiBhbnlbXTtcbiAgICBpc0hpZXJhcmNoaWNhbFJlY29yZD8ocmVjb3JkOiBhbnkpOiBib29sZWFuO1xuICAgIGNvbHVtblRvVmlzaWJsZUluZGV4KGtleTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyO1xuICAgIG1vdmVDb2x1bW4oY29sdW1uOiBDb2x1bW5UeXBlLCB0YXJnZXQ6IENvbHVtblR5cGUsIHBvczogRHJvcFBvc2l0aW9uKTogdm9pZDtcbiAgICBuYXZpZ2F0ZVRvKHJvd0luZGV4OiBudW1iZXIsIHZpc2libGVDb2x1bW5JbmRleDogbnVtYmVyLCBjYWxsYmFjaz86IChlOiBhbnkpID0+IGFueSk6IHZvaWQ7XG4gICAgZ2V0UHJldmlvdXNDZWxsKGN1cnJSb3dJbmRleDogbnVtYmVyLCBjdXJWaXNpYmxlQ29sSW5kZXg6IG51bWJlciwgY2FsbGJhY2s6IChjOiBDb2x1bW5UeXBlKSA9PiBib29sZWFuKTogSUNlbGxQb3NpdGlvbjtcbiAgICBnZXROZXh0Q2VsbChjdXJyUm93SW5kZXg6IG51bWJlciwgY3VyVmlzaWJsZUNvbEluZGV4OiBudW1iZXIsIGNhbGxiYWNrOiAoYzogQ29sdW1uVHlwZSkgPT4gYm9vbGVhbik6IElDZWxsUG9zaXRpb247XG4gICAgY2xlYXJDZWxsU2VsZWN0aW9uKCk6IHZvaWQ7XG4gICAgc2VsZWN0UmFuZ2UocmFuZ2U6IEdyaWRTZWxlY3Rpb25SYW5nZSB8IEdyaWRTZWxlY3Rpb25SYW5nZVtdKTogdm9pZDtcbiAgICBzZWxlY3RSb3dzKHJvd0lEczogYW55W10sIGNsZWFyQ3VycmVudFNlbGVjdGlvbj86IGJvb2xlYW4pOiB2b2lkO1xuICAgIGRlc2VsZWN0Um93cyhyb3dJRHM6IGFueVtdKTogdm9pZDtcbiAgICBzZWxlY3RBbGxSb3dzKG9ubHlGaWx0ZXJEYXRhPzogYm9vbGVhbik6IHZvaWQ7XG4gICAgZGVzZWxlY3RBbGxSb3dzKG9ubHlGaWx0ZXJEYXRhPzogYm9vbGVhbik6IHZvaWQ7XG4gICAgc2V0VXBQYWdpbmF0b3IoKTogdm9pZDtcbiAgICBjcmVhdGVGaWx0ZXJEcm9wZG93bihjb2x1bW46IENvbHVtblR5cGUsIG9wdGlvbnM6IE92ZXJsYXlTZXR0aW5ncyk6IGFueTtcbiAgICB1cGRhdGVDZWxsKHZhbHVlOiBhbnksIHJvd1NlbGVjdG9yOiBhbnksIGNvbHVtbjogc3RyaW5nKTogdm9pZDtcbiAgICAvLyBUeXBlIHRvIFJvd1R5cGVcbiAgICBjcmVhdGVSb3c/KGluZGV4OiBudW1iZXIsIGRhdGE/OiBhbnkpOiBSb3dUeXBlO1xuICAgIGRlbGV0ZVJvdyhpZDogYW55KTogYW55O1xuICAgIGRlbGV0ZVJvd0J5SWQoaWQ6IGFueSk6IGFueTtcbiAgICB1cGRhdGVSb3codmFsdWU6IGFueSwgcm93U2VsZWN0b3I6IGFueSk6IHZvaWQ7XG4gICAgY29sbGFwc2VSb3coaWQ6IGFueSk6IHZvaWQ7XG4gICAgbm90aWZ5Q2hhbmdlcyhyZXBhaW50PzogYm9vbGVhbik6IHZvaWQ7XG4gICAgcmVzZXRDb2x1bW5Db2xsZWN0aW9ucygpOiB2b2lkO1xuICAgIHRyaWdnZXJQaXBlcygpOiB2b2lkO1xuICAgIHJlcG9zaXRpb25Sb3dFZGl0aW5nT3ZlcmxheShyb3c6IFJvd1R5cGUpOiB2b2lkO1xuICAgIGNsb3NlUm93RWRpdGluZ092ZXJsYXkoKTogdm9pZDtcbiAgICByZWZsb3coKTogdm9pZDtcblxuICAgIC8vIFRPRE86IE1heWJlIG1vdmUgdGhlbSB0byBGbGF0R3JpZFR5cGUsIGJ1dCB0aGVuIHdpbGwgd2UgbmVlZCBhbm90aGVyIHRva2VuP1xuICAgIGlzRXhwYW5kZWRHcm91cChncm91cDogSUdyb3VwQnlSZWNvcmQpOiBib29sZWFuO1xuICAgIGNyZWF0ZUNvbHVtbnNMaXN0Pyhjb2xzOiBDb2x1bW5UeXBlW10pOiB2b2lkO1xuICAgIHRvZ2dsZUFsbEdyb3VwUm93cz8oKTogdm9pZDtcbiAgICB0b2dnbGVBbGw/KCk6IHZvaWQ7XG4gICAgZ2VuZXJhdGVSb3dQYXRoPyhyb3dJZDogYW55KTogYW55W107XG4gICAgcHJldmVudEhlYWRlclNjcm9sbD8oYXJnczogYW55KTogdm9pZDtcbn1cblxuLyoqXG4gKiBBbiBpbnRlcmZhY2UgZGVzY3JpYmluZyBhIEZsYXQgR3JpZCB0eXBlLiBJdCBpcyBlc3NlbnRpYWxseSB0aGUgYmx1ZXByaW50IHRvIGEgZ3JpZCBraW5kXG4gKiBDb250YWlucyBkZWZpbml0aW9ucyBvZiBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLCByZWxldmFudCB0byBhIGdyaWQga2luZFxuICogRXh0ZW5kcyBmcm9tIGBHcmlkVHlwZWBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbGF0R3JpZFR5cGUgZXh0ZW5kcyBHcmlkVHlwZSB7XG4gICAgZ3JvdXBpbmdFeHBhbnNpb25TdGF0ZTogSUdyb3VwQnlFeHBhbmRTdGF0ZVtdO1xuICAgIGdyb3VwaW5nRXhwcmVzc2lvbnM6IElHcm91cGluZ0V4cHJlc3Npb25bXTtcbiAgICBncm91cGluZ0V4cHJlc3Npb25zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SUdyb3VwaW5nRXhwcmVzc2lvbltdPjtcblxuICAgIHRvZ2dsZUdyb3VwKGdyb3VwUm93OiBJR3JvdXBCeVJlY29yZCk6IHZvaWQ7XG4gICAgY2xlYXJHcm91cGluZyhmaWVsZDogc3RyaW5nKTogdm9pZDtcbiAgICBncm91cEJ5KGV4cHJlc3Npb246IElHcm91cGluZ0V4cHJlc3Npb24gfCBBcnJheTxJR3JvdXBpbmdFeHByZXNzaW9uPik6IHZvaWQ7XG59XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIGRlc2NyaWJpbmcgYSBUcmVlIEdyaWQgdHlwZS4gSXQgaXMgZXNzZW50aWFsbHkgdGhlIGJsdWVwcmludCB0byBhIGdyaWQga2luZFxuICogQ29udGFpbnMgZGVmaW5pdGlvbnMgb2YgcHJvcGVydGllcyBhbmQgbWV0aG9kcywgcmVsZXZhbnQgdG8gYSBncmlkIGtpbmRcbiAqIEV4dGVuZHMgZnJvbSBgR3JpZFR5cGVgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZUdyaWRUeXBlIGV4dGVuZHMgR3JpZFR5cGUge1xuICAgIHJlY29yZHM6IE1hcDxhbnksIElUcmVlR3JpZFJlY29yZD47XG4gICAgaXNUcmVlUm93KHJlYzogYW55KTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBbiBpbnRlcmZhY2UgZGVzY3JpYmluZyBhIEhpZXJhcmNoaWNhbCBHcmlkIHR5cGUuIEl0IGlzIGVzc2VudGlhbGx5IHRoZSBibHVlcHJpbnQgdG8gYSBncmlkIGtpbmRcbiAqIENvbnRhaW5zIGRlZmluaXRpb25zIG9mIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMsIHJlbGV2YW50IHRvIGEgZ3JpZCBraW5kXG4gKiBFeHRlbmRzIGZyb20gYEdyaWRUeXBlYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZXJhcmNoaWNhbEdyaWRUeXBlIGV4dGVuZHMgR3JpZFR5cGUge1xuICAgIGNoaWxkTGF5b3V0S2V5czogYW55W107XG59XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIGRlc2NyaWJpbmcgYSBQaXZvdCBHcmlkIHR5cGUuIEl0IGlzIGVzc2VudGlhbGx5IHRoZSBibHVlcHJpbnQgdG8gYSBncmlkIGtpbmRcbiAqIENvbnRhaW5zIGRlZmluaXRpb25zIG9mIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMsIHJlbGV2YW50IHRvIGEgZ3JpZCBraW5kXG4gKiBFeHRlbmRzIGZyb20gYEdyaWRUeXBlYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpdm90R3JpZFR5cGUgZXh0ZW5kcyBHcmlkVHlwZSB7XG4gICAgLyoqXG4gICAgICogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBwaXZvdCBncmlkLlxuICAgICAqIGl0IGluY2x1ZGVzIGRpbWVudGlvbiBzdHJhdGVneSBmb3Igcm93cyBhbmQgY29sdW1ucywgZmlsdGVycyBhbmQgZGF0YSBrZXlzXG4gICAgICovXG4gICAgcGl2b3RDb25maWd1cmF0aW9uOiBJUGl2b3RDb25maWd1cmF0aW9uO1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIGFsbCBkaW1lbnNpb25zIChyb3dzIGFuZCBjb2x1bW5zKSBpbiB0aGUgcGl2b3QgZ3JpZC5cbiAgICAgKiBpdCBpbmNsdWRlcyBoaWVyYXJjaGljYWwgbGV2ZWwsIGZpbHRlcnMgYW5kIHNvcnRpbmcsIGRpbWVudGlvbmFsIGxldmVsLCBldGMuXG4gICAgICovXG4gICAgYWxsRGltZW5zaW9uczogSVBpdm90RGltZW5zaW9uW10sXG4gICAgLyoqIFNwZWNpZmllcyB3aGV0aGVyIHRvIHNob3cgdGhlIHBpdm90IGNvbmZpZ3VyYXRpb24gVUkgaW4gdGhlIGdyaWQuICovXG4gICAgc2hvd1Bpdm90Q29uZmlndXJhdGlvblVJOiBib29sZWFuO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGNvbHVtbkRpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHJvd0RpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdO1xuICAgIHJvd0RpbWVuc2lvblJlc2l6aW5nOiBib29sZWFuO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHZhbHVlczogSVBpdm90VmFsdWVbXTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBmaWx0ZXJEaW1lbnNpb25zOiBJUGl2b3REaW1lbnNpb25bXTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBkaW1lbnNpb25EYXRhQ29sdW1uczogQ29sdW1uVHlwZVtdO1xuICAgIHBpdm90Um93V2lkdGhzOiBudW1iZXI7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHNldGluZyB1cCB0aGUgY29sdW1ucyBmb3IgdGhlIHBpdm90IGdyaWQgYmFzZWQgb24gdGhlIHBpdm90IGNvbmZpZ3VyYXRpb24gKi9cbiAgICBzZXR1cENvbHVtbnMoKTogdm9pZDtcbiAgICAvKiogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiB0aGF0IGFsbG93cyB0b2dnbGUgb2YgZXhwYW5zaW9uIHN0YXRlIG9mIGEgcm93ICh0YWtlbiBhcyBhIHBhcmFtZXRlcikgaW4gdGhlIHBpdm90IGdyaWQgKi9cbiAgICB0b2dnbGVSb3cocm93SUQ6IGFueSk6IHZvaWQ7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiBmb3IgcmVzb2x2aW5nIHRoZSBkYXRhIHR5cGUgZm9yIGEgc3BlY2lmaWMgZmllbGQgKGNvbHVtbikuXG4gICAgICogSXQgdGFrZXMgdGhlIGZpZWxkIGFzIGEgcGFyYW1ldGVyIGFuZCByZXR1cm5zIGl0J3MgdHlwZVxuICAgICAqL1xuICAgIHJlc29sdmVEYXRhVHlwZXMoZmllbGQ6IGFueSk6IEdyaWRDb2x1bW5EYXRhVHlwZTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciBtb3ZpbmcgZGltZW5zaW9uIGZyb20gaXRzIGN1cnJlbnRseSBjb2xsZWN0aW9uIHRvIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IGNvbGxlY3Rpb25cbiAgICAgKiBieSB0eXBlIChSb3csIENvbHVtbiBvciBGaWx0ZXIpIGF0IHNwZWNpZmllZCBpbmRleCBvciBhdCB0aGUgY29sbGVjdGlvbidzIGVuZFxuICAgICAqL1xuICAgIG1vdmVEaW1lbnNpb24oZGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24sIHRhcmdldENvbGxlY3Rpb25UeXBlOiBQaXZvdERpbWVuc2lvblR5cGUsIGluZGV4PzogbnVtYmVyKTtcbiAgICBnZXREaW1lbnNpb25zQnlUeXBlKGRpbWVuc2lvbjogUGl2b3REaW1lbnNpb25UeXBlKTtcbiAgICAvKiogVG9nZ2xlcyB0aGUgZGltZW5zaW9uJ3MgZW5hYmxlZCBzdGF0ZSBvbiBvciBvZmYuIFRoZSBkaW1lbnNpb24gcmVtYWlucyBpbiBpdHMgY3VycmVudCBjb2xsZWN0aW9uICovXG4gICAgdG9nZ2xlRGltZW5zaW9uKGRpbWVuc2lvbjogSVBpdm90RGltZW5zaW9uKTtcbiAgICAvKiogU29ydCB0aGUgZGltZW5zaW9uIGFuZCBpdHMgY2hpbGRyZW4gaW4gdGhlIHByb3ZpZGVkIGRpcmVjdGlvbiAoYXNjZW5kaW5nLCBkZXNjZW5kaW5nIG9yIG5vbmUpLiAqL1xuICAgIHNvcnREaW1lbnNpb24oZGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24sIHNvcnREaXJlY3Rpb246IFNvcnRpbmdEaXJlY3Rpb24pO1xuICAgIC8qKiBUb2dnbGVzIHRoZSB2YWx1ZSdzIGVuYWJsZWQgc3RhdGUgb24gb3Igb2ZmLiBUaGUgdmFsdWUgcmVtYWlucyBpbiBpdHMgY3VycmVudCBjb2xsZWN0aW9uLiAqL1xuICAgIHRvZ2dsZVZhbHVlKHZhbHVlOiBJUGl2b3RWYWx1ZSk7XG4gICAgLyoqIE1vdmUgdmFsdWUgZnJvbSBpdHMgY3VycmVudGx5IGF0IHNwZWNpZmllZCBpbmRleCBvciBhdCB0aGUgZW5kLlxuICAgICAqIElmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IHNldCwgaXQgd2lsbCBhZGQgaXQgdG8gdGhlIGVuZCBvZiB0aGUgY29sbGVjdGlvbi4gKi9cbiAgICBtb3ZlVmFsdWUodmFsdWU6IElQaXZvdFZhbHVlLCBpbmRleD86IG51bWJlcik7XG4gICAgcm93RGltZW5zaW9uV2lkdGhUb1BpeGVscyhkaW06IElQaXZvdERpbWVuc2lvbik6IG51bWJlcjtcbiAgICAvKiogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgZGltZW5zaW9ucyBpbiB0aGUgcGl2b3QgZ3JpZCBjaGFuZ2UuICovXG4gICAgZGltZW5zaW9uc0NoYW5nZTogRXZlbnRFbWl0dGVyPElEaW1lbnNpb25zQ2hhbmdlPjtcbiAgICAvKiogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgdmFsdWVzIGluIHRoZSBwaXZvdCBncmlkIGNoYW5nZS4gKi9cbiAgICB2YWx1ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJVmFsdWVzQ2hhbmdlPjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwaXZvdEtleXM6IElQaXZvdEtleXM7XG4gICAgaGFzTXVsdGlwbGVWYWx1ZXM6IGJvb2xlYW47XG4gICAgZXhjZWxTdHlsZUZpbHRlck1heEhlaWdodDogc3RyaW5nO1xuICAgIGV4Y2VsU3R5bGVGaWx0ZXJNaW5IZWlnaHQ6IHN0cmluZztcbiAgICB2YWx1ZUNoaXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmlkU1ZHSWNvbiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpemVJbmZvIHtcbiAgICB3aWR0aDogbnVtYmVyLFxuICAgIHBhZGRpbmc6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyaWRNYXN0ZXJEZXRhaWxDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IGFueTtcbiAgICBpbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyb3VwQnlSb3dUZW1wbGF0ZUNvbnRleHQge1xuICAgICRpbXBsaWNpdDogSUdyb3VwQnlSZWNvcmQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4R3JpZFRlbXBsYXRlQ29udGV4dCB7XG4gICAgJGltcGxpY2l0OiBHcmlkVHlwZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyaWRSb3dUZW1wbGF0ZUNvbnRleHQge1xuICAgICRpbXBsaWNpdDogUm93VHlwZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyaWRSb3dEcmFnR2hvc3RDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IGFueSwgLy8gdGhpcyBpcyB0aGUgcm93IGRhdGFcbiAgICBkYXRhOiBhbnksIC8vIHRoaXMgaXMgYWxzbyB0aGUgcm93IGRhdGEgZm9yIHNvbWUgcmVhc29uLlxuICAgIGdyaWQ6IEdyaWRUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4R3JpZEVtcHR5VGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyaWRSb3dFZGl0VGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IHVuZGVmaW5lZCxcbiAgICByb3dDaGFuZ2VzQ291bnQ6IG51bWJlcixcbiAgICBlbmRFZGl0OiAoY29tbWl0OiBib29sZWFuLCBldmVudD86IEV2ZW50KSA9PiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4R3JpZFJvd0VkaXRUZXh0VGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyaWRSb3dFZGl0QWN0aW9uc1RlbXBsYXRlQ29udGV4dCB7XG4gICAgJGltcGxpY2l0OiAoY29tbWl0OiBib29sZWFuLCBldmVudD86IEV2ZW50KSA9PiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4R3JpZEhlYWRlclRlbXBsYXRlQ29udGV4dCB7XG4gICAgJGltcGxpY2l0OiBIZWFkZXJUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4Q29sdW1uVGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IENvbHVtblR5cGUsXG4gICAgY29sdW1uOiBDb2x1bW5UeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4Q2VsbFRlbXBsYXRlQ29udGV4dCB7XG4gICAgJGltcGxpY2l0OiBhbnksXG4gICAgYWRkaXRpb25hbFRlbXBsYXRlQ29udGV4dDogYW55LFxuICAgIGZvcm1Db250cm9sPzogRm9ybUNvbnRyb2w8YW55PixcbiAgICBkZWZhdWx0RXJyb3JUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgY2VsbDogQ2VsbFR5cGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZ3hSb3dTZWxlY3RvclRlbXBsYXRlRGV0YWlscyB7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIGBrZXlgICovXG4gICAgcm93SUQ6IGFueTtcbiAgICBrZXk6IGFueTtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICBzZWxlY3Q/OiAoKSA9PiB2b2lkO1xuICAgIGRlc2VsZWN0PzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZ3hSb3dTZWxlY3RvclRlbXBsYXRlQ29udGV4dCB7XG4gICAgJGltcGxpY2l0OiBJZ3hSb3dTZWxlY3RvclRlbXBsYXRlRGV0YWlscztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZ3hHcm91cEJ5Um93U2VsZWN0b3JUZW1wbGF0ZURldGFpbHMge1xuICAgIHNlbGVjdGVkQ291bnQ6IG51bWJlcjtcbiAgICB0b3RhbENvdW50OiBudW1iZXI7XG4gICAgZ3JvdXBSb3c6IElHcm91cEJ5UmVjb3JkO1xufVxuZXhwb3J0IGludGVyZmFjZSBJZ3hHcm91cEJ5Um93U2VsZWN0b3JUZW1wbGF0ZUNvbnRleHQge1xuICAgICRpbXBsaWNpdDogSWd4R3JvdXBCeVJvd1NlbGVjdG9yVGVtcGxhdGVEZXRhaWxzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEhlYWRTZWxlY3RvclRlbXBsYXRlRGV0YWlscyB7XG4gICAgc2VsZWN0ZWRDb3VudDogbnVtYmVyO1xuICAgIHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgICBzZWxlY3RBbGw/OiAoKSA9PiB2b2lkO1xuICAgIGRlc2VsZWN0QWxsPzogKCkgPT4gdm9pZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSWd4SGVhZFNlbGVjdG9yVGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IElneEhlYWRTZWxlY3RvclRlbXBsYXRlRGV0YWlscztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZ3hTdW1tYXJ5VGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IElneFN1bW1hcnlSZXN1bHRbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyaWRQYWdpbmF0b3JUZW1wbGF0ZUNvbnRleHQge1xuICAgICRpbXBsaWNpdDogR3JpZFR5cGU7XG59XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIGRlc2NyaWJpbmcgc2V0dGluZ3MgZm9yIHJvdy9jb2x1bW4gcGlubmluZyBwb3NpdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUGlubmluZ0NvbmZpZyB7XG4gICAgY29sdW1ucz86IENvbHVtblBpbm5pbmdQb3NpdGlvbjtcbiAgICByb3dzPzogUm93UGlubmluZ1Bvc2l0aW9uO1xufVxuXG4vKipcbiAqIEFuIGludGVyZmFjZSBkZXNjcmliaW5nIHNldHRpbmdzIGZvciBjbGlwYm9hcmQgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElDbGlwYm9hcmRPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBjb3B5IGJlaGF2aW9yXG4gICAgICovXG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBJbmNsdWRlIHRoZSBjb2x1bW5zIGhlYWRlcnMgaW4gdGhlIGNsaXBib2FyZCBvdXRwdXQuXG4gICAgICovXG4gICAgY29weUhlYWRlcnM6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQXBwbHkgdGhlIGNvbHVtbnMgZm9ybWF0dGVycyAoaWYgYW55KSBvbiB0aGUgZGF0YSBpbiB0aGUgY2xpcGJvYXJkIG91dHB1dC5cbiAgICAgKi9cbiAgICBjb3B5Rm9ybWF0dGVyczogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgc2VwYXJhdG9yIHVzZWQgZm9yIGZvcm1hdHRpbmcgdGhlIGNvcHkgb3V0cHV0LiBEZWZhdWx0cyB0byBgXFx0YC5cbiAgICAgKi9cbiAgICBzZXBhcmF0b3I6IHN0cmluZztcbn1cbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvY29tbW9uL2dyaWQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sRUFBK0MsY0FBYyxFQUE0QyxNQUFNLGVBQWUsQ0FBQztBQTZCdEksTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQSxJQUFJLGNBQWMsQ0FBVyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLGFBQWEsQ0FBQSxJQUFJLGNBQWMsQ0FBa0IseUJBQXlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbHVtblBpbm5pbmdQb3NpdGlvbiwgRmlsdGVyTW9kZSwgR3JpZFBhZ2luZ01vZGUsIEdyaWRTZWxlY3Rpb25Nb2RlLCBHcmlkU3VtbWFyeUNhbGN1bGF0aW9uTW9kZSwgR3JpZFN1bW1hcnlQb3NpdGlvbiwgR3JpZFZhbGlkYXRpb25UcmlnZ2VyLCBSb3dQaW5uaW5nUG9zaXRpb24gfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7XG4gICAgSVNlYXJjaEluZm8sIElHcmlkQ2VsbEV2ZW50QXJncywgSVJvd1NlbGVjdGlvbkV2ZW50QXJncywgSUNvbHVtblNlbGVjdGlvbkV2ZW50QXJncyxcbiAgICBJUGluQ29sdW1uQ2FuY2VsbGFibGVFdmVudEFyZ3MsIElDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZEV2ZW50QXJncywgSUNvbHVtblZpc2liaWxpdHlDaGFuZ2luZ0V2ZW50QXJncyxcbiAgICBJUm93RHJhZ0VuZEV2ZW50QXJncywgSUNvbHVtbk1vdmluZ1N0YXJ0RXZlbnRBcmdzLCBJQ29sdW1uTW92aW5nRW5kRXZlbnRBcmdzLFxuICAgIElSb3dEYXRhRXZlbnRBcmdzLCBJR3JpZEtleWRvd25FdmVudEFyZ3MsIElSb3dEcmFnU3RhcnRFdmVudEFyZ3MsXG4gICAgSUNvbHVtbk1vdmluZ0V2ZW50QXJncywgSVBpbkNvbHVtbkV2ZW50QXJncyxcbiAgICBJQWN0aXZlTm9kZUNoYW5nZUV2ZW50QXJncyxcbiAgICBJQ2VsbFBvc2l0aW9uLCBJRmlsdGVyaW5nRXZlbnRBcmdzLCBJQ29sdW1uUmVzaXplRXZlbnRBcmdzLCBJUm93VG9nZ2xlRXZlbnRBcmdzLCBJR3JpZFRvb2xiYXJFeHBvcnRFdmVudEFyZ3MsIElQaW5Sb3dFdmVudEFyZ3MsXG4gICAgSUdyaWRSb3dFdmVudEFyZ3MsIElHcmlkRWRpdEV2ZW50QXJncywgSVJvd0RhdGFDYW5jZWxhYmxlRXZlbnRBcmdzLCBJR3JpZEVkaXREb25lRXZlbnRBcmdzXG59IGZyb20gJy4uL2NvbW1vbi9ldmVudHMnO1xuaW1wb3J0IHsgRGlzcGxheURlbnNpdHksIElEZW5zaXR5Q2hhbmdlZEV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2NvcmUvZGVuc2l0eSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3Rpb25Ub2tlbiwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9ucy10cmVlJztcbmltcG9ydCB7IElHcmlkUmVzb3VyY2VTdHJpbmdzIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuL2dyaWQtcmVzb3VyY2VzJztcbmltcG9ydCB7IElHcm91cGluZ0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUdyb3VwQnlSZWNvcmQgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBieS1yZWNvcmQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElHcm91cEJ5RXhwYW5kU3RhdGUgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBieS1leHBhbmQtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneFBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IElneENlbGwsIElneEVkaXRSb3cgfSBmcm9tICcuL2NydWQuc2VydmljZSc7XG5pbXBvcnQgeyBHcmlkU2VsZWN0aW9uUmFuZ2UgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEZpbHRlcmluZ0xvZ2ljIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVyaW5nU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IERyb3BQb3NpdGlvbiwgSWd4Q29sdW1uTW92aW5nU2VydmljZSB9IGZyb20gJy4uL21vdmluZy9tb3Zpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hPdmVybGF5T3V0bGV0RGlyZWN0aXZlLCBJZ3hUb2dnbGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElUcmVlR3JpZFJlY29yZCB9IGZyb20gJy4uL3RyZWUtZ3JpZC90cmVlLWdyaWQuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTdGF0ZSwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IERhdGFUeXBlLCBHcmlkQ29sdW1uRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IElneEZpbHRlcmluZ09wZXJhbmQgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLWNvbmRpdGlvbic7XG5pbXBvcnQgeyBJQ29sdW1uUGlwZUFyZ3MsIElGaWVsZFBpcGVBcmdzLCBJU29ydGluZ09wdGlvbnMsIE1STFJlc2l6ZUNvbHVtbkluZm8gfSBmcm9tICcuLi9jb2x1bW5zL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgSWd4U3VtbWFyeVJlc3VsdCB9IGZyb20gJy4uL3N1bW1hcmllcy9ncmlkLXN1bW1hcnknO1xuaW1wb3J0IHsgSVNvcnRpbmdFeHByZXNzaW9uLCBJU29ydGluZ1N0cmF0ZWd5LCBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgSUdyaWRHcm91cGluZ1N0cmF0ZWd5LCBJR3JpZFNvcnRpbmdTdHJhdGVneSB9IGZyb20gJy4vc3RyYXRlZ3knO1xuaW1wb3J0IHsgSUZvck9mU3RhdGUsIElneEdyaWRGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmxheVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3ZlcmxheS91dGlsaXRpZXMnO1xuaW1wb3J0IHsgSURpbWVuc2lvbnNDaGFuZ2UsIElQaXZvdENvbmZpZ3VyYXRpb24sIElQaXZvdERpbWVuc2lvbiwgSVBpdm90S2V5cywgSVBpdm90VmFsdWUsIElWYWx1ZXNDaGFuZ2UsIFBpdm90RGltZW5zaW9uVHlwZSB9IGZyb20gJy4uL3Bpdm90LWdyaWQvcGl2b3QtZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSURhdGFDbG9uZVN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtY2xvbmUtc3RyYXRlZ3knO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElneEdyaWRWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uL2dyaWQvZ3JpZC12YWxpZGF0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgSUdYX0dSSURfQkFTRSA9IC8qQF9fUFVSRV9fKi9uZXcgSW5qZWN0aW9uVG9rZW48R3JpZFR5cGU+KCdJZ3hHcmlkQmFzZVRva2VuJyk7XG5leHBvcnQgY29uc3QgSUdYX0dSSURfU0VSVklDRV9CQVNFID0gLypAX19QVVJFX18qL25ldyBJbmplY3Rpb25Ub2tlbjxHcmlkU2VydmljZVR5cGU+KCdJZ3hHcmlkU2VydmljZUJhc2VUb2tlbicpO1xuXG4vKiogSW50ZXJmYWNlIHJlcHJlc2VudGluZyBhIHNlZ21lbnQgb2YgYSBwYXRoIGluIGEgaGllcmFyY2hpY2FsIGdyaWQuICovXG5leHBvcnQgaW50ZXJmYWNlIElQYXRoU2VnbWVudCB7XG4gICAgLyoqXG4gICAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSByb3cgd2l0aGluIHRoZSBzZWdtZW50LlxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMS4wXG4gICAgICogVXNlIGByb3dLZXlgIGluc3RlYWRcbiAgICAgKi9cbiAgICByb3dJRDogYW55O1xuICAgIHJvd0tleTogYW55O1xuICAgIC8qKiBUaGUga2V5IHJlcHJlc2VudGluZyB0aGUgcm93J3MgJ2hpZXJhcmNoaWNhbCBsZXZlbC4gKi9cbiAgICByb3dJc2xhbmRLZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZERhdGFCaW5kYWJsZSB7XG4gICAgZGF0YTogYW55W10gfCBudWxsO1xuICAgIGdldCBmaWx0ZXJlZERhdGEoKTogYW55W107XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHJlcHJlc2VudGluZyBhIGNlbGwgaW4gdGhlIGdyaWQuIEl0IGlzIGVzc2VudGlhbGx5IHRoZSBibHVlcHJpbnQgdG8gYSBjZWxsIG9iamVjdC5cbiAqIENvbnRhaW5zIGRlZmluaXRpb25zIG9mIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMsIHJlbGV2YW50IHRvIGEgY2VsbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxUeXBlIHtcbiAgICAvKiogVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGNlbGwuICovXG4gICAgdmFsdWU6IGFueTtcbiAgICAvKiogVGhlIHZhbHVlIHRvIGRpc3BsYXkgd2hlbiB0aGUgY2VsbCBpcyBpbiBlZGl0IG1vZGUuICovXG4gICAgZWRpdFZhbHVlOiBhbnk7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjZWxsIGlzIGN1cnJlbnRseSBzZWxlY3RlZC4gSXQgaXMgZmFsc2UsIGlmIHRoZSBzZWxsIGlzIG5vdCBzZWxlY3RlZCwgYW5kIHRydWUsIGlmIGl0IGlzLiAqL1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY2VsbCBpcyBjdXJyZW50bHkgYWN0aXZlIChmb2N1c2VkKS4gKi9cbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjZWxsIGNhbiBiZSBlZGl0ZWQuICovXG4gICAgZWRpdGFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjZWxsIGlzIGN1cnJlbnRseSBpbiBlZGl0IG1vZGUuICovXG4gICAgZWRpdE1vZGU6IGJvb2xlYW47XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG5hdGl2ZSBIVE1MIGVsZW1lbnQgb2YgdGhlIGNlbGwgaXRzZWxmICovXG4gICAgbmF0aXZlRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBjb2x1bW4gdGhhdCB0aGUgY2VsbCBiZWxvbmdzIHRvLiAqL1xuICAgIGNvbHVtbjogQ29sdW1uVHlwZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgcm93IHRoYXQgdGhlIGNlbGwgYmVsb25ncyB0byAqL1xuICAgIHJvdzogUm93VHlwZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgZ3JpZCBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBjZWxsICovXG4gICAgZ3JpZDogR3JpZFR5cGU7XG4gICAgLyoqIE9wdGlvbmFsOyBBbiBvYmplY3QgaWRlbnRpZnlpbmcgdGhlIGNlbGwuIEl0IGNvbnRhaW5zIHJvd0lELCBjb2x1bW5JRCwgYW5kIHJvd0luZGV4IG9mIHRoZSBjZWxsLiAqL1xuICAgIGlkPzogeyByb3dJRDogYW55OyBjb2x1bW5JRDogbnVtYmVyOyByb3dJbmRleDogbnVtYmVyIH07XG4gICAgLyoqIE9wdGlvbmFsOyBUaGUgYGNlbGxJRGAgaXMgdGhlIHVuaXF1ZSBrZXksIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGNlbGwgKi9cbiAgICBjZWxsSUQ/OiBhbnk7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWw7IEFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHZhbGlkYXRpb24gc3RhdGUgb2YgdGhlIGNlbGwuXG4gICAgICogV2hldGhlciBpdCdzIHZhbGlkIG9yIGludmFsaWQsIGFuZCBpZiBpdCBoYXMgZXJyb3JzXG4gICAgICovXG4gICAgcmVhZG9ubHkgdmFsaWRhdGlvbj86IElHcmlkVmFsaWRhdGlvblN0YXRlO1xuICAgIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgICAvKiogQW4gb3B0aW9uYWwgdGl0bGUgdG8gZGlzcGxheSBmb3IgdGhlIGNlbGwgKi9cbiAgICB0aXRsZT86IGFueTtcbiAgICAvKiogVGhlIENTUyB3aWR0aCBvZiB0aGUgY2VsbCBhcyBhIHN0cmluZy4gKi9cbiAgICB3aWR0aDogc3RyaW5nO1xuICAgIC8qKiBUaGUgaW5kZXggb2YgdGhlIGNvbHVtbiB0aGF0IHRoZSBjZWxsIGJlbG9uZ3MgdG8uIEl0IGNvdW50cyBvbmx5IHRoZSB2aXNpYmxlIChub3QgaGlkZGVuKSBjb2x1bW5zICovXG4gICAgdmlzaWJsZUNvbHVtbkluZGV4PzogbnVtYmVyO1xuICAgIC8qKiBBIG1ldGhvZCBkZWZpbml0aW9uIHRvIHVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIGNlbGwuICovXG4gICAgdXBkYXRlOiAodmFsdWU6IGFueSkgPT4gdm9pZDtcbiAgICAvKiogQSBtZXRob2QgZGVmaW5pdGlvbiB0byBzdGFydCBvciBlbmQgdGhlIGVkaXQgbW9kZSBvZiB0aGUgY2VsbC4gSXQgdGFrZXMgYSBib29sZWFuIHZhbHVlIGFzIGFuIGFyZ3VtZW50Ki9cbiAgICBzZXRFZGl0TW9kZT8odmFsdWU6IGJvb2xlYW4pOiB2b2lkO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsO1xuICAgICAqIEEgbWV0aG9kIGRlZmluaXRpb24gdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBjZWxsIHRvIGZpdCB0aGUgY29udGVudFxuICAgICAqIFRoZSBtZXRob2QgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBjZWxsIHdpdGggdGhlIGxvbmdlc3QgY29udGVudCBhbmQgcmVzaXplIGFsbCBjZWxscyB0byB0aGF0IHNpemVcbiAgICAgKi9cbiAgICBjYWxjdWxhdGVTaXplVG9GaXQ/KHJhbmdlOiBhbnkpOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIG1ldGhvZCB0byBhY3RpdmF0ZSB0aGUgY2VsbC5cbiAgICAgKiBJdCB0YWtlcyBhIGZvY3VzIG9yIGtleWJvYXJkIGV2ZW50IGFzIGFuIGFyZ3VtZW50XG4gICAgICovXG4gICAgYWN0aXZhdGU/KGV2ZW50OiBGb2N1c0V2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIG1ldGhvZCB0byBoYW5kbGUgZG91YmxlLWNsaWNrIGV2ZW50cyBvbiB0aGUgY2VsbFxuICAgICAqIEl0IHRha2VzIGEgbW91c2UgZXZlbnQgYXMgYW4gYXJndW1lbnRcbiAgICAgKi9cbiAgICBvbkRvdWJsZUNsaWNrPyhldmVudDogTW91c2VFdmVudCk6IHZvaWQ7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIG1ldGhvZCB0byBoYW5kbGUgY2xpY2sgZXZlbnRzIG9uIHRoZSBjZWxsXG4gICAgICogSXQgdGFrZXMgYSBtb3VzZSBldmVudCBhcyBhbiBhcmd1bWVudFxuICAgICAqL1xuICAgIG9uQ2xpY2s/KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZDtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW50aW5nIGEgaGVhZGVyIGNlbGwgaW4gdGhlIGdyaWQuIEl0IGlzIGVzc2VudGlhbGx5IHRoZSBibHVlcHJpbnQgdG8gYSBoZWFkZXIgY2VsbCBvYmplY3QuXG4gKiBDb250YWlucyBkZWZpbml0aW9ucyBvZiBwcm9wZXJ0aWVzLCByZWxldmFudCB0byB0aGUgaGVhZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyVHlwZSB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG5hdGl2ZSBIVE1MIGVsZW1lbnQgb2YgdGhlIGNlbGwgaXRzZWxmICovXG4gICAgbmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgLyoqIFRoZSBjb2x1bW4gdGhhdCB0aGUgaGVhZGVyIGNlbGwgcmVwcmVzZW50cy4gKi9cbiAgICBjb2x1bW46IENvbHVtblR5cGU7XG4gICAgZGVuc2l0eTogRGlzcGxheURlbnNpdHk7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb2x1bW4gaXMgY3VycmVudGx5IHNvcnRlZC4gKi9cbiAgICBzb3J0ZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjZWxsIGNhbiBiZSBzZWxlY3RlZCAqL1xuICAgIHNlbGVjdGFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjZWxsIGlzIGN1cnJlbnRseSBzZWxlY3RlZCAqL1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29sdW1uIGhlYWRlciBpcyBhIHRpdGxlIGNlbGwuICovXG4gICAgdGl0bGU6IGJvb2xlYW47XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIHNvcnRpbmcgZGlyZWN0aW9uIG9mIHRoZSBjb2x1bW4gKGFzY2VuZGluZywgZGVzY2VuZGluZyBvciBub25lKS4gKi9cbiAgICBzb3J0RGlyZWN0aW9uOiBTb3J0aW5nRGlyZWN0aW9uO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSByZXByZXNlbnRpbmcgYSByb3cgaW4gdGhlIGdyaWQuIEl0IGlzIGVzc2VudGlhbGx5IHRoZSBibHVlcHJpbnQgdG8gYSByb3cgb2JqZWN0LlxuICogQ29udGFpbnMgZGVmaW5pdGlvbnMgb2YgcHJvcGVydGllcyBhbmQgbWV0aG9kcywgcmVsZXZhbnQgdG8gYSByb3dcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3dUeXBlIHtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgbmF0aXZlIEhUTUwgZWxlbWVudCBvZiB0aGUgcm93IGl0c2VsZiAqL1xuICAgIG5hdGl2ZUVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgICAvKiogVGhlIGluZGV4IG9mIHRoZSByb3cgd2l0aGluIHRoZSBncmlkICovXG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICB2aWV3SW5kZXg6IG51bWJlcjtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJvdyBpcyBncm91cGVkLiAqL1xuICAgIGlzR3JvdXBCeVJvdz86IGJvb2xlYW47XG4gICAgaXNTdW1tYXJ5Um93PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEEgbWFwIG9mIGNvbHVtbiBmaWVsZCBuYW1lcyB0byB0aGUgc3VtbWFyeSByZXN1bHRzIGZvciB0aGUgcm93LlxuICAgICAqL1xuICAgIHN1bW1hcmllcz86IE1hcDxzdHJpbmcsIElneFN1bW1hcnlSZXN1bHRbXT47XG4gICAgZ3JvdXBSb3c/OiBJR3JvdXBCeVJlY29yZDtcbiAgICBrZXk/OiBhbnk7XG4gICAgcmVhZG9ubHkgdmFsaWRhdGlvbj86IElHcmlkVmFsaWRhdGlvblN0YXRlO1xuICAgIGRhdGE/OiBhbnk7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIGxpc3Qgb3IgYW4gYXJyYXkgb2YgY2VsbHMsIHRoYXQgYmVsb25nIHRvIHRoZSByb3dcbiAgICAgKi9cbiAgICBjZWxscz86IFF1ZXJ5TGlzdDxDZWxsVHlwZT4gfCBDZWxsVHlwZVtdO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgcm93IGlzIGRpc2FibGVkXG4gICAgICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogVmlydHVhbGl6YXRpb24gc3RhdGUgb2YgZGF0YSByZWNvcmQgYWRkZWQgZnJvbSBjYWNoZVxuICAgICAqL1xuICAgIHZpcnREaXJSb3c/OiBJZ3hHcmlkRm9yT2ZEaXJlY3RpdmU8Q29sdW1uVHlwZSwgQ29sdW1uVHlwZVtdPjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjdXJyZW50IHJvdyBpcyBwaW5uZWQuXG4gICAgICovXG4gICAgcGlubmVkPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjdXJyZW50IHJvdyBpcyBzZWxlY3RlZFxuICAgICAqL1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjdXJyZW50IHJvdyBpcyBleHBhbmRlZC5cbiAgICAgKiBUaGUgdmFsdWUgaXMgdHJ1ZSwgaWYgdGhlIHJvdyBpcyBleHBhbmRlZCBhbmQgZmFsc2UsIGlmIGl0IGlzIGNvbGxhcHNlZFxuICAgICAqL1xuICAgIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYWRlcyB3aGV0aGVyIHRoZSByb3cgaXMgbWFya2VkIGZvciBkZWxldGlvbi5cbiAgICAgKi9cbiAgICBkZWxldGVkPzogYm9vbGVhbjtcbiAgICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBJbmRpY2FkZXMgd2hldGhlciB0aGUgcm93IGlzIGN1cnJlbnRseSBiZWluZyBlZGl0ZWQuXG4gICAgICovXG4gICAgaW5FZGl0TW9kZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBDb250YWlucyB0aGUgY2hpbGQgcm93cyBvZiB0aGUgY3VycmVudCByb3csIGlmIHRoZXJlIGFyZSBhbnkuXG4gICAgICovXG4gICAgY2hpbGRyZW4/OiBSb3dUeXBlW107XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBDb250YWlucyB0aGUgcGFyZW50IHJvdyBvZiB0aGUgY3VycmVudCByb3csIGlmIGl0IGhhcyBvbmUuXG4gICAgICogSWYgdGhlIHBhcmVudCByb3cgZXhpc3QsIGl0IG1lYW5zIHRoYXQgdGhlIGN1cnJlbnQgcm93IGlzIGEgY2hpbGQgcm93XG4gICAgICovXG4gICAgcGFyZW50PzogUm93VHlwZTtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYWRlcyB3aGV0aGVyIHRoZSBjdXJyZW50IHJvdyBoYXMgYW55IGNoaWxkIHJvd3NcbiAgICAgKi9cbiAgICBoYXNDaGlsZHJlbj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBoaWVyYXJjaGljYWwgcmVjb3JkIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm93IChmb3IgdHJlZSBncmlkcykuXG4gICAgICogSXQgaXMgb2YgdHlwZSBJVHJlZUdyaWRSZWNvcmQsIHdoaWNoIGNvbnRhaW5zIHRoZSBkYXRhLCBjaGlsZHJlbiwgdGhlIGhpZXJhcmNoaWNhbCBsZXZlbCwgZXRjLlxuICAgICAqL1xuICAgIHRyZWVSb3c/OiBJVHJlZUdyaWRSZWNvcmQ7XG4gICAgYWRkUm93VUk/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogSW5kaWNhZGVzIHdoZXRoZXIgdGhlIHJvdyBpcyBjdXJyZW50bHkgZm9jdXNlZC5cbiAgICAgKi9cbiAgICBmb2N1c2VkPzogYm9vbGVhbjtcbiAgICAvKiogUmVwcmVzZW50IHRoZSBncmlkIGluc3RhbmNlLCB0aGUgcm93IGJlbG9uZ3MgdG8gKi9cbiAgICBncmlkOiBHcmlkVHlwZTtcbiAgICBvblJvd1NlbGVjdG9yQ2xpY2s/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIG1ldGhvZCB0byBoYW5kbGUgY2xpY2sgZXZlbnQgb24gdGhlIHJvd1xuICAgICAqIEl0IHRha2VzIGEgYE1vdXNlRXZlbnRgIGFzIGFuIGFyZ3VtZW50XG4gICAgICovXG4gICAgb25DbGljaz86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEEgbWV0aG9kIHRvIGhhbmRsZSBhZGRpbmcgYSBuZXcgcm93XG4gICAgICovXG4gICAgYmVnaW5BZGRSb3c/OiAoKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogQSBtZXRob2QgdG8gaGFuZGxlIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBlbGVtZW50cyBvZiB0aGUgcm93XG4gICAgICogSXQgdGFrZXMgdGhlIG5ldyB2YWx1ZSBhcyBhbiBhcmd1bWVudFxuICAgICAqL1xuICAgIHVwZGF0ZT86ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogQSBtZXRob2QgdG8gaGFuZGxlIGRlbGV0aW5nIHJvd3NcbiAgICAgKi9cbiAgICBkZWxldGU/OiAoKSA9PiBhbnk7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIG1ldGhvZCB0byBoYW5kbGUgcGlubmluZyBhIHJvd1xuICAgICAqL1xuICAgIHBpbj86ICgpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBBIG1ldGhvZCB0byBoYW5kbGUgdW5waW5uaW5nIGEgcm93LCB0aGF0IGhhcyBiZWVuIHBpbm5lZFxuICAgICAqL1xuICAgIHVucGluPzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZFR5cGUge1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgaGVhZGVyPzogc3RyaW5nO1xuICAgIGRhdGFUeXBlOiBEYXRhVHlwZTtcbiAgICBmaWx0ZXJzOiBJZ3hGaWx0ZXJpbmdPcGVyYW5kO1xuICAgIHBpcGVBcmdzOiBJRmllbGRQaXBlQXJncztcbiAgICBkZWZhdWx0VGltZUZvcm1hdDogc3RyaW5nO1xuICAgIGRlZmF1bHREYXRlVGltZUZvcm1hdDogc3RyaW5nO1xuXG4gICAgZm9ybWF0dGVyKHZhbHVlOiBhbnksIHJvd0RhdGE/OiBhbnkpOiBhbnk7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbHVtbiBpbiB0aGUgYEdyaWRUeXBlYC4gSXQgaXMgZXNzZW50aWFsbHkgdGhlIGJsdWVwcmludCB0byBhIGNvbHVtbiBvYmplY3QuXG4gKiBDb250YWlucyBkZWZpbml0aW9ucyBvZiBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLCByZWxldmFudCB0byBhIGNvbHVtblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtblR5cGUgZXh0ZW5kcyBGaWVsZFR5cGUge1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBpbmN0YW5jZSBvZiB0aGUgcGFyZW50IGBHcmlkVHlwZWAgdGhhdCBjb250YWlucyB0aGlzIGNvbHVtbi4gKi9cbiAgICBncmlkOiBHcmlkVHlwZTtcbiAgICAvKiogQSBsaXN0LCBjb250YWluaW5nIGFsbCB0aGUgY2hpbGQgY29sdW1ucyB1bmRlciB0aGlzIGNvbHVtbiAoaWYgYW55KS4gKi9cbiAgICBjaGlsZHJlbjogUXVlcnlMaXN0PENvbHVtblR5cGU+O1xuICAgIC8qKiBBbiBhcnJheSwgY29udGFpbmluZyBhbGwgdGhlIGNoaWxkIGNvbHVtbnMsIGluY2x1ZGluZyBuZXN0ZWQgY2hpbGRyZW4uICovXG4gICAgYWxsQ2hpbGRyZW46IENvbHVtblR5cGVbXTtcbiAgICAvKipcbiAgICAgKiBUaGUgaGVhZGVyIGdyb3VwIGNvbXBvbmVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb2x1bW4uXG4gICAgICogQ291bGQgYmUgb2YgYW55IHR5cGVcbiAgICAqL1xuICAgIC8vIFRZUEVcbiAgICBoZWFkZXJHcm91cDogYW55O1xuICAgIC8qKlxuICAgICAqIFRoZSBoZWFkZXIgY2VsbCBjb21wb25lbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29sdW1uLlxuICAgICAqIENvdWxkIGJlIG9mIGFueSB0eXBlXG4gICAgICovXG4gICAgLy8gVFlQRVxuICAgIGhlYWRlckNlbGw6IGFueTtcbiAgICB2YWxpZGF0b3JzOiBhbnlbXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSByZWZlcmVuY2UgZm9yIHRoZSBjdXN0b20gaGVhZGVyIG9mIHRoZSBjb2x1bW5cbiAgICAgKiBJdCBpcyBvZiB0eXBlIFRlbXBsYXRlUmVmLCB3aGljaCByZXByZXNlbnRzIGFuIGVtYmVkZGVkIHRlbXBsYXRlLCB1c2VkIHRvIGluc3RhbmNpYXRlIGVtYmVkZGVkIHZpZXdzXG4gICAgICovXG4gICAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIHJlZmVyZW5jZSBmb3IgdGhlIGNvbGxhcHNpYmxlIGluZGljYXRvciBvZiB0aGUgY29sdW1uLlxuICAgICAqIEl0IGlzIG9mIHR5cGUgVGVtcGxhdGVSZWYsIHdoaWNoIHJlcHJlc2VudHMgYW4gZW1iZWRkZWQgdGVtcGxhdGUsIHVzZWQgdG8gaW5zdGFuY2lhdGUgZW1iZWRkZWQgdmlld3NcbiAgICAgKi9cbiAgICBjb2xsYXBzaWJsZUluZGljYXRvclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKiogUmVwcmVzZW50cyBjdXN0b20gQ1NTIGNsYXNzZXMgYXBwbGllZCB0byB0aGUgaGVhZGVyIGVsZW1lbnQuIFdoZW4gYWRkZWQsIHRoZXkgdGFrZSBkaWZmZXJlbnQgc3R5bGluZyAqL1xuICAgIGhlYWRlckNsYXNzZXM6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyBjdXN0b20gQ1NTIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBoZWFkZXIgZWxlbWVudC4gV2hlbiBhZGRlZCwgdGhleSB0YWtlIGRpZmZlcmVudCBzdHlsaW5nICovXG4gICAgaGVhZGVyU3R5bGVzOiBhbnk7XG4gICAgIC8qKiBSZXByZXNlbnRzIGN1c3RvbSBDU1MgY2xhc3NlcyBhcHBsaWVkIHRvIHRoZSBoZWFkZXIgZ3JvdXAuIFdoZW4gYWRkZWQsIHRoZXkgdGFrZSBkaWZmZXJlbnQgc3R5bGluZyAqL1xuICAgIGhlYWRlckdyb3VwQ2xhc3NlczogYW55O1xuICAgICAvKiogUmVwcmVzZW50cyBjdXN0b20gQ1NTIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBoZWFkZXIgZ3JvdXAuIFdoZW4gYWRkZWQsIHRoZXkgdGFrZSBkaWZmZXJlbnQgc3R5bGluZyAqL1xuICAgIGhlYWRlckdyb3VwU3R5bGVzOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gQ1NTIHN0eWxpbmcsIGFwcHBsaWVkIHRvIGV2ZXJ5IGNvbHVtblxuICAgICAqIGNhbGNXaWR0aCwgbWluV2lkdGhQeCwgbWF4V2lkdGhQeCwgbWluV2lkdGgsIG1heFdpZHRoLCBtaW5XaWR0aFBlcmNlbnQsIG1heFdpZHRoUGVyY2VudCwgcmVzb2x2ZWRXaWR0aFxuICAgICAqL1xuICAgIGNhbGNXaWR0aDogYW55O1xuICAgIG1pbldpZHRoUHg6IG51bWJlcjtcbiAgICBtYXhXaWR0aFB4OiBudW1iZXI7XG4gICAgbWluV2lkdGg6IHN0cmluZztcbiAgICBtYXhXaWR0aDogc3RyaW5nO1xuICAgIG1pbldpZHRoUGVyY2VudDogbnVtYmVyO1xuICAgIG1heFdpZHRoUGVyY2VudDogbnVtYmVyO1xuICAgIHJlc29sdmVkV2lkdGg6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogUmVwcmVzZW50cyB0aGUgaGVhZGVyIHRleHQgb2YgdGhlIGNvbHVtblxuICAgICAqL1xuICAgIGhlYWRlcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgaW5kZXggb2YgdGhlIGNvbHVtbiB3aXRoaW4gdGhlIGdyaWQuXG4gICAgICogSW5jbHVkZXMgdGhlIGhpZGRlbiBjb2x1bW5zIHdoZW4gY291bnRpbmdcbiAgICAgKi9cbiAgICBpbmRleDogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIHR5cGUgb2YgZGF0YSBmb3IgdGhlIGNvbHVtbjpcbiAgICAgKiBzdHJpbmcsIG51bWJlciwgYnV1bGVhbiwgY3VycmVuY3ksIGRhdGUsIHRpbWUsIGV0Yy5cbiAgICAgKi9cbiAgICBkYXRhVHlwZTogR3JpZENvbHVtbkRhdGFUeXBlO1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSByZWZlcmVuY2UgZm9yIHRoZSBjdXN0b20gaW5saW5lIGVkaXRvciBvZiB0aGUgY29sdW1uXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIGlubGluZUVkaXRvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKlxuICAgICAqIFRoZSBpbmRleCBvZiB0aGUgY29sdW1uIHdpdGhpbiB0aGUgZ3JpZC5cbiAgICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBoaWRkZW4gY29sdW1ucyB3aGVuIGNvdW50aW5nXG4gICAgICovXG4gICAgdmlzaWJsZUluZGV4OiBudW1iZXI7XG4gICAgLyoqIE9wdGlvbmFsXG4gICAgICogSW5kaWNhdGVkIHdoZXRoZXIgdGhlIGNvbHVtbiBjYW4gYmUgY29sbGFwc2VkLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIGNvbHVtbiBjYW4gYmUgY29sbGFwc2VkXG4gICAgICogSXQgaXMgdXNlZCBpbiB0cmVlIGdyaWQgYW5kIGZvciBuYXZpZ2F0aW9uXG4gICAgICovXG4gICAgY29sbGFwc2libGU/OiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZWQgd2hldGhlciB0aGUgY29sdW1uIGNhbiBiZSBlZGl0ZWQuIElmIHRoZSB2YWx1ZSBpcyB0cnVlLCB0aGUgY29sdW1uIGNhbiBiZSBlZGl0ZWQgKi9cbiAgICBlZGl0YWJsZTogYm9vbGVhbjtcbiAgICAvKiogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGNvbHVtbiBjYW4gYmUgcmVzaXplZC4gSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSBjb2x1bW4gY2FuIGJlIHJlc2l6ZWQgKi9cbiAgICByZXNpemFibGU6IGJvb2xlYW47XG4gICAgLyoqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBkYXRhIG9mIHRoZSBjb2x1bW4gY2FuIGJlIHNlYXJjaGVkLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIGNvbHVtbiBkYXRhIGNhbiBiZSBzZWFyY2hlZCAqL1xuICAgIHNlYXJjaGFibGU6IGJvb2xlYW47XG4gICAgLyoqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBjb2x1bW4gYmVsb25ncyB0byBhIGdyb3VwIG9mIGNvbHVtbnMuICovXG4gICAgY29sdW1uR3JvdXA6IGJvb2xlYW47XG4gICAgLyoqIEBkZXByZWNhdGVkIGluIHZlcnNpb24gMTMuMS4wLiBVc2UgYElneEdyaWRDb21wb25lbnQubW92aW5nYCBpbnN0ZWFkLiovXG4gICAgbW92YWJsZTogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhZGVzIHdoZXRoZXIgYSBjb2x1bW4gY2FuIGJlIHB1dCBpbiBhIGdyb3VwLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIGNvbHVtbiBjYW4gYmUgcHV0IGluIGEgZ3JvdXAgKi9cbiAgICBncm91cGFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYWRlcyB3aGV0aGVyIGEgY29sdW1uIGNhbiBiZSBzb3J0ZWQuIElmIHRoZSB2YWx1ZSBpcyB0cnVlLCB0aGUgY29sdW1uIGNhbiBiZSBzb3J0ZWQuICovXG4gICAgc29ydGFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYWRlcyB3aGV0aGVyIGEgY29sdW1uIGNhbiBiZSBmaWx0ZXJlZC4gSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSBjb2x1bW4gY2FuIGJlIGZpbHRlcmVkICovXG4gICAgZmlsdGVyYWJsZTogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhZGVzIHdoZXRoZXIgYSBjb2x1bW4gaXMgY3VycmVudGx5IGhpZGRlbiAobm90IHZpc2libGUpLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIGNvbHVtbiBpcyBub3QgdmlzaWJsZSAqL1xuICAgIGhpZGRlbjogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhZGVzIHdoZXRoZXIgYSBjb2x1bW4gY2FuIGJlIHBpbm5lZC4gSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSBjb2x1bW4gY2Fubm90IGJlIHBpbm5lZCAqL1xuICAgIGRpc2FibGVQaW5uaW5nOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2FkZXMgd2hldGhlciBhIGNvbHVtbiBjYW4gYmUgaGlkZGVuLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIGNvbHVtbiBjYW5ub3QgYmUgaGlkZGVuICovXG4gICAgZGlzYWJsZUhpZGluZzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgc29ydGluZyBzdHJhdGVneSB1c2VkIGZvciBzb3J0aW5nIHRoaXMgY29sdW1uLlxuICAgICAqIFRoZSBpbnRlcmZhY2UgY29udGFpbnMgYSBtZXRob2Qgc29ydCB0aGF0IHNvcnRzIHRoZSBwcm92aWRlZCBkYXRhIGJhc2VkIG9uIHRoZSBnaXZlbiBzb3J0aW5nIGV4cHJlc3Npb25zXG4gICAgICovXG4gICAgc29ydFN0cmF0ZWd5OiBJU29ydGluZ1N0cmF0ZWd5O1xuICAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgc2VhcmNoIHNob3VsZCBtYXRjaCByZXN1bHRzLCBubyBtYXR0ZXIgdGhlIGNhc2Ugb2YgdGhlIGxldHRlcnMgKHVwcGVyIGFuZCBsb3dlcilcbiAgICAgKiBJZiB0aGUgdmFsdWUgaXMgZmFsc2UsIHRoZSByZXN1bHQgd2lsbCBkZXBlbmQgb24gdGhlIGNhc2UgKGV4YW1wbGU6IGBFYCB3aWxsIG5vdCBtYXRjaCBgZWApXG4gICAgICogSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSByZXN1bHQgd2lsbCBub3QgZGVwZW5kIG9uIHRoZSBjYXNlIChleGFtcGxlOiBgRWAgd2lsbCBtYXRjaCBgZWApXG4gICAgICovXG4gICAgc29ydGluZ0lnbm9yZUNhc2U6IGJvb2xlYW47XG4gICAgZmlsdGVyQ2VsbDogYW55O1xuICAgIGZpbHRlcmluZ0lnbm9yZUNhc2U6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVGhlIGZpbHRlcmluZyBleHByZXNzaW9ucyBmb3IgdGhlIGNvbHVtbi5cbiAgICAgKiBUaGUgdHlwZSBjb250YWlucyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGZvciBmaWx0ZXJpbmc6IGZpbHRlcmluZ09wZXJhbmRzLCBvcGVyYXRvciAobG9naWMpLCBmaWVsZE5hbWUsIGV0Yy5cbiAgICAgKi9cbiAgICBmaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU6IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICBoYXNTdW1tYXJ5OiBib29sZWFuO1xuICAgIHN1bW1hcmllczogYW55O1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSByZWZlcmVuY2UgZm9yIGEgc3VtbWFyeSBvZiB0aGUgY29sdW1uXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIHN1bW1hcnlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBjb2x1bW4gaXMgY3VycmVudGx5IHBpbm5lZC4gSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSBjb2x1bW4gaXMgcGlubmVkICovXG4gICAgcGlubmVkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGNvbHVtbiBpcyBjdXJyZW50bHkgZXhwYW5kZWQgb3IgY29sbGFwc2VkLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIGNvbHVtbiBpcyBleHBhbmRlZCAqL1xuICAgIGV4cGFuZGVkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGNvbHVtbiBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuIElmIHRoZSB2YWx1ZSBpcyB0cnVlLCB0aGUgY29sdW1uIGlzIHNlbGVjdGVkICovXG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGNhbiBiZSBzZWxlY3RlZC4gSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSBjb2x1bW4gY2FuIGJlIHNlbGVjdGVkICovXG4gICAgc2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgICBjb2x1bW5MYXlvdXQ6IGJvb2xlYW47XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGhpZXJhcmNoaWNhbCBsZXZlbCBvZiB0aGUgY29sdW1uIGluIHRoZSBjb2x1bW4gbGF5b3V0ICovXG4gICAgbGV2ZWw6IG51bWJlcjtcbiAgICByb3dTdGFydDogbnVtYmVyO1xuICAgIHJvd0VuZDogbnVtYmVyO1xuICAgIGNvbFN0YXJ0OiBudW1iZXI7XG4gICAgY29sRW5kOiBudW1iZXI7XG4gICAgZ3JpZFJvd1NwYW46IG51bWJlcjtcbiAgICBncmlkQ29sdW1uU3BhbjogbnVtYmVyO1xuICAgIGNvbHVtbkxheW91dENoaWxkOiBib29sZWFuO1xuICAgIHdpZHRoOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBUaGUgcm9vdCBwYXJlbnQgb2YgdGhpcyBjb2x1bW4gKGlmIGFueSkuXG4gICAgICogSWYgdGhlcmUgaXMgbm8gcm9vdCBwYXJlbnQsIHRoYXQgbWVhbnMgdGhlIGN1cnJlbnQgc29sdW5tIGlzIHRoZSByb290IHBhcmVudFxuICAgICAqL1xuICAgIHRvcExldmVsUGFyZW50PzogQ29sdW1uVHlwZTtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFRoZSBpbW1lZGlhdGUgcGFyZW50IChyaWdodCBhYm92ZSkgY29sdW1uIG9mIHRoaXMgY29sdW1uIChpZiBhbnkpLlxuICAgICAqIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhhdCBtZWFucyB0aGUgY3VycmVudCBzb2x1bm0gaXMgdGhlIHJvb3QgcGFyZW50XG4gICAgICovXG4gICAgcGFyZW50PzogQ29sdW1uVHlwZTtcbiAgICBwaXBlQXJnczogSUNvbHVtblBpcGVBcmdzO1xuICAgIGhhc05lc3RlZFBhdGg6IGJvb2xlYW47XG4gICAgYWRkaXRpb25hbFRlbXBsYXRlQ29udGV4dDogYW55O1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY3VycmVudCBjb2x1bW4gaXMgdGhlIGxhc3QgdG8gYmUgcGlubmVkLlxuICAgICAqIElmIHRoZSB2YWx1ZSBpcyBmYWxzZSwgdGhlcmUgYXJlIGNvbHVtbnMsIHRoYXQgaGF2ZSBiZWVuIHBpbm5lZCBhZnRlciB0aGUgY3VycmVudCAqL1xuICAgIGlzTGFzdFBpbm5lZDogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgY29sdW1uIGlzIHRoZSBmaXJzdCBmb3IgdGhlIGdyaWQgdG8gYmUgcGlubmVkLlxuICAgICAqIElmIHRoZSB2YWx1ZSBpcyBmYWxzZSwgdGhlcmUgYXJlIGNvbHVtbnMsIHRoYXQgaGF2ZSBiZWVuIHBpbm5lZCBiZWZvcmUgdGhlIGN1cnJlbnQgKi9cbiAgICBpc0ZpcnN0UGlubmVkOiBib29sZWFuO1xuICAgIGFwcGx5U2VsZWN0YWJsZUNsYXNzOiBib29sZWFuO1xuICAgIC8qKiBUaGUgdGl0bGUgb2YgdGhlIGNvbHVtbiwgdXNlZCBmb3IgYWNjZXNzaWJpbGl0eSBwdXJwb3NlcyAqL1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2Qgd2l0aCBjdXN0b20gZ3JvdXBpbmcgY29tcGFyYXRvciB0byBkZXRlcm1pbmUgdGhlIG1lbWJlcnMgb2YgdGhlIGdyb3VwLiAqL1xuICAgIGdyb3VwaW5nQ29tcGFyZXI6IChhOiBhbnksIGI6IGFueSkgPT4gbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgZmlsdGVyaW5nXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIGZpbHRlckNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIGRlZmluaXRpb24gdG8gbW92ZSB0aGUgY29sdW1uIHRvIHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAgICogSXQgdGFrZXMgdGhlIGluZGV4IG9mIHR5cGUgbnVtYmVyIGFzIGEgcGFyYW1ldGVyXG4gICAgKi9cbiAgICBtb3ZlKGluZGV4OiBudW1iZXIpOiB2b2lkO1xuICAgIC8qKiBBIG1ldGhvZCBkZWZpbml0aW9uIHRvIHJldHJpZXZlIHRoZSBzZXQgQ1NTIHNpemUgKi9cbiAgICBnZXRBdXRvU2l6ZSgpOiBzdHJpbmc7XG4gICAgZ2V0UmVzaXphYmxlQ29sVW5kZXJFbmQoKTogTVJMUmVzaXplQ29sdW1uSW5mb1tdO1xuICAgIC8qKiBBIG1ldGhvZCBkZWZpbml0aW9uIHRvIHJldHJpZXZlIHRoZSBzZXQgQ1NTIHdpZHRoIG9mIHRoZSBjZWxscyB1bmRlciB0aGUgY29sdW1uICovXG4gICAgZ2V0Q2VsbFdpZHRoKCk6IHN0cmluZztcbiAgICBnZXRHcmlkVGVtcGxhdGUoaXNSb3c6IGJvb2xlYW4pOiBzdHJpbmc7XG4gICAgLyoqIEEgbWV0aG9kIGRlZmluaXRpb24gdG8gdG9nZ2xlIGNvbHVtbiB2aWJpc2lsaXR5IChoaWRkZW4gb3IgdmlzaWJsZSkgKi9cbiAgICB0b2dnbGVWaXNpYmlsaXR5KHZhbHVlPzogYm9vbGVhbik6IHZvaWQ7XG4gICAgcG9wdWxhdGVWaXNpYmxlSW5kZXhlcz8oKTogdm9pZDtcbiAgICAvKiogUGlucyB0aGUgY29sdW1uIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggKGlmIG5vdCBhbHJlYWR5IHBpbm5lZCkuICovXG4gICAgcGluKGluZGV4PzogbnVtYmVyKTogYm9vbGVhbjtcbiAgICAvKiogVW5waW5zIHRoZSBjb2x1bW4gYXQgdGhlIHNwZWNpZmllZCBpbmRleCAoaWYgbm90IGFscmVhZHkgdW5waW5uZWQpLiAqL1xuICAgIHVucGluKGluZGV4PzogbnVtYmVyKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW50aW5nIHRoZSBldmVudCBhcmd1bWVudHMgd2hlbiBhIGZvcm0gZ3JvdXAgaXMgY3JlYXRlZCBpbiB0aGUgZ3JpZC5cbiAqIC0gZm9ybUdyb3VwOiBUaGUgZm9ybSBncm91cCB0aGF0IGlzIGNyZWF0ZWQuXG4gKiAtIG93bmVyOiBUaGUgZ3JpZCBpbnN0YW5jZSB0aGF0IG93bnMgdGhlIGZvcm0gZ3JvdXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRGb3JtR3JvdXBDcmVhdGVkRXZlbnRBcmdzIHtcbiAgICBmb3JtR3JvdXA6IEZvcm1Hcm91cCxcbiAgICBvd25lcjogR3JpZFR5cGVcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW50aW5nIHRoZSBldmVudCBhcmd1bWVudHMgZm9yIHRoZSBncmlkIHZhbGlkYXRpb24gc3RhdHVzIGNoYW5nZSBldmVudC5cbiAqIC0gc3RhdHVzOiBUaGUgdmFsaWRhdGlvbiBzdGF0dXMgKCdWQUxJRCcgb3IgJ0lOVkFMSUQnKS5cbiAqIC0gb3duZXI6IFRoZSBncmlkIGluc3RhbmNlIHRoYXQgb3ducyB0aGUgdmFsaWRhdGlvbiBzdGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZFZhbGlkYXRpb25TdGF0dXNFdmVudEFyZ3Mge1xuICAgIHN0YXR1czogVmFsaWRhdGlvblN0YXR1cyxcbiAgICBvd25lcjogR3JpZFR5cGVcbn1cblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyB0aGUgdmFsaWRhdGlvbiBzdGF0dXMuXG4gKiAtICdWQUxJRCc6IFRoZSB2YWxpZGF0aW9uIHN0YXR1cyBpcyB2YWxpZC5cbiAqIC0gJ0lOVkFMSUQnOiBUaGUgdmFsaWRhdGlvbiBzdGF0dXMgaXMgaW52YWxpZC5cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblN0YXR1cyA9ICdWQUxJRCcgfCAnSU5WQUxJRCc7XG5cbi8qKlxuICogSW50ZXJmYWNlIHJlcHJlc2VudGluZyB0aGUgdmFsaWRhdGlvbiBzdGF0ZSBvZiBhIGdyaWQuXG4gKiAtIHN0YXR1czogVGhlIHZhbGlkYXRpb24gc3RhdHVzICgnVkFMSUQnIG9yICdJTlZBTElEJykuXG4gKiAtIGVycm9yczogVGhlIHZhbGlkYXRpb24gZXJyb3JzIGlmIGFueS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZFZhbGlkYXRpb25TdGF0ZSB7XG4gICAgcmVhZG9ubHkgc3RhdHVzOiBWYWxpZGF0aW9uU3RhdHVzO1xuICAgIHJlYWRvbmx5IGVycm9ycz86IFZhbGlkYXRpb25FcnJvcnM7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHJlcHJlc2VudGluZyB0aGUgdmFsaWRhdGlvbiBzdGF0ZSBvZiBhIHJlY29yZCBpbiB0aGUgZ3JpZC5cbiAqIC0gYGtleWA6IFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcmVjb3JkLlxuICogLSBgZmllbGRzYDogQW4gYXJyYXkgb2YgdGhlIHZhbGlkYXRpb24gc3RhdGUgb2YgaW5kaXZpZHVhbCBmaWVsZHMgaW4gdGhlIHJlY29yZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVjb3JkVmFsaWRhdGlvblN0YXRlIGV4dGVuZHMgSUdyaWRWYWxpZGF0aW9uU3RhdGUge1xuICAgIGtleTogYW55O1xuICAgIGZpZWxkczogSUZpZWxkVmFsaWRhdGlvblN0YXRlW107XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHJlcHJlc2VudGluZyB0aGUgdmFsaWRhdGlvbiBzdGF0ZSBvZiBhIGZpZWxkIGluIHRoZSBncmlkLlxuICogLWBmaWVsZGA6IFRoZSBuYW1lIG9mIHRoZSBmaWVsZCAocHJvcGVydHkpIGJlaW5nIHZhbGlkYXRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmllbGRWYWxpZGF0aW9uU3RhdGUgZXh0ZW5kcyBJR3JpZFZhbGlkYXRpb25TdGF0ZSB7XG4gICAgZmllbGQ6IHN0cmluZ1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHNlcnZpY2UgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBncmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRTZXJ2aWNlVHlwZSB7XG5cbiAgICAvKiogVGhlIHJlZmVyZW5jZSB0byB0aGUgcGFyZW50IGBHcmlkVHlwZWAgdGhhdCBjb250YWlucyB0aGUgc2VydmljZS4gKi9cbiAgICBncmlkOiBHcmlkVHlwZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgdHlwZSBvZiB0aGUgQ1JVRCBzZXJ2aWNlIChDcmVhdGUsIFJlYWQsIFVwZGF0ZSwgRGVsZXRlKSBvcGVyYXRpb25zIG9uIHRoZSBncmlkIGRhdGEuICovXG4gICAgY3J1ZFNlcnZpY2U6IGFueTtcbiAgICAvKiogQSBzZXJ2aWNlIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBjb2x1bW4gbW92aW5nIHdpdGhpbiB0aGUgZ3JpZC4gSXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGNvbHVtbiwgaXRzIGljb24sIGFuZCBpbmRpY2F0b3IgZm9yIGNhbmNlbGF0aW9uLiAqL1xuICAgIGNtczogSWd4Q29sdW1uTW92aW5nU2VydmljZTtcblxuICAgIC8qKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciByZXRyaWV2aW5nIHRoZSBkYXRhIHVzZWQgaW4gdGhlIGdyaWQuIFRoZSByZXR1cm5lZCB2YWx1ZXMgY291bGQgYmUgb2YgYW55IHR5cGUgKi9cbiAgICBnZXRfZGF0YSgpOiBhbnlbXTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciByZXRyaWV2aW5nIGFsbCB0aGUgZGF0YSBhdmFpbGFibGUgaW4gdGhlIGdyaWQsIGluY2x1ZGluZyBhbnkgdHJhbnNhY3Rpb25hbCBkYXRhLlxuICAgICAqIGBpbmNsdWRlVHJhbnNhY3Rpb25zYDogT3B0aW9uYWwgcGFyYW1ldGVyLiBTcGVjaWZpZXMgd2hldGhlciB0byBpbmNsdWRlIHRyYW5zYWN0aW9uYWwgZGF0YSBpZiBwcmVzZW50LlxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIGRhdGEgYXZhaWxhYmxlIGluIHRoZSBncmlkLlxuICAgICAqL1xuICAgIGdldF9hbGxfZGF0YShpbmNsdWRlVHJhbnNhY3Rpb25zPzogYm9vbGVhbik6IGFueVtdO1xuICAgIC8qKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciByZXRyaWV2aW5nIGEgY29sdW1uIG9iamVjdCBieSBpdHMgbmFtZSwgdGFrZW4gYXMgYSBwYXJhbWV0ZXIuICovXG4gICAgZ2V0X2NvbHVtbl9ieV9uYW1lKG5hbWU6IHN0cmluZyk6IENvbHVtblR5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgcm93IGJ5IGl0cyB1bmlxdWUgaWRlbnRpZmllciAob2YgYW55IHR5cGUsIHRha2VuIGFzIGEgcGFyYW1ldGVyKS4gKi9cbiAgICBnZXRSb3dEYXRhKGlkOiBhbnkpOiBhbnk7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgcmVjb3JkIGJ5IGl0cyB1bmlxdWUgaWRlbnRpZmllciAob2YgYW55IHR5cGUsIHRha2VuIGFzIGEgcGFyYW1ldGVyKS4gKi9cbiAgICBnZXRfcmVjX2J5X2lkKGlkOiBhbnkpOiBhbnk7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIGEgc3BlY2lmaWMgcm93IGJ5IGl0cyBkYXRhLiAqL1xuICAgIGdldF9yb3dfaWQocm93RGF0YTogYW55KTogYW55O1xuICAgIC8qKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciByZXRyaWV2aW5nIHRoZSByb3cgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGluZGV4ICh0YWtlbiBhcyBhIHBhcmFtZXRlcikgaW4gdGhlIGdyaWQgKi9cbiAgICBnZXRfcm93X2J5X2luZGV4KHJvd1NlbGVjdG9yOiBhbnkpOiBSb3dUeXBlO1xuICAgIC8qKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciByZXRyaWV2aW5nIHRoZSByb3cgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGtleSAodGFrZW4gYXMgYSBwYXJhbWV0ZXIpIGluIHRoZSBncmlkICovXG4gICAgZ2V0X3Jvd19ieV9rZXkocm93U2VsZWN0b3I6IGFueSk6IFJvd1R5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGluZGV4IG9mIGEgcmVjb3JkIGluIHRoZSBncmlkJ3MgZGF0YSBjb2xsZWN0aW9uIHVzaW5nIGl0cyB1bmlxdWUgaWRlbnRpZmllci4gKi9cbiAgICBnZXRfcmVjX2luZGV4X2J5X2lkKHBrOiBzdHJpbmcgfCBudW1iZXIsIGRhdGFDb2xsZWN0aW9uPzogYW55W10pOiBudW1iZXI7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGluZGV4IG9mIGEgcmVjb3JkIGluIHRoZSBncmlkJ3MgZGF0YSBjb2xsZWN0aW9uIHVzaW5nIGl0cyBpbmRleC4gKi9cbiAgICBnZXRfcmVjX2lkX2J5X2luZGV4KGluZGV4OiBudW1iZXIsIGRhdGFDb2xsZWN0aW9uPzogYW55W10pOiBhbnk7XG4gICAgZ2V0X3Jvd19pbmRleF9pbl9kYXRhKHJvd0lEOiBhbnksIGRhdGFDb2xsZWN0aW9uPzogYW55W10pOiBudW1iZXI7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGNlbGwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIHJvdyBhbmQgY29sdW1uIGluIHRoZSBncmlkLiAqL1xuICAgIGdldF9jZWxsX2J5X2tleShyb3dTZWxlY3RvcjogYW55LCBmaWVsZDogc3RyaW5nKTogQ2VsbFR5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGNlbGwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIHJvdyBhbmQgY29sdW1uIHVzaW5nIHRoZWlyIGluZGV4ZXMuICovXG4gICAgZ2V0X2NlbGxfYnlfaW5kZXgocm93SW5kZXg6IG51bWJlciwgY29sdW1uSUQ6IG51bWJlciB8IHN0cmluZyk6IENlbGxUeXBlO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIGNlbGwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIHJvdyBhbmQgY29sdW1uIHVzaW5nIHRoZWlyIGluZGV4ZXMuXG4gICAgICogSXQgY291bnRzIG9ubHkgdGhlIGluZGV4ZXMgb2YgdGhlIHZpc2libGUgY29sdW1ucyBhbmQgcm93c1xuICAgICAqL1xuICAgIGdldF9jZWxsX2J5X3Zpc2libGVfaW5kZXgocm93SW5kZXg6IG51bWJlciwgY29sdW1uSW5kZXg6IG51bWJlcik7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gdGhhdCBzZXRzIHRoZSBleHBhbnNpb24gc3RhdGUgb2YgYSBncm91cCByb3cgKHVzZWQgZm9yIHRyZWUgZ3JpZHMpXG4gICAgICogSXQgdGFrZXMgdGhlIHZhbHVlIGZvciB0aGUgZXhwYW50aW9uIGFzIGEgcGFyYW1ldGVyIChleHBhbmRlZCBvciBjb2xsYXBzZWQpXG4gICAgICovXG4gICAgc2V0X2dyb3Vwcm93X2V4cGFuc2lvbl9zdGF0ZT8oZ3JvdXBSb3c6IElHcm91cEJ5UmVjb3JkLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQ7XG4gICAgcm93X2RlbGV0ZWRfdHJhbnNhY3Rpb24oaWQ6IGFueSk6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiBmb3IgYWRkaW5nIGEgbmV3IHJvdyB0byB0aGUgZ3JpZC5cbiAgICAgKiBJdCB0YWtlcyB0aGUgcm93J3MgZGF0YSBhbmQgdGhlIGlkZW50aWZpZXIgb2YgdGhlIHBhcmVudCByb3cgaWYgYXBwbGljYWJsZSAodXNlZCBmb3IgdHJlZSBncmlkcylcbiAgICAgKi9cbiAgICBhZGRSb3dUb0RhdGEocm93RGF0YTogYW55LCBwYXJlbnRJRD86IGFueSk6IHZvaWQ7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIGRlbGV0aW5nIGEgcm93LCBzcGVjaWZpZWQgYnkgaXQncyBpZGVudGlkaWVyICh0YWtlbiBhcyBhIHBhcmFtZXRlcikgKi9cbiAgICBkZWxldGVSb3dCeUlkKGlkOiBhbnkpOiBhbnk7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJldHJpZXZpbmcgdGhlIHJvdydzIGN1cnJlbnQgc3RhdGUgb2YgZXhwYW50aW9uICh1c2VkIGZvciB0cmVlIGdyaWRzKSovXG4gICAgZ2V0X3Jvd19leHBhbnNpb25fc3RhdGUoaWQ6IGFueSk6IGJvb2xlYW47XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHNldHRpbmcgYSBuZXcgZXhwYW50aW9uIHN0YXRlLiBJdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGFuIGV2ZW50ICovXG4gICAgc2V0X3Jvd19leHBhbnNpb25fc3RhdGUoaWQ6IGFueSwgZXhwYW5kZWQ6IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpOiB2b2lkO1xuICAgIGdldF9zdW1tYXJ5X2RhdGEoKTogYW55W107XG5cbiAgICBwcmVwYXJlX3NvcnRpbmdfZXhwcmVzc2lvbihzdGF0ZUNvbGxlY3Rpb25zOiBBcnJheTxBcnJheTxhbnk+PiwgZXhwcmVzc2lvbjogSVNvcnRpbmdFeHByZXNzaW9uKTogdm9pZDtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciBzb3J0aW5nIGJ5IG9ubHkgb25lIGV4cHJlc3Npb25cbiAgICAgKiBUaGUgZXhwcmVzc2lvbiBjb250YWlucyBmaWVsZE5hbWUsIHNvcnRpbmcgZGlyZWN0b3J5LCB3aGV0aGVyIGNhc2Ugc2hvdWxkIGJlIGlnbm9yZWQgYW5kIG9wdGlvbmFsIHNvcnRpbmcgc3RyYXRlZ3lcbiAgICAgKi9cbiAgICBzb3J0KGV4cHJlc3Npb246IElTb3J0aW5nRXhwcmVzc2lvbik6IHZvaWQ7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiBmb3Igc29ydGluZyBieSBtdWx0aXBsZSBleHByZXNzaW9uc1xuICAgICAqIFRoZSBleHByZXNzaW9ucyBjb250YWlucyBmaWVsZE5hbWUsIHNvcnRpbmcgZGlyZWN0b3J5LCB3aGV0aGVyIGNhc2Ugc2hvdWxkIGJlIGlnbm9yZWQgYW5kIG9wdGlvbmFsIHNvcnRpbmcgc3RyYXRlZ3lcbiAgICAgKi9cbiAgICBzb3J0X211bHRpcGxlKGV4cHJlc3Npb25zOiBJU29ydGluZ0V4cHJlc3Npb25bXSk6IHZvaWQ7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHJlc2V0aW5nIHRoZSBzb3J0aW5nICovXG4gICAgY2xlYXJfc29ydChmaWVsZE5hbWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgICAvKiogUmVwcmVzZW50cyBhbiBldmVudCwgdHJpZ2dlcmVkIHdoZW4gdGhlIHBpbiBzdGF0ZSBpcyBjaGFuZ2VkICovXG4gICAgZ2V0X3Bpbl9yb3dfZXZlbnRfYXJncyhyb3dJRDogYW55LCBpbmRleD86IG51bWJlciwgcm93PzogUm93VHlwZSwgcGlubmVkPzogYm9vbGVhbik6IElQaW5Sb3dFdmVudEFyZ3M7XG5cbiAgICBmaWx0ZXJEYXRhQnlFeHByZXNzaW9ucyhleHByZXNzaW9uc1RyZWU6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpOiBhbnlbXTtcbiAgICBzb3J0RGF0YUJ5RXhwcmVzc2lvbnMoZGF0YTogYW55W10sIGV4cHJlc3Npb25zOiBJU29ydGluZ0V4cHJlc3Npb25bXSk6IGFueVtdO1xuXG4gICAgdXBkYXRlX2NlbGwoY2VsbDogSWd4Q2VsbCk6IElHcmlkRWRpdEV2ZW50QXJncztcbiAgICB1cGRhdGVfcm93KHJvdzogSWd4RWRpdFJvdywgdmFsdWU6IGFueSwgZXZlbnQ/OiBFdmVudCk6IElHcmlkRWRpdEV2ZW50QXJncztcblxuICAgIGV4cGFuZF9wYXRoX3RvX3JlY29yZD8ocmVjb3JkOiBJVHJlZUdyaWRSZWNvcmQpOiB2b2lkO1xuICAgIGdldF9zZWxlY3RlZF9jaGlsZHJlbj8ocmVjb3JkOiBJVHJlZUdyaWRSZWNvcmQsIHNlbGVjdGVkUm93SURzOiBhbnlbXSk6IHZvaWQ7XG4gICAgZ2V0X2dyb3VwQnlfcmVjb3JkX2lkPyhnUm93OiBJR3JvdXBCeVJlY29yZCk6IHN0cmluZztcbiAgICByZW1vdmVfZ3JvdXBpbmdfZXhwcmVzc2lvbj8oZmllbGROYW1lOiBzdHJpbmcpOiB2b2lkO1xuICAgIGNsZWFyX2dyb3VwYnk/KGZpZWxkOiBzdHJpbmcgfCBhbnkpOiB2b2lkO1xuICAgIGdldFBhcmVudFJvd0lkPyhjaGlsZDogR3JpZFR5cGUpOiBhbnk7XG4gICAgZ2V0Q2hpbGRHcmlkcz8oaW5EZXB0aD86IGJvb2xlYW4pOiBHcmlkVHlwZVtdO1xuICAgIGdldENoaWxkR3JpZD8ocGF0aDogSVBhdGhTZWdtZW50W10pOiBHcmlkVHlwZTtcblxuICAgIHVuc2V0Q2hpbGRSb3dJc2xhbmQ/KHJvd0lzbGFuZDogR3JpZFR5cGUpOiB2b2lkO1xuICAgIHJlZ2lzdGVyQ2hpbGRSb3dJc2xhbmQ/KHJvd0lzbGFuZDogR3JpZFR5cGUpOiB2b2lkO1xufVxuXG5cbi8qKlxuICogSW50ZXJmYWNlIHJlcHJlc2VudGluZyBhIGdyaWQgdHlwZS4gSXQgaXMgZXNzZW50aWFsbHkgdGhlIGJsdWVwcmludCB0byBhIGdyaWQgb2JqZWN0LlxuICogQ29udGFpbnMgZGVmaW5pdGlvbnMgb2YgcHJvcGVydGllcyBhbmQgbWV0aG9kcywgcmVsZXZhbnQgdG8gYSBncmlkXG4gKiBFeHRlbmRzIGBJR3JpZERhdGFCaW5kYWJsZWBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmlkVHlwZSBleHRlbmRzIElHcmlkRGF0YUJpbmRhYmxlIHtcbiAgICAvKiogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxNi4xLnguIFBsZWFzZSB1c2UgdGhlIGAtLWlnLXNpemVgIENTUyBjdXN0b20gcHJvcGVydHkuICovXG4gICAgZGlzcGxheURlbnNpdHk6IERpc3BsYXlEZW5zaXR5O1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBsb2NhbGUgb2YgdGhlIGRyaWc6IGBVU0RgLCBgRVVSYCwgYEdCUGAsIGBDTllgLCBgSlBZYCwgZXRjLiAqL1xuICAgIGxvY2FsZTogc3RyaW5nO1xuICAgIHJlc291cmNlU3RyaW5nczogSUdyaWRSZXNvdXJjZVN0cmluZ3M7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG5hdGl2ZSBIVE1MIGVsZW1lbnQgaXRzZWxmICovXG4gICAgbmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHJvd3MgaW4gdGhlIGdyaWQgYXJlIGVkaXRhYmxlLiBJZiB0ZSB2YWx1ZSBpcyB0cnVlLCB0aGUgcm93cyBjYW4gYmUgZWRpdGVkICovXG4gICAgcm93RWRpdGFibGU6IGJvb2xlYW47XG4gICAgcm9vdFN1bW1hcmllc0VuYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIGZpbHRlcmluZyBpbiB0aGUgZ3JpZCBpcyBlbmFibGVkLiBJZiB0ZSB2YWx1ZSBpcyB0cnVlLCB0aGUgZ3JpZCBjYW4gYmUgZmlsdGVyZWQgKi9cbiAgICBhbGxvd0ZpbHRlcmluZzogYm9vbGVhbjtcbiAgICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHJvd3MgaW4gdGhlIGdyaWQgY2FuIGJlIGRyYWdnZWQuIElmIHRlIHZhbHVlIGlzIHRydWUsIHRoZSByb3dzIGNhbiBiZSBkcmFnZ2VkICovXG4gICAgcm93RHJhZ2dhYmxlOiBib29sZWFuO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSB1bmlxdWUgcHJpbWFyeSBrZXkgdXNlZCBmb3IgaWRlbnRpZnlpbmcgcm93cyBpbiB0aGUgZ3JpZCAqL1xuICAgIHByaW1hcnlLZXk6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGdyaWQuICovXG4gICAgaWQ6IHN0cmluZztcbiAgICAvKiogVGhlIGhlaWdodCBvZiB0aGUgdmlzaWJsZSByb3dzIGluIHRoZSBncmlkLiAqL1xuICAgIHJlbmRlcmVkUm93SGVpZ2h0OiBudW1iZXI7XG4gICAgcGlwZVRyaWdnZXI6IG51bWJlcjtcbiAgICBzdW1tYXJ5UGlwZVRyaWdnZXI6IG51bWJlcjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBncm91cGFibGVQaXBlVHJpZ2dlcjogbnVtYmVyO1xuICAgIGZpbHRlcmluZ1BpcGVUcmlnZ2VyOiBudW1iZXI7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgaGFzQ29sdW1uTGF5b3V0czogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGdyaWQgaXMgY3VycmVudGx5IGluIGEgbW92aW5nIHN0YXRlLiAqL1xuICAgIG1vdmluZzogYm9vbGVhbjtcbiAgICBpc0xvYWRpbmc6IGJvb2xlYW47XG5cbiAgICAvKiogU3RyYXRlZ3ksIHVzZWQgZm9yIGNsb25pbmcgdGhlIHByb3ZpZGVkIGRhdGEuIFRoZSB0eXBlIGhhcyBvbmUgbWV0aG9kLCB0aGF0IHRha2VzIGFueSB0eXBlIG9mIGRhdGEgKi9cbiAgICBkYXRhQ2xvbmVTdHJhdGVneTogSURhdGFDbG9uZVN0cmF0ZWd5O1xuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGdyaWQgc2VydmljZSB0eXBlIHByb3ZpZGluZyBBUEkgbWV0aG9kcyBmb3IgdGhlIGdyaWQgKi9cbiAgICByZWFkb25seSBncmlkQVBJOiBHcmlkU2VydmljZVR5cGU7XG5cbiAgICAvKiogVGhlIGZpbHRlciBtb2RlIGZvciB0aGUgZ3JpZC4gSXQgY2FuIGJlIHF1aWNrIGZpbHRlciBvZiBleGNlbC1zdHlsZSBmaWx0ZXIgKi9cbiAgICBmaWx0ZXJNb2RlOiBGaWx0ZXJNb2RlO1xuXG4gICAgLy8gVFlQRVxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHRoZWFkUm93OiBhbnk7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgZ3JvdXBBcmVhOiBhbnk7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgZmlsdGVyQ2VsbExpc3Q6IGFueVtdO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGZpbHRlcmluZ1JvdzogYW55O1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGFjdGlvblN0cmlwOiBhbnk7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcmVzaXplTGluZTogYW55O1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgdGZvb3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHBhZ2luYXRvcjogSWd4UGFnaW5hdG9yQ29tcG9uZW50O1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHBhZ2luYXRvckxpc3Q/OiBRdWVyeUxpc3Q8SWd4UGFnaW5hdG9yQ29tcG9uZW50PjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBjcnVkU2VydmljZTogYW55O1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHN1bW1hcnlTZXJ2aWNlOiBhbnk7XG5cblxuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIHN0YXRlIG9mIHZpcnR1YWxpemF0aW9uIGZvciB0aGUgZ3JpZC4gSXQgaGFzIGFuIG93bmVyLCBzdGFydCBpbmRleCBhbmQgY2h1bmsgc2l6ZSAqL1xuICAgIHZpcnR1YWxpemF0aW9uU3RhdGU6IElGb3JPZlN0YXRlO1xuICAgIC8vIFRZUEVcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICAvKiogVGhlIHNlcnZpY2UgaGFuZGxpbmcgc2VsZWN0aW9uIGluIHRoZSBncmlkLiBTZWxlY3RpbmcsIGRlc2VsZWN0aW5nIGVsZW1lbnRzICovXG4gICAgc2VsZWN0aW9uU2VydmljZTogYW55O1xuICAgIG5hdmlnYXRpb246IGFueTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBmaWx0ZXJpbmdTZXJ2aWNlOiBhbnk7XG4gICAgb3V0bGV0OiBhbnk7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBncmlkIGhhcyBjb2x1bW5zIHRoYXQgY2FuIGJlIG1vdmVkICovXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgaGFzTW92YWJsZUNvbHVtbnM6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBncmlkJ3Mgcm93cyBjYW4gYmUgc2VsZWN0ZWQgKi9cbiAgICBpc1Jvd1NlbGVjdGFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBzZWxlY3RvcnMgb2YgdGhlIHJvd3MgYXJlIHZpc2libGUgKi9cbiAgICBzaG93Um93U2VsZWN0b3JzOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZ3JpZCdzIGVsZW1lbnQgaXMgcGlubmVkIHRvIHRoZSBzdGFydCBvZiB0aGUgZ3JpZCAqL1xuICAgIGlzUGlubmluZ1RvU3RhcnQ6IGJvb2xlYW47XG4gICAgLyoqIElkaWNhdGVzIGlmIHRoZSBjb2x1bW4gb2YgdGhlIGdyaWQgaXMgaW4gZHJhZyBtb2RlICovXG4gICAgY29sdW1uSW5EcmFnOiBhbnk7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgLyoqIFRoZSB3aWR0aCBvZiBwaW5uZWQgZWxlbWVudCAqL1xuICAgIHBpbm5lZFdpZHRoOiBudW1iZXI7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgLyoqIFRoZSB3aWR0aCBvZiB1bnBpbm5lZCBlbGVtZW50ICovXG4gICAgdW5waW5uZWRXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBUaGUgQ1NTIG1hcmdpbiBvZiB0aGUgc3VtbWFyaWVzICovXG4gICAgc3VtbWFyaWVzTWFyZ2luOiBudW1iZXI7XG4gICAgaGVhZFNlbGVjdG9yQmFzZUFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBncmlkIGhhcyBjb2x1bW5zIHRoYXQgYXJlIHNob3duICovXG4gICAgaGFzVmlzaWJsZUNvbHVtbnM6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZ3JpZCBoYXMgZXhwYW5kYWJsZSBjaGlsZHJlbiAoaGllcmFyY2hpY2FsIGFuZCB0cmVlIGdyaWQpXG4gICAgICovXG4gICAgaGFzRXhwYW5kYWJsZUNoaWxkcmVuPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIGNvbGxhcHNlZCBncmlkIGVsZW1lbnRzIHNob3VsZCBiZSBleHBhbmRlZFxuICAgICAqL1xuICAgIHNob3dFeHBhbmRBbGw/OiBib29sZWFuO1xuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGNvdW50IG9mIG9ubHkgdGhlIGhpZGRlbiAobm90IHZpc2libGUpIGNvbHVtbnMgKi9cbiAgICBoaWRkZW5Db2x1bW5zQ291bnQ6IG51bWJlcjtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgY291bnQgb2Ygb25seSB0aGUgcGlubmVkIGNvbHVtbnMgKi9cbiAgICBwaW5uZWRDb2x1bW5zQ291bnQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogVGhlIHRlbXBsYXRlIGZvciBncmlkIGljb25zLlxuICAgICAqIEl0IGlzIG9mIHR5cGUgVGVtcGxhdGVSZWYsIHdoaWNoIHJlcHJlc2VudHMgYW4gZW1iZWRkZWQgdGVtcGxhdGUsIHVzZWQgdG8gaW5zdGFuY2lhdGUgZW1iZWRkZWQgdmlld3NcbiAgICAgKi9cbiAgICBpY29uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogVGhlIHRlbXBsYXRlIGZvciBncm91cC1ieSByb3dzLlxuICAgICAqIEl0IGlzIG9mIHR5cGUgVGVtcGxhdGVSZWYsIHdoaWNoIHJlcHJlc2VudHMgYW4gZW1iZWRkZWQgdGVtcGxhdGUsIHVzZWQgdG8gaW5zdGFuY2lhdGUgZW1iZWRkZWQgdmlld3NcbiAgICAgKi9cbiAgICBncm91cFJvd1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8SWd4R3JvdXBCeVJvd1RlbXBsYXRlQ29udGV4dD47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBncm91cCByb3cgc2VsZWN0b3IuXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIGdyb3VwQnlSb3dTZWxlY3RvclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SWd4R3JvdXBCeVJvd1NlbGVjdG9yVGVtcGxhdGVDb250ZXh0PjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFRoZSB0ZW1wbGF0ZSBmb3Igcm93IGxvYWRpbmcgaW5kaWNhdG9ycy5cbiAgICAgKiBJdCBpcyBvZiB0eXBlIFRlbXBsYXRlUmVmLCB3aGljaCByZXByZXNlbnRzIGFuIGVtYmVkZGVkIHRlbXBsYXRlLCB1c2VkIHRvIGluc3RhbmNpYXRlIGVtYmVkZGVkIHZpZXdzXG4gICAgICovXG4gICAgcm93TG9hZGluZ0luZGljYXRvclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKipcbiAgICAgKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBoZWFkZXIgc2VsZWN0b3IuXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIGhlYWRTZWxlY3RvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hIZWFkU2VsZWN0b3JUZW1wbGF0ZUNvbnRleHQ+O1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSBmb3Igcm93IHNlbGVjdG9ycy5cbiAgICAgKiBJdCBpcyBvZiB0eXBlIFRlbXBsYXRlUmVmLCB3aGljaCByZXByZXNlbnRzIGFuIGVtYmVkZGVkIHRlbXBsYXRlLCB1c2VkIHRvIGluc3RhbmNpYXRlIGVtYmVkZGVkIHZpZXdzXG4gICAgICovXG4gICAgcm93U2VsZWN0b3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8SWd4Um93U2VsZWN0b3JUZW1wbGF0ZUNvbnRleHQ+O1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSBmb3Igc29ydCBoZWFkZXIgaWNvbnMuXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIHNvcnRIZWFkZXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPElneEdyaWRIZWFkZXJUZW1wbGF0ZUNvbnRleHQ+O1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSBmb3IgYXNjZW5kaW5nIHNvcnQgaGVhZGVyIGljb25zLlxuICAgICAqIEl0IGlzIG9mIHR5cGUgVGVtcGxhdGVSZWYsIHdoaWNoIHJlcHJlc2VudHMgYW4gZW1iZWRkZWQgdGVtcGxhdGUsIHVzZWQgdG8gaW5zdGFuY2lhdGUgZW1iZWRkZWQgdmlld3NcbiAgICAgKi9cbiAgICBzb3J0QXNjZW5kaW5nSGVhZGVySWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hHcmlkSGVhZGVyVGVtcGxhdGVDb250ZXh0PjtcbiAgICAvKipcbiAgICAgKiBUaGUgdGVtcGxhdGUgZm9yIGRlc2NlbmRpbmcgc29ydCBoZWFkZXIgaWNvbnMuXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIHNvcnREZXNjZW5kaW5nSGVhZGVySWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hHcmlkSGVhZGVyVGVtcGxhdGVDb250ZXh0PjtcbiAgICAvKipcbiAgICAgKiBUaGUgdGVtcGxhdGUgZm9yIGhlYWRlciBjb2xsYXBzZWQgaW5kaWNhdG9ycy5cbiAgICAgKiBJdCBpcyBvZiB0eXBlIFRlbXBsYXRlUmVmLCB3aGljaCByZXByZXNlbnRzIGFuIGVtYmVkZGVkIHRlbXBsYXRlLCB1c2VkIHRvIGluc3RhbmNpYXRlIGVtYmVkZGVkIHZpZXdzXG4gICAgICovXG4gICAgaGVhZGVyQ29sbGFwc2VkSW5kaWNhdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPElneEdyaWRUZW1wbGF0ZUNvbnRleHQ+O1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSBmb3IgaGVhZGVyIGV4cGFuZGVkIGluZGljYXRvcnMuXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIGhlYWRlckV4cGFuZGVkSW5kaWNhdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPElneEdyaWRUZW1wbGF0ZUNvbnRleHQ+O1xuICAgIC8qKiBUaGUgdGVtcGxhdGUgZm9yIGRyYWcgaW5kaWNhdG9yIGljb25zLiBDb3VsZCBiZSBvZiBhbnkgdHlwZSAqL1xuICAgIGRyYWdJbmRpY2F0b3JJY29uVGVtcGxhdGU6IGFueTtcbiAgICAvKiogVGhlIGJhc2UgZHJhZyBpbmRpY2F0b3IgaWNvbi4gQ291bGQgYmUgb2YgYW55IHR5cGUgKi9cbiAgICBkcmFnSW5kaWNhdG9ySWNvbkJhc2U6IGFueTtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdHJhbnNpdGlvbnMgYXJlIGRpc2FibGVkIGZvciB0aGUgZ3JpZC4gKi9cbiAgICBkaXNhYmxlVHJhbnNpdGlvbnM6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjdXJyZW5jeSBzeW1ib2wgaXMgcG9zaXRpb25lZCB0byB0aGUgbGVmdCBvZiB2YWx1ZXMuICovXG4gICAgY3VycmVuY3lQb3NpdGlvbkxlZnQ6IGJvb2xlYW47XG5cbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4gaXMgc2V0IGJ5IHRoZSB1c2VyLCBvciBpcyBjb25maWd1cmVkIGF1dG9tYXRpY2FsbHkuICovXG4gICAgY29sdW1uV2lkdGhTZXRCeVVzZXI6IGJvb2xlYW47XG4gICAgaGVhZGVyRmVhdHVyZXNXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBDU1Mgc3R5bGluZyBjYWxjdWxhdGVkIGZvciBhbiBlbGVtZW50OiBjYWxjSGVpZ2h0LCBjYWxjV2lkdGgsIG91dGVyV2lkdGggKi9cbiAgICBjYWxjSGVpZ2h0OiBudW1iZXI7XG4gICAgY2FsY1dpZHRoOiBudW1iZXI7XG4gICAgb3V0ZXJXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBUaGUgaGVpZ2h0IG9mIGVhY2ggcm93IGluIHRoZSBncmlkLiBTZXR0aW5nIGEgY29uc3RhbnQgaGVpZ2h0IGNhbiBzb2x2ZSBwcm9ibGVtcyB3aXRoIG5vdCBzaG93aW5nIGFsbCBhbGVtZW50cyB3aGVuIHNjcm9sbGluZyAqL1xuICAgIHJvd0hlaWdodDogbnVtYmVyO1xuICAgIG11bHRpUm93TGF5b3V0Um93U2l6ZTogbnVtYmVyO1xuICAgIC8qKiBNaW5pbWFsIHdpZHRoIGZvciBoZWFkZXJzICovXG4gICAgZGVmYXVsdEhlYWRlckdyb3VwTWluV2lkdGg6IGFueTtcbiAgICBtYXhMZXZlbEhlYWRlckRlcHRoOiBudW1iZXI7XG4gICAgZGVmYXVsdFJvd0hlaWdodDogbnVtYmVyO1xuICAgIC8qKiBUaGUgZGVmYXVsdCBmb250IHNpemUsIGNhbGN1bGF0ZWQgZm9yIGVhY2ggZWxlbWVudCAqL1xuICAgIF9iYXNlRm9udFNpemU/OiBudW1iZXI7XG4gICAgc2Nyb2xsU2l6ZTogbnVtYmVyO1xuXG4gICAgLyoqIFRoZSB0cmlnZ2VyIGZvciBncmlkIHZhbGlkYXRpb24uIEl0J3MgdmFsdWUgY2FuIGVpZ2h0ZXIgYmUgYGNoYW5nZWAgb3IgYGJsdXJgICovXG4gICAgdmFsaWRhdGlvblRyaWdnZXI6IEdyaWRWYWxpZGF0aW9uVHJpZ2dlcjtcbiAgICAvKipcbiAgICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgY29sdW1ucyBhbmQgcm93cyBwaW5uaW5nIGluIHRoZSBncmlkXG4gICAgICogSXQncyBvZiB0eXBlIElQaW5uaW5nQ29uZmlnLCB3aGljaCBjYW4gaGF2ZSB2YWx1ZSBmb3IgY29sdW1ucyAoc3RhcnQsIGVuZCkgYW5kIGZvciByb3dzICh0b3AsIGJvdHRvbSlcbiAgICAqL1xuICAgIHBpbm5pbmc6IElQaW5uaW5nQ29uZmlnO1xuICAgIGV4cGFuc2lvblN0YXRlczogTWFwPGFueSwgYm9vbGVhbj47XG4gICAgcGFyZW50VmlydERpcjogYW55O1xuICAgIHRib2R5OiBhbnk7XG4gICAgdmVydGljYWxTY3JvbGxDb250YWluZXI6IGFueTtcbiAgICBkYXRhUm93TGlzdDogYW55O1xuICAgIHJvd0xpc3Q6IGFueTtcbiAgICAvKiogQW4gdW5tb2RpZmlhYmxlIGxpc3QsIGNvbnRhaW5pbmcgYWxsIHRoZSBjb2x1bW5zIG9mIHRoZSBncmlkLiAqL1xuICAgIGNvbHVtbkxpc3Q6IFF1ZXJ5TGlzdDxDb2x1bW5UeXBlPjtcbiAgICBjb2x1bW5zOiBDb2x1bW5UeXBlW107XG4gICAgLyoqIEFuIGFycmF5IG9mIGNvbHVtbnMsIGJ1dCBpdCBjb3VudHMgb25seSB0aGUgb25lcyB2aXNpYmxlIChub3QgaGlkZGVuKSBpbiB0aGUgdmlldyAqL1xuICAgIHZpc2libGVDb2x1bW5zOiBDb2x1bW5UeXBlW107XG4gICAgLyoqIEFuIGFycmF5IG9mIGNvbHVtbnMsIGJ1dCBpdCBjb3VudHMgb25seSB0aGUgb25lcyB0aGF0IGFyZSBub3QgcGlubmVkICovXG4gICAgdW5waW5uZWRDb2x1bW5zOiBDb2x1bW5UeXBlW107XG4gICAgLyoqIEFuIGFycmF5IG9mIGNvbHVtbnMsIGJ1dCBpdCBjb3VudHMgb25seSB0aGUgb25lcyB0aGF0IGFyZSBwaW5uZWQgKi9cbiAgICBwaW5uZWRDb2x1bW5zOiBDb2x1bW5UeXBlW107XG4gICAgLyoqIHJlcHJlc2VudHMgYW4gYXJyYXkgb2YgdGhlIGhlYWRlcnMgb2YgdGhlIGNvbHVtbnMgKi9cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBoZWFkZXJDZWxsTGlzdDogYW55W107XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgaGVhZGVyR3JvdXBzOiBhbnlbXTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBoZWFkZXJHcm91cHNMaXN0OiBhbnlbXTtcbiAgICBzdW1tYXJpZXNSb3dMaXN0OiBhbnk7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgaGVhZGVyQ29udGFpbmVyOiBhbnk7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIGNlbGxzIGFyZSBzZWxlY3RhYmxlIGluIHRoZSBncmlkICovXG4gICAgaXNDZWxsU2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgaXQgaXMgYWxsb3dlZCB0byBzZWxlY3QgbW9yZSB0aGFuIG9uZSByb3cgaW4gdGhlIGdyaWQgKi9cbiAgICBpc011bHRpUm93U2VsZWN0aW9uRW5hYmxlZDogYm9vbGVhbjtcbiAgICBoYXNQaW5uZWRSZWNvcmRzOiBib29sZWFuO1xuICAgIHBpbm5lZFJlY29yZHNDb3VudDogbnVtYmVyO1xuICAgIHBpbm5lZFJlY29yZHM6IGFueVtdO1xuICAgIHVucGlubmVkUmVjb3JkczogYW55W107XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcGlubmVkRGF0YVZpZXc6IGFueVtdO1xuICAgIHBpbm5lZFJvd3M6IGFueVtdO1xuICAgIGRhdGFWaWV3OiBhbnlbXTtcbiAgICBfZmlsdGVyZWRVbnBpbm5lZERhdGE6IGFueVtdO1xuICAgIF9maWx0ZXJlZFNvcnRlZFVucGlubmVkRGF0YTogYW55W107XG4gICAgZmlsdGVyZWRTb3J0ZWREYXRhOiBhbnlbXTtcbiAgICBkYXRhV2l0aEFkZGVkSW5UcmFuc2FjdGlvblJvd3M6IGFueVtdO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSB0cmFuc2FjdGlvbiBzZXJ2aWNlIGZvciB0aGUgZ3JpZC4gKi9cbiAgICByZWFkb25seSB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uU2VydmljZTxUcmFuc2FjdGlvbiwgU3RhdGU+O1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSB2YWxpZGF0aW9uIHNlcnZpY2UgZm9yIHRoZSBncmlkLiBUaGUgdHlwZSBjb250YWlucyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIChsb2dpYykgZm9yIHZhbGlkYXRpbmcgcmVjb3JkcyAqL1xuICAgIHJlYWRvbmx5IHZhbGlkYXRpb246IElneEdyaWRWYWxpZGF0aW9uU2VydmljZTtcbiAgICBkZWZhdWx0U3VtbWFyeUhlaWdodDogbnVtYmVyO1xuICAgIHN1bW1hcnlSb3dIZWlnaHQ6IG51bWJlcjtcbiAgICByb3dFZGl0aW5nT3ZlcmxheTogSWd4VG9nZ2xlRGlyZWN0aXZlO1xuICAgIHRvdGFsUm93c0NvdW50QWZ0ZXJGaWx0ZXI6IG51bWJlcjtcbiAgICBfdG90YWxSZWNvcmRzOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgcGFnaW5nIG9mIHRoZSBncmlkLiBJdCBjYW4gYmUgZWlnaHRlciAnTG9jYWwnIG9yICdSZW1vdGUnXG4gICAgICogLSBMb2NhbDogRGVmYXVsdCB2YWx1ZTsgVGhlIGdyaWQgd2lsbCBwYWdpbmF0ZSB0aGUgZGF0YSBzb3VyY2UgYmFzZWQgb24gdGhlIHBhZ2VcbiAgICAgKi9cbiAgICBwYWdpbmdNb2RlOiBHcmlkUGFnaW5nTW9kZTtcbiAgICAvKiogVGhlIHBhZ2luZyBzdGF0ZSBmb3IgdGhlIGdyaWQ7IFVzZWQgdG8gY29uZmlndXJlIGhvdyBwYWdpbmcgc2hvdWxkIGJlIGFwcGxpZWQgLSB3aGljaCBpcyB0aGUgY3VycmVudCBwYWdlLCByZWNvcmRzIHBlciBwYWdlICovXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwYWdpbmdTdGF0ZTogYW55O1xuXG4gICAgcm93RWRpdFRhYnM6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgbGFzdCBzZWFyY2ggaW4gdGhlIGdyaWRcbiAgICAgKiBJdCBjb250YWlucyB0aGUgc2VhcmNoIHRleHQgKHRoZSB1c2VyIGhhcyBlbnRlcmVkKSwgdGhlIG1hdGNoIGFuZCBzb21lIHNldHRpbmdzIGZvciB0aGUgc2VhcmNoXG4gICAgICovXG4gICAgbGFzdFNlYXJjaEluZm86IElTZWFyY2hJbmZvO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwZXJQYWdlOiBudW1iZXI7XG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgcm93IGN1cnJlbnRseSBiZWluZyBkcmFnZ2VkIGluIHRoZSBncmlkLiAqL1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGRyYWdSb3dJRDogYW55O1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciBhIHJvdyBpcyBjdXJyZW50bHkgYmVpbmcgZHJhZ2dlZCAqL1xuICAgIHJvd0RyYWdnaW5nOiBib29sZWFuO1xuXG4gICAgZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4OiBudW1iZXI7XG4gICAgbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXg6IG51bWJlcjtcbiAgICBpc1Jvd1Bpbm5pbmdUb1RvcDogYm9vbGVhbjtcbiAgICBoYXNEZXRhaWxzOiBib29sZWFuO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGhhc1N1bW1hcml6ZWRDb2x1bW5zOiBib29sZWFuO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGhhc0NvbHVtbkdyb3VwczogYm9vbGVhbjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBoYXNFZGl0YWJsZUNvbHVtbnM6IGJvb2xlYW47XG4gICAgLyoqIFByb3BlcnR5LCB0aGF0IHByb3ZpZGVzIGEgY2FsbGJhY2sgZm9yIGxvYWRpbmcgdW5pcXVlIGNvbHVtbiB2YWx1ZXMgb24gZGVtYW5kLlxuICAgICAqIElmIHRoaXMgcHJvcGVydHkgaXMgcHJvdmlkZWQsIHRoZSB1bmlxdWUgdmFsdWVzIGl0IGdlbmVyYXRlcyB3aWxsIGJlIHVzZWQgYnkgdGhlIEV4Y2VsIFN0eWxlIEZpbHRlcmluZyAgKi9cbiAgICB1bmlxdWVDb2x1bW5WYWx1ZXNTdHJhdGVneTogKGNvbHVtbjogQ29sdW1uVHlwZSwgdHJlZTogRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBkb25lOiAodmFsdWVzOiBhbnlbXSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgICAvKiogUHJvcGVydHksIHRoYXQgZ2V0cyB0aGUgaGVhZGVyIGNlbGwgaW5uZXIgd2lkdGggZm9yIGF1dG8tc2l6aW5nLiAqL1xuICAgIGdldEhlYWRlckNlbGxXaWR0aDogKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiBJU2l6ZUluZm87XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBjaGFuZ2UgZGV0ZWN0aW9uIGZ1bmN0aW9uYWxpdHkuXG4gICAgICogQSBjaGFuZ2UtZGV0ZWN0aW9uIHRyZWUgY29sbGVjdHMgYWxsIHZpZXdzIHRoYXQgYXJlIHRvIGJlIGNoZWNrZWQgZm9yIGNoYW5nZXMuXG4gICAgICogVGhlIHByb3BlcnR5IGNhbm5vdCBiZSBjaGFuZ2VkIChyZWFkb25seSkgKi9cbiAgICByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGRvY3VtZW50OiBEb2N1bWVudDtcbiAgICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIGZvciBleHBhbmRlZCByb3cgaW5kaWNhdG9ycy5cbiAgICAgKiBJdCBpcyBvZiB0eXBlIFRlbXBsYXRlUmVmLCB3aGljaCByZXByZXNlbnRzIGFuIGVtYmVkZGVkIHRlbXBsYXRlLCB1c2VkIHRvIGluc3RhbmNpYXRlIGVtYmVkZGVkIHZpZXdzXG4gICAgICovXG4gICAgcm93RXhwYW5kZWRJbmRpY2F0b3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8SWd4R3JpZFJvd1RlbXBsYXRlQ29udGV4dD47XG4gICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIGZvciBjb2xsYXBzZWQgcm93IGluZGljYXRvcnMuXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIHJvd0NvbGxhcHNlZEluZGljYXRvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hHcmlkUm93VGVtcGxhdGVDb250ZXh0PjtcbiAgICAvKipcbiAgICAgKiBUaGUgdGVtcGxhdGUgZm9yIGhlYWRlciBpY29uXG4gICAgICogSXQgaXMgb2YgdHlwZSBUZW1wbGF0ZVJlZiwgd2hpY2ggcmVwcmVzZW50cyBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSwgdXNlZCB0byBpbnN0YW5jaWF0ZSBlbWJlZGRlZCB2aWV3c1xuICAgICAqL1xuICAgIGV4Y2VsU3R5bGVIZWFkZXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPElneEdyaWRIZWFkZXJUZW1wbGF0ZUNvbnRleHQ+O1xuXG4gICAgc2VsZWN0Um93T25DbGljazogYm9vbGVhbjtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgc2VsZWN0aW9uIG1vZGUgZm9yIGNlbGxzOiAnbm9uZScsJ3NpbmdsZScsICdtdWx0aXBsZScsICdtdWx0aXBsZUNhc2NhZGUnICovXG4gICAgY2VsbFNlbGVjdGlvbjogR3JpZFNlbGVjdGlvbk1vZGU7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIHNlbGVjdGlvbiBtb2RlIGZvciByb3dzOiAnbm9uZScsJ3NpbmdsZScsICdtdWx0aXBsZScsICdtdWx0aXBsZUNhc2NhZGUnICovXG4gICAgcm93U2VsZWN0aW9uOiBHcmlkU2VsZWN0aW9uTW9kZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgc2VsZWN0aW9uIG1vZGUgZm9yIGNvbHVtbnM6ICdub25lJywnc2luZ2xlJywgJ211bHRpcGxlJywgJ211bHRpcGxlQ2FzY2FkZScgKi9cbiAgICBjb2x1bW5TZWxlY3Rpb246IEdyaWRTZWxlY3Rpb25Nb2RlO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBjYWxjdWxhdGlvbiBtb2RlIGZvciBzdW1tYXJpZXM6ICdyb290TGV2ZWxPbmx5JywgJ2NoaWxkTGV2ZWxzT25seScsICdyb290QW5kQ2hpbGRMZXZlbHMnICovXG4gICAgc3VtbWFyeUNhbGN1bGF0aW9uTW9kZTogR3JpZFN1bW1hcnlDYWxjdWxhdGlvbk1vZGU7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIHBvc2l0aW9uIG9mIHN1bW1hcmllczogJ3RvcCcsICdib3R0b20nICovXG4gICAgc3VtbWFyeVBvc2l0aW9uOiBHcmlkU3VtbWFyeVBvc2l0aW9uO1xuXG4gICAgLy8gWFhYOiBXb3JrIGFyb3VuZCB0aWxsIHdlIGZpeGVkIHRoZSBpbmplY3Rpb24gdG9rZW5zXG4gICAgbGFzdENoaWxkR3JpZD86IEdyaWRUeXBlO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHRvb2xiYXJPdXRsZXQ/OiBWaWV3Q29udGFpbmVyUmVmO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHBhZ2luYXRvck91dGxldD86IFZpZXdDb250YWluZXJSZWY7XG4gICAgZmxhdERhdGE/OiBhbnlbXSB8IG51bGw7XG4gICAgY2hpbGRSb3c/OiBhbnk7XG4gICAgZXhwYW5zaW9uRGVwdGg/OiBudW1iZXI7XG4gICAgY2hpbGREYXRhS2V5PzogYW55O1xuICAgIGZvcmVpZ25LZXk/OiBhbnk7XG4gICAgY2FzY2FkZU9uRGVsZXRlPzogYm9vbGVhbjtcbiAgICBsb2FkQ2hpbGRyZW5PbkRlbWFuZD86IChwYXJlbnRJRDogYW55LCBkb25lOiAoY2hpbGRyZW46IGFueVtdKSA9PiB2b2lkKSA9PiB2b2lkO1xuICAgIGhhc0NoaWxkcmVuS2V5PzogYW55O1xuICAgIGxvYWRpbmdSb3dzPzogU2V0PGFueT47XG4gICAgcGFyZW50PzogR3JpZFR5cGU7XG4gICAgaGlnaGxpZ2h0ZWRSb3dJRD86IGFueTtcbiAgICB1cGRhdGVPblJlbmRlcj86IGJvb2xlYW47XG4gICAgY2hpbGRMYXlvdXRLZXlzPzogYW55W107XG4gICAgY2hpbGRMYXlvdXRMaXN0PzogUXVlcnlMaXN0PGFueT47XG4gICAgcm9vdEdyaWQ/OiBHcmlkVHlwZTtcbiAgICBwcm9jZXNzZWRSb290UmVjb3Jkcz86IElUcmVlR3JpZFJlY29yZFtdO1xuICAgIHJvb3RSZWNvcmRzPzogSVRyZWVHcmlkUmVjb3JkW107XG4gICAgcmVjb3Jkcz86IE1hcDxhbnksIElUcmVlR3JpZFJlY29yZD47XG4gICAgcHJvY2Vzc2VkRXhwYW5kZWRGbGF0RGF0YT86IGFueVtdIHwgbnVsbDtcbiAgICBwcm9jZXNzZWRSZWNvcmRzPzogTWFwPGFueSwgSVRyZWVHcmlkUmVjb3JkPjtcbiAgICB0cmVlR3JvdXBBcmVhPzogYW55O1xuXG4gICAgYWN0aXZlTm9kZUNoYW5nZTogRXZlbnRFbWl0dGVyPElBY3RpdmVOb2RlQ2hhbmdlRXZlbnRBcmdzPjtcbiAgICBncmlkS2V5ZG93bjogRXZlbnRFbWl0dGVyPElHcmlkS2V5ZG93bkV2ZW50QXJncz47XG4gICAgY2VsbENsaWNrOiBFdmVudEVtaXR0ZXI8SUdyaWRDZWxsRXZlbnRBcmdzPjtcbiAgICByb3dDbGljazogRXZlbnRFbWl0dGVyPElHcmlkUm93RXZlbnRBcmdzPjtcbiAgICBkb3VibGVDbGljazogRXZlbnRFbWl0dGVyPElHcmlkQ2VsbEV2ZW50QXJncz47XG4gICAgY29udGV4dE1lbnU6IEV2ZW50RW1pdHRlcjxJR3JpZENlbGxFdmVudEFyZ3M+O1xuICAgIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8SUdyaWRDZWxsRXZlbnRBcmdzPjtcbiAgICByYW5nZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8R3JpZFNlbGVjdGlvblJhbmdlPjtcbiAgICByb3dTZWxlY3Rpb25DaGFuZ2luZzogRXZlbnRFbWl0dGVyPElSb3dTZWxlY3Rpb25FdmVudEFyZ3M+O1xuICAgIGxvY2FsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuICAgIGZpbHRlcmluZzogRXZlbnRFbWl0dGVyPElGaWx0ZXJpbmdFdmVudEFyZ3M+O1xuICAgIGZpbHRlcmluZ0RvbmU6IEV2ZW50RW1pdHRlcjxJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlPjtcbiAgICBjb2x1bW5QaW5uZWQ6IEV2ZW50RW1pdHRlcjxJUGluQ29sdW1uRXZlbnRBcmdzPjtcbiAgICBjb2x1bW5SZXNpemVkOiBFdmVudEVtaXR0ZXI8SUNvbHVtblJlc2l6ZUV2ZW50QXJncz47XG4gICAgY29sdW1uTW92aW5nRW5kOiBFdmVudEVtaXR0ZXI8SUNvbHVtbk1vdmluZ0VuZEV2ZW50QXJncz47XG4gICAgY29sdW1uU2VsZWN0aW9uQ2hhbmdpbmc6IEV2ZW50RW1pdHRlcjxJQ29sdW1uU2VsZWN0aW9uRXZlbnRBcmdzPjtcbiAgICBjb2x1bW5Nb3Zpbmc6IEV2ZW50RW1pdHRlcjxJQ29sdW1uTW92aW5nRXZlbnRBcmdzPjtcbiAgICBjb2x1bW5Nb3ZpbmdTdGFydDogRXZlbnRFbWl0dGVyPElDb2x1bW5Nb3ZpbmdTdGFydEV2ZW50QXJncz47XG4gICAgY29sdW1uUGluOiBFdmVudEVtaXR0ZXI8SVBpbkNvbHVtbkNhbmNlbGxhYmxlRXZlbnRBcmdzPjtcbiAgICBjb2x1bW5WaXNpYmlsaXR5Q2hhbmdpbmc6IEV2ZW50RW1pdHRlcjxJQ29sdW1uVmlzaWJpbGl0eUNoYW5naW5nRXZlbnRBcmdzPjtcbiAgICBjb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZDogRXZlbnRFbWl0dGVyPElDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZEV2ZW50QXJncz47XG4gICAgYmF0Y2hFZGl0aW5nQ2hhbmdlPzogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuICAgIGRlbnNpdHlDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8SURlbnNpdHlDaGFuZ2VkRXZlbnRBcmdzPjtcbiAgICByb3dBZGQ6IEV2ZW50RW1pdHRlcjxJUm93RGF0YUNhbmNlbGFibGVFdmVudEFyZ3M+O1xuICAgIHJvd0FkZGVkOiBFdmVudEVtaXR0ZXI8SVJvd0RhdGFFdmVudEFyZ3M+O1xuICAgIHJvd0FkZGVkTm90aWZpZXI6IFN1YmplY3Q8SVJvd0RhdGFFdmVudEFyZ3M+O1xuICAgIHJvd0RlbGV0ZTogRXZlbnRFbWl0dGVyPElSb3dEYXRhQ2FuY2VsYWJsZUV2ZW50QXJncz47XG4gICAgcm93RGVsZXRlZDogRXZlbnRFbWl0dGVyPElSb3dEYXRhRXZlbnRBcmdzPjtcbiAgICByb3dEZWxldGVkTm90aWZpZXI6IFN1YmplY3Q8SVJvd0RhdGFFdmVudEFyZ3M+O1xuICAgIGNlbGxFZGl0RW50ZXI6IEV2ZW50RW1pdHRlcjxJR3JpZEVkaXRFdmVudEFyZ3M+O1xuICAgIGNlbGxFZGl0OiBFdmVudEVtaXR0ZXI8SUdyaWRFZGl0RXZlbnRBcmdzPjtcbiAgICBjZWxsRWRpdERvbmU6IEV2ZW50RW1pdHRlcjxJR3JpZEVkaXREb25lRXZlbnRBcmdzPjtcbiAgICBjZWxsRWRpdEV4aXQ6IEV2ZW50RW1pdHRlcjxJR3JpZEVkaXREb25lRXZlbnRBcmdzPjtcbiAgICByb3dFZGl0RW50ZXI6IEV2ZW50RW1pdHRlcjxJR3JpZEVkaXRFdmVudEFyZ3M+O1xuICAgIHJvd0VkaXQ6IEV2ZW50RW1pdHRlcjxJR3JpZEVkaXRFdmVudEFyZ3M+O1xuICAgIHJvd0VkaXREb25lOiBFdmVudEVtaXR0ZXI8SUdyaWRFZGl0RG9uZUV2ZW50QXJncz47XG4gICAgcm93RWRpdEV4aXQ6IEV2ZW50RW1pdHRlcjxJR3JpZEVkaXREb25lRXZlbnRBcmdzPjtcbiAgICByb3dEcmFnU3RhcnQ6IEV2ZW50RW1pdHRlcjxJUm93RHJhZ1N0YXJ0RXZlbnRBcmdzPjtcbiAgICByb3dEcmFnRW5kOiBFdmVudEVtaXR0ZXI8SVJvd0RyYWdFbmRFdmVudEFyZ3M+O1xuICAgIHJvd1RvZ2dsZTogRXZlbnRFbWl0dGVyPElSb3dUb2dnbGVFdmVudEFyZ3M+O1xuICAgIGZvcm1Hcm91cENyZWF0ZWQ6IEV2ZW50RW1pdHRlcjxJR3JpZEZvcm1Hcm91cENyZWF0ZWRFdmVudEFyZ3M+O1xuICAgIHZhbGlkYXRpb25TdGF0dXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJR3JpZFZhbGlkYXRpb25TdGF0dXNFdmVudEFyZ3M+O1xuXG4gICAgdG9vbGJhckV4cG9ydGluZzogRXZlbnRFbWl0dGVyPElHcmlkVG9vbGJhckV4cG9ydEV2ZW50QXJncz47XG4gICAgcmVuZGVyZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHJlc2l6ZU5vdGlmeTogU3ViamVjdDx2b2lkPjtcblxuICAgIHNvcnRTdHJhdGVneTogSUdyaWRTb3J0aW5nU3RyYXRlZ3k7XG4gICAgZ3JvdXBTdHJhdGVneT86IElHcmlkR3JvdXBpbmdTdHJhdGVneTtcbiAgICBmaWx0ZXJpbmdMb2dpYzogRmlsdGVyaW5nTG9naWM7XG4gICAgZmlsdGVyU3RyYXRlZ3k6IElGaWx0ZXJpbmdTdHJhdGVneTtcbiAgICBhbGxvd0FkdmFuY2VkRmlsdGVyaW5nOiBib29sZWFuO1xuICAgIHNvcnRpbmdFeHByZXNzaW9uczogSVNvcnRpbmdFeHByZXNzaW9uW107XG4gICAgc29ydGluZ0V4cHJlc3Npb25zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVNvcnRpbmdFeHByZXNzaW9uW10+O1xuICAgIGZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICBmaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlPjtcbiAgICBhZHZhbmNlZEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICBhZHZhbmNlZEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZUNoYW5nZTogRXZlbnRFbWl0dGVyPElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU+O1xuICAgIHNvcnRpbmdPcHRpb25zOiBJU29ydGluZ09wdGlvbnM7XG5cbiAgICBiYXRjaEVkaXRpbmc6IGJvb2xlYW47XG4gICAgZ3JvdXBpbmdFeHBhbnNpb25TdGF0ZT86IElHcm91cEJ5RXhwYW5kU3RhdGVbXTtcbiAgICBncm91cGluZ0V4cHJlc3Npb25zPzogSUdyb3VwaW5nRXhwcmVzc2lvbltdO1xuICAgIGdyb3VwaW5nRXhwcmVzc2lvbnNDaGFuZ2U/OiBFdmVudEVtaXR0ZXI8SUdyb3VwaW5nRXhwcmVzc2lvbltdPjtcbiAgICBncm91cHNFeHBhbmRlZD86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgZ3JvdXBzUmVjb3Jkcz86IElHcm91cEJ5UmVjb3JkW107XG4gICAgZ3JvdXBpbmdGbGF0UmVzdWx0PzogYW55W107XG4gICAgZ3JvdXBpbmdSZXN1bHQ/OiBhbnlbXTtcbiAgICBncm91cGluZ01ldGFkYXRhPzogYW55W107XG4gICAgc2VsZWN0ZWRDZWxscz86IENlbGxUeXBlW107XG4gICAgc2VsZWN0ZWRSb3dzOiBhbnlbXTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBhY3RpdmVEZXNjZW5kYW50Pzogc3RyaW5nO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGlzUGl2b3Q/OiBib29sZWFuO1xuXG4gICAgdG9nZ2xlR3JvdXA/KGdyb3VwUm93OiBJR3JvdXBCeVJlY29yZCk6IHZvaWQ7XG4gICAgY2xlYXJHcm91cGluZz8oZmllbGQ6IHN0cmluZyk6IHZvaWQ7XG4gICAgZ3JvdXBCeT8oZXhwcmVzc2lvbjogSUdyb3VwaW5nRXhwcmVzc2lvbiB8IEFycmF5PElHcm91cGluZ0V4cHJlc3Npb24+KTogdm9pZDtcbiAgICByZXNvbHZlT3V0bGV0PygpOiBJZ3hPdmVybGF5T3V0bGV0RGlyZWN0aXZlO1xuICAgIHVwZGF0ZUNvbHVtbnMoY29sdW1uczogQ29sdW1uVHlwZVtdKTogdm9pZDtcbiAgICBnZXRTZWxlY3RlZFJhbmdlcygpOiBHcmlkU2VsZWN0aW9uUmFuZ2VbXTtcbiAgICBkZXNlbGVjdEFsbENvbHVtbnMoKTogdm9pZDtcbiAgICBkZXNlbGVjdENvbHVtbnMoY29sdW1uczogc3RyaW5nW10gfCBDb2x1bW5UeXBlW10pOiB2b2lkO1xuICAgIHNlbGVjdENvbHVtbnMoY29sdW1uczogc3RyaW5nW10gfCBDb2x1bW5UeXBlW10pOiB2b2lkO1xuICAgIHNlbGVjdGVkQ29sdW1ucygpOiBDb2x1bW5UeXBlW107XG4gICAgcmVmcmVzaFNlYXJjaCgpOiB2b2lkO1xuICAgIGdldERlZmF1bHRFeHBhbmRTdGF0ZShyZWNvcmQ6IGFueSk6IGJvb2xlYW47XG4gICAgdHJhY2tDb2x1bW5DaGFuZ2VzKGluZGV4OiBudW1iZXIsIGNvbHVtbjogYW55KTogYW55O1xuICAgIGdldFBvc3NpYmxlQ29sdW1uV2lkdGgoKTogc3RyaW5nO1xuICAgIHJlc2V0SG9yaXpvbnRhbFZpcnR1YWxpemF0aW9uKCk6IHZvaWQ7XG4gICAgaGFzVmVydGljYWxTY3JvbGwoKTogYm9vbGVhbjtcbiAgICBnZXRWaXNpYmxlQ29udGVudEhlaWdodCgpOiBudW1iZXI7XG4gICAgZ2V0RHJhZ0dob3N0Q3VzdG9tVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XG4gICAgb3BlblJvd092ZXJsYXkoaWQ6IGFueSk6IHZvaWQ7XG4gICAgb3BlbkFkdmFuY2VkRmlsdGVyaW5nRGlhbG9nKG92ZXJsYXlTZXR0aW5ncz86IE92ZXJsYXlTZXR0aW5ncyk6IHZvaWQ7XG4gICAgc2hvd1NuYWNrYmFyRm9yKGluZGV4OiBudW1iZXIpOiB2b2lkO1xuICAgIGdldENvbHVtbkJ5TmFtZShuYW1lOiBzdHJpbmcpOiBhbnk7XG4gICAgZ2V0Q29sdW1uQnlWaXNpYmxlSW5kZXgoaW5kZXg6IG51bWJlcik6IENvbHVtblR5cGU7XG4gICAgZ2V0SGVhZGVyR3JvdXBXaWR0aChjb2x1bW46IENvbHVtblR5cGUpOiBzdHJpbmc7XG4gICAgZ2V0Um93QnlLZXk/KGtleTogYW55KTogUm93VHlwZTtcbiAgICBnZXRSb3dCeUluZGV4PyhpbmRleDogbnVtYmVyKTogUm93VHlwZTtcbiAgICBzZXRGaWx0ZXJlZERhdGEoZGF0YTogYW55LCBwaW5uZWQ6IGJvb2xlYW4pOiB2b2lkO1xuICAgIHNldEZpbHRlcmVkU29ydGVkRGF0YShkYXRhOiBhbnksIHBpbm5lZDogYm9vbGVhbik6IHZvaWQ7XG4gICAgc29ydChleHByZXNzaW9uOiBJU29ydGluZ0V4cHJlc3Npb24gfCBJU29ydGluZ0V4cHJlc3Npb25bXSk6IHZvaWQ7XG4gICAgY2xlYXJTb3J0KG5hbWU/OiBzdHJpbmcpOiB2b2lkO1xuICAgIHBpblJvdyhpZDogYW55LCBpbmRleD86IG51bWJlciwgcm93PzogUm93VHlwZSk6IGJvb2xlYW47XG4gICAgdW5waW5Sb3coaWQ6IGFueSwgcm93PzogUm93VHlwZSk6IGJvb2xlYW47XG4gICAgZ2V0VW5waW5uZWRJbmRleEJ5SWQoaWQ6IGFueSk6IG51bWJlcjtcbiAgICBnZXRFbXB0eVJlY29yZE9iamVjdEZvcihpblJvdzogUm93VHlwZSk6IGFueTtcbiAgICBpc1N1bW1hcnlSb3cocmVjOiBhbnkpOiBib29sZWFuO1xuICAgIGlzUmVjb3JkUGlubmVkKHJlYzogYW55KTogYm9vbGVhbjtcbiAgICBnZXRJbml0aWFsUGlubmVkSW5kZXgocmVjOiBhbnkpOiBudW1iZXI7XG4gICAgaXNSZWNvcmRQaW5uZWRCeVZpZXdJbmRleChyb3dJbmRleDogbnVtYmVyKTogYm9vbGVhbjtcbiAgICBpc0NvbHVtbkdyb3VwZWQoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuO1xuICAgIGlzRGV0YWlsUmVjb3JkKHJlYzogYW55KTogYm9vbGVhbjtcbiAgICBpc0dyb3VwQnlSZWNvcmQocmVjOiBhbnkpOiBib29sZWFuO1xuICAgIGlzR2hvc3RSZWNvcmQocmVjOiBhbnkpOiBib29sZWFuO1xuICAgIGlzVHJlZVJvdz8ocmVjOiBhbnkpOiBib29sZWFuO1xuICAgIGlzQ2hpbGRHcmlkUmVjb3JkPyhyZWM6IGFueSk6IGJvb2xlYW47XG4gICAgZ2V0Q2hpbGRHcmlkcz8oaW5EZXB0aD86IGJvb2xlYW4pOiBhbnlbXTtcbiAgICBpc0hpZXJhcmNoaWNhbFJlY29yZD8ocmVjb3JkOiBhbnkpOiBib29sZWFuO1xuICAgIGNvbHVtblRvVmlzaWJsZUluZGV4KGtleTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyO1xuICAgIG1vdmVDb2x1bW4oY29sdW1uOiBDb2x1bW5UeXBlLCB0YXJnZXQ6IENvbHVtblR5cGUsIHBvczogRHJvcFBvc2l0aW9uKTogdm9pZDtcbiAgICBuYXZpZ2F0ZVRvKHJvd0luZGV4OiBudW1iZXIsIHZpc2libGVDb2x1bW5JbmRleDogbnVtYmVyLCBjYWxsYmFjaz86IChlOiBhbnkpID0+IGFueSk6IHZvaWQ7XG4gICAgZ2V0UHJldmlvdXNDZWxsKGN1cnJSb3dJbmRleDogbnVtYmVyLCBjdXJWaXNpYmxlQ29sSW5kZXg6IG51bWJlciwgY2FsbGJhY2s6IChjOiBDb2x1bW5UeXBlKSA9PiBib29sZWFuKTogSUNlbGxQb3NpdGlvbjtcbiAgICBnZXROZXh0Q2VsbChjdXJyUm93SW5kZXg6IG51bWJlciwgY3VyVmlzaWJsZUNvbEluZGV4OiBudW1iZXIsIGNhbGxiYWNrOiAoYzogQ29sdW1uVHlwZSkgPT4gYm9vbGVhbik6IElDZWxsUG9zaXRpb247XG4gICAgY2xlYXJDZWxsU2VsZWN0aW9uKCk6IHZvaWQ7XG4gICAgc2VsZWN0UmFuZ2UocmFuZ2U6IEdyaWRTZWxlY3Rpb25SYW5nZSB8IEdyaWRTZWxlY3Rpb25SYW5nZVtdKTogdm9pZDtcbiAgICBzZWxlY3RSb3dzKHJvd0lEczogYW55W10sIGNsZWFyQ3VycmVudFNlbGVjdGlvbj86IGJvb2xlYW4pOiB2b2lkO1xuICAgIGRlc2VsZWN0Um93cyhyb3dJRHM6IGFueVtdKTogdm9pZDtcbiAgICBzZWxlY3RBbGxSb3dzKG9ubHlGaWx0ZXJEYXRhPzogYm9vbGVhbik6IHZvaWQ7XG4gICAgZGVzZWxlY3RBbGxSb3dzKG9ubHlGaWx0ZXJEYXRhPzogYm9vbGVhbik6IHZvaWQ7XG4gICAgc2V0VXBQYWdpbmF0b3IoKTogdm9pZDtcbiAgICBjcmVhdGVGaWx0ZXJEcm9wZG93bihjb2x1bW46IENvbHVtblR5cGUsIG9wdGlvbnM6IE92ZXJsYXlTZXR0aW5ncyk6IGFueTtcbiAgICB1cGRhdGVDZWxsKHZhbHVlOiBhbnksIHJvd1NlbGVjdG9yOiBhbnksIGNvbHVtbjogc3RyaW5nKTogdm9pZDtcbiAgICAvLyBUeXBlIHRvIFJvd1R5cGVcbiAgICBjcmVhdGVSb3c/KGluZGV4OiBudW1iZXIsIGRhdGE/OiBhbnkpOiBSb3dUeXBlO1xuICAgIGRlbGV0ZVJvdyhpZDogYW55KTogYW55O1xuICAgIGRlbGV0ZVJvd0J5SWQoaWQ6IGFueSk6IGFueTtcbiAgICB1cGRhdGVSb3codmFsdWU6IGFueSwgcm93U2VsZWN0b3I6IGFueSk6IHZvaWQ7XG4gICAgY29sbGFwc2VSb3coaWQ6IGFueSk6IHZvaWQ7XG4gICAgbm90aWZ5Q2hhbmdlcyhyZXBhaW50PzogYm9vbGVhbik6IHZvaWQ7XG4gICAgcmVzZXRDb2x1bW5Db2xsZWN0aW9ucygpOiB2b2lkO1xuICAgIHRyaWdnZXJQaXBlcygpOiB2b2lkO1xuICAgIHJlcG9zaXRpb25Sb3dFZGl0aW5nT3ZlcmxheShyb3c6IFJvd1R5cGUpOiB2b2lkO1xuICAgIGNsb3NlUm93RWRpdGluZ092ZXJsYXkoKTogdm9pZDtcbiAgICByZWZsb3coKTogdm9pZDtcblxuICAgIC8vIFRPRE86IE1heWJlIG1vdmUgdGhlbSB0byBGbGF0R3JpZFR5cGUsIGJ1dCB0aGVuIHdpbGwgd2UgbmVlZCBhbm90aGVyIHRva2VuP1xuICAgIGlzRXhwYW5kZWRHcm91cChncm91cDogSUdyb3VwQnlSZWNvcmQpOiBib29sZWFuO1xuICAgIGNyZWF0ZUNvbHVtbnNMaXN0Pyhjb2xzOiBDb2x1bW5UeXBlW10pOiB2b2lkO1xuICAgIHRvZ2dsZUFsbEdyb3VwUm93cz8oKTogdm9pZDtcbiAgICB0b2dnbGVBbGw/KCk6IHZvaWQ7XG4gICAgZ2VuZXJhdGVSb3dQYXRoPyhyb3dJZDogYW55KTogYW55W107XG4gICAgcHJldmVudEhlYWRlclNjcm9sbD8oYXJnczogYW55KTogdm9pZDtcbn1cblxuLyoqXG4gKiBBbiBpbnRlcmZhY2UgZGVzY3JpYmluZyBhIEZsYXQgR3JpZCB0eXBlLiBJdCBpcyBlc3NlbnRpYWxseSB0aGUgYmx1ZXByaW50IHRvIGEgZ3JpZCBraW5kXG4gKiBDb250YWlucyBkZWZpbml0aW9ucyBvZiBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLCByZWxldmFudCB0byBhIGdyaWQga2luZFxuICogRXh0ZW5kcyBmcm9tIGBHcmlkVHlwZWBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbGF0R3JpZFR5cGUgZXh0ZW5kcyBHcmlkVHlwZSB7XG4gICAgZ3JvdXBpbmdFeHBhbnNpb25TdGF0ZTogSUdyb3VwQnlFeHBhbmRTdGF0ZVtdO1xuICAgIGdyb3VwaW5nRXhwcmVzc2lvbnM6IElHcm91cGluZ0V4cHJlc3Npb25bXTtcbiAgICBncm91cGluZ0V4cHJlc3Npb25zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SUdyb3VwaW5nRXhwcmVzc2lvbltdPjtcblxuICAgIHRvZ2dsZUdyb3VwKGdyb3VwUm93OiBJR3JvdXBCeVJlY29yZCk6IHZvaWQ7XG4gICAgY2xlYXJHcm91cGluZyhmaWVsZDogc3RyaW5nKTogdm9pZDtcbiAgICBncm91cEJ5KGV4cHJlc3Npb246IElHcm91cGluZ0V4cHJlc3Npb24gfCBBcnJheTxJR3JvdXBpbmdFeHByZXNzaW9uPik6IHZvaWQ7XG59XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIGRlc2NyaWJpbmcgYSBUcmVlIEdyaWQgdHlwZS4gSXQgaXMgZXNzZW50aWFsbHkgdGhlIGJsdWVwcmludCB0byBhIGdyaWQga2luZFxuICogQ29udGFpbnMgZGVmaW5pdGlvbnMgb2YgcHJvcGVydGllcyBhbmQgbWV0aG9kcywgcmVsZXZhbnQgdG8gYSBncmlkIGtpbmRcbiAqIEV4dGVuZHMgZnJvbSBgR3JpZFR5cGVgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZUdyaWRUeXBlIGV4dGVuZHMgR3JpZFR5cGUge1xuICAgIHJlY29yZHM6IE1hcDxhbnksIElUcmVlR3JpZFJlY29yZD47XG4gICAgaXNUcmVlUm93KHJlYzogYW55KTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBbiBpbnRlcmZhY2UgZGVzY3JpYmluZyBhIEhpZXJhcmNoaWNhbCBHcmlkIHR5cGUuIEl0IGlzIGVzc2VudGlhbGx5IHRoZSBibHVlcHJpbnQgdG8gYSBncmlkIGtpbmRcbiAqIENvbnRhaW5zIGRlZmluaXRpb25zIG9mIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMsIHJlbGV2YW50IHRvIGEgZ3JpZCBraW5kXG4gKiBFeHRlbmRzIGZyb20gYEdyaWRUeXBlYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZXJhcmNoaWNhbEdyaWRUeXBlIGV4dGVuZHMgR3JpZFR5cGUge1xuICAgIGNoaWxkTGF5b3V0S2V5czogYW55W107XG59XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIGRlc2NyaWJpbmcgYSBQaXZvdCBHcmlkIHR5cGUuIEl0IGlzIGVzc2VudGlhbGx5IHRoZSBibHVlcHJpbnQgdG8gYSBncmlkIGtpbmRcbiAqIENvbnRhaW5zIGRlZmluaXRpb25zIG9mIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMsIHJlbGV2YW50IHRvIGEgZ3JpZCBraW5kXG4gKiBFeHRlbmRzIGZyb20gYEdyaWRUeXBlYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpdm90R3JpZFR5cGUgZXh0ZW5kcyBHcmlkVHlwZSB7XG4gICAgLyoqXG4gICAgICogVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBwaXZvdCBncmlkLlxuICAgICAqIGl0IGluY2x1ZGVzIGRpbWVudGlvbiBzdHJhdGVneSBmb3Igcm93cyBhbmQgY29sdW1ucywgZmlsdGVycyBhbmQgZGF0YSBrZXlzXG4gICAgICovXG4gICAgcGl2b3RDb25maWd1cmF0aW9uOiBJUGl2b3RDb25maWd1cmF0aW9uO1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIGFsbCBkaW1lbnNpb25zIChyb3dzIGFuZCBjb2x1bW5zKSBpbiB0aGUgcGl2b3QgZ3JpZC5cbiAgICAgKiBpdCBpbmNsdWRlcyBoaWVyYXJjaGljYWwgbGV2ZWwsIGZpbHRlcnMgYW5kIHNvcnRpbmcsIGRpbWVudGlvbmFsIGxldmVsLCBldGMuXG4gICAgICovXG4gICAgYWxsRGltZW5zaW9uczogSVBpdm90RGltZW5zaW9uW10sXG4gICAgLyoqIFNwZWNpZmllcyB3aGV0aGVyIHRvIHNob3cgdGhlIHBpdm90IGNvbmZpZ3VyYXRpb24gVUkgaW4gdGhlIGdyaWQuICovXG4gICAgc2hvd1Bpdm90Q29uZmlndXJhdGlvblVJOiBib29sZWFuO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGNvbHVtbkRpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHJvd0RpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdO1xuICAgIHJvd0RpbWVuc2lvblJlc2l6aW5nOiBib29sZWFuO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHZhbHVlczogSVBpdm90VmFsdWVbXTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBmaWx0ZXJEaW1lbnNpb25zOiBJUGl2b3REaW1lbnNpb25bXTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBkaW1lbnNpb25EYXRhQ29sdW1uczogQ29sdW1uVHlwZVtdO1xuICAgIHBpdm90Um93V2lkdGhzOiBudW1iZXI7XG4gICAgLyoqIFJlcHJlc2VudHMgYSBtZXRob2QgZGVjbGFyYXRpb24gZm9yIHNldGluZyB1cCB0aGUgY29sdW1ucyBmb3IgdGhlIHBpdm90IGdyaWQgYmFzZWQgb24gdGhlIHBpdm90IGNvbmZpZ3VyYXRpb24gKi9cbiAgICBzZXR1cENvbHVtbnMoKTogdm9pZDtcbiAgICAvKiogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiB0aGF0IGFsbG93cyB0b2dnbGUgb2YgZXhwYW5zaW9uIHN0YXRlIG9mIGEgcm93ICh0YWtlbiBhcyBhIHBhcmFtZXRlcikgaW4gdGhlIHBpdm90IGdyaWQgKi9cbiAgICB0b2dnbGVSb3cocm93SUQ6IGFueSk6IHZvaWQ7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiBmb3IgcmVzb2x2aW5nIHRoZSBkYXRhIHR5cGUgZm9yIGEgc3BlY2lmaWMgZmllbGQgKGNvbHVtbikuXG4gICAgICogSXQgdGFrZXMgdGhlIGZpZWxkIGFzIGEgcGFyYW1ldGVyIGFuZCByZXR1cm5zIGl0J3MgdHlwZVxuICAgICAqL1xuICAgIHJlc29sdmVEYXRhVHlwZXMoZmllbGQ6IGFueSk6IEdyaWRDb2x1bW5EYXRhVHlwZTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGEgbWV0aG9kIGRlY2xhcmF0aW9uIGZvciBtb3ZpbmcgZGltZW5zaW9uIGZyb20gaXRzIGN1cnJlbnRseSBjb2xsZWN0aW9uIHRvIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IGNvbGxlY3Rpb25cbiAgICAgKiBieSB0eXBlIChSb3csIENvbHVtbiBvciBGaWx0ZXIpIGF0IHNwZWNpZmllZCBpbmRleCBvciBhdCB0aGUgY29sbGVjdGlvbidzIGVuZFxuICAgICAqL1xuICAgIG1vdmVEaW1lbnNpb24oZGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24sIHRhcmdldENvbGxlY3Rpb25UeXBlOiBQaXZvdERpbWVuc2lvblR5cGUsIGluZGV4PzogbnVtYmVyKTtcbiAgICBnZXREaW1lbnNpb25zQnlUeXBlKGRpbWVuc2lvbjogUGl2b3REaW1lbnNpb25UeXBlKTtcbiAgICAvKiogVG9nZ2xlcyB0aGUgZGltZW5zaW9uJ3MgZW5hYmxlZCBzdGF0ZSBvbiBvciBvZmYuIFRoZSBkaW1lbnNpb24gcmVtYWlucyBpbiBpdHMgY3VycmVudCBjb2xsZWN0aW9uICovXG4gICAgdG9nZ2xlRGltZW5zaW9uKGRpbWVuc2lvbjogSVBpdm90RGltZW5zaW9uKTtcbiAgICAvKiogU29ydCB0aGUgZGltZW5zaW9uIGFuZCBpdHMgY2hpbGRyZW4gaW4gdGhlIHByb3ZpZGVkIGRpcmVjdGlvbiAoYXNjZW5kaW5nLCBkZXNjZW5kaW5nIG9yIG5vbmUpLiAqL1xuICAgIHNvcnREaW1lbnNpb24oZGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24sIHNvcnREaXJlY3Rpb246IFNvcnRpbmdEaXJlY3Rpb24pO1xuICAgIC8qKiBUb2dnbGVzIHRoZSB2YWx1ZSdzIGVuYWJsZWQgc3RhdGUgb24gb3Igb2ZmLiBUaGUgdmFsdWUgcmVtYWlucyBpbiBpdHMgY3VycmVudCBjb2xsZWN0aW9uLiAqL1xuICAgIHRvZ2dsZVZhbHVlKHZhbHVlOiBJUGl2b3RWYWx1ZSk7XG4gICAgLyoqIE1vdmUgdmFsdWUgZnJvbSBpdHMgY3VycmVudGx5IGF0IHNwZWNpZmllZCBpbmRleCBvciBhdCB0aGUgZW5kLlxuICAgICAqIElmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IHNldCwgaXQgd2lsbCBhZGQgaXQgdG8gdGhlIGVuZCBvZiB0aGUgY29sbGVjdGlvbi4gKi9cbiAgICBtb3ZlVmFsdWUodmFsdWU6IElQaXZvdFZhbHVlLCBpbmRleD86IG51bWJlcik7XG4gICAgcm93RGltZW5zaW9uV2lkdGhUb1BpeGVscyhkaW06IElQaXZvdERpbWVuc2lvbik6IG51bWJlcjtcbiAgICAvKiogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgZGltZW5zaW9ucyBpbiB0aGUgcGl2b3QgZ3JpZCBjaGFuZ2UuICovXG4gICAgZGltZW5zaW9uc0NoYW5nZTogRXZlbnRFbWl0dGVyPElEaW1lbnNpb25zQ2hhbmdlPjtcbiAgICAvKiogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgdmFsdWVzIGluIHRoZSBwaXZvdCBncmlkIGNoYW5nZS4gKi9cbiAgICB2YWx1ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJVmFsdWVzQ2hhbmdlPjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwaXZvdEtleXM6IElQaXZvdEtleXM7XG4gICAgaGFzTXVsdGlwbGVWYWx1ZXM6IGJvb2xlYW47XG4gICAgZXhjZWxTdHlsZUZpbHRlck1heEhlaWdodDogc3RyaW5nO1xuICAgIGV4Y2VsU3R5bGVGaWx0ZXJNaW5IZWlnaHQ6IHN0cmluZztcbiAgICB2YWx1ZUNoaXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmlkU1ZHSWNvbiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpemVJbmZvIHtcbiAgICB3aWR0aDogbnVtYmVyLFxuICAgIHBhZGRpbmc6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyaWRNYXN0ZXJEZXRhaWxDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IGFueTtcbiAgICBpbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyb3VwQnlSb3dUZW1wbGF0ZUNvbnRleHQge1xuICAgICRpbXBsaWNpdDogSUdyb3VwQnlSZWNvcmQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4R3JpZFRlbXBsYXRlQ29udGV4dCB7XG4gICAgJGltcGxpY2l0OiBHcmlkVHlwZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyaWRSb3dUZW1wbGF0ZUNvbnRleHQge1xuICAgICRpbXBsaWNpdDogUm93VHlwZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyaWRSb3dEcmFnR2hvc3RDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IGFueSwgLy8gdGhpcyBpcyB0aGUgcm93IGRhdGFcbiAgICBkYXRhOiBhbnksIC8vIHRoaXMgaXMgYWxzbyB0aGUgcm93IGRhdGEgZm9yIHNvbWUgcmVhc29uLlxuICAgIGdyaWQ6IEdyaWRUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4R3JpZEVtcHR5VGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyaWRSb3dFZGl0VGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IHVuZGVmaW5lZCxcbiAgICByb3dDaGFuZ2VzQ291bnQ6IG51bWJlcixcbiAgICBlbmRFZGl0OiAoY29tbWl0OiBib29sZWFuLCBldmVudD86IEV2ZW50KSA9PiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4R3JpZFJvd0VkaXRUZXh0VGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyaWRSb3dFZGl0QWN0aW9uc1RlbXBsYXRlQ29udGV4dCB7XG4gICAgJGltcGxpY2l0OiAoY29tbWl0OiBib29sZWFuLCBldmVudD86IEV2ZW50KSA9PiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4R3JpZEhlYWRlclRlbXBsYXRlQ29udGV4dCB7XG4gICAgJGltcGxpY2l0OiBIZWFkZXJUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4Q29sdW1uVGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IENvbHVtblR5cGUsXG4gICAgY29sdW1uOiBDb2x1bW5UeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4Q2VsbFRlbXBsYXRlQ29udGV4dCB7XG4gICAgJGltcGxpY2l0OiBhbnksXG4gICAgYWRkaXRpb25hbFRlbXBsYXRlQ29udGV4dDogYW55LFxuICAgIGZvcm1Db250cm9sPzogRm9ybUNvbnRyb2w8YW55PixcbiAgICBkZWZhdWx0RXJyb3JUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgY2VsbDogQ2VsbFR5cGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZ3hSb3dTZWxlY3RvclRlbXBsYXRlRGV0YWlscyB7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIGBrZXlgICovXG4gICAgcm93SUQ6IGFueTtcbiAgICBrZXk6IGFueTtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICBzZWxlY3Q/OiAoKSA9PiB2b2lkO1xuICAgIGRlc2VsZWN0PzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZ3hSb3dTZWxlY3RvclRlbXBsYXRlQ29udGV4dCB7XG4gICAgJGltcGxpY2l0OiBJZ3hSb3dTZWxlY3RvclRlbXBsYXRlRGV0YWlscztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZ3hHcm91cEJ5Um93U2VsZWN0b3JUZW1wbGF0ZURldGFpbHMge1xuICAgIHNlbGVjdGVkQ291bnQ6IG51bWJlcjtcbiAgICB0b3RhbENvdW50OiBudW1iZXI7XG4gICAgZ3JvdXBSb3c6IElHcm91cEJ5UmVjb3JkO1xufVxuZXhwb3J0IGludGVyZmFjZSBJZ3hHcm91cEJ5Um93U2VsZWN0b3JUZW1wbGF0ZUNvbnRleHQge1xuICAgICRpbXBsaWNpdDogSWd4R3JvdXBCeVJvd1NlbGVjdG9yVGVtcGxhdGVEZXRhaWxzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEhlYWRTZWxlY3RvclRlbXBsYXRlRGV0YWlscyB7XG4gICAgc2VsZWN0ZWRDb3VudDogbnVtYmVyO1xuICAgIHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgICBzZWxlY3RBbGw/OiAoKSA9PiB2b2lkO1xuICAgIGRlc2VsZWN0QWxsPzogKCkgPT4gdm9pZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSWd4SGVhZFNlbGVjdG9yVGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IElneEhlYWRTZWxlY3RvclRlbXBsYXRlRGV0YWlscztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZ3hTdW1tYXJ5VGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IElneFN1bW1hcnlSZXN1bHRbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneEdyaWRQYWdpbmF0b3JUZW1wbGF0ZUNvbnRleHQge1xuICAgICRpbXBsaWNpdDogR3JpZFR5cGU7XG59XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIGRlc2NyaWJpbmcgc2V0dGluZ3MgZm9yIHJvdy9jb2x1bW4gcGlubmluZyBwb3NpdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUGlubmluZ0NvbmZpZyB7XG4gICAgY29sdW1ucz86IENvbHVtblBpbm5pbmdQb3NpdGlvbjtcbiAgICByb3dzPzogUm93UGlubmluZ1Bvc2l0aW9uO1xufVxuXG4vKipcbiAqIEFuIGludGVyZmFjZSBkZXNjcmliaW5nIHNldHRpbmdzIGZvciBjbGlwYm9hcmQgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElDbGlwYm9hcmRPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBjb3B5IGJlaGF2aW9yXG4gICAgICovXG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBJbmNsdWRlIHRoZSBjb2x1bW5zIGhlYWRlcnMgaW4gdGhlIGNsaXBib2FyZCBvdXRwdXQuXG4gICAgICovXG4gICAgY29weUhlYWRlcnM6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQXBwbHkgdGhlIGNvbHVtbnMgZm9ybWF0dGVycyAoaWYgYW55KSBvbiB0aGUgZGF0YSBpbiB0aGUgY2xpcGJvYXJkIG91dHB1dC5cbiAgICAgKi9cbiAgICBjb3B5Rm9ybWF0dGVyczogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgc2VwYXJhdG9yIHVzZWQgZm9yIGZvcm1hdHRpbmcgdGhlIGNvcHkgb3V0cHV0LiBEZWZhdWx0cyB0byBgXFx0YC5cbiAgICAgKi9cbiAgICBzZXBhcmF0b3I6IHN0cmluZztcbn1cbiJdfQ==
@@ -277,6 +277,10 @@ export class IgxRowIslandComponent extends IgxHierarchicalGridBaseDirective {
277
277
  * @hidden
278
278
  */
279
279
  calculateGridHeight() { }
280
+ /**
281
+ * @hidden
282
+ */
283
+ calculateGridWidth() { }
280
284
  updateColumnList() {
281
285
  const nestedColumns = this.children.map((layout) => layout.columnList.toArray());
282
286
  const colsArray = [].concat.apply([], nestedColumns);
@@ -380,4 +384,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
380
384
  type: Input,
381
385
  args: [{ transform: booleanAttribute }]
382
386
  }] } });
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWlzbGFuZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvaGllcmFyY2hpY2FsLWdyaWQvcm93LWlzbGFuZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILGdCQUFnQixFQUNoQix1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBR2YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBRU4sS0FBSyxFQUdMLFNBQVMsRUFLVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBRWQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBMEIsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHbEUsT0FBTyxFQUFZLHFCQUFxQixFQUFtQyxNQUFNLDBCQUEwQixDQUFDO0FBQzVHLE9BQU8sRUFBRSx1QkFBdUIsRUFBaUMsTUFBTSxtQkFBbUIsQ0FBQztB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c0JBRFQsS0FBSztnQkFPQyxRQUFRO3NCQURkLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRTtnQkFPdEcsWUFBWTtzQkFEbEIsZUFBZTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO2dCQVEzRSx3QkFBd0I7c0JBRGpDLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQVFsRCwwQkFBMEI7c0JBRG5DLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQU8vQyxlQUFlO3NCQUR6QixLQUFLO2dCQWFLLGlCQUFpQjtzQkFEM0IsS0FBSztnQkFXSSxZQUFZO3NCQURyQixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7Z0JBT2hGLFlBQVk7c0JBRGxCLE1BQU07Z0JBZ0JBLFdBQVc7c0JBRGpCLE1BQU07Z0JBaUJBLGVBQWU7c0JBRHJCLE1BQU07Z0JBaUNJLGNBQWM7c0JBRHhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgSXRlcmFibGVDaGFuZ2VSZWNvcmQsXG4gICAgSXRlcmFibGVEaWZmZXJzLFxuICAgIExPQ0FMRV9JRCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4SGllcmFyY2hpY2FsR3JpZEFQSVNlcnZpY2UgfSBmcm9tICcuL2hpZXJhcmNoaWNhbC1ncmlkLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElneEZpbHRlcmluZ1NlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXJpbmcvZ3JpZC1maWx0ZXJpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBJRGlzcGxheURlbnNpdHlPcHRpb25zLCBEaXNwbGF5RGVuc2l0eVRva2VuIH0gZnJvbSAnLi4vLi4vY29yZS9kZW5zaXR5JztcbmltcG9ydCB7IElneEdyaWRTdW1tYXJ5U2VydmljZSB9IGZyb20gJy4uL3N1bW1hcmllcy9ncmlkLXN1bW1hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hIaWVyYXJjaGljYWxHcmlkQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4vaGllcmFyY2hpY2FsLWdyaWQtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SGllcmFyY2hpY2FsR3JpZE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9oaWVyYXJjaGljYWwtZ3JpZC1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4R3JpZFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4T3ZlcmxheVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7IGZpcnN0LCBmaWx0ZXIsIHRha2VVbnRpbCwgcGx1Y2sgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2NvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Um93SXNsYW5kQVBJU2VydmljZSB9IGZyb20gJy4vcm93LWlzbGFuZC1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVV0aWwgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneENvbHVtblJlc2l6aW5nU2VydmljZSB9IGZyb20gJy4uL3Jlc2l6aW5nL3Jlc2l6aW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JpZFR5cGUsIElHWF9HUklEX1NFUlZJQ0VfQkFTRSwgSWd4R3JpZFBhZ2luYXRvclRlbXBsYXRlQ29udGV4dCB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hHcmlkVG9vbGJhckRpcmVjdGl2ZSwgSWd4R3JpZFRvb2xiYXJUZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuLi90b29sYmFyL2NvbW1vbic7XG5pbXBvcnQgeyBJZ3hBY3Rpb25TdHJpcFRva2VuIH0gZnJvbSAnLi4vLi4vYWN0aW9uLXN0cmlwL3Rva2VuJztcbmltcG9ydCB7IElneFBhZ2luYXRvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3BhZ2luYXRvci9wYWdpbmF0b3ItaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBJZ3hGbGF0VHJhbnNhY3Rpb25GYWN0b3J5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24tZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IElHcmlkQ3JlYXRlZEV2ZW50QXJncyB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IElneEdyaWRWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uL2dyaWQvZ3JpZC12YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4VGV4dEhpZ2hsaWdodFNlcnZpY2UgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3RleHQtaGlnaGxpZ2h0L3RleHQtaGlnaGxpZ2h0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4UGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzZWxlY3RvcjogJ2lneC1yb3ctaXNsYW5kJyxcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIElneFJvd0lzbGFuZEFQSVNlcnZpY2UsXG4gICAgICAgIElneEZpbHRlcmluZ1NlcnZpY2UsXG4gICAgICAgIElneEdyaWRTZWxlY3Rpb25TZXJ2aWNlXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneFJvd0lzbGFuZENvbXBvbmVudCBleHRlbmRzIElneEhpZXJhcmNoaWNhbEdyaWRCYXNlRGlyZWN0aXZlXG4gICAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBrZXkgb2YgdGhlIHJvdyBpc2xhbmQgYnkgd2hpY2ggY2hpbGQgZGF0YSB3b3VsZCBiZSB0YWtlbiBmcm9tIHRoZSByb3cgZGF0YSBpZiBzdWNoIGlzIHByb3ZpZGVkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWhpZXJhcmNoaWNhbC1ncmlkIFtkYXRhXT1cIkRhdGFcIiBbYXV0b0dlbmVyYXRlXT1cInRydWVcIj5cbiAgICAgKiAgICAgIDxpZ3gtcm93LWlzbGFuZCBba2V5XT1cIidjaGlsZERhdGEnXCI+XG4gICAgICogICAgICAgICAgPCEtLSAuLi4gLS0+XG4gICAgICogICAgICA8L2lneC1yb3ctaXNsYW5kPlxuICAgICAqIDwvaWd4LWhpZXJhcmNoaWNhbC1ncmlkPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneFJvd0lzbGFuZENvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGtleTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBJZ3hSb3dJc2xhbmRDb21wb25lbnQpLCB7IHJlYWQ6IElneFJvd0lzbGFuZENvbXBvbmVudCwgZGVzY2VuZGFudHM6IGZhbHNlIH0pXG4gICAgcHVibGljIGNoaWxkcmVuID0gbmV3IFF1ZXJ5TGlzdDxJZ3hSb3dJc2xhbmRDb21wb25lbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihJZ3hDb2x1bW5Db21wb25lbnQsIHsgcmVhZDogSWd4Q29sdW1uQ29tcG9uZW50LCBkZXNjZW5kYW50czogZmFsc2UgfSlcbiAgICBwdWJsaWMgY2hpbGRDb2x1bW5zID0gbmV3IFF1ZXJ5TGlzdDxJZ3hDb2x1bW5Db21wb25lbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hHcmlkVG9vbGJhckRpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHByb3RlY3RlZCB0b29sYmFyRGlyZWN0aXZlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPElneEdyaWRUb29sYmFyVGVtcGxhdGVDb250ZXh0PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneFBhZ2luYXRvckRpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHByb3RlY3RlZCBwYWdpbmF0b3JEaXJlY3RpdmVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFNldHMvR2V0cyB0aGUgdG9vbGJhciB0ZW1wbGF0ZSBmb3IgZWFjaCBjaGlsZCBncmlkIGNyZWF0ZWQgZnJvbSB0aGlzIHJvdyBpc2xhbmQuXG4gICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdG9vbGJhclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPElneEdyaWRUb29sYmFyVGVtcGxhdGVDb250ZXh0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b29sYmFyVGVtcGxhdGUgfHwgdGhpcy50b29sYmFyRGlyZWN0aXZlVGVtcGxhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB0b29sYmFyVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPElneEdyaWRUb29sYmFyVGVtcGxhdGVDb250ZXh0Pikge1xuICAgICAgICB0aGlzLl90b29sYmFyVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL0dldHMgdGhlIHBhZ2luYXRvciB0ZW1wbGF0ZSBmb3IgZWFjaCBjaGlsZCBncmlkIGNyZWF0ZWQgZnJvbSB0aGlzIHJvdyBpc2xhbmQuXG4gICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgcGFnaW5hdG9yVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8SWd4R3JpZFBhZ2luYXRvclRlbXBsYXRlQ29udGV4dD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnaW5hdG9yVGVtcGxhdGUgfHwgdGhpcy5wYWdpbmF0b3JEaXJlY3RpdmVUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHBhZ2luYXRvclRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hHcmlkUGFnaW5hdG9yVGVtcGxhdGVDb250ZXh0Pikge1xuICAgICAgICB0aGlzLl9wYWdpbmF0b3JUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqKi9cbiAgICBAQ29udGVudENoaWxkcmVuKElneEFjdGlvblN0cmlwVG9rZW4sIHsgcmVhZDogSWd4QWN0aW9uU3RyaXBUb2tlbiwgZGVzY2VuZGFudHM6IGZhbHNlIH0pXG4gICAgcHJvdGVjdGVkIGFjdGlvblN0cmlwczogUXVlcnlMaXN0PElneEFjdGlvblN0cmlwVG9rZW4+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBsYXlvdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtbWl0ZWQgd2hlbiBhIGdyaWQgaXMgYmVpbmcgY3JlYXRlZCBiYXNlZCBvbiB0aGlzIHJvdyBpc2xhbmQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtaGllcmFyY2hpY2FsLWdyaWQgW2RhdGFdPVwiRGF0YVwiIFthdXRvR2VuZXJhdGVdPVwidHJ1ZVwiPlxuICAgICAqICAgICAgPGlneC1yb3ctaXNsYW5kIFtrZXldPVwiJ2NoaWxkRGF0YSdcIiAoZ3JpZENyZWF0ZWQpPVwiZ3JpZENyZWF0ZWQoJGV2ZW50KVwiICNyb3dJc2xhbmQ+XG4gICAgICogICAgICAgICAgPCEtLSAuLi4gLS0+XG4gICAgICogICAgICA8L2lneC1yb3ctaXNsYW5kPlxuICAgICAqIDwvaWd4LWhpZXJhcmNoaWNhbC1ncmlkPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneFJvd0lzbGFuZENvbXBvbmVudFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBncmlkQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUdyaWRDcmVhdGVkRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCBhZnRlciBhIGdyaWQgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgZm9yIHRoaXMgcm93IGlzbGFuZC5cbiAgICAgKiBUaGUgZW1pdHRpbmcgaXMgZG9uZSBpbiBgbmdBZnRlclZpZXdJbml0YC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1oaWVyYXJjaGljYWwtZ3JpZCBbZGF0YV09XCJEYXRhXCIgW2F1dG9HZW5lcmF0ZV09XCJ0cnVlXCI+XG4gICAgICogICAgICA8aWd4LXJvdy1pc2xhbmQgW2tleV09XCInY2hpbGREYXRhJ1wiIChncmlkSW5pdGlhbGl6ZWQpPVwiZ3JpZEluaXRpYWxpemVkKCRldmVudClcIiAjcm93SXNsYW5kPlxuICAgICAqICAgICAgICAgIDwhLS0gLi4uIC0tPlxuICAgICAqICAgICAgPC9pZ3gtcm93LWlzbGFuZD5cbiAgICAgKiA8L2lneC1oaWVyYXJjaGljYWwtZ3JpZD5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hSb3dJc2xhbmRDb21wb25lbnRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZ3JpZEluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxJR3JpZENyZWF0ZWRFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGluaXRpYWxDaGFuZ2VzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHJvb3RHcmlkOiBHcmlkVHlwZSA9IG51bGw7XG4gICAgcHVibGljIHJlYWRvbmx5IGRhdGE6IGFueVtdIHwgbnVsbDtcblxuICAgIHByaXZhdGUgcmlfY29sdW1uTGlzdERpZmZlcjtcbiAgICBwcml2YXRlIGxheW91dF9pZCA9IGBpZ3gtcm93LWlzbGFuZC1gO1xuICAgIHByaXZhdGUgaXNJbml0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfdG9vbGJhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hHcmlkVG9vbGJhclRlbXBsYXRlQ29udGV4dD47XG4gICAgcHJpdmF0ZSBfcGFnaW5hdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPElneEdyaWRQYWdpbmF0b3JUZW1wbGF0ZUNvbnRleHQ+O1xuXG4gICAgLyoqXG4gICAgICogU2V0cyBpZiBhbGwgaW1tZWRpYXRlIGNoaWxkcmVuIG9mIHRoZSBncmlkcyBmb3IgdGhpcyBgSWd4Um93SXNsYW5kQ29tcG9uZW50YCBzaG91bGQgYmUgZXhwYW5kZWQvY29sbGFwc2VkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWhpZXJhcmNoaWNhbC1ncmlkIFtkYXRhXT1cIkRhdGFcIiBbYXV0b0dlbmVyYXRlXT1cInRydWVcIj5cbiAgICAgKiAgICAgIDxpZ3gtcm93LWlzbGFuZCBba2V5XT1cIidjaGlsZERhdGEnXCIgW2V4cGFuZENoaWxkcmVuXT1cInRydWVcIiAjcm93SXNsYW5kPlxuICAgICAqICAgICAgICAgIDwhLS0gLi4uIC0tPlxuICAgICAqICAgICAgPC9pZ3gtcm93LWlzbGFuZD5cbiAgICAgKiA8L2lneC1oaWVyYXJjaGljYWwtZ3JpZD5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hSb3dJc2xhbmRDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgc2V0IGV4cGFuZENoaWxkcmVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRFeHBhbmRTdGF0ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnJvd0lzbGFuZEFQSS5nZXRDaGlsZEdyaWRzKCkuZm9yRWFjaCgoZ3JpZCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkuY29udGFpbnMoZ3JpZC5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIC8vIERldGVjdCBjaGFuZ2VzIHJpZ2h0IGF3YXkgaWYgdGhlIGdyaWQgaXMgdmlzaWJsZVxuICAgICAgICAgICAgICAgIGdyaWQuZXhwYW5kQ2hpbGRyZW4gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBncmlkLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEVsc2UgZGVmZXIgdGhlIGRldGVjdGlvbiBvbiBjaGFuZ2VzIHdoZW4gdGhlIGdyaWQgZ2V0cyBpbnRvIHZpZXcgZm9yIHBlcmZvcm1hbmNlLlxuICAgICAgICAgICAgICAgIGdyaWQudXBkYXRlT25SZW5kZXIgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGlmIGFsbCBpbW1lZGlhdGUgY2hpbGRyZW4gb2YgdGhlIGdyaWRzIGZvciB0aGlzIGBJZ3hSb3dJc2xhbmRDb21wb25lbnRgIGhhdmUgYmVlbiBzZXQgdG8gYmUgZXhwYW5kZWQvY29sbGFwc2VkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBleHBhbmRlZCA9IHRoaXMucm93SXNsYW5kLmV4cGFuZENoaWxkcmVuO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneFJvd0lzbGFuZENvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZXhwYW5kQ2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0RXhwYW5kU3RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaWQoKSB7XG4gICAgICAgIGNvbnN0IHBJZCA9IHRoaXMucGFyZW50SWQgPyB0aGlzLnBhcmVudElkLnN1YnN0cmluZyh0aGlzLnBhcmVudElkLmluZGV4T2YodGhpcy5sYXlvdXRfaWQpICsgdGhpcy5sYXlvdXRfaWQubGVuZ3RoKSArICctJyA6ICcnO1xuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRfaWQgKyBwSWQgKyB0aGlzLmtleTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBwYXJlbnRJZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50SXNsYW5kID8gdGhpcy5wYXJlbnRJc2xhbmQuaWQgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGxldmVsKCkge1xuICAgICAgICBsZXQgcHRyID0gdGhpcy5wYXJlbnRJc2xhbmQ7XG4gICAgICAgIGxldCBsdmwgPSAwO1xuICAgICAgICB3aGlsZSAocHRyKSB7XG4gICAgICAgICAgICBsdmwrKztcbiAgICAgICAgICAgIHB0ciA9IHB0ci5wYXJlbnRJc2xhbmQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGx2bCArIDE7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHZhbGlkYXRpb25TZXJ2aWNlOiBJZ3hHcmlkVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgICAgIHNlbGVjdGlvblNlcnZpY2U6IElneEdyaWRTZWxlY3Rpb25TZXJ2aWNlLFxuICAgICAgICBjb2xSZXNpemluZ1NlcnZpY2U6IElneENvbHVtblJlc2l6aW5nU2VydmljZSxcbiAgICAgICAgQEluamVjdChJR1hfR1JJRF9TRVJWSUNFX0JBU0UpIGdyaWRBUEk6IElneEhpZXJhcmNoaWNhbEdyaWRBUElTZXJ2aWNlLFxuICAgICAgICB0cmFuc2FjdGlvbkZhY3Rvcnk6IElneEZsYXRUcmFuc2FjdGlvbkZhY3RvcnksXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICB6b25lOiBOZ1pvbmUsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50LFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgICAgIHZpZXdSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgZW52SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgIG5hdmlnYXRpb246IElneEhpZXJhcmNoaWNhbEdyaWROYXZpZ2F0aW9uU2VydmljZSxcbiAgICAgICAgZmlsdGVyaW5nU2VydmljZTogSWd4RmlsdGVyaW5nU2VydmljZSxcbiAgICAgICAgdGV4dEhpZ2hsaWdodFNlcnZpY2U6IElneFRleHRIaWdobGlnaHRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KElneE92ZXJsYXlTZXJ2aWNlKSBvdmVybGF5U2VydmljZTogSWd4T3ZlcmxheVNlcnZpY2UsXG4gICAgICAgIHN1bW1hcnlTZXJ2aWNlOiBJZ3hHcmlkU3VtbWFyeVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRGlzcGxheURlbnNpdHlUb2tlbikgX2Rpc3BsYXlEZW5zaXR5T3B0aW9uczogSURpc3BsYXlEZW5zaXR5T3B0aW9ucyxcbiAgICAgICAgcHVibGljIHJvd0lzbGFuZEFQSTogSWd4Um93SXNsYW5kQVBJU2VydmljZSxcbiAgICAgICAgQEluamVjdChMT0NBTEVfSUQpIGxvY2FsZUlkOiBzdHJpbmcsXG4gICAgICAgIHBsYXRmb3JtOiBQbGF0Zm9ybVV0aWwpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICB2YWxpZGF0aW9uU2VydmljZSxcbiAgICAgICAgICAgIHNlbGVjdGlvblNlcnZpY2UsXG4gICAgICAgICAgICBjb2xSZXNpemluZ1NlcnZpY2UsXG4gICAgICAgICAgICBncmlkQVBJLFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25GYWN0b3J5LFxuICAgICAgICAgICAgZWxlbWVudFJlZixcbiAgICAgICAgICAgIHpvbmUsXG4gICAgICAgICAgICBkb2N1bWVudCxcbiAgICAgICAgICAgIGNkcixcbiAgICAgICAgICAgIGRpZmZlcnMsXG4gICAgICAgICAgICB2aWV3UmVmLFxuICAgICAgICAgICAgaW5qZWN0b3IsXG4gICAgICAgICAgICBlbnZJbmplY3RvcixcbiAgICAgICAgICAgIG5hdmlnYXRpb24sXG4gICAgICAgICAgICBmaWx0ZXJpbmdTZXJ2aWNlLFxuICAgICAgICAgICAgdGV4dEhpZ2hsaWdodFNlcnZpY2UsXG4gICAgICAgICAgICBvdmVybGF5U2VydmljZSxcbiAgICAgICAgICAgIHN1bW1hcnlTZXJ2aWNlLFxuICAgICAgICAgICAgX2Rpc3BsYXlEZW5zaXR5T3B0aW9ucyxcbiAgICAgICAgICAgIGxvY2FsZUlkLFxuICAgICAgICAgICAgcGxhdGZvcm1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZpbHRlcmluZ1NlcnZpY2UuZ3JpZCA9IHRoaXMgYXMgR3JpZFR5cGU7XG4gICAgICAgIHRoaXMucm9vdEdyaWQgPSB0aGlzLmdyaWRBUEkuZ3JpZDtcbiAgICAgICAgdGhpcy5yb3dJc2xhbmRBUEkucm93SXNsYW5kID0gdGhpcztcbiAgICAgICAgdGhpcy5yaV9jb2x1bW5MaXN0RGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbigpO1xuICAgICAgICB0aGlzLmNoaWxkcmVuLm5vdGlmeU9uQ2hhbmdlcygpO1xuICAgICAgICB0aGlzLmNoaWxkcmVuLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKCk7XG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIGV4aXN0aW5nIGdyaWRzIHNpbmNlIHRoZWlyIGNoaWxkIHJpIGhhdmUgYmVlbiBjaGFuZ2VkLlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0R3JpZHNGb3JJc2xhbmQodGhpcy5rZXkpLmZvckVhY2goZ3JpZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIChncmlkIGFzIGFueSkub25Sb3dJc2xhbmRDaGFuZ2UodGhpcy5jaGlsZHJlbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbmVzdGVkQ29sdW1ucyA9IHRoaXMuY2hpbGRyZW4ubWFwKChsYXlvdXQpID0+IGxheW91dC5jb2x1bW5MaXN0LnRvQXJyYXkoKSk7XG4gICAgICAgIGNvbnN0IGNvbHNBcnJheSA9IFtdLmNvbmNhdC5hcHBseShbXSwgbmVzdGVkQ29sdW1ucyk7XG4gICAgICAgIGNvbnN0IHRvcENvbHMgPSB0aGlzLmNvbHVtbkxpc3QuZmlsdGVyKChpdGVtKSA9PiBjb2xzQXJyYXkuaW5kZXhPZihpdGVtKSA9PT0gLTEpO1xuICAgICAgICB0aGlzLl9jaGlsZENvbHVtbnMgPSB0b3BDb2xzO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnModGhpcy5fY2hpbGRDb2x1bW5zKTtcbiAgICAgICAgdGhpcy5jb2x1bW5MaXN0LmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbkxpc3QoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBoYW5kbGUgY29sdW1uIGNoYW5nZXMgc28gdGhhdCB0aGV5IGFyZSBwYXNzZWQgdG8gY2hpbGQgZ3JpZCBpbnN0YW5jZXMgd2hlbiBjb2x1bW5DaGFuZ2UgaXMgZW1pdHRlZC5cbiAgICAgICAgdGhpcy5yaV9jb2x1bW5MaXN0RGlmZmVyLmRpZmYodGhpcy5jaGlsZENvbHVtbnMpO1xuICAgICAgICB0aGlzLl9jaGlsZENvbHVtbnMuZm9yRWFjaCh4ID0+IHguY29sdW1uQ2hhbmdlLnBpcGUodGFrZVVudGlsKHguZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVDb2x1bW5MaXN0KCkpKTtcbiAgICAgICAgdGhpcy5jaGlsZENvbHVtbnMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChjaGFuZ2U6IFF1ZXJ5TGlzdDxJZ3hDb2x1bW5Db21wb25lbnQ+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkaWZmID0gdGhpcy5yaV9jb2x1bW5MaXN0RGlmZmVyLmRpZmYoY2hhbmdlKTtcbiAgICAgICAgICAgIGlmIChkaWZmKSB7XG4gICAgICAgICAgICAgICAgZGlmZi5mb3JFYWNoQWRkZWRJdGVtKChyZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPElneENvbHVtbkNvbXBvbmVudD4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLml0ZW0uY29sdW1uQ2hhbmdlLnBpcGUodGFrZVVudGlsKHJlY29yZC5pdGVtLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlQ29sdW1uTGlzdCgpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWN0aW9uU3RyaXAgPSB0aGlzLmFjdGlvblN0cmlwcy5maXJzdDtcbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uU3RyaXApIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uU3RyaXAubWVudU92ZXJsYXlTZXR0aW5ncy5vdXRsZXQgPSB0aGlzLm91dGxldDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLnJvd0lzbGFuZEFQSS5yZWdpc3Rlcih0aGlzKTtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50SXNsYW5kKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudElzbGFuZC5yb3dJc2xhbmRBUEkucmVnaXN0ZXJDaGlsZFJvd0lzbGFuZCh0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm9vdEdyaWQuZ3JpZEFQSS5yZWdpc3RlckNoaWxkUm93SXNsYW5kKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2luaXQgPSBmYWxzZTtcblxuICAgICAgICAvLyBDcmVhdGUgdGhlIGNoaWxkIHRvb2xiYXIgaWYgdGhlIHBhcmVudCBpc2xhbmQgaGFzIGEgdG9vbGJhciBkZWZpbml0aW9uXG4gICAgICAgIHRoaXMuZ3JpZENyZWF0ZWQucGlwZShwbHVjaygnZ3JpZCcpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShncmlkID0+IHtcbiAgICAgICAgICAgIGdyaWQucmVuZGVyZWQkLnBpcGUoZmlyc3QoKSwgZmlsdGVyKCgpID0+ICEhdGhpcy50b29sYmFyVGVtcGxhdGUpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gZ3JpZC50b29sYmFyT3V0bGV0LmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRvb2xiYXJUZW1wbGF0ZSwgeyAkaW1wbGljaXQ6IGdyaWQgfSwgeyBpbmplY3RvcjogZ3JpZC50b29sYmFyT3V0bGV0LmluamVjdG9yIH0pKTtcbiAgICAgICAgICAgIGdyaWQucmVuZGVyZWQkLnBpcGUoZmlyc3QoKSwgZmlsdGVyKCgpID0+ICEhdGhpcy5wYWdpbmF0b3JUZW1wbGF0ZSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm9vdEdyaWQucGFnaW5hdG9yTGlzdC5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGNoYW5nZXM6IFF1ZXJ5TGlzdDxJZ3hQYWdpbmF0b3JDb21wb25lbnQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzLmZvckVhY2gocCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAubmF0aXZlRWxlbWVudC5vZmZzZXRQYXJlbnQ/LmlkID09PSBncmlkLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wdGltaXplIHVwZGF0ZSBvbmx5IGZvciB0aG9zZSBncmlkcyB0aGF0IGhhdmUgcmVsYXRlZCBjaGFuZ2VkIHBhZ2luYXRvci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC5zZXRVcFBhZ2luYXRvcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBncmlkLnBhZ2luYXRvck91dGxldC5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5wYWdpbmF0b3JUZW1wbGF0ZSwgeyAkaW1wbGljaXQ6IGdyaWQgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlcykge1xuICAgICAgICB0aGlzLmxheW91dENoYW5nZS5lbWl0KGNoYW5nZXMpO1xuICAgICAgICBpZiAoIXRoaXMuaXNJbml0KSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxDaGFuZ2VzLnB1c2goY2hhbmdlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBPdmVycmlkZSB0aGUgYmFzZSBkZXN0cm95IGJlY2F1c2Ugd2UgaGF2ZSBub3QgcmVuZGVyZWQgYW55dGhpbmcgdG8gdXNlIHJlbW92ZUV2ZW50TGlzdGVuZXIgb25cbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICAgIHRoaXMucm93SXNsYW5kQVBJLnVuc2V0KHRoaXMuaWQpO1xuICAgICAgICBpZiAodGhpcy5wYXJlbnRJc2xhbmQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0R3JpZHNGb3JJc2xhbmQodGhpcy5rZXkpLmZvckVhY2goZ3JpZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhbkdyaWRTdGF0ZShncmlkKTtcbiAgICAgICAgICAgICAgICBncmlkLmdyaWRBUEkudW5zZXRDaGlsZFJvd0lzbGFuZCh0aGlzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRJc2xhbmQucm93SXNsYW5kQVBJLnVuc2V0Q2hpbGRSb3dJc2xhbmQodGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvb3RHcmlkLmdyaWRBUEkudW5zZXRDaGlsZFJvd0lzbGFuZCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYW5HcmlkU3RhdGUodGhpcy5yb290R3JpZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHJlZmxvdygpIHsgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBjYWxjdWxhdGVHcmlkSGVpZ2h0KCkgeyB9XG5cbiAgICBwcm90ZWN0ZWQgX2NoaWxkQ29sdW1ucyA9IFtdO1xuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUNvbHVtbkxpc3QoKSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZENvbHVtbnMgPSB0aGlzLmNoaWxkcmVuLm1hcCgobGF5b3V0KSA9PiBsYXlvdXQuY29sdW1uTGlzdC50b0FycmF5KCkpO1xuICAgICAgICBjb25zdCBjb2xzQXJyYXkgPSBbXS5jb25jYXQuYXBwbHkoW10sIG5lc3RlZENvbHVtbnMpO1xuICAgICAgICBjb25zdCB0b3BDb2xzID0gdGhpcy5jb2x1bW5MaXN0LmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbHNBcnJheS5pbmRleE9mKGl0ZW0pID09PSAtMSkge1xuICAgICAgICAgICAgICAgIC8qIFJlc2V0IHRoZSBkZWZhdWx0IHdpZHRoIG9mIHRoZSBjb2x1bW5zIHRoYXQgY29tZSBpbnRvIHRoaXMgcm93IGlzbGFuZCxcbiAgICAgICAgICAgICAgICBiZWNhdXNlIHRoZSByb290IGNhdGNoZXMgdGhlbSBmaXJzdCBkdXJpbmcgdGhlIGRldGVjdENoYW5nZXMoKSBhbmQgc2V0cyB0aGVpciBkZWZhdWx0V2lkdGguICovXG4gICAgICAgICAgICAgICAgaXRlbS5kZWZhdWx0V2lkdGggPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9jaGlsZENvbHVtbnMgPSB0b3BDb2xzO1xuICAgICAgICB0aGlzLnJvd0lzbGFuZEFQSS5nZXRDaGlsZEdyaWRzKCkuZm9yRWFjaCgoZ3JpZDogR3JpZFR5cGUpID0+IHtcbiAgICAgICAgICAgIGdyaWQuY3JlYXRlQ29sdW1uc0xpc3QodGhpcy5fY2hpbGRDb2x1bW5zKTtcbiAgICAgICAgICAgIGlmICghZG9jdW1lbnQuYm9keS5jb250YWlucyhncmlkLm5hdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC51cGRhdGVPblJlbmRlciA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVDaGlsZHJlbigpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4uZmlyc3QgPT09IHRoaXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4ucmVzZXQodGhpcy5jaGlsZHJlbi50b0FycmF5KCkuc2xpY2UoMSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgICBjaGlsZC5wYXJlbnRJc2xhbmQgPSB0aGlzO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFuR3JpZFN0YXRlKGdyaWQpIHtcbiAgICAgICAgZ3JpZC5jaGlsZEdyaWRUZW1wbGF0ZXMuZm9yRWFjaCgodG1wbCkgPT4ge1xuICAgICAgICAgICAgdG1wbC5vd25lci5jbGVhblZpZXcodG1wbC5jb250ZXh0LnRlbXBsYXRlSUQpO1xuICAgICAgICB9KTtcbiAgICAgICAgZ3JpZC5jaGlsZEdyaWRUZW1wbGF0ZXMuY2xlYXIoKTtcbiAgICAgICAgZ3JpZC5vblJvd0lzbGFuZENoYW5nZSgpO1xuICAgIH1cbn1cbiJdfQ==
387
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWlzbGFuZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvaGllcmFyY2hpY2FsLWdyaWQvcm93LWlzbGFuZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILGdCQUFnQixFQUNoQix1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBR2YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBRU4sS0FBSyxFQUdMLFNBQVMsRUFLVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBRWQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBMEIsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHbEUsT0FBTyxFQUFZLHFCQUFxQixFQUFtQyxNQUFNLDBCQUEwQixDQUFDO0FBQzVHLE9BQU8sRUFBRSx1QkFBdUIsRUFBaUMsTUFBTSxtQkFBbUIsQ0FBQztB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QkFFdEMsTUFBTTsyQkFBQyxTQUFTO3FFQXRNZCxHQUFHO3NCQURULEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7Z0JBT3RHLFlBQVk7c0JBRGxCLGVBQWU7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRTtnQkFRM0Usd0JBQXdCO3NCQURqQyxZQUFZO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFRbEQsMEJBQTBCO3NCQURuQyxZQUFZO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFPL0MsZUFBZTtzQkFEekIsS0FBSztnQkFhSyxpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBV0ksWUFBWTtzQkFEckIsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO2dCQU9oRixZQUFZO3NCQURsQixNQUFNO2dCQWdCQSxXQUFXO3NCQURqQixNQUFNO2dCQWlCQSxlQUFlO3NCQURyQixNQUFNO2dCQWlDSSxjQUFjO3NCQUR4QixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlQ2hhbmdlUmVjb3JkLFxuICAgIEl0ZXJhYmxlRGlmZmVycyxcbiAgICBMT0NBTEVfSUQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneEhpZXJhcmNoaWNhbEdyaWRBUElTZXJ2aWNlIH0gZnJvbSAnLi9oaWVyYXJjaGljYWwtZ3JpZC1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJZ3hGaWx0ZXJpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vZmlsdGVyaW5nL2dyaWQtZmlsdGVyaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURpc3BsYXlEZW5zaXR5T3B0aW9ucywgRGlzcGxheURlbnNpdHlUb2tlbiB9IGZyb20gJy4uLy4uL2NvcmUvZGVuc2l0eSc7XG5pbXBvcnQgeyBJZ3hHcmlkU3VtbWFyeVNlcnZpY2UgfSBmcm9tICcuLi9zdW1tYXJpZXMvZ3JpZC1zdW1tYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4SGllcmFyY2hpY2FsR3JpZEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2hpZXJhcmNoaWNhbC1ncmlkLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEhpZXJhcmNoaWNhbEdyaWROYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4vaGllcmFyY2hpY2FsLWdyaWQtbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IElneEdyaWRTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IElneE92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBmaXJzdCwgZmlsdGVyLCB0YWtlVW50aWwsIHBsdWNrIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSWd4Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1ucy9jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IElneFJvd0lzbGFuZEFQSVNlcnZpY2UgfSBmcm9tICcuL3Jvdy1pc2xhbmQtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGxhdGZvcm1VdGlsIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5SZXNpemluZ1NlcnZpY2UgfSBmcm9tICcuLi9yZXNpemluZy9yZXNpemluZy5zZXJ2aWNlJztcbmltcG9ydCB7IEdyaWRUeXBlLCBJR1hfR1JJRF9TRVJWSUNFX0JBU0UsIElneEdyaWRQYWdpbmF0b3JUZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4R3JpZFRvb2xiYXJEaXJlY3RpdmUsIElneEdyaWRUb29sYmFyVGVtcGxhdGVDb250ZXh0IH0gZnJvbSAnLi4vdG9vbGJhci9jb21tb24nO1xuaW1wb3J0IHsgSWd4QWN0aW9uU3RyaXBUb2tlbiB9IGZyb20gJy4uLy4uL2FjdGlvbi1zdHJpcC90b2tlbic7XG5pbXBvcnQgeyBJZ3hQYWdpbmF0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9wYWdpbmF0b3IvcGFnaW5hdG9yLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgSWd4RmxhdFRyYW5zYWN0aW9uRmFjdG9yeSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBJR3JpZENyZWF0ZWRFdmVudEFyZ3MgfSBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgeyBJZ3hHcmlkVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9ncmlkL2dyaWQtdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IElneFRleHRIaWdobGlnaHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90ZXh0LWhpZ2hsaWdodC90ZXh0LWhpZ2hsaWdodC5zZXJ2aWNlJztcbmltcG9ydCB7IElneFBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdpZ3gtcm93LWlzbGFuZCcsXG4gICAgdGVtcGxhdGU6IGBgLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBJZ3hSb3dJc2xhbmRBUElTZXJ2aWNlLFxuICAgICAgICBJZ3hGaWx0ZXJpbmdTZXJ2aWNlLFxuICAgICAgICBJZ3hHcmlkU2VsZWN0aW9uU2VydmljZVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hSb3dJc2xhbmRDb21wb25lbnQgZXh0ZW5kcyBJZ3hIaWVyYXJjaGljYWxHcmlkQmFzZURpcmVjdGl2ZVxuICAgIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUga2V5IG9mIHRoZSByb3cgaXNsYW5kIGJ5IHdoaWNoIGNoaWxkIGRhdGEgd291bGQgYmUgdGFrZW4gZnJvbSB0aGUgcm93IGRhdGEgaWYgc3VjaCBpcyBwcm92aWRlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1oaWVyYXJjaGljYWwtZ3JpZCBbZGF0YV09XCJEYXRhXCIgW2F1dG9HZW5lcmF0ZV09XCJ0cnVlXCI+XG4gICAgICogICAgICA8aWd4LXJvdy1pc2xhbmQgW2tleV09XCInY2hpbGREYXRhJ1wiPlxuICAgICAqICAgICAgICAgIDwhLS0gLi4uIC0tPlxuICAgICAqICAgICAgPC9pZ3gtcm93LWlzbGFuZD5cbiAgICAgKiA8L2lneC1oaWVyYXJjaGljYWwtZ3JpZD5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hSb3dJc2xhbmRDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBrZXk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gSWd4Um93SXNsYW5kQ29tcG9uZW50KSwgeyByZWFkOiBJZ3hSb3dJc2xhbmRDb21wb25lbnQsIGRlc2NlbmRhbnRzOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBjaGlsZHJlbiA9IG5ldyBRdWVyeUxpc3Q8SWd4Um93SXNsYW5kQ29tcG9uZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oSWd4Q29sdW1uQ29tcG9uZW50LCB7IHJlYWQ6IElneENvbHVtbkNvbXBvbmVudCwgZGVzY2VuZGFudHM6IGZhbHNlIH0pXG4gICAgcHVibGljIGNoaWxkQ29sdW1ucyA9IG5ldyBRdWVyeUxpc3Q8SWd4Q29sdW1uQ29tcG9uZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4R3JpZFRvb2xiYXJEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBwcm90ZWN0ZWQgdG9vbGJhckRpcmVjdGl2ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hHcmlkVG9vbGJhclRlbXBsYXRlQ29udGV4dD47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hQYWdpbmF0b3JEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBwcm90ZWN0ZWQgcGFnaW5hdG9yRGlyZWN0aXZlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL0dldHMgdGhlIHRvb2xiYXIgdGVtcGxhdGUgZm9yIGVhY2ggY2hpbGQgZ3JpZCBjcmVhdGVkIGZyb20gdGhpcyByb3cgaXNsYW5kLlxuICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHRvb2xiYXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxJZ3hHcmlkVG9vbGJhclRlbXBsYXRlQ29udGV4dD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9vbGJhclRlbXBsYXRlIHx8IHRoaXMudG9vbGJhckRpcmVjdGl2ZVRlbXBsYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdG9vbGJhclRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hHcmlkVG9vbGJhclRlbXBsYXRlQ29udGV4dD4pIHtcbiAgICAgICAgdGhpcy5fdG9vbGJhclRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cy9HZXRzIHRoZSBwYWdpbmF0b3IgdGVtcGxhdGUgZm9yIGVhY2ggY2hpbGQgZ3JpZCBjcmVhdGVkIGZyb20gdGhpcyByb3cgaXNsYW5kLlxuICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHBhZ2luYXRvclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPElneEdyaWRQYWdpbmF0b3JUZW1wbGF0ZUNvbnRleHQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2luYXRvclRlbXBsYXRlIHx8IHRoaXMucGFnaW5hdG9yRGlyZWN0aXZlVGVtcGxhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBwYWdpbmF0b3JUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8SWd4R3JpZFBhZ2luYXRvclRlbXBsYXRlQ29udGV4dD4pIHtcbiAgICAgICAgdGhpcy5fcGFnaW5hdG9yVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKiovXG4gICAgQENvbnRlbnRDaGlsZHJlbihJZ3hBY3Rpb25TdHJpcFRva2VuLCB7IHJlYWQ6IElneEFjdGlvblN0cmlwVG9rZW4sIGRlc2NlbmRhbnRzOiBmYWxzZSB9KVxuICAgIHByb3RlY3RlZCBhY3Rpb25TdHJpcHM6IFF1ZXJ5TGlzdDxJZ3hBY3Rpb25TdHJpcFRva2VuPjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbGF5b3V0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbW1pdGVkIHdoZW4gYSBncmlkIGlzIGJlaW5nIGNyZWF0ZWQgYmFzZWQgb24gdGhpcyByb3cgaXNsYW5kLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWhpZXJhcmNoaWNhbC1ncmlkIFtkYXRhXT1cIkRhdGFcIiBbYXV0b0dlbmVyYXRlXT1cInRydWVcIj5cbiAgICAgKiAgICAgIDxpZ3gtcm93LWlzbGFuZCBba2V5XT1cIidjaGlsZERhdGEnXCIgKGdyaWRDcmVhdGVkKT1cImdyaWRDcmVhdGVkKCRldmVudClcIiAjcm93SXNsYW5kPlxuICAgICAqICAgICAgICAgIDwhLS0gLi4uIC0tPlxuICAgICAqICAgICAgPC9pZ3gtcm93LWlzbGFuZD5cbiAgICAgKiA8L2lneC1oaWVyYXJjaGljYWwtZ3JpZD5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hSb3dJc2xhbmRDb21wb25lbnRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZ3JpZENyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElHcmlkQ3JlYXRlZEV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYWZ0ZXIgYSBncmlkIGlzIGJlaW5nIGluaXRpYWxpemVkIGZvciB0aGlzIHJvdyBpc2xhbmQuXG4gICAgICogVGhlIGVtaXR0aW5nIGlzIGRvbmUgaW4gYG5nQWZ0ZXJWaWV3SW5pdGAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtaGllcmFyY2hpY2FsLWdyaWQgW2RhdGFdPVwiRGF0YVwiIFthdXRvR2VuZXJhdGVdPVwidHJ1ZVwiPlxuICAgICAqICAgICAgPGlneC1yb3ctaXNsYW5kIFtrZXldPVwiJ2NoaWxkRGF0YSdcIiAoZ3JpZEluaXRpYWxpemVkKT1cImdyaWRJbml0aWFsaXplZCgkZXZlbnQpXCIgI3Jvd0lzbGFuZD5cbiAgICAgKiAgICAgICAgICA8IS0tIC4uLiAtLT5cbiAgICAgKiAgICAgIDwvaWd4LXJvdy1pc2xhbmQ+XG4gICAgICogPC9pZ3gtaGllcmFyY2hpY2FsLWdyaWQ+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4Um93SXNsYW5kQ29tcG9uZW50XG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGdyaWRJbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUdyaWRDcmVhdGVkRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBpbml0aWFsQ2hhbmdlcyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyByb290R3JpZDogR3JpZFR5cGUgPSBudWxsO1xuICAgIHB1YmxpYyByZWFkb25seSBkYXRhOiBhbnlbXSB8IG51bGw7XG5cbiAgICBwcml2YXRlIHJpX2NvbHVtbkxpc3REaWZmZXI7XG4gICAgcHJpdmF0ZSBsYXlvdXRfaWQgPSBgaWd4LXJvdy1pc2xhbmQtYDtcbiAgICBwcml2YXRlIGlzSW5pdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3Rvb2xiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8SWd4R3JpZFRvb2xiYXJUZW1wbGF0ZUNvbnRleHQ+O1xuICAgIHByaXZhdGUgX3BhZ2luYXRvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJZ3hHcmlkUGFnaW5hdG9yVGVtcGxhdGVDb250ZXh0PjtcblxuICAgIC8qKlxuICAgICAqIFNldHMgaWYgYWxsIGltbWVkaWF0ZSBjaGlsZHJlbiBvZiB0aGUgZ3JpZHMgZm9yIHRoaXMgYElneFJvd0lzbGFuZENvbXBvbmVudGAgc2hvdWxkIGJlIGV4cGFuZGVkL2NvbGxhcHNlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1oaWVyYXJjaGljYWwtZ3JpZCBbZGF0YV09XCJEYXRhXCIgW2F1dG9HZW5lcmF0ZV09XCJ0cnVlXCI+XG4gICAgICogICAgICA8aWd4LXJvdy1pc2xhbmQgW2tleV09XCInY2hpbGREYXRhJ1wiIFtleHBhbmRDaGlsZHJlbl09XCJ0cnVlXCIgI3Jvd0lzbGFuZD5cbiAgICAgKiAgICAgICAgICA8IS0tIC4uLiAtLT5cbiAgICAgKiAgICAgIDwvaWd4LXJvdy1pc2xhbmQ+XG4gICAgICogPC9pZ3gtaGllcmFyY2hpY2FsLWdyaWQ+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4Um93SXNsYW5kQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHNldCBleHBhbmRDaGlsZHJlbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kZWZhdWx0RXhwYW5kU3RhdGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yb3dJc2xhbmRBUEkuZ2V0Q2hpbGRHcmlkcygpLmZvckVhY2goKGdyaWQpID0+IHtcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGdyaWQubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAvLyBEZXRlY3QgY2hhbmdlcyByaWdodCBhd2F5IGlmIHRoZSBncmlkIGlzIHZpc2libGVcbiAgICAgICAgICAgICAgICBncmlkLmV4cGFuZENoaWxkcmVuID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgZ3JpZC5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBFbHNlIGRlZmVyIHRoZSBkZXRlY3Rpb24gb24gY2hhbmdlcyB3aGVuIHRoZSBncmlkIGdldHMgaW50byB2aWV3IGZvciBwZXJmb3JtYW5jZS5cbiAgICAgICAgICAgICAgICBncmlkLnVwZGF0ZU9uUmVuZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBpZiBhbGwgaW1tZWRpYXRlIGNoaWxkcmVuIG9mIHRoZSBncmlkcyBmb3IgdGhpcyBgSWd4Um93SXNsYW5kQ29tcG9uZW50YCBoYXZlIGJlZW4gc2V0IHRvIGJlIGV4cGFuZGVkL2NvbGxhcHNlZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgZXhwYW5kZWQgPSB0aGlzLnJvd0lzbGFuZC5leHBhbmRDaGlsZHJlbjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hSb3dJc2xhbmRDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGV4cGFuZENoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdEV4cGFuZFN0YXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlkKCkge1xuICAgICAgICBjb25zdCBwSWQgPSB0aGlzLnBhcmVudElkID8gdGhpcy5wYXJlbnRJZC5zdWJzdHJpbmcodGhpcy5wYXJlbnRJZC5pbmRleE9mKHRoaXMubGF5b3V0X2lkKSArIHRoaXMubGF5b3V0X2lkLmxlbmd0aCkgKyAnLScgOiAnJztcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0X2lkICsgcElkICsgdGhpcy5rZXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcGFyZW50SWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudElzbGFuZCA/IHRoaXMucGFyZW50SXNsYW5kLmlkIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBsZXZlbCgpIHtcbiAgICAgICAgbGV0IHB0ciA9IHRoaXMucGFyZW50SXNsYW5kO1xuICAgICAgICBsZXQgbHZsID0gMDtcbiAgICAgICAgd2hpbGUgKHB0cikge1xuICAgICAgICAgICAgbHZsKys7XG4gICAgICAgICAgICBwdHIgPSBwdHIucGFyZW50SXNsYW5kO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsdmwgKyAxO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICB2YWxpZGF0aW9uU2VydmljZTogSWd4R3JpZFZhbGlkYXRpb25TZXJ2aWNlLFxuICAgICAgICBzZWxlY3Rpb25TZXJ2aWNlOiBJZ3hHcmlkU2VsZWN0aW9uU2VydmljZSxcbiAgICAgICAgY29sUmVzaXppbmdTZXJ2aWNlOiBJZ3hDb2x1bW5SZXNpemluZ1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoSUdYX0dSSURfU0VSVklDRV9CQVNFKSBncmlkQVBJOiBJZ3hIaWVyYXJjaGljYWxHcmlkQVBJU2VydmljZSxcbiAgICAgICAgdHJhbnNhY3Rpb25GYWN0b3J5OiBJZ3hGbGF0VHJhbnNhY3Rpb25GYWN0b3J5LFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgem9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudCxcbiAgICAgICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgICAgICB2aWV3UmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIGVudkluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICBuYXZpZ2F0aW9uOiBJZ3hIaWVyYXJjaGljYWxHcmlkTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgICAgIGZpbHRlcmluZ1NlcnZpY2U6IElneEZpbHRlcmluZ1NlcnZpY2UsXG4gICAgICAgIHRleHRIaWdobGlnaHRTZXJ2aWNlOiBJZ3hUZXh0SGlnaGxpZ2h0U2VydmljZSxcbiAgICAgICAgQEluamVjdChJZ3hPdmVybGF5U2VydmljZSkgb3ZlcmxheVNlcnZpY2U6IElneE92ZXJsYXlTZXJ2aWNlLFxuICAgICAgICBzdW1tYXJ5U2VydmljZTogSWd4R3JpZFN1bW1hcnlTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIF9kaXNwbGF5RGVuc2l0eU9wdGlvbnM6IElEaXNwbGF5RGVuc2l0eU9wdGlvbnMsXG4gICAgICAgIHB1YmxpYyByb3dJc2xhbmRBUEk6IElneFJvd0lzbGFuZEFQSVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGVJZDogc3RyaW5nLFxuICAgICAgICBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgdmFsaWRhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICBzZWxlY3Rpb25TZXJ2aWNlLFxuICAgICAgICAgICAgY29sUmVzaXppbmdTZXJ2aWNlLFxuICAgICAgICAgICAgZ3JpZEFQSSxcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uRmFjdG9yeSxcbiAgICAgICAgICAgIGVsZW1lbnRSZWYsXG4gICAgICAgICAgICB6b25lLFxuICAgICAgICAgICAgZG9jdW1lbnQsXG4gICAgICAgICAgICBjZHIsXG4gICAgICAgICAgICBkaWZmZXJzLFxuICAgICAgICAgICAgdmlld1JlZixcbiAgICAgICAgICAgIGluamVjdG9yLFxuICAgICAgICAgICAgZW52SW5qZWN0b3IsXG4gICAgICAgICAgICBuYXZpZ2F0aW9uLFxuICAgICAgICAgICAgZmlsdGVyaW5nU2VydmljZSxcbiAgICAgICAgICAgIHRleHRIaWdobGlnaHRTZXJ2aWNlLFxuICAgICAgICAgICAgb3ZlcmxheVNlcnZpY2UsXG4gICAgICAgICAgICBzdW1tYXJ5U2VydmljZSxcbiAgICAgICAgICAgIF9kaXNwbGF5RGVuc2l0eU9wdGlvbnMsXG4gICAgICAgICAgICBsb2NhbGVJZCxcbiAgICAgICAgICAgIHBsYXRmb3JtXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJpbmdTZXJ2aWNlLmdyaWQgPSB0aGlzIGFzIEdyaWRUeXBlO1xuICAgICAgICB0aGlzLnJvb3RHcmlkID0gdGhpcy5ncmlkQVBJLmdyaWQ7XG4gICAgICAgIHRoaXMucm93SXNsYW5kQVBJLnJvd0lzbGFuZCA9IHRoaXM7XG4gICAgICAgIHRoaXMucmlfY29sdW1uTGlzdERpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKFtdKS5jcmVhdGUobnVsbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4oKTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5ub3RpZnlPbkNoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbigpO1xuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBleGlzdGluZyBncmlkcyBzaW5jZSB0aGVpciBjaGlsZCByaSBoYXZlIGJlZW4gY2hhbmdlZC5cbiAgICAgICAgICAgICAgICB0aGlzLmdldEdyaWRzRm9ySXNsYW5kKHRoaXMua2V5KS5mb3JFYWNoKGdyaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAoZ3JpZCBhcyBhbnkpLm9uUm93SXNsYW5kQ2hhbmdlKHRoaXMuY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG5lc3RlZENvbHVtbnMgPSB0aGlzLmNoaWxkcmVuLm1hcCgobGF5b3V0KSA9PiBsYXlvdXQuY29sdW1uTGlzdC50b0FycmF5KCkpO1xuICAgICAgICBjb25zdCBjb2xzQXJyYXkgPSBbXS5jb25jYXQuYXBwbHkoW10sIG5lc3RlZENvbHVtbnMpO1xuICAgICAgICBjb25zdCB0b3BDb2xzID0gdGhpcy5jb2x1bW5MaXN0LmZpbHRlcigoaXRlbSkgPT4gY29sc0FycmF5LmluZGV4T2YoaXRlbSkgPT09IC0xKTtcbiAgICAgICAgdGhpcy5fY2hpbGRDb2x1bW5zID0gdG9wQ29scztcbiAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5zKHRoaXMuX2NoaWxkQ29sdW1ucyk7XG4gICAgICAgIHRoaXMuY29sdW1uTGlzdC5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5MaXN0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gaGFuZGxlIGNvbHVtbiBjaGFuZ2VzIHNvIHRoYXQgdGhleSBhcmUgcGFzc2VkIHRvIGNoaWxkIGdyaWQgaW5zdGFuY2VzIHdoZW4gY29sdW1uQ2hhbmdlIGlzIGVtaXR0ZWQuXG4gICAgICAgIHRoaXMucmlfY29sdW1uTGlzdERpZmZlci5kaWZmKHRoaXMuY2hpbGRDb2x1bW5zKTtcbiAgICAgICAgdGhpcy5fY2hpbGRDb2x1bW5zLmZvckVhY2goeCA9PiB4LmNvbHVtbkNoYW5nZS5waXBlKHRha2VVbnRpbCh4LmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlQ29sdW1uTGlzdCgpKSk7XG4gICAgICAgIHRoaXMuY2hpbGRDb2x1bW5zLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoY2hhbmdlOiBRdWVyeUxpc3Q8SWd4Q29sdW1uQ29tcG9uZW50PikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGlmZiA9IHRoaXMucmlfY29sdW1uTGlzdERpZmZlci5kaWZmKGNoYW5nZSk7XG4gICAgICAgICAgICBpZiAoZGlmZikge1xuICAgICAgICAgICAgICAgIGRpZmYuZm9yRWFjaEFkZGVkSXRlbSgocmVjb3JkOiBJdGVyYWJsZUNoYW5nZVJlY29yZDxJZ3hDb2x1bW5Db21wb25lbnQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5pdGVtLmNvbHVtbkNoYW5nZS5waXBlKHRha2VVbnRpbChyZWNvcmQuaXRlbS5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUNvbHVtbkxpc3QoKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGlvblN0cmlwID0gdGhpcy5hY3Rpb25TdHJpcHMuZmlyc3Q7XG4gICAgICAgIGlmICh0aGlzLmFjdGlvblN0cmlwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvblN0cmlwLm1lbnVPdmVybGF5U2V0dGluZ3Mub3V0bGV0ID0gdGhpcy5vdXRsZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5yb3dJc2xhbmRBUEkucmVnaXN0ZXIodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudElzbGFuZCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRJc2xhbmQucm93SXNsYW5kQVBJLnJlZ2lzdGVyQ2hpbGRSb3dJc2xhbmQodGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvb3RHcmlkLmdyaWRBUEkucmVnaXN0ZXJDaGlsZFJvd0lzbGFuZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbml0ID0gZmFsc2U7XG5cbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBjaGlsZCB0b29sYmFyIGlmIHRoZSBwYXJlbnQgaXNsYW5kIGhhcyBhIHRvb2xiYXIgZGVmaW5pdGlvblxuICAgICAgICB0aGlzLmdyaWRDcmVhdGVkLnBpcGUocGx1Y2soJ2dyaWQnKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoZ3JpZCA9PiB7XG4gICAgICAgICAgICBncmlkLnJlbmRlcmVkJC5waXBlKGZpcnN0KCksIGZpbHRlcigoKSA9PiAhIXRoaXMudG9vbGJhclRlbXBsYXRlKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IGdyaWQudG9vbGJhck91dGxldC5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50b29sYmFyVGVtcGxhdGUsIHsgJGltcGxpY2l0OiBncmlkIH0sIHsgaW5qZWN0b3I6IGdyaWQudG9vbGJhck91dGxldC5pbmplY3RvciB9KSk7XG4gICAgICAgICAgICBncmlkLnJlbmRlcmVkJC5waXBlKGZpcnN0KCksIGZpbHRlcigoKSA9PiAhIXRoaXMucGFnaW5hdG9yVGVtcGxhdGUpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb3RHcmlkLnBhZ2luYXRvckxpc3QuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChjaGFuZ2VzOiBRdWVyeUxpc3Q8SWd4UGFnaW5hdG9yQ29tcG9uZW50PikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5mb3JFYWNoKHAgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50Py5pZCA9PT0gZ3JpZC5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPcHRpbWl6ZSB1cGRhdGUgb25seSBmb3IgdGhvc2UgZ3JpZHMgdGhhdCBoYXZlIHJlbGF0ZWQgY2hhbmdlZCBwYWdpbmF0b3IuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQuc2V0VXBQYWdpbmF0b3IoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC5wYWdpbmF0b3JPdXRsZXQuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMucGFnaW5hdG9yVGVtcGxhdGUsIHsgJGltcGxpY2l0OiBncmlkIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2UuZW1pdChjaGFuZ2VzKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzSW5pdCkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsQ2hhbmdlcy5wdXNoKGNoYW5nZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gT3ZlcnJpZGUgdGhlIGJhc2UgZGVzdHJveSBiZWNhdXNlIHdlIGhhdmUgbm90IHJlbmRlcmVkIGFueXRoaW5nIHRvIHVzZSByZW1vdmVFdmVudExpc3RlbmVyIG9uXG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnJvd0lzbGFuZEFQSS51bnNldCh0aGlzLmlkKTtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50SXNsYW5kKSB7XG4gICAgICAgICAgICB0aGlzLmdldEdyaWRzRm9ySXNsYW5kKHRoaXMua2V5KS5mb3JFYWNoKGdyaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYW5HcmlkU3RhdGUoZ3JpZCk7XG4gICAgICAgICAgICAgICAgZ3JpZC5ncmlkQVBJLnVuc2V0Q2hpbGRSb3dJc2xhbmQodGhpcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucGFyZW50SXNsYW5kLnJvd0lzbGFuZEFQSS51bnNldENoaWxkUm93SXNsYW5kKHRoaXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb290R3JpZC5ncmlkQVBJLnVuc2V0Q2hpbGRSb3dJc2xhbmQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmNsZWFuR3JpZFN0YXRlKHRoaXMucm9vdEdyaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSByZWZsb3coKSB7IH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY2FsY3VsYXRlR3JpZEhlaWdodCgpIHsgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBjYWxjdWxhdGVHcmlkV2lkdGgoKSB7IH1cblxuICAgIHByb3RlY3RlZCBfY2hpbGRDb2x1bW5zID0gW107XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlQ29sdW1uTGlzdCgpIHtcbiAgICAgICAgY29uc3QgbmVzdGVkQ29sdW1ucyA9IHRoaXMuY2hpbGRyZW4ubWFwKChsYXlvdXQpID0+IGxheW91dC5jb2x1bW5MaXN0LnRvQXJyYXkoKSk7XG4gICAgICAgIGNvbnN0IGNvbHNBcnJheSA9IFtdLmNvbmNhdC5hcHBseShbXSwgbmVzdGVkQ29sdW1ucyk7XG4gICAgICAgIGNvbnN0IHRvcENvbHMgPSB0aGlzLmNvbHVtbkxpc3QuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sc0FycmF5LmluZGV4T2YoaXRlbSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgLyogUmVzZXQgdGhlIGRlZmF1bHQgd2lkdGggb2YgdGhlIGNvbHVtbnMgdGhhdCBjb21lIGludG8gdGhpcyByb3cgaXNsYW5kLFxuICAgICAgICAgICAgICAgIGJlY2F1c2UgdGhlIHJvb3QgY2F0Y2hlcyB0aGVtIGZpcnN0IGR1cmluZyB0aGUgZGV0ZWN0Q2hhbmdlcygpIGFuZCBzZXRzIHRoZWlyIGRlZmF1bHRXaWR0aC4gKi9cbiAgICAgICAgICAgICAgICBpdGVtLmRlZmF1bHRXaWR0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2NoaWxkQ29sdW1ucyA9IHRvcENvbHM7XG4gICAgICAgIHRoaXMucm93SXNsYW5kQVBJLmdldENoaWxkR3JpZHMoKS5mb3JFYWNoKChncmlkOiBHcmlkVHlwZSkgPT4ge1xuICAgICAgICAgICAgZ3JpZC5jcmVhdGVDb2x1bW5zTGlzdCh0aGlzLl9jaGlsZENvbHVtbnMpO1xuICAgICAgICAgICAgaWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGdyaWQubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBncmlkLnVwZGF0ZU9uUmVuZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUNoaWxkcmVuKCkge1xuICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5maXJzdCA9PT0gdGhpcykge1xuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5yZXNldCh0aGlzLmNoaWxkcmVuLnRvQXJyYXkoKS5zbGljZSgxKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgICAgICAgIGNoaWxkLnBhcmVudElzbGFuZCA9IHRoaXM7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYW5HcmlkU3RhdGUoZ3JpZCkge1xuICAgICAgICBncmlkLmNoaWxkR3JpZFRlbXBsYXRlcy5mb3JFYWNoKCh0bXBsKSA9PiB7XG4gICAgICAgICAgICB0bXBsLm93bmVyLmNsZWFuVmlldyh0bXBsLmNvbnRleHQudGVtcGxhdGVJRCk7XG4gICAgICAgIH0pO1xuICAgICAgICBncmlkLmNoaWxkR3JpZFRlbXBsYXRlcy5jbGVhcigpO1xuICAgICAgICBncmlkLm9uUm93SXNsYW5kQ2hhbmdlKCk7XG4gICAgfVxufVxuIl19