@kepler.gl/duckdb 3.2.6 → 3.3.0-alpha.0

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.
@@ -11,7 +11,7 @@ declare class Connection implements DatabaseConnection {
11
11
  }): Promise<void>;
12
12
  close(): Promise<void>;
13
13
  }
14
- declare type DuckDBWasmAdapterProps = {
14
+ type DuckDBWasmAdapterProps = {
15
15
  debug?: boolean;
16
16
  config?: DuckDBConfig;
17
17
  } | Promise<AsyncDuckDB>;
@@ -1,10 +1,10 @@
1
1
  import * as arrow from 'apache-arrow';
2
2
  import React, { CSSProperties } from 'react';
3
- declare type BaseComponentProps = {
3
+ type BaseComponentProps = {
4
4
  className?: string;
5
5
  style?: CSSProperties;
6
6
  };
7
- export declare type ColMeta = {
7
+ export type ColMeta = {
8
8
  [key: string]: {
9
9
  colIdx: number;
10
10
  name: string;
@@ -12,18 +12,18 @@ export declare type ColMeta = {
12
12
  type: string;
13
13
  };
14
14
  };
15
- export declare type DataTableStyle = {
15
+ export type DataTableStyle = {
16
16
  minCellSize?: number;
17
17
  cellPadding?: number;
18
18
  fontSize?: number;
19
19
  font?: string;
20
20
  optionsButton?: number;
21
21
  };
22
- export declare type QueryResult = {
22
+ export type QueryResult = {
23
23
  table: arrow.Table;
24
24
  tableDuckDBTypes: Record<string, string>;
25
25
  };
26
- export declare type PreviewDataPanelProps = BaseComponentProps & {
26
+ export type PreviewDataPanelProps = BaseComponentProps & {
27
27
  result: QueryResult;
28
28
  rowsToCalculatePreview?: number;
29
29
  theme?: any;
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
- export declare type SchemaSuggestion = {
2
+ export type SchemaSuggestion = {
3
3
  column_name: string;
4
4
  table_name: string;
5
5
  };
6
- declare type SchemaPanelProps = {
6
+ type SchemaPanelProps = {
7
7
  setTableSchema: (tableSchema: SchemaSuggestion[]) => void;
8
8
  droppedFile: File | null;
9
9
  schemaUpdateTrigger: number;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- declare type SqlPanelProps = {
2
+ type SqlPanelProps = {
3
3
  initialSql?: string;
4
4
  };
5
5
  export declare const SqlPanel: React.FC<SqlPanelProps>;
@@ -1,11 +1,11 @@
1
1
  import React from 'react';
2
- export declare type TreeNodeData<T> = {
2
+ export type TreeNodeData<T> = {
3
3
  key: string;
4
4
  object: T;
5
5
  children?: TreeNodeData<T>[];
6
6
  isOpen?: boolean;
7
7
  };
8
- export declare type TreeProps<T> = {
8
+ export type TreeProps<T> = {
9
9
  className?: string;
10
10
  treeData: TreeNodeData<T>;
11
11
  renderNode: TreeNodeProps<T>['renderNode'];
@@ -16,7 +16,7 @@ export declare type TreeProps<T> = {
16
16
  * @param renderNode - A function that renders a tree node.
17
17
  */
18
18
  export declare function Tree<T>(props: TreeProps<T>): React.ReactElement;
19
- export declare type TreeNodeProps<T> = {
19
+ export type TreeNodeProps<T> = {
20
20
  treeData: TreeNodeData<T>;
21
21
  renderNode: (node: TreeNodeData<T>, isOpen: boolean) => JSX.Element | null;
22
22
  };
@@ -2,10 +2,10 @@ import * as arrow from 'apache-arrow';
2
2
  import { ProtoDatasetField } from '@kepler.gl/types';
3
3
  import { processKeplerglJSON } from '@kepler.gl/processors';
4
4
  export declare const CSV_NULLS: RegExp;
5
- declare type RowsAsArray = any[][];
6
- declare type RowsAsObject = Record<string, unknown>[];
7
- declare type RowData = RowsAsArray | RowsAsObject;
8
- export declare type ProcessorResult = {
5
+ type RowsAsArray = any[][];
6
+ type RowsAsObject = Record<string, unknown>[];
7
+ type RowData = RowsAsArray | RowsAsObject;
8
+ export type ProcessorResult = {
9
9
  cols?: arrow.Vector[];
10
10
  rows: RowData;
11
11
  fields: ProtoDatasetField[];
@@ -3,7 +3,7 @@ import { DataType } from 'apache-arrow/type';
3
3
  import { ProtoDatasetField } from '@kepler.gl/types';
4
4
  import { DatabaseConnection } from '@kepler.gl/utils';
5
5
  export declare const SUPPORTED_DUCKDB_DROP_EXTENSIONS: string[];
6
- export declare type DuckDBColumnDesc = {
6
+ export type DuckDBColumnDesc = {
7
7
  name: string;
8
8
  type: string;
9
9
  };
@@ -666,4 +666,4 @@ function sanitizeDuckDBTableName(fileName) {
666
666
  }
667
667
  return name || 'default_table';
668
668
  }
669
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl90eXBlIiwiX2R1Y2tkYldhc20iLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMiLCJleHBvcnRzIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJfeCIsIl94MiIsIl9nZXREdWNrREJDb2x1bW5UeXBlcyIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUyIiwiY29ubmVjdGlvbiIsInRhYmxlTmFtZSIsInF1b3RlZFRhYmxlTmFtZSIsImR1Y2tEYlR5cGVzIiwicmVzSW5mbyIsIm51bVJvd3MiLCJjb2x1bW5OYW1lcyIsImNvbHVtblR5cGVzIiwicmVzRGVzY3JpYmUiLCJfbnVtUm93cyIsIl9pIiwiX3Jlc0Rlc2NyaWJlJGdldENoaWxkIiwiX3Jlc0Rlc2NyaWJlJGdldENoaWxkMiIsImNvbHVtbk5hbWUiLCJjb2x1bW5UeXBlIiwiZXJyb3IiLCJ3cmFwIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwicHJldiIsIm5leHQiLCJxdW90ZVRhYmxlTmFtZSIsInF1ZXJ5IiwiY29uY2F0Iiwic2VudCIsImdldENoaWxkIiwicHVzaCIsIm5hbWUiLCJ0eXBlIiwidDAiLCJnZXRDaGlsZEF0IiwidDEiLCJFcnJvciIsImNhdXNlIiwicHJpbWFyeUVycm9yIiwiZmFsbGJhY2tFcnJvciIsImFicnVwdCIsInN0b3AiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImNvbHVtbnMiLCJyZWR1Y2UiLCJhY2MiLCJ2YWx1ZSIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsImluY2x1ZGVzIiwicmVwbGFjZSIsInF1b3RlQ29sdW1uTmFtZSIsImNhc3REdWNrREJUeXBlc0ZvcktlcGxlciIsIm9wdGlvbnMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJnZW9tZXRyeVRvV0tCIiwiYmlnSW50VG9Eb3VibGUiLCJtb2RpZmllZENvbHVtbnMiLCJtYXAiLCJjb2x1bW4iLCJxdW90ZWRDb2x1bW5OYW1lIiwiam9pbiIsInNldEdlb0Fycm93V0tCRXh0ZW5zaW9uIiwidGFibGUiLCJzY2hlbWEiLCJmaWVsZHMiLCJmb3JFYWNoIiwiZmllbGQiLCJpbmZvIiwiZmluZCIsIm1ldGFkYXRhIiwiR0VPQVJST1dfTUVUQURBVEFfS0VZIiwiR0VPQVJST1dfRVhURU5TSU9OUyIsIldLQiIsInJlc3RvcmVBcnJvd1RhYmxlIiwiYXJyb3dTY2hlbWEiLCJjcmVhT3B0cyIsImluZGV4IiwiVGFibGUiLCJyZW1vdmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMiLCJyZW1vdmVkTWV0YWRhdGEiLCJleHRlbnNpb24iLCJyZXN0b3JlVW5zdXBwb3J0ZWRFeHRlbnNpb25zIiwicmVtb3ZlZEV4dGVuc2lvbnMiLCJpc0dlb0Fycm93UG9pbnQiLCJEYXRhVHlwZSIsImlzRml4ZWRTaXplTGlzdCIsImxpc3RTaXplIiwiaXNGbG9hdCIsImNoaWxkcmVuIiwiaXNHZW9BcnJvd0xpbmVTdHJpbmciLCJpc0xpc3QiLCJpc0dlb0Fycm93UG9seWdvbiIsImlzR2VvQXJyb3dNdWx0aVBvaW50IiwiaXNHZW9BcnJvd011bHRpTGluZVN0cmluZyIsImlzR2VvQXJyb3dNdWx0aVBvbHlnb24iLCJjaGVja0lzU2VsZWN0UXVlcnkiLCJfeDMiLCJfeDQiLCJfY2hlY2tJc1NlbGVjdFF1ZXJ5IiwiX2NhbGxlZTMiLCJyZXN1bHQiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJzcGxpdFNxbFN0YXRlbWVudHMiLCJpbnB1dCIsInF1ZXJpZXMiLCJjdXJyZW50UXVlcnkiLCJpblNpbmdsZVF1b3RlIiwiaW5Eb3VibGVRdW90ZSIsImluTGluZUNvbW1lbnQiLCJpbkJsb2NrQ29tbWVudCIsImNoYXIiLCJ0cmltbWVkIiwidHJpbSIsInJlbW92ZVNRTENvbW1lbnRzIiwic3FsIiwiZHJvcFRhYmxlSWZFeGlzdHMiLCJfcmVmIiwiX2NhbGxlZSIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJjb25zb2xlIiwiX3g1IiwiX3g2IiwidGFibGVGcm9tRmlsZSIsIl94NyIsIl90YWJsZUZyb21GaWxlIiwiX2NhbGxlZTQiLCJmaWxlIiwiZmlsZUV4dCIsImRiIiwiYyIsInNvdXJjZU5hbWUiLCJhcnJheUJ1ZmZlciIsInVpbnQ4QXJyYXkiLCJhcnJvd1RhYmxlIiwibWVzc2FnZSIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImV4dCIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZGF0YWJhc2UiLCJjb25uZWN0Iiwic2FuaXRpemVEdWNrREJUYWJsZU5hbWUiLCJVaW50OEFycmF5IiwidGFibGVGcm9tSVBDIiwiaW5zZXJ0QXJyb3dUYWJsZSIsInJlZ2lzdGVyRmlsZUhhbmRsZSIsIkR1Y2tEQkRhdGFQcm90b2NvbCIsIkJST1dTRVJfRklMRVJFQURFUiIsImNsb3NlIiwiZmlsZU5hbWUiLCJ0ZXN0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhYmxlL2R1Y2tkYi10YWJsZS11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBsb2FkZXJzLmdsXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgKGMpIHZpcy5nbCBjb250cmlidXRvcnNcblxuLy8gQ29waWVkIGZyb20gbG9hZGVycy5nbC9nZW9hcnJvd1xuXG4vLyBUT0RPOiBSZW1vdmUgaXNHZW9BcnJvdyogb25jZSBLZXBsZXIuZ2wgaXMgdXBncmFkZWQgdG8gbG9hZGVycy5nbCA0LjQrXG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQge0RhdGFUeXBlfSBmcm9tICdhcGFjaGUtYXJyb3cvdHlwZSc7XG5pbXBvcnQge0R1Y2tEQkRhdGFQcm90b2NvbH0gZnJvbSAnQGR1Y2tkYi9kdWNrZGItd2FzbSc7XG5cbmltcG9ydCB7R0VPQVJST1dfRVhURU5TSU9OUywgR0VPQVJST1dfTUVUQURBVEFfS0VZfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1Byb3RvRGF0YXNldEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YWJhc2VDb25uZWN0aW9uLCBnZXRBcHBsaWNhdGlvbkNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBTVVBQT1JURURfRFVDS0RCX0RST1BfRVhURU5TSU9OUyA9IFsnYXJyb3cnLCAnY3N2JywgJ2dlb2pzb24nLCAnanNvbicsICdwYXJxdWV0J107XG5cbmV4cG9ydCB0eXBlIER1Y2tEQkNvbHVtbkRlc2MgPSB7bmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmd9O1xuXG4vKipcbiAqIFF1ZXJpZXMgYSBEdWNrREIgdGFibGUgZm9yIHRoZSBzY2hlbWEgZGVzY3JpcHRpb24uXG4gKiBAcGFyYW0gY29ubmVjdGlvbiBBbiBhY3RpdmUgRHVja0RCIGNvbm5lY3Rpb24uXG4gKiBAcGFyYW0gdGFibGVOYW1lIEEgbmFtZSBvZiBEdWNrREIgdGFibGUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBjb2x1bW4gbmFtZXMgYW5kIER1Y2tEQiB0eXBlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldER1Y2tEQkNvbHVtblR5cGVzKFxuICBjb25uZWN0aW9uOiBEYXRhYmFzZUNvbm5lY3Rpb24sXG4gIHRhYmxlTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPER1Y2tEQkNvbHVtbkRlc2NbXT4ge1xuICBjb25zdCBxdW90ZWRUYWJsZU5hbWUgPSBxdW90ZVRhYmxlTmFtZSh0YWJsZU5hbWUpO1xuICBjb25zdCBkdWNrRGJUeXBlczogRHVja0RCQ29sdW1uRGVzY1tdID0gW107XG4gIHRyeSB7XG4gICAgLy8gUFJBR01BIHRhYmxlX2luZm8gaXMgbGVzcyBsaWtlbHkgdG8gYmluZC9leGVjdXRlIHZpZXcgU1FMIHRoYW4gREVTQ1JJQkUsXG4gICAgLy8gc28gaXQgYXZvaWRzIHRyaWdnZXJpbmcgcmVtb3RlIGFjY2VzcyAoZS5nLiwgUzMpIGZvciB2aWV3LWJhY2tlZCBzY2hlbWFzLlxuICAgIGNvbnN0IHJlc0luZm8gPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KFxuICAgICAgYFBSQUdNQSB0YWJsZV9pbmZvKCR7cXVvdGVkVGFibGVOYW1lfSlgXG4gICAgKTtcbiAgICBjb25zdCBudW1Sb3dzID0gcmVzSW5mby5udW1Sb3dzO1xuICAgIGNvbnN0IGNvbHVtbk5hbWVzID0gcmVzSW5mby5nZXRDaGlsZCgnbmFtZScpO1xuICAgIGNvbnN0IGNvbHVtblR5cGVzID0gcmVzSW5mby5nZXRDaGlsZCgndHlwZScpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtUm93czsgKytpKSB7XG4gICAgICBkdWNrRGJUeXBlcy5wdXNoKHtcbiAgICAgICAgbmFtZTogY29sdW1uTmFtZXM/LmdldChpKSxcbiAgICAgICAgdHlwZTogY29sdW1uVHlwZXM/LmdldChpKVxuICAgICAgfSk7XG4gICAgfVxuICB9IGNhdGNoIChwcmltYXJ5RXJyb3IpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzRGVzY3JpYmUgPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBERVNDUklCRSAke3F1b3RlZFRhYmxlTmFtZX1gKTtcbiAgICAgIGNvbnN0IG51bVJvd3MgPSByZXNEZXNjcmliZS5udW1Sb3dzO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1Sb3dzOyArK2kpIHtcbiAgICAgICAgY29uc3QgY29sdW1uTmFtZSA9IHJlc0Rlc2NyaWJlLmdldENoaWxkQXQoMCk/LmdldChpKTtcbiAgICAgICAgY29uc3QgY29sdW1uVHlwZSA9IHJlc0Rlc2NyaWJlLmdldENoaWxkQXQoMSk/LmdldChpKTtcblxuICAgICAgICBkdWNrRGJUeXBlcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBjb2x1bW5OYW1lLFxuICAgICAgICAgIHR5cGU6IGNvbHVtblR5cGVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZmFsbGJhY2tFcnJvcikge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgIGBbRHVja0RCXSBGYWlsZWQgdG8gbG9hZCBjb2x1bW4gdHlwZXMgZm9yICR7dGFibGVOYW1lfSAoUFJBR01BICsgREVTQ1JJQkUpLmBcbiAgICAgICk7XG4gICAgICAoZXJyb3IgYXMgRXJyb3IgJiB7Y2F1c2U/OiB1bmtub3dufSkuY2F1c2UgPSB7XG4gICAgICAgIHByaW1hcnlFcnJvcixcbiAgICAgICAgZmFsbGJhY2tFcnJvclxuICAgICAgfTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkdWNrRGJUeXBlcztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBtYXBwaW5nIG9mIGNvbHVtbiBuYW1lcyB0byB0aGVpciBjb3JyZXNwb25kaW5nIER1Y2tEQiBkYXRhIHR5cGVzLlxuICogQHBhcmFtIGNvbHVtbnMgQW4gYXJyYXkgb2YgY29sdW1uIGRlc2NyaXB0aW9ucyBmcm9tIER1Y2tEQi4gQ2hlY2sgZ2V0RHVja0RCQ29sdW1uVHlwZXMuXG4gKiBAcmV0dXJucyBBIHJlY29yZCB3aGVyZSBrZXlzIGFyZSBjb2x1bW4gbmFtZXMgYW5kIHZhbHVlcyBhcmUgdGhlaXIgZGF0YSB0eXBlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldER1Y2tEQkNvbHVtblR5cGVzTWFwKGNvbHVtbnM6IER1Y2tEQkNvbHVtbkRlc2NbXSkge1xuICByZXR1cm4gY29sdW1ucy5yZWR1Y2UoKGFjYywgdmFsdWUpID0+IHtcbiAgICBhY2NbdmFsdWUubmFtZV0gPSB2YWx1ZS50eXBlO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pO1xufVxuXG4vKipcbiAqIFF1b3RlcyBhIHRhYmxlIG5hbWUgZm9yIHNhZmUgU1FMIHVzYWdlLlxuICogQWx3YXlzIHF1b3RlcyB0byBoYW5kbGUgYWxsIGVkZ2UgY2FzZXMgKHNwYWNlcywgc3BlY2lhbCBjaGFyYWN0ZXJzLCByZXNlcnZlZCB3b3JkcykuXG4gKiBGb3IgZnVsbHkgcXVhbGlmaWVkIG5hbWVzIChjb250YWluaW5nIGRvdHMpLCBwcmVzZXJ2ZXMgdGhlIGV4aXN0aW5nIHN0cnVjdHVyZS5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIHRhYmxlIG5hbWUgdG8gcXVvdGUuXG4gKiBAcmV0dXJucyBUaGUgdGFibGUgbmFtZSwgcHJvcGVybHkgcXVvdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcXVvdGVUYWJsZU5hbWUodGFibGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBSZXR1cm4gYXMtaXMgaWY6XG4gIC8vIDEuIEl0J3MgYWxyZWFkeSBhIHByb3Blcmx5IHF1b3RlZCBzaW1wbGUgaWRlbnRpZmllciAoc3RhcnRzIGFuZCBlbmRzIHdpdGggcXVvdGVzKVxuICAvLyAyLiBJdCBjb250YWlucyBib3RoIGRvdHMgYW5kIHF1b3RlcyAoYXNzdW1lIGl0J3MgYSBxdWFsaWZpZWQgbmFtZSlcbiAgaWYgKFxuICAgICh0YWJsZU5hbWUuc3RhcnRzV2l0aCgnXCInKSAmJiB0YWJsZU5hbWUuZW5kc1dpdGgoJ1wiJykpIHx8XG4gICAgKHRhYmxlTmFtZS5pbmNsdWRlcygnLicpICYmIHRhYmxlTmFtZS5pbmNsdWRlcygnXCInKSlcbiAgKSB7XG4gICAgcmV0dXJuIHRhYmxlTmFtZTtcbiAgfVxuXG4gIHJldHVybiBgXCIke3RhYmxlTmFtZS5yZXBsYWNlKC9cIi9nLCAnXCJcIicpfVwiYDtcbn1cblxuLyoqXG4gKiBRdW90ZXMgYSBjb2x1bW4gbmFtZSBmb3Igc2FmZSBTUUwgdXNhZ2UuXG4gKiBBbHdheXMgcXVvdGVzIHRvIGhhbmRsZSBhbGwgZWRnZSBjYXNlcyAoc3BhY2VzLCBzcGVjaWFsIGNoYXJhY3RlcnMsIHJlc2VydmVkIHdvcmRzKS5cbiAqIEBwYXJhbSBjb2x1bW5OYW1lIFRoZSBjb2x1bW4gbmFtZSB0byBxdW90ZS5cbiAqIEByZXR1cm5zIFRoZSBjb2x1bW4gbmFtZSwgcHJvcGVybHkgcXVvdGVkLlxuICovXG5mdW5jdGlvbiBxdW90ZUNvbHVtbk5hbWUoY29sdW1uTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBcIiR7Y29sdW1uTmFtZS5yZXBsYWNlKC9cIi9nLCAnXCJcIicpfVwiYDtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGFuIFNRTCBxdWVyeSB0byBzZWxlY3QgYWxsIGNvbHVtbnMgZnJvbSBhIGdpdmVuIHRhYmxlLFxuICogY29udmVydGluZyBzcGVjaWZpZWQgY29sdW1ucyB0byBXZWxsLUtub3duIEJpbmFyeSAoV0tCKSBmb3JtYXQgdXNpbmcgU1RfQXNXS0IsXG4gKiBhbmQgY2FzdGluZyBCSUdJTlQgY29sdW1ucyB0byBET1VCTEUgaWYgc3BlY2lmaWVkLlxuICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgZnJvbSB3aGljaCB0byBzZWxlY3QgZGF0YS5cbiAqIEBwYXJhbSBjb2x1bW5zIEFuIGFycmF5IG9mIGNvbHVtbiBkZXNjcmlwdG9ycywgZWFjaCB3aXRoIGEgdHlwZSBhbmQgbmFtZS5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gY29udHJvbCB0aGUgY29udmVyc2lvbiBiZWhhdmlvci5cbiAqIEByZXR1cm5zIFRoZSBjb25zdHJ1Y3RlZCBTUUwgcXVlcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYXN0RHVja0RCVHlwZXNGb3JLZXBsZXIoXG4gIHRhYmxlTmFtZTogc3RyaW5nLFxuICBjb2x1bW5zOiBEdWNrREJDb2x1bW5EZXNjW10sXG4gIG9wdGlvbnMgPSB7Z2VvbWV0cnlUb1dLQjogdHJ1ZSwgYmlnSW50VG9Eb3VibGU6IHRydWV9XG4pOiBzdHJpbmcge1xuICBjb25zdCBtb2RpZmllZENvbHVtbnMgPSBjb2x1bW5zLm1hcChjb2x1bW4gPT4ge1xuICAgIGNvbnN0IHtuYW1lLCB0eXBlfSA9IGNvbHVtbjtcbiAgICBjb25zdCBxdW90ZWRDb2x1bW5OYW1lID0gcXVvdGVDb2x1bW5OYW1lKG5hbWUpO1xuICAgIGlmICh0eXBlID09PSAnR0VPTUVUUlknICYmIG9wdGlvbnMuZ2VvbWV0cnlUb1dLQikge1xuICAgICAgcmV0dXJuIGBTVF9Bc1dLQigke3F1b3RlZENvbHVtbk5hbWV9KSBhcyAke3F1b3RlZENvbHVtbk5hbWV9YDtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgb3B0aW9ucy5iaWdJbnRUb0RvdWJsZSAmJlxuICAgICAgKHR5cGUgPT09ICdCSUdJTlQnIHx8XG4gICAgICAgIHR5cGUgPT09ICdVQklHSU5UJyB8fFxuICAgICAgICB0eXBlID09PSAnSFVHRUlOVCcgfHxcbiAgICAgICAgdHlwZSA9PT0gJ1VIVUdFSU5UJyB8fFxuICAgICAgICB0eXBlLnN0YXJ0c1dpdGgoJ0RFQ0lNQUwnKSlcbiAgICApIHtcbiAgICAgIC8vIENhc3QgNjQtYml0IGFuZCBsYXJnZXIgaW50ZWdlciB0eXBlcyBhbmQgREVDSU1BTCB0byBET1VCTEUgdG8gYXZvaWQgQmlnSW50IGluIEpTXG4gICAgICByZXR1cm4gYENBU1QoJHtxdW90ZWRDb2x1bW5OYW1lfSBBUyBET1VCTEUpIGFzICR7cXVvdGVkQ29sdW1uTmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gcXVvdGVkQ29sdW1uTmFtZTtcbiAgfSk7XG5cbiAgY29uc3QgcXVvdGVkVGFibGVOYW1lID0gcXVvdGVUYWJsZU5hbWUodGFibGVOYW1lKTtcbiAgcmV0dXJuIGBTRUxFQ1QgJHttb2RpZmllZENvbHVtbnMuam9pbignLCAnKX0gRlJPTSAke3F1b3RlZFRhYmxlTmFtZX1gO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIEdlb0Fycm93IFdLQiBleHRlbnNpb24gbWV0YWRhdGEgZm9yIGNvbHVtbnMgb2YgdHlwZSBHRU9NRVRSWSBpbiBhbiBBcnJvdyB0YWJsZS5cbiAqIEBwYXJhbSB0YWJsZSBUaGUgQXBhY2hlIEFycm93IHRhYmxlIHdob3NlIHNjaGVtYSBmaWVsZHMgd2lsbCBiZSBtb2RpZmllZC5cbiAqIEBwYXJhbSBjb2x1bW5zIEFuIGFycmF5IG9mIGNvbHVtbiBkZXNjcmlwdG9ycyBmcm9tIGEgRHVja0RCIHRhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0R2VvQXJyb3dXS0JFeHRlbnNpb24odGFibGU6IGFycm93LlRhYmxlLCBjb2x1bW5zOiBEdWNrREJDb2x1bW5EZXNjW10pIHtcbiAgdGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBjb25zdCBpbmZvID0gY29sdW1ucy5maW5kKHQgPT4gdC5uYW1lID09PSBmaWVsZC5uYW1lKTtcbiAgICBpZiAoaW5mbz8udHlwZSA9PT0gJ0dFT01FVFJZJykge1xuICAgICAgZmllbGQubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5XS0IpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJvdyB0YWJsZSBmcm9tIGFuIGFycmF5IG9mIGFycm93IHZlY3RvcnMgYW5kIGZpZWxkcy5cbiAqIEBwYXJhbSBjb2x1bW5zIEFuIGFycmF5IG9mIGFycm93IHZlY3RvcnMuXG4gKiBAcGFyYW0gZmllbGRzIEFuIGFycmF5IG9mIGZpZWxkcyBwZXIgYXJyb3cgdmVjdG9yLlxuICogQHBhcmFtIGFycm93U2NoZW1hIE9wdGlvbmFsIGFycm93IHRhYmxlIHNjaGVtYSB3aGVuIGF2YWlsYWJsZS5cbiAqIEByZXR1cm5zIEFuIGFycm93IHRhYmxlLlxuICovXG5leHBvcnQgY29uc3QgcmVzdG9yZUFycm93VGFibGUgPSAoXG4gIGNvbHVtbnM6IGFycm93LlZlY3RvcltdLFxuICBmaWVsZHM6IFByb3RvRGF0YXNldEZpZWxkW10sXG4gIGFycm93U2NoZW1hPzogYXJyb3cuU2NoZW1hXG4pID0+IHtcbiAgY29uc3QgY3JlYU9wdHMgPSB7fTtcbiAgZmllbGRzLm1hcCgoZmllbGQsIGluZGV4KSA9PiB7XG4gICAgY3JlYU9wdHNbZmllbGQubmFtZV0gPSBjb2x1bW5zW2luZGV4XTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFycm93U2NoZW1hID8gbmV3IGFycm93LlRhYmxlKGFycm93U2NoZW1hLCBjcmVhT3B0cykgOiBuZXcgYXJyb3cuVGFibGUoY3JlYU9wdHMpO1xufTtcblxuLyoqXG4gKiBEdWNrRGIgdGhyb3dzIHdoZW4gZ2VvYXJyb3cgZXh0ZW5zaW9ucyBhcmUgcHJlc2VudCBpbiBtZXRhZGF0YS5cbiAqIEBwYXJhbSB0YWJsZSBBbiBhcnJvdyB0YWJsZSB0byBjbGVhciBmcm9tIGV4dGVuc2lvbnMuXG4gKiBAcmV0dXJucyBBIG1hcCBvZiByZW1vdmVkIHBlciBmaWVsZCBnZW9hcnJvdyBleHRlbnNpb25zLlxuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zID0gKHRhYmxlOiBhcnJvdy5UYWJsZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4ge1xuICBjb25zdCByZW1vdmVkTWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgdGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBmaWVsZC5tZXRhZGF0YS5nZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZKTtcbiAgICBpZiAoZXh0ZW5zaW9uPy5zdGFydHNXaXRoKCdnZW9hcnJvdycpKSB7XG4gICAgICByZW1vdmVkTWV0YWRhdGFbZmllbGQubmFtZV0gPSBleHRlbnNpb247XG4gICAgICBmaWVsZC5tZXRhZGF0YS5kZWxldGUoR0VPQVJST1dfTUVUQURBVEFfS0VZKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVtb3ZlZE1ldGFkYXRhO1xufTtcblxuLyoqXG4gKiBSZXN0b3JlIHJlbW92ZWQgbWV0YWRhdGEgZXh0ZW5zaW9ucyBhZnRlciBhIGNhbGwgdG8gcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zLlxuICogQHBhcmFtIHRhYmxlIEFuIGFycm93IHRhYmxlIHRvIHJlc3RvcmUgZ2VvYXJyb3cgZXh0ZW5zaW9ucy5cbiAqIEBwYXJhbSByZW1vdmVkRXh0ZW5zaW9ucyBBIG1hcCBvZiBwZXIgZmllbGQgZ2VvYXJyb3cgZXh0ZW5zaW9ucyB0byByZXN0b3JlLlxuICovXG5leHBvcnQgY29uc3QgcmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyA9IChcbiAgdGFibGU6IGFycm93LlRhYmxlLFxuICByZW1vdmVkRXh0ZW5zaW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSA9PiB7XG4gIHRhYmxlLnNjaGVtYS5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gcmVtb3ZlZEV4dGVuc2lvbnNbZmllbGQubmFtZV07XG4gICAgaWYgKGV4dGVuc2lvbikge1xuICAgICAgZmllbGQubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgZXh0ZW5zaW9uKTtcbiAgICB9XG4gIH0pO1xufTtcblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvaW50IGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dQb2ludCh0eXBlOiBEYXRhVHlwZSkge1xuICBpZiAoRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0KHR5cGUpKSB7XG4gICAgLy8gQ2hlY2sgbGlzdCBzaXplXG4gICAgaWYgKCFbMiwgMywgNF0uaW5jbHVkZXModHlwZS5saXN0U2l6ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBjaGlsZCBvZiBGaXhlZFNpemVMaXN0IGlzIGZsb2F0aW5nIHR5cGVcbiAgICBpZiAoIURhdGFUeXBlLmlzRmxvYXQodHlwZS5jaGlsZHJlblswXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvaW50IGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dMaW5lU3RyaW5nKHR5cGU6IERhdGFUeXBlKSB7XG4gIC8vIENoZWNrIHRoZSBvdXRlciB0eXBlIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvaW50IHR5cGVcbiAgaWYgKCFpc0dlb0Fycm93UG9pbnQodHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIEFwYWNoZSBBcnJvdyBKUyB0eXBlIGlzIGEgUG9seWdvbiBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93UG9seWdvbih0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIGxpbmVzdHJpbmcgdmVjdG9yXG4gIGlmICghaXNHZW9BcnJvd0xpbmVTdHJpbmcodHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIEFwYWNoZSBBcnJvdyBKUyB0eXBlIGlzIGEgUG9seWdvbiBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93TXVsdGlQb2ludCh0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvaW50IHZlY3RvclxuICBpZiAoIWlzR2VvQXJyb3dQb2ludCh0eXBlLmNoaWxkcmVuWzBdLnR5cGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gQXBhY2hlIEFycm93IEpTIHR5cGUgaXMgYSBQb2x5Z29uIGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmcodHlwZTogRGF0YVR5cGUpIHtcbiAgLy8gQ2hlY2sgdGhlIG91dGVyIHZlY3RvciBpcyBhIExpc3RcbiAgaWYgKCFEYXRhVHlwZS5pc0xpc3QodHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBDaGVjayB0aGUgY2hpbGQgaXMgYSBsaW5lc3RyaW5nIHZlY3RvclxuICBpZiAoIWlzR2VvQXJyb3dMaW5lU3RyaW5nKHR5cGUuY2hpbGRyZW5bMF0udHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvbHlnb24gZGF0YSB0eXBlICovXG5leHBvcnQgZnVuY3Rpb24gaXNHZW9BcnJvd011bHRpUG9seWdvbih0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvbHlnb24gdmVjdG9yXG4gIGlmICghaXNHZW9BcnJvd1BvbHlnb24odHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gU1FMIHF1ZXJ5IGlzIGEgU0VMRUNUIHF1ZXJ5IGJ5IHVzaW5nIHRoZSBFWFBMQUlOIGNvbW1hbmQuXG4gKiBAcGFyYW0gY29ubmVjdGlvbiBUaGUgRHVja0RCIGNvbm5lY3Rpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcXVlcnkgVGhlIFNRTCBxdWVyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFJlc29sdmVzIHRvIGB0cnVlYCBpZiB0aGUgcXVlcnkgaXMgYSBTRUxFQ1Qgc3RhdGVtZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrSXNTZWxlY3RRdWVyeShcbiAgY29ubmVjdGlvbjogRGF0YWJhc2VDb25uZWN0aW9uLFxuICBxdWVyeTogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBFWFBMQUlOICgke3F1ZXJ5fSlgKTtcbiAgICByZXR1cm4gcmVzdWx0Lm51bVJvd3MgPiAwO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFNwbGl0IGEgc3RyaW5nIHdpdGggcG90ZW50aWFsbHkgbXVsdGlwbGUgU1FMIHF1ZXJpZXMgKHNlcGFyYXRlZCBhcyB1c3VhbCBieSAnOycpIGludG8gYW4gYXJyYXkgb2YgcXVlcmllcy5cbiAqIFRoaXMgaW1wbGVtZW50YXRpb246XG4gKiAgLSBIYW5kbGVzIHNpbmdsZSBhbmQgZG91YmxlIHF1b3RlZCBzdHJpbmdzIHdpdGggcHJvcGVyIGVzY2FwaW5nXG4gKiAgLSBJZ25vcmVzIHNlbWljb2xvbnMgaW4gbGluZSBjb21tZW50cyAoLS0pIGFuZCBibG9jayBjb21tZW50cyAoc2xhc2ggYXN0ZXJpc2spXG4gKiAgLSBUcmltcyB3aGl0ZXNwYWNlIGZyb20gcXVlcmllc1xuICogIC0gSGFuZGxlcyBTUUwtc3R5bGUgZXNjYXBlZCBxdW90ZXMgKCcnIGluc2lkZSBzdHJpbmdzKVxuICogIC0gUmV0dXJucyBvbmx5IG5vbi1lbXB0eSBxdWVyaWVzXG4gKiBAcGFyYW0gaW5wdXQgQSBzdHJpbmcgd2l0aCBwb3RlbnRpYWxseSBtdWx0aXBsZSBTUUwgcXVlcmllcy5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFNxbFN0YXRlbWVudHMoaW5wdXQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcXVlcmllczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRRdWVyeSA9ICcnO1xuICBsZXQgaW5TaW5nbGVRdW90ZSA9IGZhbHNlO1xuICBsZXQgaW5Eb3VibGVRdW90ZSA9IGZhbHNlO1xuICBsZXQgaW5MaW5lQ29tbWVudCA9IGZhbHNlO1xuICBsZXQgaW5CbG9ja0NvbW1lbnQgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IGlucHV0W2ldO1xuXG4gICAgaWYgKGluTGluZUNvbW1lbnQpIHtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgaWYgKGNoYXIgPT09ICdcXG4nKSB7XG4gICAgICAgIGluTGluZUNvbW1lbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpbkJsb2NrQ29tbWVudCkge1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXI7XG4gICAgICBpZiAoY2hhciA9PT0gJyonICYmIGlucHV0W2kgKyAxXSA9PT0gJy8nKSB7XG4gICAgICAgIGluQmxvY2tDb21tZW50ID0gZmFsc2U7XG4gICAgICAgIGN1cnJlbnRRdWVyeSArPSBpbnB1dFsrK2ldOyAvLyBDb25zdW1lICcvJ1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGluU2luZ2xlUXVvdGUpIHtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgaWYgKGNoYXIgPT09IFwiJ1wiKSB7XG4gICAgICAgIC8vIEhhbmRsZSBlc2NhcGVkIHNpbmdsZSBxdW90ZXMgaW4gU1FMXG4gICAgICAgIGlmIChpICsgMSA8IGlucHV0Lmxlbmd0aCAmJiBpbnB1dFtpICsgMV0gPT09IFwiJ1wiKSB7XG4gICAgICAgICAgY3VycmVudFF1ZXJ5ICs9IGlucHV0WysraV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5TaW5nbGVRdW90ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoaW5Eb3VibGVRdW90ZSkge1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXI7XG4gICAgICBpZiAoY2hhciA9PT0gJ1wiJykge1xuICAgICAgICAvLyBIYW5kbGUgZXNjYXBlZCBkb3VibGUgcXVvdGVzXG4gICAgICAgIGlmIChpICsgMSA8IGlucHV0Lmxlbmd0aCAmJiBpbnB1dFtpICsgMV0gPT09ICdcIicpIHtcbiAgICAgICAgICBjdXJyZW50UXVlcnkgKz0gaW5wdXRbKytpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbkRvdWJsZVF1b3RlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBjb21tZW50IHN0YXJ0c1xuICAgIGlmIChjaGFyID09PSAnLScgJiYgaW5wdXRbaSArIDFdID09PSAnLScpIHtcbiAgICAgIGluTGluZUNvbW1lbnQgPSB0cnVlO1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXIgKyBpbnB1dFsrK2ldO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGNoYXIgPT09ICcvJyAmJiBpbnB1dFtpICsgMV0gPT09ICcqJykge1xuICAgICAgaW5CbG9ja0NvbW1lbnQgPSB0cnVlO1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXIgKyBpbnB1dFsrK2ldO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIHF1b3RlIHN0YXJ0c1xuICAgIGlmIChjaGFyID09PSBcIidcIikge1xuICAgICAgaW5TaW5nbGVRdW90ZSA9IHRydWU7XG4gICAgICBjdXJyZW50UXVlcnkgKz0gY2hhcjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFyID09PSAnXCInKSB7XG4gICAgICBpbkRvdWJsZVF1b3RlID0gdHJ1ZTtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHF1ZXJ5IHNlcGFyYXRvclxuICAgIGlmIChjaGFyID09PSAnOycpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWQgPSBjdXJyZW50UXVlcnkudHJpbSgpO1xuICAgICAgaWYgKHRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBxdWVyaWVzLnB1c2godHJpbW1lZCk7XG4gICAgICB9XG4gICAgICBjdXJyZW50UXVlcnkgPSAnJztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICB9XG5cbiAgLy8gQWRkIHRoZSBmaW5hbCBxdWVyeVxuICBjb25zdCB0cmltbWVkID0gY3VycmVudFF1ZXJ5LnRyaW0oKTtcbiAgaWYgKHRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgIHF1ZXJpZXMucHVzaCh0cmltbWVkKTtcbiAgfVxuXG4gIHJldHVybiBxdWVyaWVzO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgU1FMIGNvbW1lbnRzIGZyb20gYSBnaXZlbiBTUUwgc3RyaW5nLlxuICogQHBhcmFtIHNxbCBUaGUgU1FMIHF1ZXJ5IHN0cmluZyBmcm9tIHdoaWNoIGNvbW1lbnRzIHNob3VsZCBiZSByZW1vdmVkLlxuICogQHJldHVybnMgVGhlIGNsZWFuZWQgU1FMIHN0cmluZyB3aXRob3V0IGNvbW1lbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlU1FMQ29tbWVudHMoc3FsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBSZW1vdmUgbXVsdGktbGluZSBjb21tZW50cyAoLyogLi4uICovKVxuICBzcWwgPSBzcWwucmVwbGFjZSgvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLCAnJyk7XG4gIC8vIFJlbW92ZSBzaW5nbGUtbGluZSBjb21tZW50cyAoLS0gLi4uKVxuICBzcWwgPSBzcWwucmVwbGFjZSgvLS0uKiQvZ20sICcnKTtcbiAgcmV0dXJuIHNxbC50cmltKCk7XG59XG5cbi8qKlxuICogRHJvcHMgYSB0YWJsZSBpZiBpdCBleGlzdHMgaW4gdGhlIER1Y2tEQiBkYXRhYmFzZS5cbiAqIEBwYXJhbSBjb25uZWN0aW9uIFRoZSBEdWNrREIgY29ubmVjdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGRyb3AuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKiBAdGhyb3dzIExvZ3MgYW4gZXJyb3IgaWYgdGhlIHRhYmxlIGRyb3Agb3BlcmF0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgY29uc3QgZHJvcFRhYmxlSWZFeGlzdHMgPSBhc3luYyAoY29ubmVjdGlvbjogRGF0YWJhc2VDb25uZWN0aW9uLCB0YWJsZU5hbWU6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYERST1AgVEFCTEUgSUYgRVhJU1RTIFwiJHt0YWJsZU5hbWV9XCI7YCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRHJvcHBpbmcgdGFibGUgZmFpbGVkJywgdGFibGVOYW1lLCBlcnJvcik7XG4gIH1cbn07XG5cbi8qKlxuICogSW1wb3J0cyBhIGZpbGUgaW50byBEdWNrREIgYXMgYSB0YWJsZSwgc3VwcG9ydGluZyBtdWx0aXBsZSBmb3JtYXRzIGZyb20gU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMuXG4gKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB0byBiZSBpbXBvcnRlZC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgaGFzIGJlZW4gcHJvY2Vzc2VkIGludG8gYSBEdWNrREIgdGFibGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0YWJsZUZyb21GaWxlKGZpbGU6IEZpbGUgfCBudWxsKTogUHJvbWlzZTxudWxsIHwgRXJyb3I+IHtcbiAgaWYgKCFmaWxlKSByZXR1cm4gbmV3IEVycm9yKCdGaWxlIERyYWcgJiBEcm9wOiBObyBmaWxlJyk7XG5cbiAgY29uc3QgZmlsZUV4dCA9IFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TLmZpbmQoZXh0ID0+IGZpbGUubmFtZS5lbmRzV2l0aChleHQpKTtcbiAgaWYgKCFmaWxlRXh0KSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihcIkZpbGUgRHJhZyAmIERyb3A6IEZpbGUgZXh0ZW5zaW9uIGlzbid0IHN1cHBvcnRlZFwiKTtcbiAgfVxuXG4gIGNvbnN0IGRiID0gYXdhaXQgZ2V0QXBwbGljYXRpb25Db25maWcoKS5kYXRhYmFzZTtcbiAgaWYgKCFkYikge1xuICAgIHJldHVybiBuZXcgRXJyb3IoJ1RoZSBkYXRhYmFzZSBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseS4nKTtcbiAgfVxuICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gIGxldCBlcnJvcjogRXJyb3IgfCBudWxsID0gbnVsbDtcblxuICB0cnkge1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IHNhbml0aXplRHVja0RCVGFibGVOYW1lKGZpbGUubmFtZSk7XG4gICAgY29uc3Qgc291cmNlTmFtZSA9ICd0ZW1wX2ZpbGVfaGFuZGxlJztcblxuICAgIGMucXVlcnkoYGluc3RhbGwgc3BhdGlhbDtcbiAgICAgIGxvYWQgc3BhdGlhbDtgKTtcblxuICAgIGlmIChmaWxlRXh0ID09PSAnYXJyb3cnKSB7XG4gICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0IGZpbGUuYXJyYXlCdWZmZXIoKTtcbiAgICAgIGNvbnN0IHVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XG4gICAgICBjb25zdCBhcnJvd1RhYmxlID0gYXJyb3cudGFibGVGcm9tSVBDKHVpbnQ4QXJyYXkpO1xuXG4gICAgICBhd2FpdCBjLmluc2VydEFycm93VGFibGUoYXJyb3dUYWJsZSwge25hbWU6IHRhYmxlTmFtZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBkYi5yZWdpc3RlckZpbGVIYW5kbGUoc291cmNlTmFtZSwgZmlsZSwgRHVja0RCRGF0YVByb3RvY29sLkJST1dTRVJfRklMRVJFQURFUiwgdHJ1ZSk7XG5cbiAgICAgIGlmIChmaWxlRXh0ID09PSAnY3N2Jykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gcmVhZF9jc3YoJyR7c291cmNlTmFtZX0nLCBoZWFkZXIgPSB0cnVlLCBhdXRvX2RldGVjdCA9IHRydWUsIHNhbXBsZV9zaXplID0gLTEpO1xuICAgICAgICAgIGApO1xuICAgICAgfSBlbHNlIGlmIChmaWxlRXh0ID09PSAnanNvbicpIHtcbiAgICAgICAgYXdhaXQgYy5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGFibGVOYW1lfScgQVNcbiAgICAgICAgICAgIFNFTEVDVCAqXG4gICAgICAgICAgICBGUk9NIHJlYWRfanNvbl9hdXRvKCcke3NvdXJjZU5hbWV9Jyk7XG4gICAgICAgICAgYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVFeHQgPT09ICdnZW9qc29uJykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gU1RfUkVBRCgnJHtzb3VyY2VOYW1lfScsIGtlZXBfd2tiID0gVFJVRSk7XG4gICAgICAgICAgYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVFeHQgPT09ICdwYXJxdWV0Jykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gcmVhZF9wYXJxdWV0KCcke3NvdXJjZU5hbWV9JylcbiAgICAgICAgICBgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yRGF0YSkge1xuICAgIGlmIChlcnJvckRhdGEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yRGF0YS5tZXNzYWdlIHx8ICcnO1xuICAgICAgLy8gb3V0cHV0IG1vcmUgcmVhZGFibGUgZXJyb3JzIGZvciBrbm93biBpc3N1ZXNcbiAgICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdBcnJvdyBUeXBlIHdpdGggZXh0ZW5zaW9uIG5hbWU6IGdlb2Fycm93JykpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1RoZSBHZW9BcnJvdyBleHRlbnNpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbm5lY3RlZCBEdWNrREIgdmVyc2lvbi4nXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoXCJHZW9wYXJxdWV0IGNvbHVtbiAnZ2VvbWV0cnknIGRvZXMgbm90IGhhdmUgZ2VvbWV0cnkgdHlwZXNcIikpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgSW5wdXQgRXJyb3I6IEdlb3BhcnF1ZXQgY29sdW1uICdnZW9tZXRyeScgZG9lcyBub3QgaGF2ZSBnZW9tZXRyeSB0eXBlcy5cblBvc3NpYmxlIHJlYXNvbnM6XG4gIC0gT2xkIC5wYXJxdWV0IGZpbGVzIHRoYXQgZG9uJ3QgbWF0Y2ggdGhlIFBhcnF1ZXQgZm9ybWF0IHNwZWNpZmljYXRpb24uXG4gIC0gVW5zdXBwb3J0ZWQgY29tcHJlc3Npb24uYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZXJyb3IpIHtcbiAgICAgIGVycm9yID0gZXJyb3JEYXRhIGFzIEVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGF3YWl0IGMuY2xvc2UoKTtcblxuICByZXR1cm4gZXJyb3I7XG59XG5cbi8qKlxuICogU2FuaXRpemVzIGEgZmlsZSBuYW1lIHRvIGJlIGEgdmFsaWQgRHVja0RCIHRhYmxlIG5hbWUuXG4gKiBAcGFyYW0gZmlsZU5hbWUgVGhlIGlucHV0IGZpbGUgbmFtZSB0byBiZSBzYW5pdGl6ZWQuXG4gKiBAcmV0dXJucyBBIHZhbGlkIER1Y2tEQiB0YWJsZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVEdWNrREJUYWJsZU5hbWUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFJlcGxhY2UgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGggdW5kZXJzY29yZXNcbiAgbGV0IG5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOV9dL2csICdfJyk7XG4gIC8vIEVuc3VyZSBpdCBkb2Vzbid0IHN0YXJ0IHdpdGggYSBkaWdpdFxuICBpZiAoL15cXGQvLnRlc3QobmFtZSkpIHtcbiAgICBuYW1lID0gYHRfJHtuYW1lfWA7XG4gIH1cbiAgcmV0dXJuIG5hbWUgfHwgJ2RlZmF1bHRfdGFibGUnO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQTBFLFNBQUFLLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBUCx3QkFBQU8sQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JB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
669
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl90eXBlIiwiX2R1Y2tkYldhc20iLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMiLCJleHBvcnRzIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJfeCIsIl94MiIsIl9nZXREdWNrREJDb2x1bW5UeXBlcyIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUyIiwiY29ubmVjdGlvbiIsInRhYmxlTmFtZSIsInF1b3RlZFRhYmxlTmFtZSIsImR1Y2tEYlR5cGVzIiwicmVzSW5mbyIsIm51bVJvd3MiLCJjb2x1bW5OYW1lcyIsImNvbHVtblR5cGVzIiwicmVzRGVzY3JpYmUiLCJfbnVtUm93cyIsIl9pIiwiX3Jlc0Rlc2NyaWJlJGdldENoaWxkIiwiX3Jlc0Rlc2NyaWJlJGdldENoaWxkMiIsImNvbHVtbk5hbWUiLCJjb2x1bW5UeXBlIiwiZXJyb3IiLCJ3cmFwIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwicHJldiIsIm5leHQiLCJxdW90ZVRhYmxlTmFtZSIsInF1ZXJ5IiwiY29uY2F0Iiwic2VudCIsImdldENoaWxkIiwicHVzaCIsIm5hbWUiLCJ0eXBlIiwidDAiLCJnZXRDaGlsZEF0IiwidDEiLCJFcnJvciIsImNhdXNlIiwicHJpbWFyeUVycm9yIiwiZmFsbGJhY2tFcnJvciIsImFicnVwdCIsInN0b3AiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImNvbHVtbnMiLCJyZWR1Y2UiLCJhY2MiLCJ2YWx1ZSIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsImluY2x1ZGVzIiwicmVwbGFjZSIsInF1b3RlQ29sdW1uTmFtZSIsImNhc3REdWNrREJUeXBlc0ZvcktlcGxlciIsIm9wdGlvbnMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJnZW9tZXRyeVRvV0tCIiwiYmlnSW50VG9Eb3VibGUiLCJtb2RpZmllZENvbHVtbnMiLCJtYXAiLCJjb2x1bW4iLCJxdW90ZWRDb2x1bW5OYW1lIiwiam9pbiIsInNldEdlb0Fycm93V0tCRXh0ZW5zaW9uIiwidGFibGUiLCJzY2hlbWEiLCJmaWVsZHMiLCJmb3JFYWNoIiwiZmllbGQiLCJpbmZvIiwiZmluZCIsIm1ldGFkYXRhIiwiR0VPQVJST1dfTUVUQURBVEFfS0VZIiwiR0VPQVJST1dfRVhURU5TSU9OUyIsIldLQiIsInJlc3RvcmVBcnJvd1RhYmxlIiwiYXJyb3dTY2hlbWEiLCJjcmVhT3B0cyIsImluZGV4IiwiVGFibGUiLCJyZW1vdmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMiLCJyZW1vdmVkTWV0YWRhdGEiLCJleHRlbnNpb24iLCJyZXN0b3JlVW5zdXBwb3J0ZWRFeHRlbnNpb25zIiwicmVtb3ZlZEV4dGVuc2lvbnMiLCJpc0dlb0Fycm93UG9pbnQiLCJEYXRhVHlwZSIsImlzRml4ZWRTaXplTGlzdCIsImxpc3RTaXplIiwiaXNGbG9hdCIsImNoaWxkcmVuIiwiaXNHZW9BcnJvd0xpbmVTdHJpbmciLCJpc0xpc3QiLCJpc0dlb0Fycm93UG9seWdvbiIsImlzR2VvQXJyb3dNdWx0aVBvaW50IiwiaXNHZW9BcnJvd011bHRpTGluZVN0cmluZyIsImlzR2VvQXJyb3dNdWx0aVBvbHlnb24iLCJjaGVja0lzU2VsZWN0UXVlcnkiLCJfeDMiLCJfeDQiLCJfY2hlY2tJc1NlbGVjdFF1ZXJ5IiwiX2NhbGxlZTMiLCJyZXN1bHQiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJzcGxpdFNxbFN0YXRlbWVudHMiLCJpbnB1dCIsInF1ZXJpZXMiLCJjdXJyZW50UXVlcnkiLCJpblNpbmdsZVF1b3RlIiwiaW5Eb3VibGVRdW90ZSIsImluTGluZUNvbW1lbnQiLCJpbkJsb2NrQ29tbWVudCIsImNoYXIiLCJ0cmltbWVkIiwidHJpbSIsInJlbW92ZVNRTENvbW1lbnRzIiwic3FsIiwiZHJvcFRhYmxlSWZFeGlzdHMiLCJfcmVmIiwiX2NhbGxlZSIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJjb25zb2xlIiwiX3g1IiwiX3g2IiwidGFibGVGcm9tRmlsZSIsIl94NyIsIl90YWJsZUZyb21GaWxlIiwiX2NhbGxlZTQiLCJmaWxlIiwiZmlsZUV4dCIsImRiIiwiYyIsInNvdXJjZU5hbWUiLCJhcnJheUJ1ZmZlciIsInVpbnQ4QXJyYXkiLCJhcnJvd1RhYmxlIiwibWVzc2FnZSIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImV4dCIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZGF0YWJhc2UiLCJjb25uZWN0Iiwic2FuaXRpemVEdWNrREJUYWJsZU5hbWUiLCJVaW50OEFycmF5IiwidGFibGVGcm9tSVBDIiwiaW5zZXJ0QXJyb3dUYWJsZSIsInJlZ2lzdGVyRmlsZUhhbmRsZSIsIkR1Y2tEQkRhdGFQcm90b2NvbCIsIkJST1dTRVJfRklMRVJFQURFUiIsImNsb3NlIiwiZmlsZU5hbWUiLCJ0ZXN0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhYmxlL2R1Y2tkYi10YWJsZS11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBsb2FkZXJzLmdsXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgKGMpIHZpcy5nbCBjb250cmlidXRvcnNcblxuLy8gQ29waWVkIGZyb20gbG9hZGVycy5nbC9nZW9hcnJvd1xuXG4vLyBUT0RPOiBSZW1vdmUgaXNHZW9BcnJvdyogb25jZSBLZXBsZXIuZ2wgaXMgdXBncmFkZWQgdG8gbG9hZGVycy5nbCA0LjQrXG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQge0RhdGFUeXBlfSBmcm9tICdhcGFjaGUtYXJyb3cvdHlwZSc7XG5pbXBvcnQge0R1Y2tEQkRhdGFQcm90b2NvbH0gZnJvbSAnQGR1Y2tkYi9kdWNrZGItd2FzbSc7XG5cbmltcG9ydCB7R0VPQVJST1dfRVhURU5TSU9OUywgR0VPQVJST1dfTUVUQURBVEFfS0VZfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1Byb3RvRGF0YXNldEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YWJhc2VDb25uZWN0aW9uLCBnZXRBcHBsaWNhdGlvbkNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBTVVBQT1JURURfRFVDS0RCX0RST1BfRVhURU5TSU9OUyA9IFsnYXJyb3cnLCAnY3N2JywgJ2dlb2pzb24nLCAnanNvbicsICdwYXJxdWV0J107XG5cbmV4cG9ydCB0eXBlIER1Y2tEQkNvbHVtbkRlc2MgPSB7bmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmd9O1xuXG4vKipcbiAqIFF1ZXJpZXMgYSBEdWNrREIgdGFibGUgZm9yIHRoZSBzY2hlbWEgZGVzY3JpcHRpb24uXG4gKiBAcGFyYW0gY29ubmVjdGlvbiBBbiBhY3RpdmUgRHVja0RCIGNvbm5lY3Rpb24uXG4gKiBAcGFyYW0gdGFibGVOYW1lIEEgbmFtZSBvZiBEdWNrREIgdGFibGUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBjb2x1bW4gbmFtZXMgYW5kIER1Y2tEQiB0eXBlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldER1Y2tEQkNvbHVtblR5cGVzKFxuICBjb25uZWN0aW9uOiBEYXRhYmFzZUNvbm5lY3Rpb24sXG4gIHRhYmxlTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPER1Y2tEQkNvbHVtbkRlc2NbXT4ge1xuICBjb25zdCBxdW90ZWRUYWJsZU5hbWUgPSBxdW90ZVRhYmxlTmFtZSh0YWJsZU5hbWUpO1xuICBjb25zdCBkdWNrRGJUeXBlczogRHVja0RCQ29sdW1uRGVzY1tdID0gW107XG4gIHRyeSB7XG4gICAgLy8gUFJBR01BIHRhYmxlX2luZm8gaXMgbGVzcyBsaWtlbHkgdG8gYmluZC9leGVjdXRlIHZpZXcgU1FMIHRoYW4gREVTQ1JJQkUsXG4gICAgLy8gc28gaXQgYXZvaWRzIHRyaWdnZXJpbmcgcmVtb3RlIGFjY2VzcyAoZS5nLiwgUzMpIGZvciB2aWV3LWJhY2tlZCBzY2hlbWFzLlxuICAgIGNvbnN0IHJlc0luZm8gPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBQUkFHTUEgdGFibGVfaW5mbygke3F1b3RlZFRhYmxlTmFtZX0pYCk7XG4gICAgY29uc3QgbnVtUm93cyA9IHJlc0luZm8ubnVtUm93cztcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IHJlc0luZm8uZ2V0Q2hpbGQoJ25hbWUnKTtcbiAgICBjb25zdCBjb2x1bW5UeXBlcyA9IHJlc0luZm8uZ2V0Q2hpbGQoJ3R5cGUnKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVJvd3M7ICsraSkge1xuICAgICAgZHVja0RiVHlwZXMucHVzaCh7XG4gICAgICAgIG5hbWU6IGNvbHVtbk5hbWVzPy5nZXQoaSksXG4gICAgICAgIHR5cGU6IGNvbHVtblR5cGVzPy5nZXQoaSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfSBjYXRjaCAocHJpbWFyeUVycm9yKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc0Rlc2NyaWJlID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShgREVTQ1JJQkUgJHtxdW90ZWRUYWJsZU5hbWV9YCk7XG4gICAgICBjb25zdCBudW1Sb3dzID0gcmVzRGVzY3JpYmUubnVtUm93cztcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtUm93czsgKytpKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbk5hbWUgPSByZXNEZXNjcmliZS5nZXRDaGlsZEF0KDApPy5nZXQoaSk7XG4gICAgICAgIGNvbnN0IGNvbHVtblR5cGUgPSByZXNEZXNjcmliZS5nZXRDaGlsZEF0KDEpPy5nZXQoaSk7XG5cbiAgICAgICAgZHVja0RiVHlwZXMucHVzaCh7XG4gICAgICAgICAgbmFtZTogY29sdW1uTmFtZSxcbiAgICAgICAgICB0eXBlOiBjb2x1bW5UeXBlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGZhbGxiYWNrRXJyb3IpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICBgW0R1Y2tEQl0gRmFpbGVkIHRvIGxvYWQgY29sdW1uIHR5cGVzIGZvciAke3RhYmxlTmFtZX0gKFBSQUdNQSArIERFU0NSSUJFKS5gXG4gICAgICApO1xuICAgICAgKGVycm9yIGFzIEVycm9yICYge2NhdXNlPzogdW5rbm93bn0pLmNhdXNlID0ge1xuICAgICAgICBwcmltYXJ5RXJyb3IsXG4gICAgICAgIGZhbGxiYWNrRXJyb3JcbiAgICAgIH07XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZHVja0RiVHlwZXM7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgbWFwcGluZyBvZiBjb2x1bW4gbmFtZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBEdWNrREIgZGF0YSB0eXBlcy5cbiAqIEBwYXJhbSBjb2x1bW5zIEFuIGFycmF5IG9mIGNvbHVtbiBkZXNjcmlwdGlvbnMgZnJvbSBEdWNrREIuIENoZWNrIGdldER1Y2tEQkNvbHVtblR5cGVzLlxuICogQHJldHVybnMgQSByZWNvcmQgd2hlcmUga2V5cyBhcmUgY29sdW1uIG5hbWVzIGFuZCB2YWx1ZXMgYXJlIHRoZWlyIGRhdGEgdHlwZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREdWNrREJDb2x1bW5UeXBlc01hcChjb2x1bW5zOiBEdWNrREJDb2x1bW5EZXNjW10pIHtcbiAgcmV0dXJuIGNvbHVtbnMucmVkdWNlKChhY2MsIHZhbHVlKSA9PiB7XG4gICAgYWNjW3ZhbHVlLm5hbWVdID0gdmFsdWUudHlwZTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcbn1cblxuLyoqXG4gKiBRdW90ZXMgYSB0YWJsZSBuYW1lIGZvciBzYWZlIFNRTCB1c2FnZS5cbiAqIEFsd2F5cyBxdW90ZXMgdG8gaGFuZGxlIGFsbCBlZGdlIGNhc2VzIChzcGFjZXMsIHNwZWNpYWwgY2hhcmFjdGVycywgcmVzZXJ2ZWQgd29yZHMpLlxuICogRm9yIGZ1bGx5IHF1YWxpZmllZCBuYW1lcyAoY29udGFpbmluZyBkb3RzKSwgcHJlc2VydmVzIHRoZSBleGlzdGluZyBzdHJ1Y3R1cmUuXG4gKiBAcGFyYW0gdGFibGVOYW1lIFRoZSB0YWJsZSBuYW1lIHRvIHF1b3RlLlxuICogQHJldHVybnMgVGhlIHRhYmxlIG5hbWUsIHByb3Blcmx5IHF1b3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHF1b3RlVGFibGVOYW1lKHRhYmxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gUmV0dXJuIGFzLWlzIGlmOlxuICAvLyAxLiBJdCdzIGFscmVhZHkgYSBwcm9wZXJseSBxdW90ZWQgc2ltcGxlIGlkZW50aWZpZXIgKHN0YXJ0cyBhbmQgZW5kcyB3aXRoIHF1b3RlcylcbiAgLy8gMi4gSXQgY29udGFpbnMgYm90aCBkb3RzIGFuZCBxdW90ZXMgKGFzc3VtZSBpdCdzIGEgcXVhbGlmaWVkIG5hbWUpXG4gIGlmIChcbiAgICAodGFibGVOYW1lLnN0YXJ0c1dpdGgoJ1wiJykgJiYgdGFibGVOYW1lLmVuZHNXaXRoKCdcIicpKSB8fFxuICAgICh0YWJsZU5hbWUuaW5jbHVkZXMoJy4nKSAmJiB0YWJsZU5hbWUuaW5jbHVkZXMoJ1wiJykpXG4gICkge1xuICAgIHJldHVybiB0YWJsZU5hbWU7XG4gIH1cblxuICByZXR1cm4gYFwiJHt0YWJsZU5hbWUucmVwbGFjZSgvXCIvZywgJ1wiXCInKX1cImA7XG59XG5cbi8qKlxuICogUXVvdGVzIGEgY29sdW1uIG5hbWUgZm9yIHNhZmUgU1FMIHVzYWdlLlxuICogQWx3YXlzIHF1b3RlcyB0byBoYW5kbGUgYWxsIGVkZ2UgY2FzZXMgKHNwYWNlcywgc3BlY2lhbCBjaGFyYWN0ZXJzLCByZXNlcnZlZCB3b3JkcykuXG4gKiBAcGFyYW0gY29sdW1uTmFtZSBUaGUgY29sdW1uIG5hbWUgdG8gcXVvdGUuXG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIG5hbWUsIHByb3Blcmx5IHF1b3RlZC5cbiAqL1xuZnVuY3Rpb24gcXVvdGVDb2x1bW5OYW1lKGNvbHVtbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgXCIke2NvbHVtbk5hbWUucmVwbGFjZSgvXCIvZywgJ1wiXCInKX1cImA7XG59XG5cbi8qKlxuICogQ29uc3RydWN0cyBhbiBTUUwgcXVlcnkgdG8gc2VsZWN0IGFsbCBjb2x1bW5zIGZyb20gYSBnaXZlbiB0YWJsZSxcbiAqIGNvbnZlcnRpbmcgc3BlY2lmaWVkIGNvbHVtbnMgdG8gV2VsbC1Lbm93biBCaW5hcnkgKFdLQikgZm9ybWF0IHVzaW5nIFNUX0FzV0tCLFxuICogYW5kIGNhc3RpbmcgQklHSU5UIGNvbHVtbnMgdG8gRE9VQkxFIGlmIHNwZWNpZmllZC5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGZyb20gd2hpY2ggdG8gc2VsZWN0IGRhdGEuXG4gKiBAcGFyYW0gY29sdW1ucyBBbiBhcnJheSBvZiBjb2x1bW4gZGVzY3JpcHRvcnMsIGVhY2ggd2l0aCBhIHR5cGUgYW5kIG5hbWUuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGNvbnRyb2wgdGhlIGNvbnZlcnNpb24gYmVoYXZpb3IuXG4gKiBAcmV0dXJucyBUaGUgY29uc3RydWN0ZWQgU1FMIHF1ZXJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FzdER1Y2tEQlR5cGVzRm9yS2VwbGVyKFxuICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgY29sdW1uczogRHVja0RCQ29sdW1uRGVzY1tdLFxuICBvcHRpb25zID0ge2dlb21ldHJ5VG9XS0I6IHRydWUsIGJpZ0ludFRvRG91YmxlOiB0cnVlfVxuKTogc3RyaW5nIHtcbiAgY29uc3QgbW9kaWZpZWRDb2x1bW5zID0gY29sdW1ucy5tYXAoY29sdW1uID0+IHtcbiAgICBjb25zdCB7bmFtZSwgdHlwZX0gPSBjb2x1bW47XG4gICAgY29uc3QgcXVvdGVkQ29sdW1uTmFtZSA9IHF1b3RlQ29sdW1uTmFtZShuYW1lKTtcbiAgICBpZiAodHlwZSA9PT0gJ0dFT01FVFJZJyAmJiBvcHRpb25zLmdlb21ldHJ5VG9XS0IpIHtcbiAgICAgIHJldHVybiBgU1RfQXNXS0IoJHtxdW90ZWRDb2x1bW5OYW1lfSkgYXMgJHtxdW90ZWRDb2x1bW5OYW1lfWA7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG9wdGlvbnMuYmlnSW50VG9Eb3VibGUgJiZcbiAgICAgICh0eXBlID09PSAnQklHSU5UJyB8fFxuICAgICAgICB0eXBlID09PSAnVUJJR0lOVCcgfHxcbiAgICAgICAgdHlwZSA9PT0gJ0hVR0VJTlQnIHx8XG4gICAgICAgIHR5cGUgPT09ICdVSFVHRUlOVCcgfHxcbiAgICAgICAgdHlwZS5zdGFydHNXaXRoKCdERUNJTUFMJykpXG4gICAgKSB7XG4gICAgICAvLyBDYXN0IDY0LWJpdCBhbmQgbGFyZ2VyIGludGVnZXIgdHlwZXMgYW5kIERFQ0lNQUwgdG8gRE9VQkxFIHRvIGF2b2lkIEJpZ0ludCBpbiBKU1xuICAgICAgcmV0dXJuIGBDQVNUKCR7cXVvdGVkQ29sdW1uTmFtZX0gQVMgRE9VQkxFKSBhcyAke3F1b3RlZENvbHVtbk5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIHF1b3RlZENvbHVtbk5hbWU7XG4gIH0pO1xuXG4gIGNvbnN0IHF1b3RlZFRhYmxlTmFtZSA9IHF1b3RlVGFibGVOYW1lKHRhYmxlTmFtZSk7XG4gIHJldHVybiBgU0VMRUNUICR7bW9kaWZpZWRDb2x1bW5zLmpvaW4oJywgJyl9IEZST00gJHtxdW90ZWRUYWJsZU5hbWV9YDtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBHZW9BcnJvdyBXS0IgZXh0ZW5zaW9uIG1ldGFkYXRhIGZvciBjb2x1bW5zIG9mIHR5cGUgR0VPTUVUUlkgaW4gYW4gQXJyb3cgdGFibGUuXG4gKiBAcGFyYW0gdGFibGUgVGhlIEFwYWNoZSBBcnJvdyB0YWJsZSB3aG9zZSBzY2hlbWEgZmllbGRzIHdpbGwgYmUgbW9kaWZpZWQuXG4gKiBAcGFyYW0gY29sdW1ucyBBbiBhcnJheSBvZiBjb2x1bW4gZGVzY3JpcHRvcnMgZnJvbSBhIER1Y2tEQiB0YWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEdlb0Fycm93V0tCRXh0ZW5zaW9uKHRhYmxlOiBhcnJvdy5UYWJsZSwgY29sdW1uczogRHVja0RCQ29sdW1uRGVzY1tdKSB7XG4gIHRhYmxlLnNjaGVtYS5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgY29uc3QgaW5mbyA9IGNvbHVtbnMuZmluZCh0ID0+IHQubmFtZSA9PT0gZmllbGQubmFtZSk7XG4gICAgaWYgKGluZm8/LnR5cGUgPT09ICdHRU9NRVRSWScpIHtcbiAgICAgIGZpZWxkLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyb3cgdGFibGUgZnJvbSBhbiBhcnJheSBvZiBhcnJvdyB2ZWN0b3JzIGFuZCBmaWVsZHMuXG4gKiBAcGFyYW0gY29sdW1ucyBBbiBhcnJheSBvZiBhcnJvdyB2ZWN0b3JzLlxuICogQHBhcmFtIGZpZWxkcyBBbiBhcnJheSBvZiBmaWVsZHMgcGVyIGFycm93IHZlY3Rvci5cbiAqIEBwYXJhbSBhcnJvd1NjaGVtYSBPcHRpb25hbCBhcnJvdyB0YWJsZSBzY2hlbWEgd2hlbiBhdmFpbGFibGUuXG4gKiBAcmV0dXJucyBBbiBhcnJvdyB0YWJsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc3RvcmVBcnJvd1RhYmxlID0gKFxuICBjb2x1bW5zOiBhcnJvdy5WZWN0b3JbXSxcbiAgZmllbGRzOiBQcm90b0RhdGFzZXRGaWVsZFtdLFxuICBhcnJvd1NjaGVtYT86IGFycm93LlNjaGVtYVxuKSA9PiB7XG4gIGNvbnN0IGNyZWFPcHRzID0ge307XG4gIGZpZWxkcy5tYXAoKGZpZWxkLCBpbmRleCkgPT4ge1xuICAgIGNyZWFPcHRzW2ZpZWxkLm5hbWVdID0gY29sdW1uc1tpbmRleF07XG4gIH0pO1xuXG4gIHJldHVybiBhcnJvd1NjaGVtYSA/IG5ldyBhcnJvdy5UYWJsZShhcnJvd1NjaGVtYSwgY3JlYU9wdHMpIDogbmV3IGFycm93LlRhYmxlKGNyZWFPcHRzKTtcbn07XG5cbi8qKlxuICogRHVja0RiIHRocm93cyB3aGVuIGdlb2Fycm93IGV4dGVuc2lvbnMgYXJlIHByZXNlbnQgaW4gbWV0YWRhdGEuXG4gKiBAcGFyYW0gdGFibGUgQW4gYXJyb3cgdGFibGUgdG8gY2xlYXIgZnJvbSBleHRlbnNpb25zLlxuICogQHJldHVybnMgQSBtYXAgb2YgcmVtb3ZlZCBwZXIgZmllbGQgZ2VvYXJyb3cgZXh0ZW5zaW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyA9ICh0YWJsZTogYXJyb3cuVGFibGUpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0+IHtcbiAgY29uc3QgcmVtb3ZlZE1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIHRhYmxlLnNjaGVtYS5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gZmllbGQubWV0YWRhdGEuZ2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSk7XG4gICAgaWYgKGV4dGVuc2lvbj8uc3RhcnRzV2l0aCgnZ2VvYXJyb3cnKSkge1xuICAgICAgcmVtb3ZlZE1ldGFkYXRhW2ZpZWxkLm5hbWVdID0gZXh0ZW5zaW9uO1xuICAgICAgZmllbGQubWV0YWRhdGEuZGVsZXRlKEdFT0FSUk9XX01FVEFEQVRBX0tFWSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlbW92ZWRNZXRhZGF0YTtcbn07XG5cbi8qKlxuICogUmVzdG9yZSByZW1vdmVkIG1ldGFkYXRhIGV4dGVuc2lvbnMgYWZ0ZXIgYSBjYWxsIHRvIHJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucy5cbiAqIEBwYXJhbSB0YWJsZSBBbiBhcnJvdyB0YWJsZSB0byByZXN0b3JlIGdlb2Fycm93IGV4dGVuc2lvbnMuXG4gKiBAcGFyYW0gcmVtb3ZlZEV4dGVuc2lvbnMgQSBtYXAgb2YgcGVyIGZpZWxkIGdlb2Fycm93IGV4dGVuc2lvbnMgdG8gcmVzdG9yZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc3RvcmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMgPSAoXG4gIHRhYmxlOiBhcnJvdy5UYWJsZSxcbiAgcmVtb3ZlZEV4dGVuc2lvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbikgPT4ge1xuICB0YWJsZS5zY2hlbWEuZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgIGNvbnN0IGV4dGVuc2lvbiA9IHJlbW92ZWRFeHRlbnNpb25zW2ZpZWxkLm5hbWVdO1xuICAgIGlmIChleHRlbnNpb24pIHtcbiAgICAgIGZpZWxkLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIGV4dGVuc2lvbik7XG4gICAgfVxuICB9KTtcbn07XG5cbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gQXBhY2hlIEFycm93IEpTIHR5cGUgaXMgYSBQb2ludCBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93UG9pbnQodHlwZTogRGF0YVR5cGUpIHtcbiAgaWYgKERhdGFUeXBlLmlzRml4ZWRTaXplTGlzdCh0eXBlKSkge1xuICAgIC8vIENoZWNrIGxpc3Qgc2l6ZVxuICAgIGlmICghWzIsIDMsIDRdLmluY2x1ZGVzKHR5cGUubGlzdFNpemUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgY2hpbGQgb2YgRml4ZWRTaXplTGlzdCBpcyBmbG9hdGluZyB0eXBlXG4gICAgaWYgKCFEYXRhVHlwZS5pc0Zsb2F0KHR5cGUuY2hpbGRyZW5bMF0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gQXBhY2hlIEFycm93IEpTIHR5cGUgaXMgYSBQb2ludCBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93TGluZVN0cmluZyh0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdHlwZSBpcyBhIExpc3RcbiAgaWYgKCFEYXRhVHlwZS5pc0xpc3QodHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBDaGVjayB0aGUgY2hpbGQgaXMgYSBwb2ludCB0eXBlXG4gIGlmICghaXNHZW9BcnJvd1BvaW50KHR5cGUuY2hpbGRyZW5bMF0udHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvbHlnb24gZGF0YSB0eXBlICovXG5leHBvcnQgZnVuY3Rpb24gaXNHZW9BcnJvd1BvbHlnb24odHlwZTogRGF0YVR5cGUpIHtcbiAgLy8gQ2hlY2sgdGhlIG91dGVyIHZlY3RvciBpcyBhIExpc3RcbiAgaWYgKCFEYXRhVHlwZS5pc0xpc3QodHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBDaGVjayB0aGUgY2hpbGQgaXMgYSBsaW5lc3RyaW5nIHZlY3RvclxuICBpZiAoIWlzR2VvQXJyb3dMaW5lU3RyaW5nKHR5cGUuY2hpbGRyZW5bMF0udHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvbHlnb24gZGF0YSB0eXBlICovXG5leHBvcnQgZnVuY3Rpb24gaXNHZW9BcnJvd011bHRpUG9pbnQodHlwZTogRGF0YVR5cGUpIHtcbiAgLy8gQ2hlY2sgdGhlIG91dGVyIHZlY3RvciBpcyBhIExpc3RcbiAgaWYgKCFEYXRhVHlwZS5pc0xpc3QodHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBDaGVjayB0aGUgY2hpbGQgaXMgYSBwb2ludCB2ZWN0b3JcbiAgaWYgKCFpc0dlb0Fycm93UG9pbnQodHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIEFwYWNoZSBBcnJvdyBKUyB0eXBlIGlzIGEgUG9seWdvbiBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nKHR5cGU6IERhdGFUeXBlKSB7XG4gIC8vIENoZWNrIHRoZSBvdXRlciB2ZWN0b3IgaXMgYSBMaXN0XG4gIGlmICghRGF0YVR5cGUuaXNMaXN0KHR5cGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gQ2hlY2sgdGhlIGNoaWxkIGlzIGEgbGluZXN0cmluZyB2ZWN0b3JcbiAgaWYgKCFpc0dlb0Fycm93TGluZVN0cmluZyh0eXBlLmNoaWxkcmVuWzBdLnR5cGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gQXBhY2hlIEFycm93IEpTIHR5cGUgaXMgYSBQb2x5Z29uIGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dNdWx0aVBvbHlnb24odHlwZTogRGF0YVR5cGUpIHtcbiAgLy8gQ2hlY2sgdGhlIG91dGVyIHZlY3RvciBpcyBhIExpc3RcbiAgaWYgKCFEYXRhVHlwZS5pc0xpc3QodHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBDaGVjayB0aGUgY2hpbGQgaXMgYSBwb2x5Z29uIHZlY3RvclxuICBpZiAoIWlzR2VvQXJyb3dQb2x5Z29uKHR5cGUuY2hpbGRyZW5bMF0udHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIFNRTCBxdWVyeSBpcyBhIFNFTEVDVCBxdWVyeSBieSB1c2luZyB0aGUgRVhQTEFJTiBjb21tYW5kLlxuICogQHBhcmFtIGNvbm5lY3Rpb24gVGhlIER1Y2tEQiBjb25uZWN0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHF1ZXJ5IFRoZSBTUUwgcXVlcnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBSZXNvbHZlcyB0byBgdHJ1ZWAgaWYgdGhlIHF1ZXJ5IGlzIGEgU0VMRUNUIHN0YXRlbWVudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0lzU2VsZWN0UXVlcnkoXG4gIGNvbm5lY3Rpb246IERhdGFiYXNlQ29ubmVjdGlvbixcbiAgcXVlcnk6IHN0cmluZ1xuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShgRVhQTEFJTiAoJHtxdWVyeX0pYCk7XG4gICAgcmV0dXJuIHJlc3VsdC5udW1Sb3dzID4gMDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBTcGxpdCBhIHN0cmluZyB3aXRoIHBvdGVudGlhbGx5IG11bHRpcGxlIFNRTCBxdWVyaWVzIChzZXBhcmF0ZWQgYXMgdXN1YWwgYnkgJzsnKSBpbnRvIGFuIGFycmF5IG9mIHF1ZXJpZXMuXG4gKiBUaGlzIGltcGxlbWVudGF0aW9uOlxuICogIC0gSGFuZGxlcyBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZWQgc3RyaW5ncyB3aXRoIHByb3BlciBlc2NhcGluZ1xuICogIC0gSWdub3JlcyBzZW1pY29sb25zIGluIGxpbmUgY29tbWVudHMgKC0tKSBhbmQgYmxvY2sgY29tbWVudHMgKHNsYXNoIGFzdGVyaXNrKVxuICogIC0gVHJpbXMgd2hpdGVzcGFjZSBmcm9tIHF1ZXJpZXNcbiAqICAtIEhhbmRsZXMgU1FMLXN0eWxlIGVzY2FwZWQgcXVvdGVzICgnJyBpbnNpZGUgc3RyaW5ncylcbiAqICAtIFJldHVybnMgb25seSBub24tZW1wdHkgcXVlcmllc1xuICogQHBhcmFtIGlucHV0IEEgc3RyaW5nIHdpdGggcG90ZW50aWFsbHkgbXVsdGlwbGUgU1FMIHF1ZXJpZXMuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBxdWVyaWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRTcWxTdGF0ZW1lbnRzKGlucHV0OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHF1ZXJpZXM6IHN0cmluZ1tdID0gW107XG4gIGxldCBjdXJyZW50UXVlcnkgPSAnJztcbiAgbGV0IGluU2luZ2xlUXVvdGUgPSBmYWxzZTtcbiAgbGV0IGluRG91YmxlUXVvdGUgPSBmYWxzZTtcbiAgbGV0IGluTGluZUNvbW1lbnQgPSBmYWxzZTtcbiAgbGV0IGluQmxvY2tDb21tZW50ID0gZmFsc2U7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoYXIgPSBpbnB1dFtpXTtcblxuICAgIGlmIChpbkxpbmVDb21tZW50KSB7XG4gICAgICBjdXJyZW50UXVlcnkgKz0gY2hhcjtcbiAgICAgIGlmIChjaGFyID09PSAnXFxuJykge1xuICAgICAgICBpbkxpbmVDb21tZW50ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoaW5CbG9ja0NvbW1lbnQpIHtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgaWYgKGNoYXIgPT09ICcqJyAmJiBpbnB1dFtpICsgMV0gPT09ICcvJykge1xuICAgICAgICBpbkJsb2NrQ29tbWVudCA9IGZhbHNlO1xuICAgICAgICBjdXJyZW50UXVlcnkgKz0gaW5wdXRbKytpXTsgLy8gQ29uc3VtZSAnLydcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpblNpbmdsZVF1b3RlKSB7XG4gICAgICBjdXJyZW50UXVlcnkgKz0gY2hhcjtcbiAgICAgIGlmIChjaGFyID09PSBcIidcIikge1xuICAgICAgICAvLyBIYW5kbGUgZXNjYXBlZCBzaW5nbGUgcXVvdGVzIGluIFNRTFxuICAgICAgICBpZiAoaSArIDEgPCBpbnB1dC5sZW5ndGggJiYgaW5wdXRbaSArIDFdID09PSBcIidcIikge1xuICAgICAgICAgIGN1cnJlbnRRdWVyeSArPSBpbnB1dFsrK2ldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluU2luZ2xlUXVvdGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGluRG91YmxlUXVvdGUpIHtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgaWYgKGNoYXIgPT09ICdcIicpIHtcbiAgICAgICAgLy8gSGFuZGxlIGVzY2FwZWQgZG91YmxlIHF1b3Rlc1xuICAgICAgICBpZiAoaSArIDEgPCBpbnB1dC5sZW5ndGggJiYgaW5wdXRbaSArIDFdID09PSAnXCInKSB7XG4gICAgICAgICAgY3VycmVudFF1ZXJ5ICs9IGlucHV0WysraV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5Eb3VibGVRdW90ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgY29tbWVudCBzdGFydHNcbiAgICBpZiAoY2hhciA9PT0gJy0nICYmIGlucHV0W2kgKyAxXSA9PT0gJy0nKSB7XG4gICAgICBpbkxpbmVDb21tZW50ID0gdHJ1ZTtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyICsgaW5wdXRbKytpXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFyID09PSAnLycgJiYgaW5wdXRbaSArIDFdID09PSAnKicpIHtcbiAgICAgIGluQmxvY2tDb21tZW50ID0gdHJ1ZTtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyICsgaW5wdXRbKytpXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBxdW90ZSBzdGFydHNcbiAgICBpZiAoY2hhciA9PT0gXCInXCIpIHtcbiAgICAgIGluU2luZ2xlUXVvdGUgPSB0cnVlO1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXI7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY2hhciA9PT0gJ1wiJykge1xuICAgICAgaW5Eb3VibGVRdW90ZSA9IHRydWU7XG4gICAgICBjdXJyZW50UXVlcnkgKz0gY2hhcjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBxdWVyeSBzZXBhcmF0b3JcbiAgICBpZiAoY2hhciA9PT0gJzsnKSB7XG4gICAgICBjb25zdCB0cmltbWVkID0gY3VycmVudFF1ZXJ5LnRyaW0oKTtcbiAgICAgIGlmICh0cmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcXVlcmllcy5wdXNoKHRyaW1tZWQpO1xuICAgICAgfVxuICAgICAgY3VycmVudFF1ZXJ5ID0gJyc7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjdXJyZW50UXVlcnkgKz0gY2hhcjtcbiAgfVxuXG4gIC8vIEFkZCB0aGUgZmluYWwgcXVlcnlcbiAgY29uc3QgdHJpbW1lZCA9IGN1cnJlbnRRdWVyeS50cmltKCk7XG4gIGlmICh0cmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICBxdWVyaWVzLnB1c2godHJpbW1lZCk7XG4gIH1cblxuICByZXR1cm4gcXVlcmllcztcbn1cblxuLyoqXG4gKiBSZW1vdmVzIFNRTCBjb21tZW50cyBmcm9tIGEgZ2l2ZW4gU1FMIHN0cmluZy5cbiAqIEBwYXJhbSBzcWwgVGhlIFNRTCBxdWVyeSBzdHJpbmcgZnJvbSB3aGljaCBjb21tZW50cyBzaG91bGQgYmUgcmVtb3ZlZC5cbiAqIEByZXR1cm5zIFRoZSBjbGVhbmVkIFNRTCBzdHJpbmcgd2l0aG91dCBjb21tZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVNRTENvbW1lbnRzKHNxbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gUmVtb3ZlIG11bHRpLWxpbmUgY29tbWVudHMgKC8qIC4uLiAqLylcbiAgc3FsID0gc3FsLnJlcGxhY2UoL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vZywgJycpO1xuICAvLyBSZW1vdmUgc2luZ2xlLWxpbmUgY29tbWVudHMgKC0tIC4uLilcbiAgc3FsID0gc3FsLnJlcGxhY2UoLy0tLiokL2dtLCAnJyk7XG4gIHJldHVybiBzcWwudHJpbSgpO1xufVxuXG4vKipcbiAqIERyb3BzIGEgdGFibGUgaWYgaXQgZXhpc3RzIGluIHRoZSBEdWNrREIgZGF0YWJhc2UuXG4gKiBAcGFyYW0gY29ubmVjdGlvbiBUaGUgRHVja0RCIGNvbm5lY3Rpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBkcm9wLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlLlxuICogQHRocm93cyBMb2dzIGFuIGVycm9yIGlmIHRoZSB0YWJsZSBkcm9wIG9wZXJhdGlvbiBmYWlscy5cbiAqL1xuZXhwb3J0IGNvbnN0IGRyb3BUYWJsZUlmRXhpc3RzID0gYXN5bmMgKGNvbm5lY3Rpb246IERhdGFiYXNlQ29ubmVjdGlvbiwgdGFibGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBEUk9QIFRBQkxFIElGIEVYSVNUUyBcIiR7dGFibGVOYW1lfVwiO2ApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Ryb3BwaW5nIHRhYmxlIGZhaWxlZCcsIHRhYmxlTmFtZSwgZXJyb3IpO1xuICB9XG59O1xuXG4vKipcbiAqIEltcG9ydHMgYSBmaWxlIGludG8gRHVja0RCIGFzIGEgdGFibGUsIHN1cHBvcnRpbmcgbXVsdGlwbGUgZm9ybWF0cyBmcm9tIFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TLlxuICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgdG8gYmUgaW1wb3J0ZWQuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmaWxlIGhhcyBiZWVuIHByb2Nlc3NlZCBpbnRvIGEgRHVja0RCIHRhYmxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGFibGVGcm9tRmlsZShmaWxlOiBGaWxlIHwgbnVsbCk6IFByb21pc2U8bnVsbCB8IEVycm9yPiB7XG4gIGlmICghZmlsZSkgcmV0dXJuIG5ldyBFcnJvcignRmlsZSBEcmFnICYgRHJvcDogTm8gZmlsZScpO1xuXG4gIGNvbnN0IGZpbGVFeHQgPSBTVVBQT1JURURfRFVDS0RCX0RST1BfRVhURU5TSU9OUy5maW5kKGV4dCA9PiBmaWxlLm5hbWUuZW5kc1dpdGgoZXh0KSk7XG4gIGlmICghZmlsZUV4dCkge1xuICAgIHJldHVybiBuZXcgRXJyb3IoXCJGaWxlIERyYWcgJiBEcm9wOiBGaWxlIGV4dGVuc2lvbiBpc24ndCBzdXBwb3J0ZWRcIik7XG4gIH1cblxuICBjb25zdCBkYiA9IGF3YWl0IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZGF0YWJhc2U7XG4gIGlmICghZGIpIHtcbiAgICByZXR1cm4gbmV3IEVycm9yKCdUaGUgZGF0YWJhc2UgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkuJyk7XG4gIH1cbiAgY29uc3QgYyA9IGF3YWl0IGRiLmNvbm5lY3QoKTtcblxuICBsZXQgZXJyb3I6IEVycm9yIHwgbnVsbCA9IG51bGw7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBzYW5pdGl6ZUR1Y2tEQlRhYmxlTmFtZShmaWxlLm5hbWUpO1xuICAgIGNvbnN0IHNvdXJjZU5hbWUgPSAndGVtcF9maWxlX2hhbmRsZSc7XG5cbiAgICBjLnF1ZXJ5KGBpbnN0YWxsIHNwYXRpYWw7XG4gICAgICBsb2FkIHNwYXRpYWw7YCk7XG5cbiAgICBpZiAoZmlsZUV4dCA9PT0gJ2Fycm93Jykge1xuICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBmaWxlLmFycmF5QnVmZmVyKCk7XG4gICAgICBjb25zdCB1aW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpO1xuICAgICAgY29uc3QgYXJyb3dUYWJsZSA9IGFycm93LnRhYmxlRnJvbUlQQyh1aW50OEFycmF5KTtcblxuICAgICAgYXdhaXQgYy5pbnNlcnRBcnJvd1RhYmxlKGFycm93VGFibGUsIHtuYW1lOiB0YWJsZU5hbWV9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgZGIucmVnaXN0ZXJGaWxlSGFuZGxlKHNvdXJjZU5hbWUsIGZpbGUsIER1Y2tEQkRhdGFQcm90b2NvbC5CUk9XU0VSX0ZJTEVSRUFERVIsIHRydWUpO1xuXG4gICAgICBpZiAoZmlsZUV4dCA9PT0gJ2NzdicpIHtcbiAgICAgICAgYXdhaXQgYy5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGFibGVOYW1lfScgQVNcbiAgICAgICAgICAgIFNFTEVDVCAqXG4gICAgICAgICAgICBGUk9NIHJlYWRfY3N2KCcke3NvdXJjZU5hbWV9JywgaGVhZGVyID0gdHJ1ZSwgYXV0b19kZXRlY3QgPSB0cnVlLCBzYW1wbGVfc2l6ZSA9IC0xKTtcbiAgICAgICAgICBgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsZUV4dCA9PT0gJ2pzb24nKSB7XG4gICAgICAgIGF3YWl0IGMucXVlcnkoYFxuICAgICAgICAgICAgQ1JFQVRFIFRBQkxFICcke3RhYmxlTmFtZX0nIEFTXG4gICAgICAgICAgICBTRUxFQ1QgKlxuICAgICAgICAgICAgRlJPTSByZWFkX2pzb25fYXV0bygnJHtzb3VyY2VOYW1lfScpO1xuICAgICAgICAgIGApO1xuICAgICAgfSBlbHNlIGlmIChmaWxlRXh0ID09PSAnZ2VvanNvbicpIHtcbiAgICAgICAgYXdhaXQgYy5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGFibGVOYW1lfScgQVNcbiAgICAgICAgICAgIFNFTEVDVCAqXG4gICAgICAgICAgICBGUk9NIFNUX1JFQUQoJyR7c291cmNlTmFtZX0nLCBrZWVwX3drYiA9IFRSVUUpO1xuICAgICAgICAgIGApO1xuICAgICAgfSBlbHNlIGlmIChmaWxlRXh0ID09PSAncGFycXVldCcpIHtcbiAgICAgICAgYXdhaXQgYy5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGFibGVOYW1lfScgQVNcbiAgICAgICAgICAgIFNFTEVDVCAqXG4gICAgICAgICAgICBGUk9NIHJlYWRfcGFycXVldCgnJHtzb3VyY2VOYW1lfScpXG4gICAgICAgICAgYCk7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnJvckRhdGEpIHtcbiAgICBpZiAoZXJyb3JEYXRhIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvckRhdGEubWVzc2FnZSB8fCAnJztcbiAgICAgIC8vIG91dHB1dCBtb3JlIHJlYWRhYmxlIGVycm9ycyBmb3Iga25vd24gaXNzdWVzXG4gICAgICBpZiAobWVzc2FnZS5pbmNsdWRlcygnQXJyb3cgVHlwZSB3aXRoIGV4dGVuc2lvbiBuYW1lOiBnZW9hcnJvdycpKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgICdUaGUgR2VvQXJyb3cgZXh0ZW5zaW9ucyBhcmUgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb25uZWN0ZWQgRHVja0RCIHZlcnNpb24uJ1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmluY2x1ZGVzKFwiR2VvcGFycXVldCBjb2x1bW4gJ2dlb21ldHJ5JyBkb2VzIG5vdCBoYXZlIGdlb21ldHJ5IHR5cGVzXCIpKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIElucHV0IEVycm9yOiBHZW9wYXJxdWV0IGNvbHVtbiAnZ2VvbWV0cnknIGRvZXMgbm90IGhhdmUgZ2VvbWV0cnkgdHlwZXMuXG5Qb3NzaWJsZSByZWFzb25zOlxuICAtIE9sZCAucGFycXVldCBmaWxlcyB0aGF0IGRvbid0IG1hdGNoIHRoZSBQYXJxdWV0IGZvcm1hdCBzcGVjaWZpY2F0aW9uLlxuICAtIFVuc3VwcG9ydGVkIGNvbXByZXNzaW9uLmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWVycm9yKSB7XG4gICAgICBlcnJvciA9IGVycm9yRGF0YSBhcyBFcnJvcjtcbiAgICB9XG4gIH1cblxuICBhd2FpdCBjLmNsb3NlKCk7XG5cbiAgcmV0dXJuIGVycm9yO1xufVxuXG4vKipcbiAqIFNhbml0aXplcyBhIGZpbGUgbmFtZSB0byBiZSBhIHZhbGlkIER1Y2tEQiB0YWJsZSBuYW1lLlxuICogQHBhcmFtIGZpbGVOYW1lIFRoZSBpbnB1dCBmaWxlIG5hbWUgdG8gYmUgc2FuaXRpemVkLlxuICogQHJldHVybnMgQSB2YWxpZCBEdWNrREIgdGFibGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplRHVja0RCVGFibGVOYW1lKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBSZXBsYWNlIGludmFsaWQgY2hhcmFjdGVycyB3aXRoIHVuZGVyc2NvcmVzXG4gIGxldCBuYW1lID0gZmlsZU5hbWUucmVwbGFjZSgvW15hLXpBLVowLTlfXS9nLCAnXycpO1xuICAvLyBFbnN1cmUgaXQgZG9lc24ndCBzdGFydCB3aXRoIGEgZGlnaXRcbiAgaWYgKC9eXFxkLy50ZXN0KG5hbWUpKSB7XG4gICAgbmFtZSA9IGB0XyR7bmFtZX1gO1xuICB9XG4gIHJldHVybiBuYW1lIHx8ICdkZWZhdWx0X3RhYmxlJztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUEwRSxTQUFBSyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVAsd0JBQUFPLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEs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
@@ -2,14 +2,14 @@ import * as arrow from 'apache-arrow';
2
2
  import { KeplerTable } from '@kepler.gl/table';
3
3
  import { DatabaseAdapter, DatabaseConnection } from '@kepler.gl/utils';
4
4
  import { ProcessorResult } from '../processors/data-processor';
5
- declare type ImportDataToDuckProps = {
5
+ type ImportDataToDuckProps = {
6
6
  data: ProcessorResult & {
7
7
  arrowSchema: arrow.Schema;
8
8
  };
9
9
  db: DatabaseAdapter;
10
10
  c: DatabaseConnection;
11
11
  };
12
- declare type ImportDataToDuckResult = {
12
+ type ImportDataToDuckResult = {
13
13
  geoarrowMetadata?: Record<string, string>;
14
14
  useNewFields?: boolean;
15
15
  };
@@ -14,4 +14,4 @@ Object.keys(_duckdbTableUtils).forEach(function (key) {
14
14
  }
15
15
  });
16
16
  });
17
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZHVja2RiVGFibGVVdGlscyIsInJlcXVpcmUiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImV4cG9ydHMiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuZXhwb3J0ICogZnJvbSAnLi9kdWNrZGItdGFibGUtdXRpbHMnO1xuXG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsSUFBQUEsaUJBQUEsR0FBQUMsT0FBQTtBQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUgsaUJBQUEsRUFBQUksT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUMsT0FBQSxJQUFBQSxPQUFBLENBQUFELEdBQUEsTUFBQUwsaUJBQUEsQ0FBQUssR0FBQTtFQUFBSCxNQUFBLENBQUFLLGNBQUEsQ0FBQUQsT0FBQSxFQUFBRCxHQUFBO0lBQUFHLFVBQUE7SUFBQUMsR0FBQSxXQUFBQSxJQUFBO01BQUEsT0FBQVQsaUJBQUEsQ0FBQUssR0FBQTtJQUFBO0VBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZHVja2RiVGFibGVVdGlscyIsInJlcXVpcmUiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImV4cG9ydHMiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuZXhwb3J0ICogZnJvbSAnLi9kdWNrZGItdGFibGUtdXRpbHMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUdBLElBQUFBLGlCQUFBLEdBQUFDLE9BQUE7QUFBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFILGlCQUFBLEVBQUFJLE9BQUEsV0FBQUMsR0FBQTtFQUFBLElBQUFBLEdBQUEsa0JBQUFBLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFDLE9BQUEsSUFBQUEsT0FBQSxDQUFBRCxHQUFBLE1BQUFMLGlCQUFBLENBQUFLLEdBQUE7RUFBQUgsTUFBQSxDQUFBSyxjQUFBLENBQUFELE9BQUEsRUFBQUQsR0FBQTtJQUFBRyxVQUFBO0lBQUFDLEdBQUEsV0FBQUEsSUFBQTtNQUFBLE9BQUFULGlCQUFBLENBQUFLLEdBQUE7SUFBQTtFQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/duckdb",
3
3
  "author": "Shan He <heshan0131@gmail.com>",
4
- "version": "3.2.6",
4
+ "version": "3.3.0-alpha.0",
5
5
  "description": "DuckDB plugin for Kepler.gl",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -43,12 +43,12 @@
43
43
  ],
44
44
  "dependencies": {
45
45
  "@duckdb/duckdb-wasm": "^1.28.0",
46
- "@kepler.gl/common-utils": "3.2.6",
47
- "@kepler.gl/constants": "3.2.6",
48
- "@kepler.gl/processors": "3.2.6",
49
- "@kepler.gl/table": "3.2.6",
50
- "@kepler.gl/types": "3.2.6",
51
- "@kepler.gl/utils": "3.2.6",
46
+ "@kepler.gl/common-utils": "3.3.0-alpha.0",
47
+ "@kepler.gl/constants": "3.3.0-alpha.0",
48
+ "@kepler.gl/processors": "3.3.0-alpha.0",
49
+ "@kepler.gl/table": "3.3.0-alpha.0",
50
+ "@kepler.gl/types": "3.3.0-alpha.0",
51
+ "@kepler.gl/utils": "3.3.0-alpha.0",
52
52
  "@monaco-editor/react": "^4.6.0",
53
53
  "@radix-ui/react-collapsible": "^1.1.0",
54
54
  "apache-arrow": ">=15.0.0",