@c8y/ngx-components 1018.0.267 → 1018.0.270

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.
@@ -173,6 +173,7 @@ export declare const DASHBOARD_THEME_CLASSES: ({
173
173
  })[];
174
174
  export declare const STYLING_CLASS_PREFIXES: string[];
175
175
  export interface DashboardCopyClipboard {
176
+ dashboardId: string;
176
177
  dashboard: ContextDashboard;
177
178
  context: DashboardContext;
178
179
  }
@@ -38,6 +38,12 @@ export declare class ContextDashboardService {
38
38
  updateNavigatorItem(mo: IManagedObject): void;
39
39
  navigateToDashboard(dashboardMO: ContextDashboardManagedObject): Promise<void>;
40
40
  canEditDashboard(mo: any): Promise<boolean>;
41
+ /**
42
+ * Checks if user has permissions to copy dashboard according to his roles.
43
+ *
44
+ * @returns True if user has permissions to copy dashboard, false if he cannot.
45
+ */
46
+ hasPermissionsToCopyDashboard(): boolean;
41
47
  isNamed(dashboard: Partial<ContextDashboardManagedObject>): any;
42
48
  isReport(dashboard: Partial<ContextDashboardManagedObject>): any;
43
49
  isDeviceType(dashboard: Partial<ContextDashboardManagedObject>): any;
@@ -33,6 +33,9 @@ export class CockpitConfigService {
33
33
  return Object.keys(this.currentConfig.features).filter(key => !this.currentConfig.features[key]);
34
34
  }
35
35
  init() {
36
+ if (this.optionsService.hideNavigator !== undefined) {
37
+ this.currentConfig.hideNavigator = this.optionsService.hideNavigator;
38
+ }
36
39
  this.appState.currentApplicationConfig.subscribe(config => {
37
40
  if (config) {
38
41
  this.currentConfig = { ...DEFAULT_CONFIG, ...config };
@@ -151,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
151
154
  type: Inject,
152
155
  args: [ASSET_NAVIGATOR_CONFIG]
153
156
  }] }]; } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvY2twaXQtY29uZmlnL2NvY2twaXQtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsZUFBZSxFQUdmLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsV0FBVyxFQUNYLGFBQWEsRUFFYixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN2QixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQWlCLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUtwRyxNQUFNLE9BQU8sb0JBQW9CO0lBZS9CLFlBQ1UsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsUUFBeUIsRUFDekIsY0FBOEIsRUFDOUIsV0FBd0IsRUFDbUIsWUFBa0M7UUFSN0UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsbUJBQWMsR0FBZCxjQUFj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O3FCQUNSO29CQUVELFNBQVMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2lCQUMxQjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztpSEF0S1Usb0JBQW9CLGtRQXdCVCxzQkFBc0I7cUhBeEJqQyxvQkFBb0IsY0FGbkIsTUFBTTsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF5QkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBFeHRlbnNpb25GYWN0b3J5LFxuICBOYXZpZ2F0b3JOb2RlLFxuICBOYXZpZ2F0b3JTZXJ2aWNlLFxuICBPcHRpb25zU2VydmljZSxcbiAgUGVybWlzc2lvbnMsXG4gIFNlYXJjaFNlcnZpY2UsXG4gIFRhYixcbiAgVGFic1NlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBc3NldE5hdmlnYXRvckNvbmZpZyxcbiAgQXNzZXROb2RlU2VydmljZSxcbiAgQVNTRVRfTkFWSUdBVE9SX0NPTkZJR1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQsIHN0YXJ0Q2FzZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb2NrcGl0Q29uZmlnLCBERUZBVUxUX0NPTkZJRywgREVGQVVMVF9IT01FX0RBU0hCT0FSRF9OQU1FIH0gZnJvbSAnLi9jb2NrcGl0LWNvbmZpZy5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvY2twaXRDb25maWdTZXJ2aWNlIHtcbiAgY3VycmVudENvbmZpZzogQ29ja3BpdENvbmZpZyA9IERFRkFVTFRfQ09ORklHO1xuICBub2RlczogTmF2aWdhdG9yTm9kZVtdID0gW107XG4gIHByaXZhdGUgbmF2aWdhdGlvbkZhY3Rvcnk6IEV4dGVuc2lvbkZhY3Rvcnk8TmF2aWdhdG9yTm9kZT4gPSB7XG4gICAgZ2V0OiAoKSA9PiB0aGlzLm5vZGVzXG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX05PREVfUFJJT1JJVFkgPSAyMDAwO1xuXG4gIGdldCBleGNsdWRlZEZlYXR1cmVLZXlzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXMpLmZpbHRlcihcbiAgICAgIGtleSA9PiAhdGhpcy5jdXJyZW50Q29uZmlnLmZlYXR1cmVzW2tleV1cbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFic1NlcnZpY2U6IFRhYnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIGFzc2V0Tm9kZVNlcnZpY2U6IEFzc2V0Tm9kZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFTU0VUX05BVklHQVRPUl9DT05GSUcpIHB1YmxpYyBtb2R1bGVDb25maWc6IEFzc2V0TmF2aWdhdG9yQ29uZmlnXG4gICkge1xuICAgIHRoaXMucmVnaXN0ZXJGaWx0ZXJGb3JGZWF0dXJlcygpO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgaW5pdCgpIHtcbiAgICB0aGlzLmFwcFN0YXRlLmN1cnJlbnRBcHBsaWNhdGlvbkNvbmZpZy5zdWJzY3JpYmUoY29uZmlnID0+IHtcbiAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29uZmlnID0geyAuLi5ERUZBVUxUX0NPTkZJRywgLi4uY29uZmlnIH0gYXMgQ29ja3BpdENvbmZpZztcbiAgICAgICAgdGhpcy5zZXRSb290Tm9kZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVDb25maWcoY29uZmlnKSB7XG4gICAgdGhpcy5jdXJyZW50Q29uZmlnID0gY29uZmlnO1xuICAgIGF3YWl0IHRoaXMuc3RvcmVBcHBsaWNhdGlvbkNvbmZpZyh0aGlzLmN1cnJlbnRDb25maWcpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLm9wdGlvbnNTZXJ2aWNlLmhpZGVOYXZpZ2F0b3IgPSB0aGlzLmN1cnJlbnRDb25maWcuaGlkZU5hdmlnYXRvcjtcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UucmVmcmVzaCgpO1xuICAgIHRoaXMuc2VhcmNoU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICBhc3luYyBzZXRSb290Tm9kZXMoKSB7XG4gICAgdGhpcy5hZGROb2Rlc1RvRmFjdG9yaWVzKCk7XG4gICAgdGhpcy5ub2Rlcy5sZW5ndGggPSAwO1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzLmN1cnJlbnRDb25maWcucm9vdE5vZGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5kZXRhaWwobm9kZS5pZCk7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgdGhpcy5ub2Rlcy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmNyZWF0ZUFzc2V0Tm9kZSh7XG4gICAgICAgICAgICAgIG1vOiBkYXRhLFxuICAgICAgICAgICAgICBoaWRlRGV2aWNlczogbm9kZS5oaWRlRGV2aWNlcyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6IGlzVW5kZWZpbmVkKHRoaXMubW9kdWxlQ29uZmlnPy5yb290Tm9kZVByaW9yaXR5KVxuICAgICAgICAgICAgICAgID8gdGhpcy5ERUZBVUxUX05PREVfUFJJT1JJVFlcbiAgICAgICAgICAgICAgICA6IHRoaXMubW9kdWxlQ29uZmlnLnJvb3ROb2RlUHJpb3JpdHlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGdldEFwcERhc2hib2FyZE5hbWUoKSB7XG4gICAgcmV0dXJuIGAke0RFRkFVTFRfSE9NRV9EQVNIQk9BUkRfTkFNRS5zdWJzdHJpbmcoMCwgREVGQVVMVF9IT01FX0RBU0hCT0FSRF9OQU1FLmxlbmd0aCAtIDEpfV8ke1xuICAgICAgdGhpcy5hcHBTdGF0ZS5zdGF0ZS5hcHAuaWRcbiAgICB9YDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3RvcmVBcHBsaWNhdGlvbkNvbmZpZyhjb25maWc6IENvY2twaXRDb25maWcpIHtcbiAgICBhd2FpdCB0aGlzLmFwcFN0YXRlLnVwZGF0ZUN1cnJlbnRBcHBsaWNhdGlvbkNvbmZpZzxDb2NrcGl0Q29uZmlnPihjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGROb2Rlc1RvRmFjdG9yaWVzKCkge1xuICAgIGNvbnN0IG5vZGVJbkZhY3RvcmllcyA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5mYWN0b3JpZXMuZmluZChcbiAgICAgIGZhdGNvcnkgPT4gZmF0Y29yeSA9PT0gdGhpcy5uYXZpZ2F0aW9uRmFjdG9yeVxuICAgICk7XG4gICAgaWYgKCFub2RlSW5GYWN0b3JpZXMpIHtcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5mYWN0b3JpZXMucHVzaCh0aGlzLm5hdmlnYXRpb25GYWN0b3J5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRmlsdGVyRm9yRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLml0ZW1zJCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5pdGVtcyQucGlwZShcbiAgICAgIG1hcChub2RlcyA9PiB0aGlzLnNldEhpZGRlbkF0dHJMb2NrKG5vZGVzKSksXG4gICAgICBtYXAobm9kZXMgPT4gdGhpcy5maWx0ZXJOYXZpZ2F0b3JOb2RlKG5vZGVzKSlcbiAgICApO1xuICAgIHRoaXMudGFic1NlcnZpY2UuaXRlbXMkID0gdGhpcy50YWJzU2VydmljZS5pdGVtcyQucGlwZShtYXAodGFicyA9PiB0aGlzLmZpbHRlclRhYnModGFicykpKTtcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2UuaXRlbXMkID0gdGhpcy5zZWFyY2hTZXJ2aWNlLml0ZW1zJC5waXBlKFxuICAgICAgbWFwKHNlYXJjaCA9PiAodGhpcy5jdXJyZW50Q29uZmlnLmZlYXR1cmVzLnNlYXJjaCA/IHNlYXJjaCA6IFtdKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRIaWRkZW5BdHRyTG9jayhub2Rlcykge1xuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlID0gbm9kZS5maW5kKHN0YXJ0Q2FzZShrZXkpLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5wZXJtaXNzaW9ucy5oYXNSb2xlKFBlcm1pc3Npb25zLlJPTEVfQVBQTElDQVRJT05fTUFOQUdFTUVOVF9BRE1JTikgJiZcbiAgICAgICAgICAgIGNoaWxkTm9kZS5sb2NrSGlkZGVuQXR0ciA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBjaGlsZE5vZGUuaGlkZGVuID09PSB0cnVlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjaGlsZE5vZGUubG9ja0hpZGRlbkF0dHIgPSBjaGlsZE5vZGUuaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJUYWJzKHRhYnM6IFRhYltdKSB7XG4gICAgcmV0dXJuIHRhYnMuZmlsdGVyKHRhYiA9PiAhdGhpcy5leGNsdWRlZEZlYXR1cmVLZXlzLnNvbWUoa2V5ID0+IHRhYi5mZWF0dXJlSWQgPT09IGtleSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJOYXZpZ2F0b3JOb2RlKG5vZGVzOiBOYXZpZ2F0b3JOb2RlW10pIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudENvbmZpZykge1xuICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH1cbiAgICBjb25zdCBkaXNhYmxlZEZlYXR1cmVzID0gdGhpcy5leGNsdWRlZEZlYXR1cmVLZXlzO1xuICAgIGNvbnN0IGZpbHRlcmVkTm9kZXMgPSBub2Rlcy5maWx0ZXIoXG4gICAgICBub2RlID0+ICFkaXNhYmxlZEZlYXR1cmVzLnNvbWUoa2V5ID0+IG5vZGUuZmVhdHVyZUlkID09PSBrZXkpXG4gICAgKTtcblxuICAgIHRoaXMuc2hvd0FsbENoaWxkcmVuTm9kZXMobm9kZXMpO1xuICAgIHRoaXMuaGlkZUNoaWxkcmVuTm9kZXNUaGF0QXJlRGlzYWJsZWQobm9kZXMsIGRpc2FibGVkRmVhdHVyZXMpO1xuICAgIHJldHVybiBmaWx0ZXJlZE5vZGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlQ2hpbGRyZW5Ob2Rlc1RoYXRBcmVEaXNhYmxlZChub2RlczogTmF2aWdhdG9yTm9kZVtdLCBkaXNhYmxlZEZlYXR1cmVzOiBzdHJpbmdbXSkge1xuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PlxuICAgICAgZGlzYWJsZWRGZWF0dXJlcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IG5vZGUuZmluZChrZXksICdmZWF0dXJlSWQnKTtcbiAgICAgICAgaWYgKGNoaWxkTm9kZSkge1xuICAgICAgICAgIGNoaWxkTm9kZS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNob3dBbGxDaGlsZHJlbk5vZGVzKG5vZGVzOiBOYXZpZ2F0b3JOb2RlW10pIHtcbiAgICBub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5jdXJyZW50Q29uZmlnLmZlYXR1cmVzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IG5vZGUuZmluZChzdGFydENhc2Uoa2V5KS50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICBpZiAoY2hpbGROb2RlKSB7XG4gICAgICAgICAgaWYgKGNoaWxkTm9kZS5sb2NrSGlkZGVuQXR0ciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNoaWxkTm9kZS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvY2twaXQtY29uZmlnL2NvY2twaXQtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsZUFBZSxFQUdmLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsV0FBVyxFQUNYLGFBQWEsRUFFYixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN2QixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQWlCLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUtwRyxNQUFNLE9BQU8sb0JBQW9CO0lBZS9CLFlBQ1UsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsUUFBeUIsRUFDekIsY0FBOEIsRUFDOUIsV0FBd0IsRUFDbUIsWUFBa0M7UUFSN0UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsbUJBQWMsR0FBZCxjQUFj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QUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBRTFELElBQUksU0FBUyxFQUFFO29CQUNiLElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxJQUFJLEVBQUU7d0JBQ3JDLE9BQU87cUJBQ1I7b0JBRUQsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7aUJBQzFCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2lIQXpLVSxvQkFBb0Isa1FBd0JULHNCQUFzQjtxSEF4QmpDLG9CQUFvQixjQUZuQixNQUFNOzJGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXlCSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludmVudG9yeVNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIEV4dGVuc2lvbkZhY3RvcnksXG4gIE5hdmlnYXRvck5vZGUsXG4gIE5hdmlnYXRvclNlcnZpY2UsXG4gIE9wdGlvbnNTZXJ2aWNlLFxuICBQZXJtaXNzaW9ucyxcbiAgU2VhcmNoU2VydmljZSxcbiAgVGFiLFxuICBUYWJzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEFzc2V0TmF2aWdhdG9yQ29uZmlnLFxuICBBc3NldE5vZGVTZXJ2aWNlLFxuICBBU1NFVF9OQVZJR0FUT1JfQ09ORklHXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXNzZXRzLW5hdmlnYXRvcic7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgc3RhcnRDYXNlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvY2twaXRDb25maWcsIERFRkFVTFRfQ09ORklHLCBERUZBVUxUX0hPTUVfREFTSEJPQVJEX05BTUUgfSBmcm9tICcuL2NvY2twaXQtY29uZmlnLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29ja3BpdENvbmZpZ1NlcnZpY2Uge1xuICBjdXJyZW50Q29uZmlnOiBDb2NrcGl0Q29uZmlnID0gREVGQVVMVF9DT05GSUc7XG4gIG5vZGVzOiBOYXZpZ2F0b3JOb2RlW10gPSBbXTtcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRmFjdG9yeTogRXh0ZW5zaW9uRmFjdG9yeTxOYXZpZ2F0b3JOb2RlPiA9IHtcbiAgICBnZXQ6ICgpID0+IHRoaXMubm9kZXNcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTk9ERV9QUklPUklUWSA9IDIwMDA7XG5cbiAgZ2V0IGV4Y2x1ZGVkRmVhdHVyZUtleXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY3VycmVudENvbmZpZy5mZWF0dXJlcykuZmlsdGVyKFxuICAgICAga2V5ID0+ICF0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXNba2V5XVxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWJzU2VydmljZTogVGFic1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXNzZXROb2RlU2VydmljZTogQXNzZXROb2RlU2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVNTRVRfTkFWSUdBVE9SX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogQXNzZXROYXZpZ2F0b3JDb25maWdcbiAgKSB7XG4gICAgdGhpcy5yZWdpc3RlckZpbHRlckZvckZlYXR1cmVzKCk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNTZXJ2aWNlLmhpZGVOYXZpZ2F0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jdXJyZW50Q29uZmlnLmhpZGVOYXZpZ2F0b3IgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmhpZGVOYXZpZ2F0b3I7XG4gICAgfVxuICAgIHRoaXMuYXBwU3RhdGUuY3VycmVudEFwcGxpY2F0aW9uQ29uZmlnLnN1YnNjcmliZShjb25maWcgPT4ge1xuICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICB0aGlzLmN1cnJlbnRDb25maWcgPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5jb25maWcgfSBhcyBDb2NrcGl0Q29uZmlnO1xuICAgICAgICB0aGlzLnNldFJvb3ROb2RlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUNvbmZpZyhjb25maWcpIHtcbiAgICB0aGlzLmN1cnJlbnRDb25maWcgPSBjb25maWc7XG4gICAgYXdhaXQgdGhpcy5zdG9yZUFwcGxpY2F0aW9uQ29uZmlnKHRoaXMuY3VycmVudENvbmZpZyk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMub3B0aW9uc1NlcnZpY2UuaGlkZU5hdmlnYXRvciA9IHRoaXMuY3VycmVudENvbmZpZy5oaWRlTmF2aWdhdG9yO1xuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5yZWZyZXNoKCk7XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIGFzeW5jIHNldFJvb3ROb2RlcygpIHtcbiAgICB0aGlzLmFkZE5vZGVzVG9GYWN0b3JpZXMoKTtcbiAgICB0aGlzLm5vZGVzLmxlbmd0aCA9IDA7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMuY3VycmVudENvbmZpZy5yb290Tm9kZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRldGFpbChub2RlLmlkKTtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICB0aGlzLm5vZGVzLnB1c2goXG4gICAgICAgICAgICB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuY3JlYXRlQXNzZXROb2RlKHtcbiAgICAgICAgICAgICAgbW86IGRhdGEsXG4gICAgICAgICAgICAgIGhpZGVEZXZpY2VzOiBub2RlLmhpZGVEZXZpY2VzLFxuICAgICAgICAgICAgICBwcmlvcml0eTogaXNVbmRlZmluZWQodGhpcy5tb2R1bGVDb25maWc/LnJvb3ROb2RlUHJpb3JpdHkpXG4gICAgICAgICAgICAgICAgPyB0aGlzLkRFRkFVTFRfTk9ERV9QUklPUklUWVxuICAgICAgICAgICAgICAgIDogdGhpcy5tb2R1bGVDb25maWcucm9vdE5vZGVQcmlvcml0eVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgZ2V0QXBwRGFzaGJvYXJkTmFtZSgpIHtcbiAgICByZXR1cm4gYCR7REVGQVVMVF9IT01FX0RBU0hCT0FSRF9OQU1FLnN1YnN0cmluZygwLCBERUZBVUxUX0hPTUVfREFTSEJPQVJEX05BTUUubGVuZ3RoIC0gMSl9XyR7XG4gICAgICB0aGlzLmFwcFN0YXRlLnN0YXRlLmFwcC5pZFxuICAgIH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzdG9yZUFwcGxpY2F0aW9uQ29uZmlnKGNvbmZpZzogQ29ja3BpdENvbmZpZykge1xuICAgIGF3YWl0IHRoaXMuYXBwU3RhdGUudXBkYXRlQ3VycmVudEFwcGxpY2F0aW9uQ29uZmlnPENvY2twaXRDb25maWc+KGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGFkZE5vZGVzVG9GYWN0b3JpZXMoKSB7XG4gICAgY29uc3Qgbm9kZUluRmFjdG9yaWVzID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmZhY3Rvcmllcy5maW5kKFxuICAgICAgZmF0Y29yeSA9PiBmYXRjb3J5ID09PSB0aGlzLm5hdmlnYXRpb25GYWN0b3J5XG4gICAgKTtcbiAgICBpZiAoIW5vZGVJbkZhY3Rvcmllcykge1xuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmZhY3Rvcmllcy5wdXNoKHRoaXMubmF2aWdhdGlvbkZhY3RvcnkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJGaWx0ZXJGb3JGZWF0dXJlcygpIHtcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaXRlbXMkID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLml0ZW1zJC5waXBlKFxuICAgICAgbWFwKG5vZGVzID0+IHRoaXMuc2V0SGlkZGVuQXR0ckxvY2sobm9kZXMpKSxcbiAgICAgIG1hcChub2RlcyA9PiB0aGlzLmZpbHRlck5hdmlnYXRvck5vZGUobm9kZXMpKVxuICAgICk7XG4gICAgdGhpcy50YWJzU2VydmljZS5pdGVtcyQgPSB0aGlzLnRhYnNTZXJ2aWNlLml0ZW1zJC5waXBlKG1hcCh0YWJzID0+IHRoaXMuZmlsdGVyVGFicyh0YWJzKSkpO1xuICAgIHRoaXMuc2VhcmNoU2VydmljZS5pdGVtcyQgPSB0aGlzLnNlYXJjaFNlcnZpY2UuaXRlbXMkLnBpcGUoXG4gICAgICBtYXAoc2VhcmNoID0+ICh0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXMuc2VhcmNoID8gc2VhcmNoIDogW10pKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldEhpZGRlbkF0dHJMb2NrKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuY3VycmVudENvbmZpZy5mZWF0dXJlcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGUgPSBub2RlLmZpbmQoc3RhcnRDYXNlKGtleSkudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLnBlcm1pc3Npb25zLmhhc1JvbGUoUGVybWlzc2lvbnMuUk9MRV9BUFBMSUNBVElPTl9NQU5BR0VNRU5UX0FETUlOKSAmJlxuICAgICAgICAgICAgY2hpbGROb2RlLmxvY2tIaWRkZW5BdHRyID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIGNoaWxkTm9kZS5oaWRkZW4gPT09IHRydWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNoaWxkTm9kZS5sb2NrSGlkZGVuQXR0ciA9IGNoaWxkTm9kZS5oaWRkZW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlclRhYnModGFiczogVGFiW10pIHtcbiAgICByZXR1cm4gdGFicy5maWx0ZXIodGFiID0+ICF0aGlzLmV4Y2x1ZGVkRmVhdHVyZUtleXMuc29tZShrZXkgPT4gdGFiLmZlYXR1cmVJZCA9PT0ga2V5KSk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlck5hdmlnYXRvck5vZGUobm9kZXM6IE5hdmlnYXRvck5vZGVbXSkge1xuICAgIGlmICghdGhpcy5jdXJyZW50Q29uZmlnKSB7XG4gICAgICByZXR1cm4gbm9kZXM7XG4gICAgfVxuICAgIGNvbnN0IGRpc2FibGVkRmVhdHVyZXMgPSB0aGlzLmV4Y2x1ZGVkRmVhdHVyZUtleXM7XG4gICAgY29uc3QgZmlsdGVyZWROb2RlcyA9IG5vZGVzLmZpbHRlcihcbiAgICAgIG5vZGUgPT4gIWRpc2FibGVkRmVhdHVyZXMuc29tZShrZXkgPT4gbm9kZS5mZWF0dXJlSWQgPT09IGtleSlcbiAgICApO1xuXG4gICAgdGhpcy5zaG93QWxsQ2hpbGRyZW5Ob2Rlcyhub2Rlcyk7XG4gICAgdGhpcy5oaWRlQ2hpbGRyZW5Ob2Rlc1RoYXRBcmVEaXNhYmxlZChub2RlcywgZGlzYWJsZWRGZWF0dXJlcyk7XG4gICAgcmV0dXJuIGZpbHRlcmVkTm9kZXM7XG4gIH1cblxuICBwcml2YXRlIGhpZGVDaGlsZHJlbk5vZGVzVGhhdEFyZURpc2FibGVkKG5vZGVzOiBOYXZpZ2F0b3JOb2RlW10sIGRpc2FibGVkRmVhdHVyZXM6IHN0cmluZ1tdKSB7XG4gICAgbm9kZXMuZm9yRWFjaChub2RlID0+XG4gICAgICBkaXNhYmxlZEZlYXR1cmVzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlID0gbm9kZS5maW5kKGtleSwgJ2ZlYXR1cmVJZCcpO1xuICAgICAgICBpZiAoY2hpbGROb2RlKSB7XG4gICAgICAgICAgY2hpbGROb2RlLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0FsbENoaWxkcmVuTm9kZXMobm9kZXM6IE5hdmlnYXRvck5vZGVbXSkge1xuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlID0gbm9kZS5maW5kKHN0YXJ0Q2FzZShrZXkpLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICBpZiAoY2hpbGROb2RlLmxvY2tIaWRkZW5BdHRyID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2hpbGROb2RlLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -119,6 +119,7 @@ export class ContextDashboardComponent {
119
119
  async copyDashboard() {
120
120
  const viewContext = this.route.parent.snapshot.data?.context;
121
121
  this.contextDashboardService.copyClipboard = {
122
+ dashboardId: this.mo.id,
122
123
  dashboard: cloneDeep(this.mo.c8y_Dashboard),
123
124
  context: cloneDeep({
124
125
  context: viewContext,
@@ -458,6 +459,9 @@ export class ContextDashboardComponent {
458
459
  this.canDelete = false;
459
460
  }
460
461
  canCopyDashboard() {
462
+ if (!this.contextDashboardService.hasPermissionsToCopyDashboard()) {
463
+ return false;
464
+ }
461
465
  const allDashboardChildrenAreValid = every(this.mo.c8y_Dashboard.children, child => {
462
466
  const config = child.config || {};
463
467
  const dataPoints = config.datapoints || [];
@@ -508,4 +512,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
508
512
  type: HostBinding,
509
513
  args: ['class']
510
514
  }] } });
511
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixZQUFZLEVBR1osb0JBQW9CLEVBSXBCLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsWUFBWSxFQUNaLE1BQU0sRUFHUCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQ0wsd0JBQXdCLEVBSXhCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxF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LENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FDMUUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyw0QkFBNEIsQ0FBQztJQUN0QyxDQUFDOztzSEExZ0JVLHlCQUF5QixrS0E4QzFCLHdCQUF3QjswR0E5Q3ZCLHlCQUF5QixtakJDbkR0QywwdERBa0RBOzJGRENhLHlCQUF5QjtrQkFWckMsU0FBUzsrQkFDRSx1QkFBdUIsUUFFM0I7d0JBQ0osS0FBSyxFQUFFOztLQUVOO3dCQUNELEtBQUssRUFBRSw4QkFBOEI7cUJBQ3RDOzswQkFnREUsTUFBTTsyQkFBQyx3QkFBd0I7NFBBNUNsQyxJQUFJO3NCQURILEtBQUs7Z0JBR04sZUFBZTtzQkFEZCxLQUFLO2dCQUdOLE9BQU87c0JBRE4sS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLGNBQWM7c0JBRGIsS0FBSztnQkFHTixPQUFPO3NCQUROLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBR04scUJBQXFCO3NCQURwQixLQUFLO2dCQU1OLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLEtBQUs7c0JBREosV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBY3Rpb25CYXJTZXJ2aWNlLFxuICBBbGVydFNlcnZpY2UsXG4gIEJyZWFkY3J1bWJJdGVtLFxuICBEYXNoYm9hcmRDaGFuZ2UsXG4gIERhc2hib2FyZENoaWxkQ2hhbmdlLFxuICBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCxcbiAgRGFzaGJvYXJkU2V0dGluZ3MsXG4gIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBNb2RhbFNlcnZpY2UsXG4gIFN0YXR1cyxcbiAgV2lkZ2V0LFxuICBXaWRnZXRDaGFuZ2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGV2ZXJ5LCBmaW5kSW5kZXgsIGtlYmFiQ2FzZSwga2V5QnksIG9taXQsIHNvbWUsIHZhbHVlcyB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDT05URVhUX0RBU0hCT0FSRF9DT05GSUcsXG4gIENvbnRleHREYXNoYm9hcmQsXG4gIENvbnRleHREYXNoYm9hcmRDb25maWcsXG4gIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0LFxuICBQUk9EVUNUX0VYUEVSSUVOQ0UsXG4gIFdJREdFVF9IRUFERVJfQ0xBU1NFU1xufSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLm1vZGVsJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZERldGFpbENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0Q29uZmlnQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtY29uZmlnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQuc2VydmljZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLyoqXG4gKiBUaGUgY29udGV4dCBkYXNoYm9hcmQgaXMgYSBkYXNoYm9hcmQgd2hpY2ggcmVzb2x2ZXMgaXQgZGF0YSBmcm9tIHRoZSBjdXJyZW50IGNvbnRleHQgKGRldmljZSBvciBncm91cClcbiAqIGl0IGlzIGRpc3BsYXllZCBvbi4gSXQgdXN1YWxseSB1c2VzIHRoZSByb3V0ZS5kYXRhIGZvciBpdCwgYnV0IHlvdSBjYW4gcGFzc1xuICogYSBkaWZmZXJlbnQgbWFuYWdlZE9iamVjdCB0byB0aGUgW21vXSBpbnB1dCBwYXJhbWV0ZXIgdG8gY2hhbmdlIHRoYXQgYmVoYXZpb3IuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jb250ZXh0LWRhc2hib2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZXh0LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICBzdHlsZTogYFxuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgYCxcbiAgICBjbGFzczogJ2Rhc2hib2FyZCBjOHktZ3JpZC1kYXNoYm9hcmQnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dERhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBjaGlsZHJlbkNsYXNzZXMgPSAnJztcbiAgQElucHV0KClcbiAgY29udGV4dDogYW55O1xuICBASW5wdXQoKVxuICBzZXRUaXRsZSA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBkZWZhdWx0V2lkZ2V0czogV2lkZ2V0W10gPSBbXTtcbiAgQElucHV0KClcbiAgY2FuQ29weSA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGNhbkRlbGV0ZSA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGlzTG9hZGluZyA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGJyZWFkY3J1bWJTZXR0aW5nczogQnJlYWRjcnVtYkl0ZW07XG4gIEBJbnB1dCgpXG4gIHNob3dDb250ZXh0SGVscEJ1dHRvbiA9IHRydWU7XG4gIC8qKlxuICAgKiBIaWRlcyBkYXNoYm9hcmQgYXZhaWxhYmlsaXR5IHNlbGVjdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGhpZGVBdmFpbGFiaWxpdHkgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgY2xhc3MgPSAnJztcblxuICB3aWRnZXRzOiBXaWRnZXRbXSA9IFtdO1xuICBtbzogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q7XG4gIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgdGl0bGU6IHN0cmluZztcbiAgaXNDb3B5RGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBkYXRhU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGNvbnRleHREYXNoYm9hcmRTZXJ2aWNlOiBDb250ZXh0RGFzaGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBJbmplY3QoQ09OVEVYVF9EQVNIQk9BUkRfQ09ORklHKSBwdWJsaWMgbW9kdWxlQ29uZmlnOiBDb250ZXh0RGFzaGJvYXJkQ29uZmlnLFxuICAgIHByaXZhdGUgd2lkZ2V0U2VydmljZTogV2lkZ2V0U2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWw6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvbkJhclNlcnZpY2U6IEFjdGlvbkJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLm5hbWUpIHtcbiAgICAgIHRoaXMubG9hZENvbnRleHREYXNoYm9hcmQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sb2FkTmFtZWREYXNoYm9hcmQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBjdXJyZW50IGNvbnRleHQgdG8gdGhlIHdpZGdldFxuICAgKiBAcGFyYW0gd2lkZ2V0IFRoZSB3aWRnZXQgdG8gYXBwbHkgdGhlIGNvbnRleHQgdG8uXG4gICAqL1xuICBhcHBseURldmljZVRhcmdldCh3aWRnZXQpIHtcbiAgICBpZiAod2lkZ2V0LmNvbmZpZy5kZXZpY2UpIHtcbiAgICAgIHdpZGdldC5jb25maWcuZGV2aWNlID0geyBpZDogdGhpcy5jb250ZXh0LmlkLCBuYW1lOiB0aGlzLmNvbnRleHQubmFtZSB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSByb3V0ZSBsaXN0ZW5lci5cbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFTdWIpIHtcbiAgICAgIHRoaXMuZGF0YVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyB0aGUgZGFzaGJvYXJkIHdpZGdldHMgdG8gdGhlIGRlZmF1bHQgd2lkZ2V0cy5cbiAgICovXG4gIGFzeW5jIHJlc3RvcmUoKSB7XG4gICAgY29uc3QgbWVzZyA9IGdldHRleHQoXG4gICAgICAnWW91IGFyZSBhYm91dCB0byByZXNldCB0aGlzIGRhc2hib2FyZC4gQWxsIGNoYW5nZXMgdG8gdGhlIGRhc2hib2FyZCB3aWxsIGdldCBsb3N0IGFuZCBjYW5ub3QgYmUgcmVjb3ZlcmVkLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPydcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShnZXR0ZXh0KCdSZXNldCBkYXNoYm9hcmQnKSwgbWVzZywgU3RhdHVzLldBUk5JTkcsIHtcbiAgICAgICAgb2s6IGdldHRleHQoJ1Jlc2V0YGRhc2hib2FyZGAnKSxcbiAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMubW8uYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiA9IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UubWFwV2lkZ2V0cyh0aGlzLmRlZmF1bHRXaWRnZXRzKTtcbiAgICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UudXBkYXRlKHRoaXMubW8pO1xuICAgICAgYXdhaXQgdGhpcy5vbkxvYWQoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYWxsIGRhc2hib2FyZHMgY2hpbGRyZW4ncy4gVXNlZnVsIGZvciBwb3NpdGlvbiBjaGFuZ2VzIG9uIHRoZSBkYXNoYm9hcmQuXG4gICAqIEBwYXJhbSBjaGlsZCBUaGUgY2hpbGQgdG8gY2hhbmdlLlxuICAgKi9cbiAgYXN5bmMgdXBkYXRlRGFzaGJvYXJkQ2hpbGRyZW4oY2hpbGQ6IERhc2hib2FyZENoaWxkQ2hhbmdlIHwgRGFzaGJvYXJkQ2hhbmdlKSB7XG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gY2hpbGQ7XG4gICAgY29uc3QgZGFzaGJvYXJkTU86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0ID0gdGhpcy5tbztcbiAgICBjb25zdCBtYXBwZWRDaGlsZHJlbjogeyBbaWQ6IHN0cmluZ106IFdpZGdldCB9ID0ga2V5QnkoXG4gICAgICBjaGlsZHJlbi5tYXAoYyA9PiB0aGlzLmNvbXBvbmVudFRvV2lkZ2V0KGMpKSxcbiAgICAgICdpZCdcbiAgICApO1xuICAgIGRhc2hib2FyZE1PLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4gPSBtYXBwZWRDaGlsZHJlbjtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS51cGRhdGUoZGFzaGJvYXJkTU8pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcGllcyB0aGUgZGFzaGJvYXJkIGFuZCBjdXJyZW50IGNvbnRleHQgdG8gYSBjbGlwYm9hcmQuXG4gICAqL1xuICBhc3luYyBjb3B5RGFzaGJvYXJkKCkge1xuICAgIGNvbnN0IHZpZXdDb250ZXh0ID0gdGhpcy5yb3V0ZS5wYXJlbnQuc25hcHNob3QuZGF0YT8uY29udGV4dDtcblxuICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY29weUNsaXBib2FyZCA9IHtcbiAgICAgIGRhc2hib2FyZDogY2xvbmVEZWVwKHRoaXMubW8uYzh5X0Rhc2hib2FyZCksXG4gICAgICBjb250ZXh0OiBjbG9uZURlZXAoe1xuICAgICAgICBjb250ZXh0OiB2aWV3Q29udGV4dCxcbiAgICAgICAgY29udGV4dERhdGE6IHRoaXMuY29udGV4dFxuICAgICAgfSlcbiAgICB9O1xuXG4gICAgaWYgKHZpZXdDb250ZXh0KSB7XG4gICAgICBjb25zdCBjdHggPSB2aWV3Q29udGV4dC5zcGxpdCgnLycpLnNoaWZ0KCk7XG4gICAgICBjb25zdCBtc2cgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgJ0Rhc2hib2FyZCBjb3BpZWQuIE5hdmlnYXRlIHRvIHRoZSBkZXNpcmVkIHt7IGN0eCB9fSBhbmQgc2VsZWN0IFwiUGFzdGUgZGFzaGJvYXJkXCInLFxuICAgICAgICB7IGN0eCB9XG4gICAgICApO1xuICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1zZyk7XG4gICAgfVxuICAgIHRoaXMuYWN0aW9uQmFyU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBjb21wbGV0ZSBkYXNoYm9hcmQgYW5kIG5hdmlnYXRlIGF3YXkuXG4gICAqL1xuICBhc3luYyBkZWxldGVEYXNoYm9hcmQoKSB7XG4gICAgYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5kZWxldGUodGhpcy5tbyk7XG4gICAgaWYgKHRoaXMucm91dGUucGFyZW50KSB7XG4gICAgICBjb25zdCByb3V0ZSA9IHRoaXMucm91dGUucGFyZW50LnNuYXBzaG90LnVybC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LnBhdGgpLmpvaW4oJy8nKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpO1xuICAgIH1cbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuRVZFTlRTLkRBU0hCT0FSRFMsIHtcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT01QT05FTlRTLkRFTEVURV9EQVNIQk9BUkQsXG4gICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQUNUSU9OUy5ERUxFVEUsXG4gICAgICBuYW1lOiB0aGlzLmRhc2hib2FyZC5uYW1lLFxuICAgICAgaWQ6IHRoaXMubW8uaWQsXG4gICAgICBkYXNoYm9hcmRUeXBlOiB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlID8gdGhpcy5kYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIDogbnVsbCxcbiAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZ2V0Q29udGV4dEZvckdTKHRoaXMuY29udGV4dClcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgY3VycmVudCBkYXNoYm9hcmRcbiAgICovXG4gIGFzeW5jIGVkaXREYXNoYm9hcmQoKSB7XG4gICAgY29uc3QgaXNSZXBvcnQgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzUmVwb3J0KHRoaXMubW8pO1xuICAgIGlmIChpc1JlcG9ydCkge1xuICAgICAgY29uc3QgeyBuYW1lLCBpY29uLCBwcmlvcml0eSwgYzh5X0lzTmF2aWdhdG9yTm9kZSwgZGVzY3JpcHRpb24gfSA9IHRoaXMuY29udGV4dDtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5kYXNoYm9hcmQsIHsgbmFtZSwgaWNvbiwgcHJpb3JpdHksIGM4eV9Jc05hdmlnYXRvck5vZGUsIGRlc2NyaXB0aW9uIH0pO1xuICAgIH1cbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgICBkYXNoYm9hcmQ6IHRoaXMuZGFzaGJvYXJkLFxuICAgICAgZGV2aWNlVHlwZTogdGhpcy5jb250ZXh0LnR5cGUsXG4gICAgICBpc0RldmljZVR5cGU6IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNEZXZpY2VUeXBlKHRoaXMubW8pLFxuICAgICAgaXNOYW1lZERhc2hib2FyZDogdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc05hbWVkKHRoaXMubW8pLFxuICAgICAgaGlkZUF2YWlsYWJpbGl0eTogdGhpcy5oaWRlQXZhaWxhYmlsaXR5LFxuICAgICAgaXNSZXBvcnRcbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5ic01vZGFsLnNob3coRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50LCB7XG4gICAgICBjbGFzczogJ21vZGFsLWxnJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpbml0aWFsU3RhdGUsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlXG4gICAgfSkuY29udGVudCBhcyBEYXNoYm9hcmREZXRhaWxDb21wb25lbnQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhc2hib2FyZE1PID0gY2xvbmVEZWVwKHRoaXMubW8pO1xuICAgICAgY29uc3QgY2ZnID0gYXdhaXQgbW9kYWwucmVzdWx0O1xuICAgICAgaWYgKGlzUmVwb3J0KSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgaWNvbiwgYzh5X0lzTmF2aWdhdG9yTm9kZSwgcHJpb3JpdHksIGRlc2NyaXB0aW9uLCAuLi5kYXNoYm9hcmRDZmcgfSA9IGNmZztcbiAgICAgICAgZGFzaGJvYXJkTU8uYzh5X0Rhc2hib2FyZCA9IGRhc2hib2FyZENmZztcbiAgICAgICAgdGhpcy51cGRhdGVSZXBvcnQoe1xuICAgICAgICAgIGlkOiB0aGlzLmNvbnRleHQuaWQsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBpY29uLFxuICAgICAgICAgIGM4eV9Jc05hdmlnYXRvck5vZGUsXG4gICAgICAgICAgcHJpb3JpdHksXG4gICAgICAgICAgZGVzY3JpcHRpb25cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXNoYm9hcmRNTy5jOHlfRGFzaGJvYXJkID0gY2ZnO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZShkYXNoYm9hcmRNTyk7XG4gICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnJlZnJlc2hUYWJzKGRhc2hib2FyZE1PKTtcbiAgICAgIHRoaXMub25Mb2FkKCk7XG4gICAgICBtb2RhbC5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIGdldCBpc0RldmljZVR5cGVEYXNoYm9hcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kYXNoYm9hcmQ/LmRldmljZVR5cGUgJiYgISF0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRWRpdHMgYSB3aWRnZXQgb24gdGhlIGRhc2hib2FyZC5cbiAgICogQHBhcmFtIGNoYW5nZSBUaGUgd2lkZ2V0IGNoYW5nZSBldmVudC5cbiAgICovXG4gIGFzeW5jIGVkaXRXaWRnZXQoY2hhbmdlOiBXaWRnZXRDaGFuZ2UpIHtcbiAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGNoYW5nZS5zb3VyY2U7XG4gICAgY29uc3QgY29tcG9uZW50ID0gYXdhaXQgdGhpcy53aWRnZXRTZXJ2aWNlLmdldFdpZGdldERlZmluaXRpb24oXG4gICAgICBjaGFuZ2Uud2lkZ2V0Lm5hbWUgfHwgY2hhbmdlLndpZGdldC5jb21wb25lbnRJZFxuICAgICk7XG4gICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgIHRoaXMuYWRkV2lkZ2V0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuYWRkV2lkZ2V0KHtcbiAgICAgIC4uLmNvbXBvbmVudCxcbiAgICAgIGRhdGE6IHsgLi4uY29tcG9uZW50LmRhdGEsIC4uLmNoYW5nZS53aWRnZXQsIF94OiB4LCBfeTogeSwgX3dpZHRoOiB3aWR0aCwgX2hlaWdodDogaGVpZ2h0IH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgd2lkZ2V0IHRvIHRoZSBkYXNoYm9hcmQuXG4gICAqIEBwYXJhbSBzZWxlY3RlZCBEZWZpbmUgYSBzZWxlY3RlZCBjb21wb25lbnQgdG8gc3dpdGNoIHRvIGVkaXQgbW9kZSBkaXJlY3RseS5cbiAgICovXG4gIGFzeW5jIGFkZFdpZGdldChzZWxlY3RlZD86IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKSB7XG4gICAgY29uc3QgcGFydGlhbENsb25lU2VsZWN0ZWQgPSBzZWxlY3RlZFxuICAgICAgPyB7XG4gICAgICAgICAgLi4uc2VsZWN0ZWQsXG4gICAgICAgICAgZGF0YTogY2xvbmVEZWVwKHNlbGVjdGVkLmRhdGEpXG4gICAgICAgIH1cbiAgICAgIDogc2VsZWN0ZWQ7XG5cbiAgICBjb25zdCBpbml0aWFsU3RhdGU6IFBhcnRpYWw8V2lkZ2V0Q29uZmlnQ29tcG9uZW50PiA9IHtcbiAgICAgIG1vOiB0aGlzLm1vLFxuICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LmM4eV9SZXBvcnQgPyB7fSA6IHRoaXMuY29udGV4dCxcbiAgICAgIHNlbGVjdGVkOiBwYXJ0aWFsQ2xvbmVTZWxlY3RlZFxuICAgIH07XG5cbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KFdpZGdldENvbmZpZ0NvbXBvbmVudCwge1xuICAgICAgY2xhc3M6ICdtb2RhbC1sZycsXG4gICAgICBhcmlhRGVzY3JpYmVkYnk6ICdtb2RhbC1ib2R5JyxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZVxuICAgIH0pLmNvbnRlbnQgYXMgV2lkZ2V0Q29uZmlnQ29tcG9uZW50O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5ld1dpZGdldCA9IGF3YWl0IG1vZGFsLnJlc3VsdDtcbiAgICAgIGlmICghdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMubW8uYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiA9IHt9O1xuICAgICAgfVxuICAgICAgdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuW25ld1dpZGdldC5pZF0gPSBuZXdXaWRnZXQ7XG4gICAgICB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZSh0aGlzLm1vKTtcbiAgICAgIG5ld1dpZGdldC5jbGFzc2VzID0gdGhpcy5tZXJnZVdpZGdldENsYXNzZXMobmV3V2lkZ2V0KTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlV2lkZ2V0KG5ld1dpZGdldCk7XG4gICAgICBtb2RhbC5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgd2lkZ2V0IG9yIGFkZHMgYSBuZXcgb25lIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgb25cbiAgICogdGhlIGRhc2hib2FyZC5cbiAgICogQHBhcmFtIHdpZGdldCBUaGUgbmV3IHdpZGdldFxuICAgKi9cbiAgYXN5bmMgdXBkYXRlV2lkZ2V0KHdpZGdldCkge1xuICAgIGNvbnN0IGluZGV4ID0gZmluZEluZGV4KHRoaXMud2lkZ2V0cywgeyBpZDogd2lkZ2V0LmlkIH0pO1xuICAgIGNvbnN0IGlzTmV3ID0gaW5kZXggPT09IC0xO1xuICAgIGNvbnN0IG1hcHBlZFdpZGdldCA9IGF3YWl0IHRoaXMud2lkZ2V0U2VydmljZS5tYXBMZWdhY3kod2lkZ2V0KTtcbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIHRoaXMud2lkZ2V0cy5wdXNoKG1hcHBlZFdpZGdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2lkZ2V0cy5zcGxpY2UoaW5kZXgsIDEsIG1hcHBlZFdpZGdldCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSB3aWRnZXQgYW5kIHJlYXJyYW5nZXMgdGhlIHJlbWFpbmluZyBvbmVzXG4gICAqIGlmIG5lY2Vzc2FyeS5cbiAgICogQHBhcmFtIGNoYW5nZSBUaGUgY2hhbmdlIGV2ZW50LlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlV2lkZ2V0KGNoYW5nZTogV2lkZ2V0Q2hhbmdlKSB7XG4gICAgY29uc3Qgd2lkZ2V0VGl0bGUgPSBjaGFuZ2Uud2lkZ2V0LnRpdGxlO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ1JlbW92ZSB3aWRnZXQnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAgICdZb3UgYXJlIGFib3V0IHRvIHJlbW92ZSB3aWRnZXQgXCJ7eyB3aWRnZXRUaXRsZSB9fVwiIGZyb20geW91ciBkYXNoYm9hcmQuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/J1xuICAgICAgICAgICksXG4gICAgICAgICAgeyB3aWRnZXRUaXRsZSB9XG4gICAgICAgICksXG4gICAgICAgIFN0YXR1cy5EQU5HRVIsXG4gICAgICAgIHtcbiAgICAgICAgICBvazogZ2V0dGV4dCgnUmVtb3ZlJyksXG4gICAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG9uIGNhbmNlbDogZG8gbm90aGluZ1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHdpZGdldCwgc291cmNlIH0gPSBjaGFuZ2U7XG4gICAgICBkZWxldGUgdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuW3dpZGdldC5pZF07XG4gICAgICBjb25zdCByZW1vdmVkID0gdGhpcy53aWRnZXRzLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IHdpZGdldC5pZCk7XG4gICAgICB0aGlzLndpZGdldHMuc3BsaWNlKHRoaXMud2lkZ2V0cy5pbmRleE9mKHJlbW92ZWQpLCAxKTtcblxuICAgICAgY29uc3QgeyBkYXNoYm9hcmQgfSA9IHNvdXJjZTtcbiAgICAgIGRhc2hib2FyZC5jaGlsZHJlbiA9IGRhc2hib2FyZC5jaGlsZHJlbi5maWx0ZXIoYyA9PiBjLmRhdGEuaWQgIT09IHdpZGdldC5pZCk7XG5cbiAgICAgIC8vIHVzaW5nIHNldFRpbWVvdXQgdG8gZ2l2ZSB0aGUgY29tcG9uZW50IHRoZSBjaGFuY2UgdG8gcmVtb3ZlIGl0LlxuICAgICAgY29uc3Qgc2xlZXAgPSB0aW1lb3V0ID0+IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCB0aW1lb3V0KSk7XG4gICAgICBhd2FpdCBzbGVlcCgwKTtcblxuICAgICAgY29uc3QgY2hpbGQgPSBuZXcgRGFzaGJvYXJkQ2hpbGRDaGFuZ2Uoc291cmNlKTtcbiAgICAgIGNoaWxkLmNvbGxhcHNlVXBBbGwoKTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlRGFzaGJvYXJkQ2hpbGRyZW4oY2hpbGQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIHdvcmthcm91bmQgdG8gZW5zdXJlIHRoYXQgdGhlIGRyYWdnZWQtZWxlbWVudFxuICAgKiAod2hpY2ggaXMgYXR0YWNoZWQgdG8gdGhlIGJvZHkpIGhhcyB0aGUgcmlnaHQgc3R5bGluZy5cbiAgICovXG4gIGFkZERhc2hib2FyZENsYXNzVG9Cb2R5KCkge1xuICAgIHRoaXMuY2xhc3Muc3BsaXQoJyAnKS5mb3JFYWNoKGNzc0NsYXNzID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgY3NzQ2xhc3MpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHRvIGVuc3VyZSB0aGF0IHRoZSBkcmFnZ2VkLWVsZW1lbnRcbiAgICogKHdoaWNoIGlzIGF0dGFjaGVkIHRvIHRoZSBib2R5KSBoYXMgdGhlIHJpZ2h0IHN0eWxpbmcuXG4gICAqL1xuICByZW1vdmVEYXNoYm9hcmRDbGFzc0Zyb21Cb2R5KCkge1xuICAgIHRoaXMuY2xhc3Muc3BsaXQoJyAnKS5mb3JFYWNoKGNzc0NsYXNzID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgY3NzQ2xhc3MpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdGhlIGRhc2hib2FyZCBzZXR0aW5ncyB0byBmcm96ZW4gb3IgdmljZSB2ZXJzYS5cbiAgICogQHBhcmFtIHNldHRpbmdzIFRoZSBjdXJyZW50IHNldHRpbmdzIG9mIHRoZSBkYXNoYm9hcmQuXG4gICAqL1xuICBhc3luYyB0b2dnbGVGcmVlemUoc2V0dGluZ3M6IERhc2hib2FyZFNldHRpbmdzKSB7XG4gICAgdGhpcy50b2dnbGVJc0Zyb3plbkZsYWcoc2V0dGluZ3MpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZSh0aGlzLm1vKTtcbiAgICAgIGlmICh0aGlzLmRhc2hib2FyZC5pc0Zyb3plbikge1xuICAgICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MoZ2V0dGV4dCgnWW91ciBkYXNoYm9hcmQgaXMgbG9ja2VkIG5vdy4nKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MoZ2V0dGV4dCgnWW91ciBkYXNoYm9hcmQgaXMgdW5sb2NrZWQgbm93LicpKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICAgIHRoaXMudG9nZ2xlSXNGcm96ZW5GbGFnKHNldHRpbmdzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVJlcG9ydChtbzogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4pIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmludmVudG9yeS51cGRhdGUobW8pO1xuICAgIHRoaXMuY29udGV4dCA9IHJlcy5kYXRhO1xuICAgIGlmICh0aGlzLnJvdXRlLnBhcmVudCkge1xuICAgICAgdGhpcy5yb3V0ZS5wYXJlbnQuc25hcHNob3QuZGF0YS5jb250ZXh0RGF0YSA9IHRoaXMuY29udGV4dDtcbiAgICB9XG4gICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS51cGRhdGVOYXZpZ2F0b3JJdGVtKHJlcy5kYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlSXNGcm96ZW5GbGFnKHNldHRpbmdzOiBEYXNoYm9hcmRTZXR0aW5ncykge1xuICAgIHNldHRpbmdzLmlzRnJvemVuID0gIXNldHRpbmdzLmlzRnJvemVuO1xuICAgIHRoaXMuZGFzaGJvYXJkLmlzRnJvemVuID0gc2V0dGluZ3MuaXNGcm96ZW47XG4gIH1cblxuICBwcml2YXRlIGxvYWRDb250ZXh0RGFzaGJvYXJkKCkge1xuICAgIHRoaXMuZGF0YVN1YiA9IHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoKHsgZGFzaGJvYXJkIH0pID0+IHtcbiAgICAgIHRoaXMuY29udGV4dCA9IHRoaXMucm91dGUucGFyZW50LnNuYXBzaG90LmRhdGEuY29udGV4dERhdGE7XG4gICAgICB0aGlzLnRpdGxlID0gdGhpcy5jb250ZXh0Py5uYW1lO1xuICAgICAgdGhpcy5tbyA9IGRhc2hib2FyZDtcbiAgICAgIHRoaXMuZGFzaGJvYXJkID0gdGhpcy5tby5jOHlfRGFzaGJvYXJkO1xuICAgICAgdGhpcy5vbkxvYWQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWROYW1lZERhc2hib2FyZCgpIHtcbiAgICB0aGlzLmRhdGFTdWIgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlXG4gICAgICAuZ2V0TmFtZWREYXNoYm9hcmRPckNyZWF0ZSh0aGlzLm5hbWUsIHRoaXMuZGVmYXVsdFdpZGdldHMsIHRoaXMuY29udGV4dClcbiAgICAgIC5zdWJzY3JpYmUobW8gPT4ge1xuICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmNvbnRleHQgfHwge307XG4gICAgICAgIHRoaXMubW8gPSBtbztcbiAgICAgICAgdGhpcy5kYXNoYm9hcmQgPSB0aGlzLm1vLmM4eV9EYXNoYm9hcmQ7XG4gICAgICAgIHRoaXMub25Mb2FkKHRydWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uTG9hZCh0cmFja0V4cGVyaWVuY2U/OiBib29sZWFuKSB7XG4gICAgY29uc3QgY2FuRWRpdERhc2hib2FyZCA9IGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY2FuRWRpdERhc2hib2FyZCh0aGlzLm1vKTtcbiAgICB0aGlzLmRpc2FibGVkID0gIWNhbkVkaXREYXNoYm9hcmQ7XG4gICAgdGhpcy5jYW5Db3B5ID1cbiAgICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNEZXZpY2VEYXNoYm9hcmQodGhpcy5tbykgfHxcbiAgICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNEZXZpY2VUeXBlKHRoaXMubW8pIHx8XG4gICAgICB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzR3JvdXBEYXNoYm9hcmQodGhpcy5tbyk7XG4gICAgY29uc3QgZGFzaGJvYXJkQ2hpbGRyZW4gPSBjbG9uZURlZXAodGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuKTtcbiAgICBjb25zdCBpc0RldmljZVR5cGUgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzRGV2aWNlVHlwZSh0aGlzLm1vKTtcbiAgICBjb25zdCBpc1JlcG9ydCA9IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNSZXBvcnQodGhpcy5tbyk7XG4gICAgY29uc3QgZGFzaGJvYXJkQ2xhc3NlcyA9IHtcbiAgICAgICdjOHktZ3JpZC1kYXNoYm9hcmQnOiB0cnVlLFxuICAgICAgZGFzaGJvYXJkOiB0cnVlLFxuICAgICAgLi4udGhpcy5kYXNoYm9hcmQuY2xhc3Nlc1xuICAgIH07XG4gICAgdGhpcy5pc0NvcHlEaXNhYmxlZCA9ICF0aGlzLmNhbkNvcHlEYXNoYm9hcmQoKTtcbiAgICB0aGlzLndpZGdldHMgPSBhd2FpdCBQcm9taXNlLmFsbDxXaWRnZXQ+KFxuICAgICAgdmFsdWVzKGRhc2hib2FyZENoaWxkcmVuKS5tYXAod2lkZ2V0ID0+IHtcbiAgICAgICAgd2lkZ2V0LmNsYXNzZXMgPSB0aGlzLm1lcmdlV2lkZ2V0Q2xhc3Nlcyh3aWRnZXQpO1xuICAgICAgICBpZiAoaXNEZXZpY2VUeXBlKSB7XG4gICAgICAgICAgdGhpcy5hcHBseURldmljZVRhcmdldCh3aWRnZXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0cmFja0V4cGVyaWVuY2UpIHtcbiAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KCdsb2FkV2lkZ2V0Jywge1xuICAgICAgICAgICAgd2lkZ2V0TmFtZTogd2lkZ2V0LmNvbXBvbmVudElkIHx8IHdpZGdldC5uYW1lXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0U2VydmljZS5tYXBMZWdhY3kod2lkZ2V0KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmNsYXNzID0gT2JqZWN0LmtleXMoZGFzaGJvYXJkQ2xhc3Nlcykuam9pbignICcpO1xuICAgIGlmIChpc1JlcG9ydCkge1xuICAgICAgdGhpcy5hZGRSZXBvcnREYXNoYm9hcmRTZXR0aW5ncygpO1xuICAgIH1cbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICBpc1JlcG9ydFxuICAgICAgICA/IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuRVZFTlRTLlJFUE9SVFNcbiAgICAgICAgOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5EQVNIQk9BUkRTLFxuICAgICAge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09NUE9ORU5UUy5EQVNIQk9BUkRfVklFVyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkFDVElPTlMuTE9BRCxcbiAgICAgICAgbmFtZTogdGhpcy5kYXNoYm9hcmQubmFtZSxcbiAgICAgICAgaWQ6IHRoaXMubW8uaWQsXG4gICAgICAgIGRhc2hib2FyZFR5cGU6IHRoaXMuZGFzaGJvYXJkLmRldmljZVR5cGUgPyB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgOiBudWxsLFxuICAgICAgICBjb250ZXh0OiBpc1JlcG9ydFxuICAgICAgICAgID8gUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT05URVhULlJFUE9SVFxuICAgICAgICAgIDogdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRDb250ZXh0Rm9yR1ModGhpcy5jb250ZXh0KVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlV2lkZ2V0Q2xhc3Nlcyh3aWRnZXQ6IFdpZGdldCkge1xuICAgIGNvbnN0IGhhc0hlYWRlckNsYXNzID0gV0lER0VUX0hFQURFUl9DTEFTU0VTLmZpbmQoXG4gICAgICBlbCA9PiB3aWRnZXQuY2xhc3NlcyAmJiB3aWRnZXQuY2xhc3Nlc1tlbC5jbGFzc11cbiAgICApO1xuICAgIGNvbnN0IHdpZGdldENsYXNzZXMgPSBoYXNIZWFkZXJDbGFzc1xuICAgICAgPyB7IC4uLndpZGdldC5jbGFzc2VzIH1cbiAgICAgIDogeyAuLi50aGlzLmRhc2hib2FyZC53aWRnZXRDbGFzc2VzLCAuLi53aWRnZXQuY2xhc3NlcyB9O1xuICAgIHJldHVybiB7XG4gICAgICBjYXJkOiB0cnVlLFxuICAgICAgJ2NhcmQtZGFzaGJvYXJkJzogdHJ1ZSxcbiAgICAgIFtrZWJhYkNhc2Uod2lkZ2V0LmNvbXBvbmVudElkIHx8IHdpZGdldC5uYW1lKV06IHRydWUsXG4gICAgICAuLi53aWRnZXRDbGFzc2VzXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcG9uZW50VG9XaWRnZXQoY2hpbGQ6IERhc2hib2FyZENoaWxkQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm9taXQoY2hpbGQuZGF0YSwgWydjb21wb25lbnRUcmFuc2Zvcm1Db25maWdXaXRoQ29udGV4dCcsICd0cmFuc2Zvcm1Db25maWdXaXRoQ29udGV4dCddKSwgLy8gcmVtb3ZlIGxlZ2FjeVxuICAgICAgLi4uKHtcbiAgICAgICAgX3g6IGNoaWxkLngsXG4gICAgICAgIF95OiBjaGlsZC55LFxuICAgICAgICBfd2lkdGg6IGNoaWxkLndpZHRoLFxuICAgICAgICBfaGVpZ2h0OiBjaGlsZC5oZWlnaHRcbiAgICAgIH0gYXMgV2lkZ2V0KVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFkZFJlcG9ydERhc2hib2FyZFNldHRpbmdzKCkge1xuICAgIHRoaXMuc2V0VGl0bGUgPSB0cnVlO1xuICAgIHRoaXMudGl0bGUgPSB0aGlzLmNvbnRleHQubmFtZTtcbiAgICB0aGlzLmJyZWFkY3J1bWJTZXR0aW5ncyA9IHtcbiAgICAgIGljb246ICd0aCcsXG4gICAgICBsYWJlbDogJ1JlcG9ydHMnLFxuICAgICAgcGF0aDogJ3JlcG9ydHMnXG4gICAgfTtcbiAgICB0aGlzLmNhbkRlbGV0ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5Db3B5RGFzaGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFsbERhc2hib2FyZENoaWxkcmVuQXJlVmFsaWQgPSBldmVyeSh0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4sIGNoaWxkID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGNoaWxkLmNvbmZpZyB8fCB7fTtcbiAgICAgIGNvbnN0IGRhdGFQb2ludHMgPSBjb25maWcuZGF0YXBvaW50cyB8fCBbXTtcbiAgICAgIHJldHVybiAhKFxuICAgICAgICAoY29uZmlnLmRldmljZSAmJiBjb25maWcuZGV2aWNlLmlkICE9PSB0aGlzLmNvbnRleHQuaWQpIHx8XG4gICAgICAgIHNvbWUoZGF0YVBvaW50cywgZGF0YVBvaW50ID0+IGRhdGFQb2ludC5fX3RhcmdldD8uaWQgIT09IHRoaXMuY29udGV4dC5pZClcbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFsbERhc2hib2FyZENoaWxkcmVuQXJlVmFsaWQ7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGUgKm5nSWY9XCJ0aXRsZVwiPlxuICB7eyB0aXRsZSB9fVxuPC9jOHktdGl0bGU+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtICpuZ0lmPVwiZGVmYXVsdFdpZGdldHMubGVuZ3RoID4gMFwiIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiIFtwcmlvcml0eV09XCItMVwiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIFtkaXNhYmxlZF09XCJkYXNoYm9hcmQ/LmlzRnJvemVuIHx8IGRpc2FibGVkXCJcbiAgICAoY2xpY2spPVwicmVzdG9yZSgpXCJcbiAgICB0aXRsZT1cInt7ICdSZXNldCBkYXNoYm9hcmQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBweC1ldmVudD1cIlJlc2V0IGRhc2hib2FyZFwiXG4gICAgZGF0YS1jeT1cImNvbnRleHQtZGFzaGJvYXJkLS1idXR0b24tcmVzZXQtZGFzaGJvYXJkXCJcbiAgPlxuICAgIDxpIGNsYXNzPVwibS1yLTRcIiBjOHlJY29uPVwicmVzZXRcIj48L2k+XG4gICAge3sgJ1Jlc2V0IGRhc2hib2FyZCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscCAqbmdJZj1cInNob3dDb250ZXh0SGVscEJ1dHRvblwiIHNyYz1cIi91c2Vycy1ndWlkZS9jb2NrcGl0LyNkYXNoYm9hcmRzXCI+PC9jOHktaGVscD5cblxuPGM4eS13aWRnZXRzLWRhc2hib2FyZFxuICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgW2NvbnRleHREYXNoYm9hcmRdPVwiZGFzaGJvYXJkXCJcbiAgW3dpZGdldHNdPVwid2lkZ2V0c1wiXG4gIFtzZXR0aW5nc109XCJ7XG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgaXNGcm96ZW46IGRhc2hib2FyZD8uaXNGcm96ZW4sXG4gICAgaXNEaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgY2FuRGVsZXRlOiBjYW5EZWxldGUsXG4gICAgdHJhbnNsYXRlV2lkZ2V0VGl0bGU6IGRhc2hib2FyZD8udHJhbnNsYXRlV2lkZ2V0VGl0bGUsXG4gICAgYWxsb3dGdWxsc2NyZWVuOiBtb2R1bGVDb25maWcuYWxsb3dGdWxsc2NyZWVuLFxuICAgIHRpdGxlOiBzZXRUaXRsZSA/IGRhc2hib2FyZC5uYW1lIHx8IHRpdGxlIDogdW5kZWZpbmVkLFxuICAgIHdpZGdldE1hcmdpbjogZGFzaGJvYXJkPy53aWRnZXRNYXJnaW4sXG4gICAgY2FuQ29weTogY2FuQ29weSxcbiAgICBpc0NvcHlEaXNhYmxlZDogaXNDb3B5RGlzYWJsZWQsXG4gICAgY29sdW1uczogZGFzaGJvYXJkPy5jb2x1bW5zIHx8IDEyXG4gIH1cIlxuICBbYnJlYWRjcnVtYl09XCJicmVhZGNydW1iU2V0dGluZ3NcIlxuICAob25GcmVlemUpPVwidG9nZ2xlRnJlZXplKCRldmVudClcIlxuICAob25DaGFuZ2VEYXNoYm9hcmQpPVwidXBkYXRlRGFzaGJvYXJkQ2hpbGRyZW4oJGV2ZW50KVwiXG4gIChvbkFkZFdpZGdldCk9XCJhZGRXaWRnZXQoKVwiXG4gIChvbkVkaXRXaWRnZXQpPVwiZWRpdFdpZGdldCgkZXZlbnQpXCJcbiAgKG9uRGVsZXRlV2lkZ2V0KT1cImRlbGV0ZVdpZGdldCgkZXZlbnQpXCJcbiAgKG9uQ2hhbmdlU3RhcnQpPVwiYWRkRGFzaGJvYXJkQ2xhc3NUb0JvZHkoKVwiXG4gIChvbkNoYW5nZUVuZCk9XCJyZW1vdmVEYXNoYm9hcmRDbGFzc0Zyb21Cb2R5KClcIlxuICAob25FZGl0RGFzaGJvYXJkKT1cImVkaXREYXNoYm9hcmQoKVwiXG4gIChvbkNvcHlEYXNoYm9hcmQpPVwiY29weURhc2hib2FyZCgpXCJcbiAgKG9uRGVsZXRlRGFzaGJvYXJkKT1cImRlbGV0ZURhc2hib2FyZCgpXCJcbj48L2M4eS13aWRnZXRzLWRhc2hib2FyZD5cbiJdfQ==
515
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixZQUFZLEVBR1osb0JBQW9CLEVBSXBCLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsWUFBWSxFQUNaLE1BQU0sRUFHUCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQ0wsd0JBQXdCLEVBSXhCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxF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QUFDO1lBQzNDLE9BQU8sQ0FBQyxDQUNOLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQzFFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sNEJBQTRCLENBQUM7SUFDdEMsQ0FBQzs7c0hBL2dCVSx5QkFBeUIsa0tBOEMxQix3QkFBd0I7MEdBOUN2Qix5QkFBeUIsbWpCQ25EdEMsMHREQWtEQTsyRkRDYSx5QkFBeUI7a0JBVnJDLFNBQVM7K0JBQ0UsdUJBQXVCLFFBRTNCO3dCQUNKLEtBQUssRUFBRTs7S0FFTjt3QkFDRCxLQUFLLEVBQUUsOEJBQThCO3FCQUN0Qzs7MEJBZ0RFLE1BQU07MkJBQUMsd0JBQXdCOzRQQTVDbEMsSUFBSTtzQkFESCxLQUFLO2dCQUdOLGVBQWU7c0JBRGQsS0FBSztnQkFHTixPQUFPO3NCQUROLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHTixjQUFjO3NCQURiLEtBQUs7Z0JBR04sT0FBTztzQkFETixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUdOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFNTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixLQUFLO3NCQURKLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQWN0aW9uQmFyU2VydmljZSxcbiAgQWxlcnRTZXJ2aWNlLFxuICBCcmVhZGNydW1iSXRlbSxcbiAgRGFzaGJvYXJkQ2hhbmdlLFxuICBEYXNoYm9hcmRDaGlsZENoYW5nZSxcbiAgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQsXG4gIERhc2hib2FyZFNldHRpbmdzLFxuICBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBTdGF0dXMsXG4gIFdpZGdldCxcbiAgV2lkZ2V0Q2hhbmdlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBldmVyeSwgZmluZEluZGV4LCBrZWJhYkNhc2UsIGtleUJ5LCBvbWl0LCBzb21lLCB2YWx1ZXMgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ09OVEVYVF9EQVNIQk9BUkRfQ09ORklHLFxuICBDb250ZXh0RGFzaGJvYXJkLFxuICBDb250ZXh0RGFzaGJvYXJkQ29uZmlnLFxuICBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCxcbiAgUFJPRFVDVF9FWFBFUklFTkNFLFxuICBXSURHRVRfSEVBREVSX0NMQVNTRVNcbn0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmREZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50JztcbmltcG9ydCB7IFdpZGdldENvbmZpZ0NvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LWNvbmZpZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbi8qKlxuICogVGhlIGNvbnRleHQgZGFzaGJvYXJkIGlzIGEgZGFzaGJvYXJkIHdoaWNoIHJlc29sdmVzIGl0IGRhdGEgZnJvbSB0aGUgY3VycmVudCBjb250ZXh0IChkZXZpY2Ugb3IgZ3JvdXApXG4gKiBpdCBpcyBkaXNwbGF5ZWQgb24uIEl0IHVzdWFsbHkgdXNlcyB0aGUgcm91dGUuZGF0YSBmb3IgaXQsIGJ1dCB5b3UgY2FuIHBhc3NcbiAqIGEgZGlmZmVyZW50IG1hbmFnZWRPYmplY3QgdG8gdGhlIFttb10gaW5wdXQgcGFyYW1ldGVyIHRvIGNoYW5nZSB0aGF0IGJlaGF2aW9yLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY29udGV4dC1kYXNoYm9hcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7XG4gICAgc3R5bGU6IGBcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGAsXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQgYzh5LWdyaWQtZGFzaGJvYXJkJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHREYXNoYm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIG5hbWU6IHN0cmluZztcbiAgQElucHV0KClcbiAgY2hpbGRyZW5DbGFzc2VzID0gJyc7XG4gIEBJbnB1dCgpXG4gIGNvbnRleHQ6IGFueTtcbiAgQElucHV0KClcbiAgc2V0VGl0bGUgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZGVmYXVsdFdpZGdldHM6IFdpZGdldFtdID0gW107XG4gIEBJbnB1dCgpXG4gIGNhbkNvcHkgPSB0cnVlO1xuICBASW5wdXQoKVxuICBjYW5EZWxldGUgPSB0cnVlO1xuICBASW5wdXQoKVxuICBpc0xvYWRpbmcgPSB0cnVlO1xuICBASW5wdXQoKVxuICBicmVhZGNydW1iU2V0dGluZ3M6IEJyZWFkY3J1bWJJdGVtO1xuICBASW5wdXQoKVxuICBzaG93Q29udGV4dEhlbHBCdXR0b24gPSB0cnVlO1xuICAvKipcbiAgICogSGlkZXMgZGFzaGJvYXJkIGF2YWlsYWJpbGl0eSBzZWxlY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBoaWRlQXZhaWxhYmlsaXR5ID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGNsYXNzID0gJyc7XG5cbiAgd2lkZ2V0czogV2lkZ2V0W10gPSBbXTtcbiAgbW86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0O1xuICBkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmQ7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGlzQ29weURpc2FibGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgZGF0YVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjb250ZXh0RGFzaGJvYXJkU2VydmljZTogQ29udGV4dERhc2hib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KENPTlRFWFRfREFTSEJPQVJEX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogQ29udGV4dERhc2hib2FyZENvbmZpZyxcbiAgICBwcml2YXRlIHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25CYXJTZXJ2aWNlOiBBY3Rpb25CYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBNb2RhbFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICB0aGlzLmxvYWRDb250ZXh0RGFzaGJvYXJkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubG9hZE5hbWVkRGFzaGJvYXJkKCk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyB0aGUgY3VycmVudCBjb250ZXh0IHRvIHRoZSB3aWRnZXRcbiAgICogQHBhcmFtIHdpZGdldCBUaGUgd2lkZ2V0IHRvIGFwcGx5IHRoZSBjb250ZXh0IHRvLlxuICAgKi9cbiAgYXBwbHlEZXZpY2VUYXJnZXQod2lkZ2V0KSB7XG4gICAgaWYgKHdpZGdldC5jb25maWcuZGV2aWNlKSB7XG4gICAgICB3aWRnZXQuY29uZmlnLmRldmljZSA9IHsgaWQ6IHRoaXMuY29udGV4dC5pZCwgbmFtZTogdGhpcy5jb250ZXh0Lm5hbWUgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgcm91dGUgbGlzdGVuZXIuXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhU3ViKSB7XG4gICAgICB0aGlzLmRhdGFTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZXMgdGhlIGRhc2hib2FyZCB3aWRnZXRzIHRvIHRoZSBkZWZhdWx0IHdpZGdldHMuXG4gICAqL1xuICBhc3luYyByZXN0b3JlKCkge1xuICAgIGNvbnN0IG1lc2cgPSBnZXR0ZXh0KFxuICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gcmVzZXQgdGhpcyBkYXNoYm9hcmQuIEFsbCBjaGFuZ2VzIHRvIHRoZSBkYXNoYm9hcmQgd2lsbCBnZXQgbG9zdCBhbmQgY2Fubm90IGJlIHJlY292ZXJlZC4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oZ2V0dGV4dCgnUmVzZXQgZGFzaGJvYXJkJyksIG1lc2csIFN0YXR1cy5XQVJOSU5HLCB7XG4gICAgICAgIG9rOiBnZXR0ZXh0KCdSZXNldGBkYXNoYm9hcmRgJyksXG4gICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4gPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLm1hcFdpZGdldHModGhpcy5kZWZhdWx0V2lkZ2V0cyk7XG4gICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZSh0aGlzLm1vKTtcbiAgICAgIGF3YWl0IHRoaXMub25Mb2FkKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGFsbCBkYXNoYm9hcmRzIGNoaWxkcmVuJ3MuIFVzZWZ1bCBmb3IgcG9zaXRpb24gY2hhbmdlcyBvbiB0aGUgZGFzaGJvYXJkLlxuICAgKiBAcGFyYW0gY2hpbGQgVGhlIGNoaWxkIHRvIGNoYW5nZS5cbiAgICovXG4gIGFzeW5jIHVwZGF0ZURhc2hib2FyZENoaWxkcmVuKGNoaWxkOiBEYXNoYm9hcmRDaGlsZENoYW5nZSB8IERhc2hib2FyZENoYW5nZSkge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IGNoaWxkO1xuICAgIGNvbnN0IGRhc2hib2FyZE1POiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCA9IHRoaXMubW87XG4gICAgY29uc3QgbWFwcGVkQ2hpbGRyZW46IHsgW2lkOiBzdHJpbmddOiBXaWRnZXQgfSA9IGtleUJ5KFxuICAgICAgY2hpbGRyZW4ubWFwKGMgPT4gdGhpcy5jb21wb25lbnRUb1dpZGdldChjKSksXG4gICAgICAnaWQnXG4gICAgKTtcbiAgICBkYXNoYm9hcmRNTy5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuID0gbWFwcGVkQ2hpbGRyZW47XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UudXBkYXRlKGRhc2hib2FyZE1PKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3BpZXMgdGhlIGRhc2hib2FyZCBhbmQgY3VycmVudCBjb250ZXh0IHRvIGEgY2xpcGJvYXJkLlxuICAgKi9cbiAgYXN5bmMgY29weURhc2hib2FyZCgpIHtcbiAgICBjb25zdCB2aWV3Q29udGV4dCA9IHRoaXMucm91dGUucGFyZW50LnNuYXBzaG90LmRhdGE/LmNvbnRleHQ7XG5cbiAgICB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmNvcHlDbGlwYm9hcmQgPSB7XG4gICAgICBkYXNoYm9hcmRJZDogdGhpcy5tby5pZCxcbiAgICAgIGRhc2hib2FyZDogY2xvbmVEZWVwKHRoaXMubW8uYzh5X0Rhc2hib2FyZCksXG4gICAgICBjb250ZXh0OiBjbG9uZURlZXAoe1xuICAgICAgICBjb250ZXh0OiB2aWV3Q29udGV4dCxcbiAgICAgICAgY29udGV4dERhdGE6IHRoaXMuY29udGV4dFxuICAgICAgfSlcbiAgICB9O1xuXG4gICAgaWYgKHZpZXdDb250ZXh0KSB7XG4gICAgICBjb25zdCBjdHggPSB2aWV3Q29udGV4dC5zcGxpdCgnLycpLnNoaWZ0KCk7XG4gICAgICBjb25zdCBtc2cgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgJ0Rhc2hib2FyZCBjb3BpZWQuIE5hdmlnYXRlIHRvIHRoZSBkZXNpcmVkIHt7IGN0eCB9fSBhbmQgc2VsZWN0IFwiUGFzdGUgZGFzaGJvYXJkXCInLFxuICAgICAgICB7IGN0eCB9XG4gICAgICApO1xuICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1zZyk7XG4gICAgfVxuICAgIHRoaXMuYWN0aW9uQmFyU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBjb21wbGV0ZSBkYXNoYm9hcmQgYW5kIG5hdmlnYXRlIGF3YXkuXG4gICAqL1xuICBhc3luYyBkZWxldGVEYXNoYm9hcmQoKSB7XG4gICAgYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5kZWxldGUodGhpcy5tbyk7XG4gICAgaWYgKHRoaXMucm91dGUucGFyZW50KSB7XG4gICAgICBjb25zdCByb3V0ZSA9IHRoaXMucm91dGUucGFyZW50LnNuYXBzaG90LnVybC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LnBhdGgpLmpvaW4oJy8nKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpO1xuICAgIH1cbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuRVZFTlRTLkRBU0hCT0FSRFMsIHtcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT01QT05FTlRTLkRFTEVURV9EQVNIQk9BUkQsXG4gICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQUNUSU9OUy5ERUxFVEUsXG4gICAgICBuYW1lOiB0aGlzLmRhc2hib2FyZC5uYW1lLFxuICAgICAgaWQ6IHRoaXMubW8uaWQsXG4gICAgICBkYXNoYm9hcmRUeXBlOiB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlID8gdGhpcy5kYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIDogbnVsbCxcbiAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZ2V0Q29udGV4dEZvckdTKHRoaXMuY29udGV4dClcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgY3VycmVudCBkYXNoYm9hcmRcbiAgICovXG4gIGFzeW5jIGVkaXREYXNoYm9hcmQoKSB7XG4gICAgY29uc3QgaXNSZXBvcnQgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzUmVwb3J0KHRoaXMubW8pO1xuICAgIGlmIChpc1JlcG9ydCkge1xuICAgICAgY29uc3QgeyBuYW1lLCBpY29uLCBwcmlvcml0eSwgYzh5X0lzTmF2aWdhdG9yTm9kZSwgZGVzY3JpcHRpb24gfSA9IHRoaXMuY29udGV4dDtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5kYXNoYm9hcmQsIHsgbmFtZSwgaWNvbiwgcHJpb3JpdHksIGM4eV9Jc05hdmlnYXRvck5vZGUsIGRlc2NyaXB0aW9uIH0pO1xuICAgIH1cbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgICBkYXNoYm9hcmQ6IHRoaXMuZGFzaGJvYXJkLFxuICAgICAgZGV2aWNlVHlwZTogdGhpcy5jb250ZXh0LnR5cGUsXG4gICAgICBpc0RldmljZVR5cGU6IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNEZXZpY2VUeXBlKHRoaXMubW8pLFxuICAgICAgaXNOYW1lZERhc2hib2FyZDogdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc05hbWVkKHRoaXMubW8pLFxuICAgICAgaGlkZUF2YWlsYWJpbGl0eTogdGhpcy5oaWRlQXZhaWxhYmlsaXR5LFxuICAgICAgaXNSZXBvcnRcbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5ic01vZGFsLnNob3coRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50LCB7XG4gICAgICBjbGFzczogJ21vZGFsLWxnJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpbml0aWFsU3RhdGUsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlXG4gICAgfSkuY29udGVudCBhcyBEYXNoYm9hcmREZXRhaWxDb21wb25lbnQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhc2hib2FyZE1PID0gY2xvbmVEZWVwKHRoaXMubW8pO1xuICAgICAgY29uc3QgY2ZnID0gYXdhaXQgbW9kYWwucmVzdWx0O1xuICAgICAgaWYgKGlzUmVwb3J0KSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgaWNvbiwgYzh5X0lzTmF2aWdhdG9yTm9kZSwgcHJpb3JpdHksIGRlc2NyaXB0aW9uLCAuLi5kYXNoYm9hcmRDZmcgfSA9IGNmZztcbiAgICAgICAgZGFzaGJvYXJkTU8uYzh5X0Rhc2hib2FyZCA9IGRhc2hib2FyZENmZztcbiAgICAgICAgdGhpcy51cGRhdGVSZXBvcnQoe1xuICAgICAgICAgIGlkOiB0aGlzLmNvbnRleHQuaWQsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBpY29uLFxuICAgICAgICAgIGM4eV9Jc05hdmlnYXRvck5vZGUsXG4gICAgICAgICAgcHJpb3JpdHksXG4gICAgICAgICAgZGVzY3JpcHRpb25cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXNoYm9hcmRNTy5jOHlfRGFzaGJvYXJkID0gY2ZnO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZShkYXNoYm9hcmRNTyk7XG4gICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnJlZnJlc2hUYWJzKGRhc2hib2FyZE1PKTtcbiAgICAgIHRoaXMub25Mb2FkKCk7XG4gICAgICBtb2RhbC5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIGdldCBpc0RldmljZVR5cGVEYXNoYm9hcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kYXNoYm9hcmQ/LmRldmljZVR5cGUgJiYgISF0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRWRpdHMgYSB3aWRnZXQgb24gdGhlIGRhc2hib2FyZC5cbiAgICogQHBhcmFtIGNoYW5nZSBUaGUgd2lkZ2V0IGNoYW5nZSBldmVudC5cbiAgICovXG4gIGFzeW5jIGVkaXRXaWRnZXQoY2hhbmdlOiBXaWRnZXRDaGFuZ2UpIHtcbiAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGNoYW5nZS5zb3VyY2U7XG4gICAgY29uc3QgY29tcG9uZW50ID0gYXdhaXQgdGhpcy53aWRnZXRTZXJ2aWNlLmdldFdpZGdldERlZmluaXRpb24oXG4gICAgICBjaGFuZ2Uud2lkZ2V0Lm5hbWUgfHwgY2hhbmdlLndpZGdldC5jb21wb25lbnRJZFxuICAgICk7XG4gICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgIHRoaXMuYWRkV2lkZ2V0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuYWRkV2lkZ2V0KHtcbiAgICAgIC4uLmNvbXBvbmVudCxcbiAgICAgIGRhdGE6IHsgLi4uY29tcG9uZW50LmRhdGEsIC4uLmNoYW5nZS53aWRnZXQsIF94OiB4LCBfeTogeSwgX3dpZHRoOiB3aWR0aCwgX2hlaWdodDogaGVpZ2h0IH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgd2lkZ2V0IHRvIHRoZSBkYXNoYm9hcmQuXG4gICAqIEBwYXJhbSBzZWxlY3RlZCBEZWZpbmUgYSBzZWxlY3RlZCBjb21wb25lbnQgdG8gc3dpdGNoIHRvIGVkaXQgbW9kZSBkaXJlY3RseS5cbiAgICovXG4gIGFzeW5jIGFkZFdpZGdldChzZWxlY3RlZD86IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKSB7XG4gICAgY29uc3QgcGFydGlhbENsb25lU2VsZWN0ZWQgPSBzZWxlY3RlZFxuICAgICAgPyB7XG4gICAgICAgICAgLi4uc2VsZWN0ZWQsXG4gICAgICAgICAgZGF0YTogY2xvbmVEZWVwKHNlbGVjdGVkLmRhdGEpXG4gICAgICAgIH1cbiAgICAgIDogc2VsZWN0ZWQ7XG5cbiAgICBjb25zdCBpbml0aWFsU3RhdGU6IFBhcnRpYWw8V2lkZ2V0Q29uZmlnQ29tcG9uZW50PiA9IHtcbiAgICAgIG1vOiB0aGlzLm1vLFxuICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LmM4eV9SZXBvcnQgPyB7fSA6IHRoaXMuY29udGV4dCxcbiAgICAgIHNlbGVjdGVkOiBwYXJ0aWFsQ2xvbmVTZWxlY3RlZFxuICAgIH07XG5cbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KFdpZGdldENvbmZpZ0NvbXBvbmVudCwge1xuICAgICAgY2xhc3M6ICdtb2RhbC1sZycsXG4gICAgICBhcmlhRGVzY3JpYmVkYnk6ICdtb2RhbC1ib2R5JyxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZVxuICAgIH0pLmNvbnRlbnQgYXMgV2lkZ2V0Q29uZmlnQ29tcG9uZW50O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5ld1dpZGdldCA9IGF3YWl0IG1vZGFsLnJlc3VsdDtcbiAgICAgIGlmICghdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMubW8uYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiA9IHt9O1xuICAgICAgfVxuICAgICAgdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuW25ld1dpZGdldC5pZF0gPSBuZXdXaWRnZXQ7XG4gICAgICB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZSh0aGlzLm1vKTtcbiAgICAgIG5ld1dpZGdldC5jbGFzc2VzID0gdGhpcy5tZXJnZVdpZGdldENsYXNzZXMobmV3V2lkZ2V0KTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlV2lkZ2V0KG5ld1dpZGdldCk7XG4gICAgICBtb2RhbC5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgd2lkZ2V0IG9yIGFkZHMgYSBuZXcgb25lIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgb25cbiAgICogdGhlIGRhc2hib2FyZC5cbiAgICogQHBhcmFtIHdpZGdldCBUaGUgbmV3IHdpZGdldFxuICAgKi9cbiAgYXN5bmMgdXBkYXRlV2lkZ2V0KHdpZGdldCkge1xuICAgIGNvbnN0IGluZGV4ID0gZmluZEluZGV4KHRoaXMud2lkZ2V0cywgeyBpZDogd2lkZ2V0LmlkIH0pO1xuICAgIGNvbnN0IGlzTmV3ID0gaW5kZXggPT09IC0xO1xuICAgIGNvbnN0IG1hcHBlZFdpZGdldCA9IGF3YWl0IHRoaXMud2lkZ2V0U2VydmljZS5tYXBMZWdhY3kod2lkZ2V0KTtcbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIHRoaXMud2lkZ2V0cy5wdXNoKG1hcHBlZFdpZGdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2lkZ2V0cy5zcGxpY2UoaW5kZXgsIDEsIG1hcHBlZFdpZGdldCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSB3aWRnZXQgYW5kIHJlYXJyYW5nZXMgdGhlIHJlbWFpbmluZyBvbmVzXG4gICAqIGlmIG5lY2Vzc2FyeS5cbiAgICogQHBhcmFtIGNoYW5nZSBUaGUgY2hhbmdlIGV2ZW50LlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlV2lkZ2V0KGNoYW5nZTogV2lkZ2V0Q2hhbmdlKSB7XG4gICAgY29uc3Qgd2lkZ2V0VGl0bGUgPSBjaGFuZ2Uud2lkZ2V0LnRpdGxlO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ1JlbW92ZSB3aWRnZXQnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAgICdZb3UgYXJlIGFib3V0IHRvIHJlbW92ZSB3aWRnZXQgXCJ7eyB3aWRnZXRUaXRsZSB9fVwiIGZyb20geW91ciBkYXNoYm9hcmQuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/J1xuICAgICAgICAgICksXG4gICAgICAgICAgeyB3aWRnZXRUaXRsZSB9XG4gICAgICAgICksXG4gICAgICAgIFN0YXR1cy5EQU5HRVIsXG4gICAgICAgIHtcbiAgICAgICAgICBvazogZ2V0dGV4dCgnUmVtb3ZlJyksXG4gICAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG9uIGNhbmNlbDogZG8gbm90aGluZ1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHdpZGdldCwgc291cmNlIH0gPSBjaGFuZ2U7XG4gICAgICBkZWxldGUgdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuW3dpZGdldC5pZF07XG4gICAgICBjb25zdCByZW1vdmVkID0gdGhpcy53aWRnZXRzLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IHdpZGdldC5pZCk7XG4gICAgICB0aGlzLndpZGdldHMuc3BsaWNlKHRoaXMud2lkZ2V0cy5pbmRleE9mKHJlbW92ZWQpLCAxKTtcblxuICAgICAgY29uc3QgeyBkYXNoYm9hcmQgfSA9IHNvdXJjZTtcbiAgICAgIGRhc2hib2FyZC5jaGlsZHJlbiA9IGRhc2hib2FyZC5jaGlsZHJlbi5maWx0ZXIoYyA9PiBjLmRhdGEuaWQgIT09IHdpZGdldC5pZCk7XG5cbiAgICAgIC8vIHVzaW5nIHNldFRpbWVvdXQgdG8gZ2l2ZSB0aGUgY29tcG9uZW50IHRoZSBjaGFuY2UgdG8gcmVtb3ZlIGl0LlxuICAgICAgY29uc3Qgc2xlZXAgPSB0aW1lb3V0ID0+IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCB0aW1lb3V0KSk7XG4gICAgICBhd2FpdCBzbGVlcCgwKTtcblxuICAgICAgY29uc3QgY2hpbGQgPSBuZXcgRGFzaGJvYXJkQ2hpbGRDaGFuZ2Uoc291cmNlKTtcbiAgICAgIGNoaWxkLmNvbGxhcHNlVXBBbGwoKTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlRGFzaGJvYXJkQ2hpbGRyZW4oY2hpbGQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIHdvcmthcm91bmQgdG8gZW5zdXJlIHRoYXQgdGhlIGRyYWdnZWQtZWxlbWVudFxuICAgKiAod2hpY2ggaXMgYXR0YWNoZWQgdG8gdGhlIGJvZHkpIGhhcyB0aGUgcmlnaHQgc3R5bGluZy5cbiAgICovXG4gIGFkZERhc2hib2FyZENsYXNzVG9Cb2R5KCkge1xuICAgIHRoaXMuY2xhc3Muc3BsaXQoJyAnKS5mb3JFYWNoKGNzc0NsYXNzID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgY3NzQ2xhc3MpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHRvIGVuc3VyZSB0aGF0IHRoZSBkcmFnZ2VkLWVsZW1lbnRcbiAgICogKHdoaWNoIGlzIGF0dGFjaGVkIHRvIHRoZSBib2R5KSBoYXMgdGhlIHJpZ2h0IHN0eWxpbmcuXG4gICAqL1xuICByZW1vdmVEYXNoYm9hcmRDbGFzc0Zyb21Cb2R5KCkge1xuICAgIHRoaXMuY2xhc3Muc3BsaXQoJyAnKS5mb3JFYWNoKGNzc0NsYXNzID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgY3NzQ2xhc3MpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdGhlIGRhc2hib2FyZCBzZXR0aW5ncyB0byBmcm96ZW4gb3IgdmljZSB2ZXJzYS5cbiAgICogQHBhcmFtIHNldHRpbmdzIFRoZSBjdXJyZW50IHNldHRpbmdzIG9mIHRoZSBkYXNoYm9hcmQuXG4gICAqL1xuICBhc3luYyB0b2dnbGVGcmVlemUoc2V0dGluZ3M6IERhc2hib2FyZFNldHRpbmdzKSB7XG4gICAgdGhpcy50b2dnbGVJc0Zyb3plbkZsYWcoc2V0dGluZ3MpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZSh0aGlzLm1vKTtcbiAgICAgIGlmICh0aGlzLmRhc2hib2FyZC5pc0Zyb3plbikge1xuICAgICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MoZ2V0dGV4dCgnWW91ciBkYXNoYm9hcmQgaXMgbG9ja2VkIG5vdy4nKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MoZ2V0dGV4dCgnWW91ciBkYXNoYm9hcmQgaXMgdW5sb2NrZWQgbm93LicpKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICAgIHRoaXMudG9nZ2xlSXNGcm96ZW5GbGFnKHNldHRpbmdzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVJlcG9ydChtbzogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4pIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmludmVudG9yeS51cGRhdGUobW8pO1xuICAgIHRoaXMuY29udGV4dCA9IHJlcy5kYXRhO1xuICAgIGlmICh0aGlzLnJvdXRlLnBhcmVudCkge1xuICAgICAgdGhpcy5yb3V0ZS5wYXJlbnQuc25hcHNob3QuZGF0YS5jb250ZXh0RGF0YSA9IHRoaXMuY29udGV4dDtcbiAgICB9XG4gICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS51cGRhdGVOYXZpZ2F0b3JJdGVtKHJlcy5kYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlSXNGcm96ZW5GbGFnKHNldHRpbmdzOiBEYXNoYm9hcmRTZXR0aW5ncykge1xuICAgIHNldHRpbmdzLmlzRnJvemVuID0gIXNldHRpbmdzLmlzRnJvemVuO1xuICAgIHRoaXMuZGFzaGJvYXJkLmlzRnJvemVuID0gc2V0dGluZ3MuaXNGcm96ZW47XG4gIH1cblxuICBwcml2YXRlIGxvYWRDb250ZXh0RGFzaGJvYXJkKCkge1xuICAgIHRoaXMuZGF0YVN1YiA9IHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoKHsgZGFzaGJvYXJkIH0pID0+IHtcbiAgICAgIHRoaXMuY29udGV4dCA9IHRoaXMucm91dGUucGFyZW50LnNuYXBzaG90LmRhdGEuY29udGV4dERhdGE7XG4gICAgICB0aGlzLnRpdGxlID0gdGhpcy5jb250ZXh0Py5uYW1lO1xuICAgICAgdGhpcy5tbyA9IGRhc2hib2FyZDtcbiAgICAgIHRoaXMuZGFzaGJvYXJkID0gdGhpcy5tby5jOHlfRGFzaGJvYXJkO1xuICAgICAgdGhpcy5vbkxvYWQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWROYW1lZERhc2hib2FyZCgpIHtcbiAgICB0aGlzLmRhdGFTdWIgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlXG4gICAgICAuZ2V0TmFtZWREYXNoYm9hcmRPckNyZWF0ZSh0aGlzLm5hbWUsIHRoaXMuZGVmYXVsdFdpZGdldHMsIHRoaXMuY29udGV4dClcbiAgICAgIC5zdWJzY3JpYmUobW8gPT4ge1xuICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmNvbnRleHQgfHwge307XG4gICAgICAgIHRoaXMubW8gPSBtbztcbiAgICAgICAgdGhpcy5kYXNoYm9hcmQgPSB0aGlzLm1vLmM4eV9EYXNoYm9hcmQ7XG4gICAgICAgIHRoaXMub25Mb2FkKHRydWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uTG9hZCh0cmFja0V4cGVyaWVuY2U/OiBib29sZWFuKSB7XG4gICAgY29uc3QgY2FuRWRpdERhc2hib2FyZCA9IGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY2FuRWRpdERhc2hib2FyZCh0aGlzLm1vKTtcbiAgICB0aGlzLmRpc2FibGVkID0gIWNhbkVkaXREYXNoYm9hcmQ7XG4gICAgdGhpcy5jYW5Db3B5ID1cbiAgICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNEZXZpY2VEYXNoYm9hcmQodGhpcy5tbykgfHxcbiAgICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNEZXZpY2VUeXBlKHRoaXMubW8pIHx8XG4gICAgICB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzR3JvdXBEYXNoYm9hcmQodGhpcy5tbyk7XG4gICAgY29uc3QgZGFzaGJvYXJkQ2hpbGRyZW4gPSBjbG9uZURlZXAodGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuKTtcbiAgICBjb25zdCBpc0RldmljZVR5cGUgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzRGV2aWNlVHlwZSh0aGlzLm1vKTtcbiAgICBjb25zdCBpc1JlcG9ydCA9IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNSZXBvcnQodGhpcy5tbyk7XG4gICAgY29uc3QgZGFzaGJvYXJkQ2xhc3NlcyA9IHtcbiAgICAgICdjOHktZ3JpZC1kYXNoYm9hcmQnOiB0cnVlLFxuICAgICAgZGFzaGJvYXJkOiB0cnVlLFxuICAgICAgLi4udGhpcy5kYXNoYm9hcmQuY2xhc3Nlc1xuICAgIH07XG4gICAgdGhpcy5pc0NvcHlEaXNhYmxlZCA9ICF0aGlzLmNhbkNvcHlEYXNoYm9hcmQoKTtcbiAgICB0aGlzLndpZGdldHMgPSBhd2FpdCBQcm9taXNlLmFsbDxXaWRnZXQ+KFxuICAgICAgdmFsdWVzKGRhc2hib2FyZENoaWxkcmVuKS5tYXAod2lkZ2V0ID0+IHtcbiAgICAgICAgd2lkZ2V0LmNsYXNzZXMgPSB0aGlzLm1lcmdlV2lkZ2V0Q2xhc3Nlcyh3aWRnZXQpO1xuICAgICAgICBpZiAoaXNEZXZpY2VUeXBlKSB7XG4gICAgICAgICAgdGhpcy5hcHBseURldmljZVRhcmdldCh3aWRnZXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0cmFja0V4cGVyaWVuY2UpIHtcbiAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KCdsb2FkV2lkZ2V0Jywge1xuICAgICAgICAgICAgd2lkZ2V0TmFtZTogd2lkZ2V0LmNvbXBvbmVudElkIHx8IHdpZGdldC5uYW1lXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0U2VydmljZS5tYXBMZWdhY3kod2lkZ2V0KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmNsYXNzID0gT2JqZWN0LmtleXMoZGFzaGJvYXJkQ2xhc3Nlcykuam9pbignICcpO1xuICAgIGlmIChpc1JlcG9ydCkge1xuICAgICAgdGhpcy5hZGRSZXBvcnREYXNoYm9hcmRTZXR0aW5ncygpO1xuICAgIH1cbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICBpc1JlcG9ydFxuICAgICAgICA/IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuRVZFTlRTLlJFUE9SVFNcbiAgICAgICAgOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5EQVNIQk9BUkRTLFxuICAgICAge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09NUE9ORU5UUy5EQVNIQk9BUkRfVklFVyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkFDVElPTlMuTE9BRCxcbiAgICAgICAgbmFtZTogdGhpcy5kYXNoYm9hcmQubmFtZSxcbiAgICAgICAgaWQ6IHRoaXMubW8uaWQsXG4gICAgICAgIGRhc2hib2FyZFR5cGU6IHRoaXMuZGFzaGJvYXJkLmRldmljZVR5cGUgPyB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgOiBudWxsLFxuICAgICAgICBjb250ZXh0OiBpc1JlcG9ydFxuICAgICAgICAgID8gUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT05URVhULlJFUE9SVFxuICAgICAgICAgIDogdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRDb250ZXh0Rm9yR1ModGhpcy5jb250ZXh0KVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlV2lkZ2V0Q2xhc3Nlcyh3aWRnZXQ6IFdpZGdldCkge1xuICAgIGNvbnN0IGhhc0hlYWRlckNsYXNzID0gV0lER0VUX0hFQURFUl9DTEFTU0VTLmZpbmQoXG4gICAgICBlbCA9PiB3aWRnZXQuY2xhc3NlcyAmJiB3aWRnZXQuY2xhc3Nlc1tlbC5jbGFzc11cbiAgICApO1xuICAgIGNvbnN0IHdpZGdldENsYXNzZXMgPSBoYXNIZWFkZXJDbGFzc1xuICAgICAgPyB7IC4uLndpZGdldC5jbGFzc2VzIH1cbiAgICAgIDogeyAuLi50aGlzLmRhc2hib2FyZC53aWRnZXRDbGFzc2VzLCAuLi53aWRnZXQuY2xhc3NlcyB9O1xuICAgIHJldHVybiB7XG4gICAgICBjYXJkOiB0cnVlLFxuICAgICAgJ2NhcmQtZGFzaGJvYXJkJzogdHJ1ZSxcbiAgICAgIFtrZWJhYkNhc2Uod2lkZ2V0LmNvbXBvbmVudElkIHx8IHdpZGdldC5uYW1lKV06IHRydWUsXG4gICAgICAuLi53aWRnZXRDbGFzc2VzXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcG9uZW50VG9XaWRnZXQoY2hpbGQ6IERhc2hib2FyZENoaWxkQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm9taXQoY2hpbGQuZGF0YSwgWydjb21wb25lbnRUcmFuc2Zvcm1Db25maWdXaXRoQ29udGV4dCcsICd0cmFuc2Zvcm1Db25maWdXaXRoQ29udGV4dCddKSwgLy8gcmVtb3ZlIGxlZ2FjeVxuICAgICAgLi4uKHtcbiAgICAgICAgX3g6IGNoaWxkLngsXG4gICAgICAgIF95OiBjaGlsZC55LFxuICAgICAgICBfd2lkdGg6IGNoaWxkLndpZHRoLFxuICAgICAgICBfaGVpZ2h0OiBjaGlsZC5oZWlnaHRcbiAgICAgIH0gYXMgV2lkZ2V0KVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFkZFJlcG9ydERhc2hib2FyZFNldHRpbmdzKCkge1xuICAgIHRoaXMuc2V0VGl0bGUgPSB0cnVlO1xuICAgIHRoaXMudGl0bGUgPSB0aGlzLmNvbnRleHQubmFtZTtcbiAgICB0aGlzLmJyZWFkY3J1bWJTZXR0aW5ncyA9IHtcbiAgICAgIGljb246ICd0aCcsXG4gICAgICBsYWJlbDogJ1JlcG9ydHMnLFxuICAgICAgcGF0aDogJ3JlcG9ydHMnXG4gICAgfTtcbiAgICB0aGlzLmNhbkRlbGV0ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5Db3B5RGFzaGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5oYXNQZXJtaXNzaW9uc1RvQ29weURhc2hib2FyZCgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgYWxsRGFzaGJvYXJkQ2hpbGRyZW5BcmVWYWxpZCA9IGV2ZXJ5KHRoaXMubW8uYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiwgY2hpbGQgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gY2hpbGQuY29uZmlnIHx8IHt9O1xuICAgICAgY29uc3QgZGF0YVBvaW50cyA9IGNvbmZpZy5kYXRhcG9pbnRzIHx8IFtdO1xuICAgICAgcmV0dXJuICEoXG4gICAgICAgIChjb25maWcuZGV2aWNlICYmIGNvbmZpZy5kZXZpY2UuaWQgIT09IHRoaXMuY29udGV4dC5pZCkgfHxcbiAgICAgICAgc29tZShkYXRhUG9pbnRzLCBkYXRhUG9pbnQgPT4gZGF0YVBvaW50Ll9fdGFyZ2V0Py5pZCAhPT0gdGhpcy5jb250ZXh0LmlkKVxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWxsRGFzaGJvYXJkQ2hpbGRyZW5BcmVWYWxpZDtcbiAgfVxufVxuIiwiPGM4eS10aXRsZSAqbmdJZj1cInRpdGxlXCI+XG4gIHt7IHRpdGxlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gKm5nSWY9XCJkZWZhdWx0V2lkZ2V0cy5sZW5ndGggPiAwXCIgW3BsYWNlbWVudF09XCIncmlnaHQnXCIgW3ByaW9yaXR5XT1cIi0xXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgW2Rpc2FibGVkXT1cImRhc2hib2FyZD8uaXNGcm96ZW4gfHwgZGlzYWJsZWRcIlxuICAgIChjbGljayk9XCJyZXN0b3JlKClcIlxuICAgIHRpdGxlPVwie3sgJ1Jlc2V0IGRhc2hib2FyZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIHB4LWV2ZW50PVwiUmVzZXQgZGFzaGJvYXJkXCJcbiAgICBkYXRhLWN5PVwiY29udGV4dC1kYXNoYm9hcmQtLWJ1dHRvbi1yZXNldC1kYXNoYm9hcmRcIlxuICA+XG4gICAgPGkgY2xhc3M9XCJtLXItNFwiIGM4eUljb249XCJyZXNldFwiPjwvaT5cbiAgICB7eyAnUmVzZXQgZGFzaGJvYXJkJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1oZWxwICpuZ0lmPVwic2hvd0NvbnRleHRIZWxwQnV0dG9uXCIgc3JjPVwiL3VzZXJzLWd1aWRlL2NvY2twaXQvI2Rhc2hib2FyZHNcIj48L2M4eS1oZWxwPlxuXG48Yzh5LXdpZGdldHMtZGFzaGJvYXJkXG4gIFtjb250ZXh0XT1cImNvbnRleHRcIlxuICBbY29udGV4dERhc2hib2FyZF09XCJkYXNoYm9hcmRcIlxuICBbd2lkZ2V0c109XCJ3aWRnZXRzXCJcbiAgW3NldHRpbmdzXT1cIntcbiAgICBpc0xvYWRpbmc6IGlzTG9hZGluZyxcbiAgICBpc0Zyb3plbjogZGFzaGJvYXJkPy5pc0Zyb3plbixcbiAgICBpc0Rpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBjYW5EZWxldGU6IGNhbkRlbGV0ZSxcbiAgICB0cmFuc2xhdGVXaWRnZXRUaXRsZTogZGFzaGJvYXJkPy50cmFuc2xhdGVXaWRnZXRUaXRsZSxcbiAgICBhbGxvd0Z1bGxzY3JlZW46IG1vZHVsZUNvbmZpZy5hbGxvd0Z1bGxzY3JlZW4sXG4gICAgdGl0bGU6IHNldFRpdGxlID8gZGFzaGJvYXJkLm5hbWUgfHwgdGl0bGUgOiB1bmRlZmluZWQsXG4gICAgd2lkZ2V0TWFyZ2luOiBkYXNoYm9hcmQ/LndpZGdldE1hcmdpbixcbiAgICBjYW5Db3B5OiBjYW5Db3B5LFxuICAgIGlzQ29weURpc2FibGVkOiBpc0NvcHlEaXNhYmxlZCxcbiAgICBjb2x1bW5zOiBkYXNoYm9hcmQ/LmNvbHVtbnMgfHwgMTJcbiAgfVwiXG4gIFticmVhZGNydW1iXT1cImJyZWFkY3J1bWJTZXR0aW5nc1wiXG4gIChvbkZyZWV6ZSk9XCJ0b2dnbGVGcmVlemUoJGV2ZW50KVwiXG4gIChvbkNoYW5nZURhc2hib2FyZCk9XCJ1cGRhdGVEYXNoYm9hcmRDaGlsZHJlbigkZXZlbnQpXCJcbiAgKG9uQWRkV2lkZ2V0KT1cImFkZFdpZGdldCgpXCJcbiAgKG9uRWRpdFdpZGdldCk9XCJlZGl0V2lkZ2V0KCRldmVudClcIlxuICAob25EZWxldGVXaWRnZXQpPVwiZGVsZXRlV2lkZ2V0KCRldmVudClcIlxuICAob25DaGFuZ2VTdGFydCk9XCJhZGREYXNoYm9hcmRDbGFzc1RvQm9keSgpXCJcbiAgKG9uQ2hhbmdlRW5kKT1cInJlbW92ZURhc2hib2FyZENsYXNzRnJvbUJvZHkoKVwiXG4gIChvbkVkaXREYXNoYm9hcmQpPVwiZWRpdERhc2hib2FyZCgpXCJcbiAgKG9uQ29weURhc2hib2FyZCk9XCJjb3B5RGFzaGJvYXJkKClcIlxuICAob25EZWxldGVEYXNoYm9hcmQpPVwiZGVsZXRlRGFzaGJvYXJkKClcIlxuPjwvYzh5LXdpZGdldHMtZGFzaGJvYXJkPlxuIl19
@@ -117,4 +117,4 @@ export const PRODUCT_EXPERIENCE = {
117
117
  }
118
118
  }
119
119
  };
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9jb250ZXh0LWRhc2hib2FyZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFJTCxPQUFPLEVBRVIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBTSx3QkFBd0IsQ0FBQyxDQUFDO0FBK0cxRixNQUFNLENBQU4sSUFBWSxvQkFNWDtBQU5ELFdBQVksb0JBQW9CO0lBQzlCLHlDQUFpQixDQUFBO0lBQ2pCLDJDQUFtQixDQUFBO0lBQ25CLHVDQUFlLENBQUE7SUFDZixzQ0FBYyxDQUFBO0lBQ2QseUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQU5XLG9CQUFvQixLQUFwQixvQkFBb0IsUUFNL0I7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQztRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLHNEQUFzRCxDQUFDO0tBQzdFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFdBQVcsRUFBRSxPQUFPLENBQUMsc0VBQXNFLENBQUM7S0FDN0Y7SUFDRDtRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLHlDQUF5QyxDQUFDO0tBQ2hFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFdBQVcsRUFBRSxPQUFPLENBQUMsaUNBQWlDLENBQUM7S0FDeEQ7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEM7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixDQUFDO1FBQ3hDLEtBQUssRUFBRSxxQkFBcUI7UUFDNUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyx5REFBeUQsQ0FBQztLQUNoRjtJQUNEO1FBQ0UsS0FBSyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDOUIsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLDBFQUEwRSxDQUFDO0tBQ2pHO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUM3QixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFdBQVcsRUFBRSxPQUFPLENBQUMseUVBQXlFLENBQUM7S0FDaEc7SUFDRDtRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsb0JBQW9CLENBQUM7UUFDcEMsS0FBSyxFQUFFLDJCQUEyQjtRQUNsQyxXQUFXLEVBQUUsT0FBTyxDQUFDLCtCQUErQixDQUFDO0tBQ3REO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1FBQ2hDLEtBQUssRUFBRSx1QkFBdUI7UUFDOUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxpREFBaUQsQ0FBQztLQUN4RTtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQztRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDakMsS0FBSyxFQUFFLHVCQUF1QjtRQUM5QixXQUFXLEVBQUUsT0FBTyxDQUFDLHFEQUFxRCxDQUFDO0tBQzVFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM5QixLQUFLLEVBQUUsdUJBQXVCO1FBQzlCLFdBQVcsRUFBRSxPQUFPLENBQ2xCLDZFQUE2RSxDQUM5RTtLQUNGO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUM3QixLQUFLLEVBQUUsc0JBQXNCO1FBQzdCLFdBQVcsRUFBRSxPQUFPLENBQ2xCLDRFQUE0RSxDQUM3RTtLQUNGO0lBQ0QsSUFBSTtJQUNKLDBDQUEwQztJQUMxQywwQ0FBMEM7SUFDMUMsMEJBQTBCO0lBQzFCLDRGQUE0RjtJQUM1RixNQUFNO0lBQ04sS0FBSztJQUNMO1FBQ0UsS0FBSyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztRQUNoQyxLQUFLLEVBQUUseUJBQXlCO1FBQ2hDLFdBQVcsRUFBRSxPQUFPLENBQUMsa0RBQWtELENBQUM7S0FDekU7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQVk3RixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxLQUFjLENBQUM7QUFHeEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsU0FBUyxFQUFFO1FBQ1QsTUFBTSxFQUFFO1lBQ04sVUFBVSxFQUFFLFlBQVk7WUFDeEIsT0FBTyxFQUFFLFNBQVM7U0FDbkI7UUFDRCxVQUFVLEVBQUU7WUFDVixjQUFjLEVBQUUsbUJBQW1CO1lBQ25DLHNCQUFzQixFQUFFLHdCQUF3QjtZQUNoRCxZQUFZLEVBQUUsdUJBQXVCO1lBQ3JDLFVBQVUsRUFBRSx1QkFBdUI7WUFDbkMsYUFBYSxFQUFFLGVBQWU7WUFDOUIsZ0JBQWdCLEVBQUUsbUJBQW1CO1NBQ3RDO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsTUFBTSxFQUFFLFFBQVE7WUFDaEIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsS0FBSyxFQUFFLE9BQU87WUFDZCxLQUFLLEVBQUUsT0FBTztTQUNmO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsMEJBQTBCLEVBQUUseUJBQXlCO1lBQ3JELE1BQU0sRUFBRSxRQUFRO1lBQ2hCLElBQUksRUFBRSxNQUFNO1lBQ1osTUFBTSxFQUFFLFFBQVE7U0FDakI7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBXaWRnZXQsXG4gIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICBSb3V0ZSxcbiAgZ2V0dGV4dCxcbiAgVmlld0NvbnRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbmV4cG9ydCBjb25zdCBDT05URVhUX0RBU0hCT0FSRF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignQ29udGV4dERhc2hib2FyZENvbmZpZycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHREYXNoYm9hcmRDb25maWcge1xuICB3aWRnZXRGaWx0ZXI/OiAoY29tcG9uZW50OiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbikgPT4gYm9vbGVhbjtcbiAgYWxsb3dGdWxsc2NyZWVuPzogYm9vbGVhbjtcbiAgcm91dGVzPzogUm91dGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0V2lkZ2V0Q29uZmlnIHtcbiAgLyoqXG4gICAqIFNldHRpbmdzIHRoYXQgZGVmaW5lIGhvdyB0aGUgZGVmYXVsdCBjb25maWcgY29tcG9uZW50IGlzXG4gICAqIGRpc3BsYXllZC4gVGhleSBhcmUgc3RhdGljIGFuZCB3aWxsIG5vdCBiZSBzYXZlZC5cbiAgICovXG4gIHNldHRpbmdzPzoge1xuICAgIC8qKlxuICAgICAqIEF2b2lkcyB0byBzaG93IHRoZSB3aWRnZXQgaW4gdGhlIFwiYWRkIHdpZGdldFwiIG1vZGFsXG4gICAgICovXG4gICAgbm9OZXdXaWRnZXRzPzogYm9vbGVhbjtcbiAgICBuZzE/OiB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXQgdGhpcyB0byBmYWxzZSwgdG8gaGlkZSB0aGUgZGV2aWNlL2dyb3VwIHNlbGVjdG9yXG4gICAgICAgICAqIEBkZXByZWNhdGVkOiBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IGltcGxlbWVudGVkIGluIGFuZ3VsYXJqcyBhbmQgd2lsbCBiZSBleHBvcnRlZCB0byBhIHNlcGFyYXRlIGNvbXBvbmVudC5cbiAgICAgICAgICovXG4gICAgICAgIG5vRGV2aWNlVGFyZ2V0PzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldCB0aGlzIHRvIGZhbHNlIHRvIG9ubHkgc2VsZWN0IGRldmljZXNcbiAgICAgICAgICogQGRlcHJlY2F0ZWQ6IFRoaXMgaXMgY3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgaW4gYW5ndWxhcmpzIGFuZCB3aWxsIGJlIGV4cG9ydGVkIHRvIGEgc2VwYXJhdGUgY29tcG9uZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgZ3JvdXBzU2VsZWN0YWJsZT86IGJvb2xlYW47XG4gICAgICB9O1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgY29udGV4dCBmcm9tIHRoZSBkZXZpY2Ugc2VsZWN0b3IuXG4gICAgICAgKi9cbiAgICAgIGNvbnRleHQ/OiB7XG4gICAgICAgIGlkPzogc3RyaW5nO1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwgc2V0dGluZ3MgcGFzc2VkIHRvIHRoZSBjb25maWd1cmF0aW9uIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNldHRpbmdzIHRoYXQgYXJlIGluamVjdGVkIGluIGFueSBkaXNwbGF5aW5nIGNvbXBvbmVudC5cbiAgICovXG4gIGRpc3BsYXlTZXR0aW5ncz86IHtcbiAgICAvKipcbiAgICAgKiBJZiBlbmFibGVkIHRoZSB3aWRnZXQgaXMgYm91bmQgdG8gdGhlIGdsb2JhbCB0aW1lIGNvbnRleHQuIFlvdSBjYW4gbGlzdGVuIHRvIG5nT25DaGFuZ2VzKCkgY2hhbmdlIGRldGVjdGlvblxuICAgICAqIHRvIHJlYWN0IHRvIGNoYW5nZXMgb24gdGhlIGNvbnRleHQuIFdoZW4gYSBtb3JlIGRldGFpbGVkIGNvbmZpZ3VyYXRpb24gaXMgbmVlZGVkLCB1c2UgdGhlIDxjOHktd2lkZ2V0LXRpbWUtY29udGV4dD5cbiAgICAgKiBjb21wb25lbnQgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBnbG9iYWxUaW1lQ29udGV4dD86IGJvb2xlYW47XG4gIH07XG5cbiAgLyoqXG4gICAqIFdoYXRldmVyIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgY29uZmlndXJhdGlvbiB3aGVuIGEgd2lkZ2V0IGlzIGNyZWF0ZWQuXG4gICAqL1xuICBjb25maWc/OiB7XG4gICAgLyoqXG4gICAgICogQW55IG90aGVyIGluZm9ybWF0aW9uIHRoYXQgc2hvdWxkIGJlIHN0b3JlZCBoZXJlLlxuICAgICAqL1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgLyoqXG4gICAqIFRoZSBzZWxlY3RlZCBkZXZpY2Ugb3IgZ3JvdXAgKG5vdGU6IG5hbWluZyBpcyBpbmNvbnNpc3RlbnQgYXMgZ3JvdXAgd2FzIGFkZGVkIGxhdGVyXG4gICAqIGJ1dCBtdXN0IHN0YXkgZm9yIGFscmVhZHkgaW1wbGVtZW50ZWQgd2lkZ2V0cylcbiAgICovXG4gIGRldmljZT86IHtcbiAgICBpZD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgLyoqXG4gICAqIEFueSBvdGhlciBpbmZvcm1hdGlvbiB0aGF0IHNob3VsZCBiZSBzdG9yZWQgaGVyZS5cbiAgICovXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCBleHRlbmRzIElNYW5hZ2VkT2JqZWN0IHtcbiAgYzh5X0Rhc2hib2FyZD86IENvbnRleHREYXNoYm9hcmQ7XG4gIG5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dERhc2hib2FyZCB7XG4gIGljb24/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHByaW9yaXR5PzogbnVtYmVyO1xuICBkZXZpY2VUeXBlPzogYm9vbGVhbjtcbiAgZGV2aWNlVHlwZVZhbHVlPzogc3RyaW5nO1xuICBpc0Zyb3plbj86IGJvb2xlYW47XG4gIGNsYXNzZXM/OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgd2lkZ2V0Q2xhc3Nlcz86IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9O1xuICB3aWRnZXRNYXJnaW4/OiBudW1iZXI7XG4gIHRyYW5zbGF0ZVdpZGdldFRpdGxlPzogYm9vbGVhbjtcbiAgZ2xvYmFsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgY29sdW1ucyBvbiB0aGF0IGRhc2hib2FyZC5cbiAgICogQ2FuIGJlIGZyZWVseSBjaG9zZW4sIGJ1dCBwcm9kdWN0IHVzZXMgZWl0aGVyIDEyIG9yIDI0LlxuICAgKi9cbiAgY29sdW1ucz86IG51bWJlcjtcbiAgY2hpbGRyZW4/OiB7XG4gICAgW2lkOiBzdHJpbmddOiBXaWRnZXQ7XG4gIH07XG4gIGdsb2JhbFJvbGVzSWRzPzogRGFzaGJvYXJkR2xvYmFsUm9sZXM7XG4gIGM4eV9Jc05hdmlnYXRvck5vZGU/OiBvYmplY3Q7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBDb250ZXh0RGFzaGJvYXJkVHlwZSB7XG4gIERldmljZSA9ICdkZXZpY2UnLFxuICBEZXZpY2VUeXBlID0gJ3R5cGUnLFxuICBHcm91cCA9ICdncm91cCcsXG4gIE5hbWVkID0gJ25hbWUnLFxuICBSZXBvcnQgPSAncmVwb3J0J1xufVxuXG5leHBvcnQgY29uc3QgV0lER0VUX0hFQURFUl9DTEFTU0VTID0gW1xuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ1JlZ3VsYXJgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC10aXRsZS1yZWd1bGFyJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoYXMgbm8gYm9yZGVyIGJldHdlZW4gaGVhZGVyIGFuZCBjb250ZW50LicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnQm9yZGVyYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtYm9yZGVyJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoYXMgYSBzbWFsbCBzZXBhcmF0aW9uIGJvcmRlciBiZXR3ZWVuIGhlYWRlciBhbmQgY29udGVudC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ092ZXJsYXlgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC10aXRsZS1vdmVybGF5JyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBjb250ZW50IG92ZXJsYXlzIHRoZSBoZWFkZXIuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdIaWRkZW5gc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC10aXRsZS1oaWRkZW4nLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhlYWRlciBpcyBub3Qgc2hvd24uJylcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IFdJREdFVF9DT05URU5UX0NMQVNTRVMgPSBbXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnTWF0Y2ggZGFzaGJvYXJkYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtY29udGVudC1saWdodCcsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgYXBwZWFyYW5jZSBtYXRjaGVzIHRoZSBkYXNoYm9hcmQgYXBwZWFyYW5jZS4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0xpZ2h0YHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtY29udGVudC13aGl0ZScsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIGxpZ2h0IGFwcGVhcmFuY2UsIHRoYXQgaXMsIGRhcmsgdGV4dCBvbiBsaWdodCBiYWNrZ3JvdW5kLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnRGFya2BzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtZGFyaycsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIGRhcmsgYXBwZWFyYW5jZSwgdGhhdCBpcywgbGlnaHQgdGV4dCBvbiBkYXJrIGJhY2tncm91bmQuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdUcmFuc3BhcmVudGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtdHJhbnNwYXJlbnQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBubyBiYWNrZ3JvdW5kLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnQnJhbmRlZGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtYnJhbmRlZCcsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaXMgc3R5bGVkIHdpdGggdGhlIG1haW4gYnJhbmQgY29sb3IuJylcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IERBU0hCT0FSRF9USEVNRV9DTEFTU0VTID0gW1xuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ01hdGNoIFVJYHRoZW1lYCcpLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLWxpZ2h0JyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIGRhc2hib2FyZCBhcHBlYXJhbmNlIG1hdGNoZXMgdGhlIFVJIGFwcGVhcmFuY2UuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdMaWdodGB0aGVtZWAnKSxcbiAgICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS13aGl0ZScsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoXG4gICAgICAnVGhlIGRhc2hib2FyZCBoYXMgbGlnaHQgYXBwZWFyYW5jZSwgdGhhdCBpcywgZGFyayB0ZXh0IG9uIGxpZ2h0IGJhY2tncm91bmQuJ1xuICAgIClcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdEYXJrYHRoZW1lYCcpLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLWRhcmsnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgJ1RoZSBkYXNoYm9hcmQgaGFzIGRhcmsgYXBwZWFyYW5jZSwgdGhhdCBpcywgbGlnaHQgdGV4dCBvbiBkYXJrIGJhY2tncm91bmQuJ1xuICAgIClcbiAgfSxcbiAgLy8ge1xuICAvLyAgIGxhYmVsOiBnZXR0ZXh0KCdUcmFuc3BhcmVudGB0aGVtZWAnKSxcbiAgLy8gICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS10cmFuc3BhcmVudCcsXG4gIC8vICAgZGVzY3JpcHRpb246IGdldHRleHQoXG4gIC8vICAgICAnVGhlIGRhc2hib2FyZCBpcyBzdHlsZWQgd2l0aCBhIHRyYW5zcGFyZW50IGJhY2tncm91bmQgYW5kIHRoZXJlZm9yZSBpcyBib3JkZXItbGVzcy4nXG4gIC8vICAgKVxuICAvLyB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0JyYW5kZWRgdGhlbWVgJyksXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtYnJhbmRlZCcsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSBkYXNoYm9hcmQgaXMgc3R5bGVkIHVzaW5nIHRoZSBicmFuZCBwYWxldHRlLicpXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBTVFlMSU5HX0NMQVNTX1BSRUZJWEVTID0gWydkYXNoYm9hcmQtdGhlbWUtJywgJ3BhbmVsLXRpdGxlLScsICdwYW5lbC1jb250ZW50LSddO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZENvcHlDbGlwYm9hcmQge1xuICBkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmQ7XG4gIGNvbnRleHQ6IERhc2hib2FyZENvbnRleHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGFzaGJvYXJkQ29udGV4dCB7XG4gIGNvbnRleHQ6IFZpZXdDb250ZXh0O1xuICBjb250ZXh0RGF0YTogUGFydGlhbDxJTWFuYWdlZE9iamVjdD47XG59XG5cbmV4cG9ydCBjb25zdCBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEID0gJ2FsbCcgYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBEYXNoYm9hcmRHbG9iYWxSb2xlcyA9IG51bWJlcltdIHwgdHlwZW9mIEFMTF9HTE9CQUxfUk9MRVNfU0VMRUNURUQ7XG5cbmV4cG9ydCBjb25zdCBQUk9EVUNUX0VYUEVSSUVOQ0UgPSB7XG4gIERBU0hCT0FSRDoge1xuICAgIEVWRU5UUzoge1xuICAgICAgREFTSEJPQVJEUzogJ2Rhc2hib2FyZHMnLFxuICAgICAgUkVQT1JUUzogJ3JlcG9ydHMnXG4gICAgfSxcbiAgICBDT01QT05FTlRTOiB7XG4gICAgICBEQVNIQk9BUkRfVklFVzogJ2NvbnRleHQtZGFzaGJvYXJkJyxcbiAgICAgIERBU0hCT0FSRF9BVkFJTEFCSUxJVFk6ICdkYXNoYm9hcmQtYXZhaWxhYmlsaXR5JyxcbiAgICAgIFJFUE9SVFNfTElTVDogJ3JlcG9ydC1kYXNoYm9hcmQtbGlzdCcsXG4gICAgICBBRERfUkVQT1JUOiAncmVwb3J0LWRhc2hib2FyZC1saXN0JyxcbiAgICAgIEFERF9EQVNIQk9BUkQ6ICdhZGQtZGFzaGJvYXJkJyxcbiAgICAgIERFTEVURV9EQVNIQk9BUkQ6ICdjb250ZXh0LWRhc2hib2FyZCdcbiAgICB9LFxuICAgIENPTlRFWFQ6IHtcbiAgICAgIFJFUE9SVDogJ3JlcG9ydCcsXG4gICAgICBERVZJQ0U6ICdkZXZpY2UnLFxuICAgICAgQVNTRVQ6ICdhc3NldCcsXG4gICAgICBHUk9VUDogJ2dyb3VwJ1xuICAgIH0sXG4gICAgQUNUSU9OUzoge1xuICAgICAgQVBQTFlfR0xPQkFMX1JPTEVTX0NIQU5HRVM6ICdhcHBseUdsb2JhbFJvbGVzQ2hhbmdlcycsXG4gICAgICBERUxFVEU6ICdkZWxldGUnLFxuICAgICAgTE9BRDogJ2xvYWQnLFxuICAgICAgQ1JFQVRFOiAnY3JlYXRlJ1xuICAgIH1cbiAgfVxufTtcbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9jb250ZXh0LWRhc2hib2FyZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFJTCxPQUFPLEVBRVIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBTSx3QkFBd0IsQ0FBQyxDQUFDO0FBK0cxRixNQUFNLENBQU4sSUFBWSxvQkFNWDtBQU5ELFdBQVksb0JBQW9CO0lBQzlCLHlDQUFpQixDQUFBO0lBQ2pCLDJDQUFtQixDQUFBO0lBQ25CLHVDQUFlLENBQUE7SUFDZixzQ0FBYyxDQUFBO0lBQ2QseUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQU5XLG9CQUFvQixLQUFwQixvQkFBb0IsUUFNL0I7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQztRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLHNEQUFzRCxDQUFDO0tBQzdFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFdBQVcsRUFBRSxPQUFPLENBQUMsc0VBQXNFLENBQUM7S0FDN0Y7SUFDRDtRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLHlDQUF5QyxDQUFDO0tBQ2hFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQixLQUFLLEVBQUUsb0JBQW9CO1FB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QUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBXaWRnZXQsXG4gIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICBSb3V0ZSxcbiAgZ2V0dGV4dCxcbiAgVmlld0NvbnRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbmV4cG9ydCBjb25zdCBDT05URVhUX0RBU0hCT0FSRF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignQ29udGV4dERhc2hib2FyZENvbmZpZycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHREYXNoYm9hcmRDb25maWcge1xuICB3aWRnZXRGaWx0ZXI/OiAoY29tcG9uZW50OiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbikgPT4gYm9vbGVhbjtcbiAgYWxsb3dGdWxsc2NyZWVuPzogYm9vbGVhbjtcbiAgcm91dGVzPzogUm91dGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0V2lkZ2V0Q29uZmlnIHtcbiAgLyoqXG4gICAqIFNldHRpbmdzIHRoYXQgZGVmaW5lIGhvdyB0aGUgZGVmYXVsdCBjb25maWcgY29tcG9uZW50IGlzXG4gICAqIGRpc3BsYXllZC4gVGhleSBhcmUgc3RhdGljIGFuZCB3aWxsIG5vdCBiZSBzYXZlZC5cbiAgICovXG4gIHNldHRpbmdzPzoge1xuICAgIC8qKlxuICAgICAqIEF2b2lkcyB0byBzaG93IHRoZSB3aWRnZXQgaW4gdGhlIFwiYWRkIHdpZGdldFwiIG1vZGFsXG4gICAgICovXG4gICAgbm9OZXdXaWRnZXRzPzogYm9vbGVhbjtcbiAgICBuZzE/OiB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXQgdGhpcyB0byBmYWxzZSwgdG8gaGlkZSB0aGUgZGV2aWNlL2dyb3VwIHNlbGVjdG9yXG4gICAgICAgICAqIEBkZXByZWNhdGVkOiBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IGltcGxlbWVudGVkIGluIGFuZ3VsYXJqcyBhbmQgd2lsbCBiZSBleHBvcnRlZCB0byBhIHNlcGFyYXRlIGNvbXBvbmVudC5cbiAgICAgICAgICovXG4gICAgICAgIG5vRGV2aWNlVGFyZ2V0PzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldCB0aGlzIHRvIGZhbHNlIHRvIG9ubHkgc2VsZWN0IGRldmljZXNcbiAgICAgICAgICogQGRlcHJlY2F0ZWQ6IFRoaXMgaXMgY3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgaW4gYW5ndWxhcmpzIGFuZCB3aWxsIGJlIGV4cG9ydGVkIHRvIGEgc2VwYXJhdGUgY29tcG9uZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgZ3JvdXBzU2VsZWN0YWJsZT86IGJvb2xlYW47XG4gICAgICB9O1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgY29udGV4dCBmcm9tIHRoZSBkZXZpY2Ugc2VsZWN0b3IuXG4gICAgICAgKi9cbiAgICAgIGNvbnRleHQ/OiB7XG4gICAgICAgIGlkPzogc3RyaW5nO1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwgc2V0dGluZ3MgcGFzc2VkIHRvIHRoZSBjb25maWd1cmF0aW9uIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNldHRpbmdzIHRoYXQgYXJlIGluamVjdGVkIGluIGFueSBkaXNwbGF5aW5nIGNvbXBvbmVudC5cbiAgICovXG4gIGRpc3BsYXlTZXR0aW5ncz86IHtcbiAgICAvKipcbiAgICAgKiBJZiBlbmFibGVkIHRoZSB3aWRnZXQgaXMgYm91bmQgdG8gdGhlIGdsb2JhbCB0aW1lIGNvbnRleHQuIFlvdSBjYW4gbGlzdGVuIHRvIG5nT25DaGFuZ2VzKCkgY2hhbmdlIGRldGVjdGlvblxuICAgICAqIHRvIHJlYWN0IHRvIGNoYW5nZXMgb24gdGhlIGNvbnRleHQuIFdoZW4gYSBtb3JlIGRldGFpbGVkIGNvbmZpZ3VyYXRpb24gaXMgbmVlZGVkLCB1c2UgdGhlIDxjOHktd2lkZ2V0LXRpbWUtY29udGV4dD5cbiAgICAgKiBjb21wb25lbnQgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBnbG9iYWxUaW1lQ29udGV4dD86IGJvb2xlYW47XG4gIH07XG5cbiAgLyoqXG4gICAqIFdoYXRldmVyIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgY29uZmlndXJhdGlvbiB3aGVuIGEgd2lkZ2V0IGlzIGNyZWF0ZWQuXG4gICAqL1xuICBjb25maWc/OiB7XG4gICAgLyoqXG4gICAgICogQW55IG90aGVyIGluZm9ybWF0aW9uIHRoYXQgc2hvdWxkIGJlIHN0b3JlZCBoZXJlLlxuICAgICAqL1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgLyoqXG4gICAqIFRoZSBzZWxlY3RlZCBkZXZpY2Ugb3IgZ3JvdXAgKG5vdGU6IG5hbWluZyBpcyBpbmNvbnNpc3RlbnQgYXMgZ3JvdXAgd2FzIGFkZGVkIGxhdGVyXG4gICAqIGJ1dCBtdXN0IHN0YXkgZm9yIGFscmVhZHkgaW1wbGVtZW50ZWQgd2lkZ2V0cylcbiAgICovXG4gIGRldmljZT86IHtcbiAgICBpZD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgLyoqXG4gICAqIEFueSBvdGhlciBpbmZvcm1hdGlvbiB0aGF0IHNob3VsZCBiZSBzdG9yZWQgaGVyZS5cbiAgICovXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCBleHRlbmRzIElNYW5hZ2VkT2JqZWN0IHtcbiAgYzh5X0Rhc2hib2FyZD86IENvbnRleHREYXNoYm9hcmQ7XG4gIG5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dERhc2hib2FyZCB7XG4gIGljb24/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHByaW9yaXR5PzogbnVtYmVyO1xuICBkZXZpY2VUeXBlPzogYm9vbGVhbjtcbiAgZGV2aWNlVHlwZVZhbHVlPzogc3RyaW5nO1xuICBpc0Zyb3plbj86IGJvb2xlYW47XG4gIGNsYXNzZXM/OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgd2lkZ2V0Q2xhc3Nlcz86IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9O1xuICB3aWRnZXRNYXJnaW4/OiBudW1iZXI7XG4gIHRyYW5zbGF0ZVdpZGdldFRpdGxlPzogYm9vbGVhbjtcbiAgZ2xvYmFsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgY29sdW1ucyBvbiB0aGF0IGRhc2hib2FyZC5cbiAgICogQ2FuIGJlIGZyZWVseSBjaG9zZW4sIGJ1dCBwcm9kdWN0IHVzZXMgZWl0aGVyIDEyIG9yIDI0LlxuICAgKi9cbiAgY29sdW1ucz86IG51bWJlcjtcbiAgY2hpbGRyZW4/OiB7XG4gICAgW2lkOiBzdHJpbmddOiBXaWRnZXQ7XG4gIH07XG4gIGdsb2JhbFJvbGVzSWRzPzogRGFzaGJvYXJkR2xvYmFsUm9sZXM7XG4gIGM4eV9Jc05hdmlnYXRvck5vZGU/OiBvYmplY3Q7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBDb250ZXh0RGFzaGJvYXJkVHlwZSB7XG4gIERldmljZSA9ICdkZXZpY2UnLFxuICBEZXZpY2VUeXBlID0gJ3R5cGUnLFxuICBHcm91cCA9ICdncm91cCcsXG4gIE5hbWVkID0gJ25hbWUnLFxuICBSZXBvcnQgPSAncmVwb3J0J1xufVxuXG5leHBvcnQgY29uc3QgV0lER0VUX0hFQURFUl9DTEFTU0VTID0gW1xuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ1JlZ3VsYXJgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC10aXRsZS1yZWd1bGFyJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoYXMgbm8gYm9yZGVyIGJldHdlZW4gaGVhZGVyIGFuZCBjb250ZW50LicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnQm9yZGVyYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtYm9yZGVyJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoYXMgYSBzbWFsbCBzZXBhcmF0aW9uIGJvcmRlciBiZXR3ZWVuIGhlYWRlciBhbmQgY29udGVudC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ092ZXJsYXlgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC10aXRsZS1vdmVybGF5JyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBjb250ZW50IG92ZXJsYXlzIHRoZSBoZWFkZXIuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdIaWRkZW5gc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC10aXRsZS1oaWRkZW4nLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhlYWRlciBpcyBub3Qgc2hvd24uJylcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IFdJREdFVF9DT05URU5UX0NMQVNTRVMgPSBbXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnTWF0Y2ggZGFzaGJvYXJkYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtY29udGVudC1saWdodCcsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgYXBwZWFyYW5jZSBtYXRjaGVzIHRoZSBkYXNoYm9hcmQgYXBwZWFyYW5jZS4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0xpZ2h0YHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtY29udGVudC13aGl0ZScsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIGxpZ2h0IGFwcGVhcmFuY2UsIHRoYXQgaXMsIGRhcmsgdGV4dCBvbiBsaWdodCBiYWNrZ3JvdW5kLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnRGFya2BzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtZGFyaycsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIGRhcmsgYXBwZWFyYW5jZSwgdGhhdCBpcywgbGlnaHQgdGV4dCBvbiBkYXJrIGJhY2tncm91bmQuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdUcmFuc3BhcmVudGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtdHJhbnNwYXJlbnQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBubyBiYWNrZ3JvdW5kLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnQnJhbmRlZGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtYnJhbmRlZCcsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaXMgc3R5bGVkIHdpdGggdGhlIG1haW4gYnJhbmQgY29sb3IuJylcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IERBU0hCT0FSRF9USEVNRV9DTEFTU0VTID0gW1xuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ01hdGNoIFVJYHRoZW1lYCcpLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLWxpZ2h0JyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIGRhc2hib2FyZCBhcHBlYXJhbmNlIG1hdGNoZXMgdGhlIFVJIGFwcGVhcmFuY2UuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdMaWdodGB0aGVtZWAnKSxcbiAgICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS13aGl0ZScsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoXG4gICAgICAnVGhlIGRhc2hib2FyZCBoYXMgbGlnaHQgYXBwZWFyYW5jZSwgdGhhdCBpcywgZGFyayB0ZXh0IG9uIGxpZ2h0IGJhY2tncm91bmQuJ1xuICAgIClcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdEYXJrYHRoZW1lYCcpLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLWRhcmsnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgJ1RoZSBkYXNoYm9hcmQgaGFzIGRhcmsgYXBwZWFyYW5jZSwgdGhhdCBpcywgbGlnaHQgdGV4dCBvbiBkYXJrIGJhY2tncm91bmQuJ1xuICAgIClcbiAgfSxcbiAgLy8ge1xuICAvLyAgIGxhYmVsOiBnZXR0ZXh0KCdUcmFuc3BhcmVudGB0aGVtZWAnKSxcbiAgLy8gICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS10cmFuc3BhcmVudCcsXG4gIC8vICAgZGVzY3JpcHRpb246IGdldHRleHQoXG4gIC8vICAgICAnVGhlIGRhc2hib2FyZCBpcyBzdHlsZWQgd2l0aCBhIHRyYW5zcGFyZW50IGJhY2tncm91bmQgYW5kIHRoZXJlZm9yZSBpcyBib3JkZXItbGVzcy4nXG4gIC8vICAgKVxuICAvLyB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0JyYW5kZWRgdGhlbWVgJyksXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtYnJhbmRlZCcsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSBkYXNoYm9hcmQgaXMgc3R5bGVkIHVzaW5nIHRoZSBicmFuZCBwYWxldHRlLicpXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBTVFlMSU5HX0NMQVNTX1BSRUZJWEVTID0gWydkYXNoYm9hcmQtdGhlbWUtJywgJ3BhbmVsLXRpdGxlLScsICdwYW5lbC1jb250ZW50LSddO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZENvcHlDbGlwYm9hcmQge1xuICBkYXNoYm9hcmRJZDogc3RyaW5nO1xuICBkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmQ7XG4gIGNvbnRleHQ6IERhc2hib2FyZENvbnRleHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGFzaGJvYXJkQ29udGV4dCB7XG4gIGNvbnRleHQ6IFZpZXdDb250ZXh0O1xuICBjb250ZXh0RGF0YTogUGFydGlhbDxJTWFuYWdlZE9iamVjdD47XG59XG5cbmV4cG9ydCBjb25zdCBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEID0gJ2FsbCcgYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBEYXNoYm9hcmRHbG9iYWxSb2xlcyA9IG51bWJlcltdIHwgdHlwZW9mIEFMTF9HTE9CQUxfUk9MRVNfU0VMRUNURUQ7XG5cbmV4cG9ydCBjb25zdCBQUk9EVUNUX0VYUEVSSUVOQ0UgPSB7XG4gIERBU0hCT0FSRDoge1xuICAgIEVWRU5UUzoge1xuICAgICAgREFTSEJPQVJEUzogJ2Rhc2hib2FyZHMnLFxuICAgICAgUkVQT1JUUzogJ3JlcG9ydHMnXG4gICAgfSxcbiAgICBDT01QT05FTlRTOiB7XG4gICAgICBEQVNIQk9BUkRfVklFVzogJ2NvbnRleHQtZGFzaGJvYXJkJyxcbiAgICAgIERBU0hCT0FSRF9BVkFJTEFCSUxJVFk6ICdkYXNoYm9hcmQtYXZhaWxhYmlsaXR5JyxcbiAgICAgIFJFUE9SVFNfTElTVDogJ3JlcG9ydC1kYXNoYm9hcmQtbGlzdCcsXG4gICAgICBBRERfUkVQT1JUOiAncmVwb3J0LWRhc2hib2FyZC1saXN0JyxcbiAgICAgIEFERF9EQVNIQk9BUkQ6ICdhZGQtZGFzaGJvYXJkJyxcbiAgICAgIERFTEVURV9EQVNIQk9BUkQ6ICdjb250ZXh0LWRhc2hib2FyZCdcbiAgICB9LFxuICAgIENPTlRFWFQ6IHtcbiAgICAgIFJFUE9SVDogJ3JlcG9ydCcsXG4gICAgICBERVZJQ0U6ICdkZXZpY2UnLFxuICAgICAgQVNTRVQ6ICdhc3NldCcsXG4gICAgICBHUk9VUDogJ2dyb3VwJ1xuICAgIH0sXG4gICAgQUNUSU9OUzoge1xuICAgICAgQVBQTFlfR0xPQkFMX1JPTEVTX0NIQU5HRVM6ICdhcHBseUdsb2JhbFJvbGVzQ2hhbmdlcycsXG4gICAgICBERUxFVEU6ICdkZWxldGUnLFxuICAgICAgTE9BRDogJ2xvYWQnLFxuICAgICAgQ1JFQVRFOiAnY3JlYXRlJ1xuICAgIH1cbiAgfVxufTtcbiJdfQ==