@ultipa-graph/ultipa-driver 6.0.9 → 6.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +111 -63
- package/dist/client.js +364 -144
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/types/convenience.d.ts +40 -2
- package/dist/types/convenience.js +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GQLDB Node.js Driver - A gRPC-based client for GQLDB graph database.
|
|
3
3
|
*/
|
|
4
|
-
export { GqldbClient, QueryConfig, HealthWatcher } from './client';
|
|
4
|
+
export { GqldbClient, QueryConfig, InsertConfig, HealthWatcher } from './client';
|
|
5
5
|
export { GqldbConfig, ConfigBuilder, createConfig, validateConfig, DEFAULT_CONFIG } from './config';
|
|
6
6
|
export { PropertyType, GraphType, HealthStatus, CacheType, TypedValue, createTypedValue, typedValueToJS, Parameter, createParameter, Point, Point3D, NodeData, EdgeData, GraphInfo, TransactionInfo, ASTCacheStats, PlanCacheStats, CacheStats, Statistics, SystemMetrics, CpuMetrics, MemoryMetrics, DiskIOMetrics, StorageMetrics, NetworkMetrics, ExportedNode, ExportedEdge, BulkCreateNodesOptions, BulkCreateEdgesOptions, BulkImportOptions, BulkImportSession, CheckpointResult, EndBulkImportResult, AbortBulkImportResult, BulkImportStatus, Schema, PropertyDef, Header, Table, Attr, } from './types';
|
|
7
7
|
export { Response, Row, InsertNodesResult, InsertEdgesResult, DeleteResult, ExportNodesResult, ExportEdgesResult, Node, Edge, Path, NodeResult, EdgeResult, } from './response';
|
package/dist/index.js
CHANGED
|
@@ -85,4 +85,4 @@ Object.defineProperty(exports, "TypeConversionError", { enumerable: true, get: f
|
|
|
85
85
|
Object.defineProperty(exports, "UnsupportedTypeError", { enumerable: true, get: function () { return errors_1.UnsupportedTypeError; } });
|
|
86
86
|
// Version
|
|
87
87
|
exports.VERSION = '0.1.0';
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7O0FBRUgsY0FBYztBQUNkLG1DQUFpRjtBQUF4RSxxR0FBQSxXQUFXLE9BQUE7QUFFcEIsZ0JBQWdCO0FBQ2hCLG1DQUFvRztBQUE5RSx1R0FBQSxhQUFhLE9BQUE7QUFBRSxzR0FBQSxZQUFZLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFFakYsUUFBUTtBQUNSLGlDQXlDaUI7QUF4Q2YscUdBQUEsWUFBWSxPQUFBO0FBQ1osa0dBQUEsU0FBUyxPQUFBO0FBQ1QscUdBQUEsWUFBWSxPQUFBO0FBQ1osa0dBQUEsU0FBUyxPQUFBO0FBRVQseUdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsdUdBQUEsY0FBYyxPQUFBO0FBRWQsd0dBQUEsZUFBZSxPQUFBO0FBa0NqQixXQUFXO0FBQ1gsdUNBYW9CO0FBWmxCLG9HQUFBLFFBQVEsT0FBQTtBQUNSLCtGQUFBLEdBQUcsT0FBQTtBQWFMLFdBQVc7QUFDWCx1Q0FRb0I7QUFQbEIsc0dBQUEsVUFBVSxPQUFBO0FBQ1YsbUhBQUEsdUJBQXVCLE9BQUE7QUFDdkIsc0dBQUEsVUFBVSxPQUFBO0FBQ1YsbUhBQUEsdUJBQXVCLE9BQUE7QUFDdkIsc0dBQUEsVUFBVSxPQUFBO0FBQ1Ysc0dBQUEsVUFBVSxPQUFBO0FBQ1Ysb0dBQUEsUUFBUSxPQUFBO0FBR1YsVUFBVTtBQUNWLHFDQUFvRDtBQUFsQyx5R0FBQSxjQUFjLE9BQUE7QUFFaEMsY0FBYztBQUNkLDZDQUFnRTtBQUExQyxpSEFBQSxrQkFBa0IsT0FBQTtBQUV4QyxhQUFhO0FBQ2IsMkNBQThDO0FBQXJDLDRHQUFBLGNBQWMsT0FBQTtBQUV2QixXQUFXO0FBQ1gsdUNBQTRHO0FBQW5HLGdIQUFBLG9CQUFvQixPQUFBO0FBQWtCLHlHQUFBLGFBQWEsT0FBQTtBQUFFLHFIQUFBLHlCQUF5QixPQUFBO0FBRXZGLFNBQVM7QUFDVCxtQ0FnQ2tCO0FBL0JoQixvR0FBQSxVQUFVLE9BQUE7QUFDVixzR0FBQSxZQUFZLE9BQUE7QUFDWiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwrR0FBQSxxQkFBcUIsT0FBQTtBQUNyQiwrR0FBQSxxQkFBcUIsT0FBQTtBQUNyQiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQixnSEFBQSxzQkFBc0IsT0FBQTtBQUN0QiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQiw0R0FBQSxrQkFBa0IsT0FBQTtBQUNsQixnSEFBQSxzQkFBc0IsT0FBQTtBQUN0QixrSEFBQSx3QkFBd0IsT0FBQTtBQUN4QixxSEFBQSwyQkFBMkIsT0FBQTtBQUMzQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQix5R0FBQSxlQUFlLE9BQUE7QUFDZiw0R0FBQSxrQkFBa0IsT0FBQTtBQUNsQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQixnSEFBQSxzQkFBc0IsT0FBQTtBQUN0Qiw4R0FBQSxvQkFBb0IsT0FBQTtBQUNwQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwyR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiw2R0FBQSxtQkFBbUIsT0FBQTtBQUNuQiw4R0FBQSxvQkFBb0IsT0FBQTtBQUd0QixVQUFVO0FBQ0csUUFBQSxPQUFPLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHUUxEQiBOb2RlLmpzIERyaXZlciAtIEEgZ1JQQy1iYXNlZCBjbGllbnQgZm9yIEdRTERCIGdyYXBoIGRhdGFiYXNlLlxuICovXG5cbi8vIE1haW4gY2xpZW50XG5leHBvcnQgeyBHcWxkYkNsaWVudCwgUXVlcnlDb25maWcsIEluc2VydENvbmZpZywgSGVhbHRoV2F0Y2hlciB9IGZyb20gJy4vY2xpZW50JztcblxuLy8gQ29uZmlndXJhdGlvblxuZXhwb3J0IHsgR3FsZGJDb25maWcsIENvbmZpZ0J1aWxkZXIsIGNyZWF0ZUNvbmZpZywgdmFsaWRhdGVDb25maWcsIERFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuXG4vLyBUeXBlc1xuZXhwb3J0IHtcbiAgUHJvcGVydHlUeXBlLFxuICBHcmFwaFR5cGUsXG4gIEhlYWx0aFN0YXR1cyxcbiAgQ2FjaGVUeXBlLFxuICBUeXBlZFZhbHVlLFxuICBjcmVhdGVUeXBlZFZhbHVlLFxuICB0eXBlZFZhbHVlVG9KUyxcbiAgUGFyYW1ldGVyLFxuICBjcmVhdGVQYXJhbWV0ZXIsXG4gIFBvaW50LFxuICBQb2ludDNELFxuICBOb2RlRGF0YSxcbiAgRWRnZURhdGEsXG4gIEdyYXBoSW5mbyxcbiAgVHJhbnNhY3Rpb25JbmZvLFxuICBBU1RDYWNoZVN0YXRzLFxuICBQbGFuQ2FjaGVTdGF0cyxcbiAgQ2FjaGVTdGF0cyxcbiAgU3RhdGlzdGljcyxcbiAgU3lzdGVtTWV0cmljcyxcbiAgQ3B1TWV0cmljcyxcbiAgTWVtb3J5TWV0cmljcyxcbiAgRGlza0lPTWV0cmljcyxcbiAgU3RvcmFnZU1ldHJpY3MsXG4gIE5ldHdvcmtNZXRyaWNzLFxuICBFeHBvcnRlZE5vZGUsXG4gIEV4cG9ydGVkRWRnZSxcbiAgQnVsa0NyZWF0ZU5vZGVzT3B0aW9ucyxcbiAgQnVsa0NyZWF0ZUVkZ2VzT3B0aW9ucyxcbiAgQnVsa0ltcG9ydE9wdGlvbnMsXG4gIEJ1bGtJbXBvcnRTZXNzaW9uLFxuICBDaGVja3BvaW50UmVzdWx0LFxuICBFbmRCdWxrSW1wb3J0UmVzdWx0LFxuICBBYm9ydEJ1bGtJbXBvcnRSZXN1bHQsXG4gIEJ1bGtJbXBvcnRTdGF0dXMsXG4gIFNjaGVtYSxcbiAgUHJvcGVydHlEZWYsXG4gIEhlYWRlcixcbiAgVGFibGUsXG4gIEF0dHIsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBSZXNwb25zZVxuZXhwb3J0IHtcbiAgUmVzcG9uc2UsXG4gIFJvdyxcbiAgSW5zZXJ0Tm9kZXNSZXN1bHQsXG4gIEluc2VydEVkZ2VzUmVzdWx0LFxuICBEZWxldGVSZXN1bHQsXG4gIEV4cG9ydE5vZGVzUmVzdWx0LFxuICBFeHBvcnRFZGdlc1Jlc3VsdCxcbiAgTm9kZSxcbiAgRWRnZSxcbiAgUGF0aCxcbiAgTm9kZVJlc3VsdCxcbiAgRWRnZVJlc3VsdCxcbn0gZnJvbSAnLi9yZXNwb25zZSc7XG5cbi8vIFByaW50ZXJzXG5leHBvcnQge1xuICBwcmludE5vZGVzLFxuICBwcmludE5vZGVzV2l0aG91dFNjaGVtYSxcbiAgcHJpbnRFZGdlcyxcbiAgcHJpbnRFZGdlc1dpdGhvdXRTY2hlbWEsXG4gIHByaW50UGF0aHMsXG4gIHByaW50VGFibGUsXG4gIHByaW50QW55LFxufSBmcm9tICcuL3ByaW50ZXJzJztcblxuLy8gU2Vzc2lvblxuZXhwb3J0IHsgU2Vzc2lvbiwgU2Vzc2lvbk1hbmFnZXIgfSBmcm9tICcuL3Nlc3Npb24nO1xuXG4vLyBUcmFuc2FjdGlvblxuZXhwb3J0IHsgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uTWFuYWdlciB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuXG4vLyBDb25uZWN0aW9uXG5leHBvcnQgeyBDb25uZWN0aW9uUG9vbCB9IGZyb20gJy4vY29ubmVjdGlvbic7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgeyBjcmVhdGVTZXJ2aWNlQ2xpZW50cywgU2VydmljZUNsaWVudHMsIHByb21pc2lmeUNhbGwsIHByb21pc2lmeUNhbGxXaXRoRGVhZGxpbmUgfSBmcm9tICcuL3NlcnZpY2VzJztcblxuLy8gRXJyb3JzXG5leHBvcnQge1xuICBHcWxkYkVycm9yLFxuICBOb0hvc3RzRXJyb3IsXG4gIEludmFsaWRUaW1lb3V0RXJyb3IsXG4gIE5vQ29ubmVjdGlvbkVycm9yLFxuICBDb25uZWN0aW9uQ2xvc2VkRXJyb3IsXG4gIENvbm5lY3Rpb25GYWlsZWRFcnJvcixcbiAgQWxsSG9zdHNGYWlsZWRFcnJvcixcbiAgSGVhbHRoQ2hlY2tGYWlsZWRFcnJvcixcbiAgTm90TG9nZ2VkSW5FcnJvcixcbiAgTG9naW5GYWlsZWRFcnJvcixcbiAgTG9nb3V0RmFpbGVkRXJyb3IsXG4gIFNlc3Npb25FeHBpcmVkRXJyb3IsXG4gIEludmFsaWRTZXNzaW9uRXJyb3IsXG4gIE5vVHJhbnNhY3Rpb25FcnJvcixcbiAgVHJhbnNhY3Rpb25GYWlsZWRFcnJvcixcbiAgVHJhbnNhY3Rpb25Ob3RGb3VuZEVycm9yLFxuICBUcmFuc2FjdGlvbkFscmVhZHlPcGVuRXJyb3IsXG4gIFF1ZXJ5RmFpbGVkRXJyb3IsXG4gIFF1ZXJ5VGltZW91dEVycm9yLFxuICBJbnZhbGlkUXVlcnlFcnJvcixcbiAgRW1wdHlRdWVyeUVycm9yLFxuICBHcmFwaE5vdEZvdW5kRXJyb3IsXG4gIEdyYXBoRXhpc3RzRXJyb3IsXG4gIENyZWF0ZUdyYXBoRmFpbGVkRXJyb3IsXG4gIERyb3BHcmFwaEZhaWxlZEVycm9yLFxuICBJbnNlcnRGYWlsZWRFcnJvcixcbiAgRGVsZXRlRmFpbGVkRXJyb3IsXG4gIEV4cG9ydEZhaWxlZEVycm9yLFxuICBJbnZhbGlkVHlwZUVycm9yLFxuICBUeXBlQ29udmVyc2lvbkVycm9yLFxuICBVbnN1cHBvcnRlZFR5cGVFcnJvcixcbn0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vLyBWZXJzaW9uXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9ICcwLjEuMCc7XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Convenience API types for GQLDB Node.js driver.
|
|
3
3
|
*/
|
|
4
|
+
import type { Response } from '../response';
|
|
4
5
|
/** Distinguishes between node and edge operations */
|
|
5
6
|
export declare enum DBType {
|
|
6
7
|
NODE = 0,
|
|
@@ -11,9 +12,13 @@ export declare enum InsertType {
|
|
|
11
12
|
Normal = 0,
|
|
12
13
|
Overwrite = 1
|
|
13
14
|
}
|
|
14
|
-
/** Label info from SHOW LABELS
|
|
15
|
+
/** Label info from SHOW LABELS.
|
|
16
|
+
*
|
|
17
|
+
* GQL supports multi-label nodes (e.g. (n:Person:Employee)), so the
|
|
18
|
+
* server returns labels as a list even when there is only one.
|
|
19
|
+
*/
|
|
15
20
|
export interface LabelInfo {
|
|
16
|
-
|
|
21
|
+
labels: string[];
|
|
17
22
|
type: string;
|
|
18
23
|
}
|
|
19
24
|
/** Node type info from SHOW NODE TYPES */
|
|
@@ -108,6 +113,39 @@ export interface AlgoInfo {
|
|
|
108
113
|
version: string;
|
|
109
114
|
parameters: string;
|
|
110
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* One stage row from a CALL ai.read / ai.gql YIELD stream.
|
|
118
|
+
* Stage names include: start, routing, intent_extraction, describe_algorithm,
|
|
119
|
+
* generation, validation, execution, final, error.
|
|
120
|
+
*/
|
|
121
|
+
export interface AiStage {
|
|
122
|
+
stage: string;
|
|
123
|
+
detail: string;
|
|
124
|
+
elapsedMs: number;
|
|
125
|
+
tokensInput: number;
|
|
126
|
+
tokensOutput: number;
|
|
127
|
+
tokensCached: number;
|
|
128
|
+
/** Stage-specific payload (polymorphic JSON from server). */
|
|
129
|
+
data: any;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Result of a client.aiRead() / client.aiGql() call.
|
|
133
|
+
*
|
|
134
|
+
* For aiRead: `data` is the Response from re-executing the generated GQL.
|
|
135
|
+
* For aiGql: `data` is always null (generation-only; caller reruns manually).
|
|
136
|
+
* On AI-side errors, `success=false`, `error` is populated, and `data` is null.
|
|
137
|
+
*/
|
|
138
|
+
export interface AiReadResult {
|
|
139
|
+
stages: AiStage[];
|
|
140
|
+
generatedGql: string | null;
|
|
141
|
+
data: Response | null;
|
|
142
|
+
success: boolean;
|
|
143
|
+
error: string | null;
|
|
144
|
+
totalElapsedMs: number;
|
|
145
|
+
totalTokensInput: number;
|
|
146
|
+
totalTokensOutput: number;
|
|
147
|
+
totalTokensCached: number;
|
|
148
|
+
}
|
|
111
149
|
/**
|
|
112
150
|
* Parse a comma-separated property definition string like "age INTEGER, name STRING"
|
|
113
151
|
* into an array of ConvPropertyDef.
|
|
@@ -128,4 +128,4 @@ function useGraphPrefix(graphName) {
|
|
|
128
128
|
function dbTypeToKeyword(dt) {
|
|
129
129
|
return dt === DBType.EDGE ? 'EDGE' : 'NODE';
|
|
130
130
|
}
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVuaWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvY29udmVuaWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUF5SUgsa0RBY0M7QUFNRCw4Q0FFQztBQUtELHdEQUlDO0FBS0QsNERBT0M7QUFLRCx3Q0FtQkM7QUFLRCxnRUFLQztBQUtELHdDQUdDO0FBS0QsMENBRUM7QUFqT0QscURBQXFEO0FBQ3JELElBQVksTUFHWDtBQUhELFdBQVksTUFBTTtJQUNoQixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtBQUNWLENBQUMsRUFIVyxNQUFNLHNCQUFOLE1BQU0sUUFHakI7QUFFRCwrREFBK0Q7QUFDL0QsSUFBWSxVQUdYO0FBSEQsV0FBWSxVQUFVO0lBQ3BCLCtDQUFVLENBQUE7SUFDVixxREFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLFVBQVUsMEJBQVYsVUFBVSxRQUdyQjtBQWdIRCwyQ0FBMkM7QUFDM0MsdURBQXVEO0FBRXZELGdGQUFnRjtBQUNoRixtQkFBbUI7QUFDbkIsZ0ZBQWdGO0FBRWhGOzs7R0FHRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLENBQVM7SUFDM0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFbEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBc0IsRUFBRSxDQUFDO0lBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPO1lBQUUsU0FBUztRQUN2QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFD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R0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEUsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDdEMsQ0FBQztJQUNELE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUMxQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiwwQkFBMEIsQ0FBQyxLQUEwQjtJQUNuRSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakUsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDdEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLFNBQWlCO0lBQzlDLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDMUIsT0FBTyxhQUFhLFNBQVMsSUFBSSxDQUFDO0FBQ3BDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxFQUFVO0lBQ3hDLE9BQU8sRUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnZlbmllbmNlIEFQSSB0eXBlcyBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0IHsgUHJvcGVydHlUeXBlIH0gZnJvbSAnLi9lbnVtcyc7XG5cbi8qKiBEaXN0aW5ndWlzaGVzIGJldHdlZW4gbm9kZSBhbmQgZWRnZSBvcGVyYXRpb25zICovXG5leHBvcnQgZW51bSBEQlR5cGUge1xuICBOT0RFID0gMCxcbiAgRURHRSA9IDEsXG59XG5cbi8qKiBDb250cm9scyB0aGUgaW5zZXJ0IG1vZGUgZm9yIEdRTC1iYXNlZCBpbnNlcnQgb3BlcmF0aW9ucyAqL1xuZXhwb3J0IGVudW0gSW5zZXJ0VHlwZSB7XG4gIE5vcm1hbCA9IDAsXG4gIE92ZXJ3cml0ZSA9IDEsXG59XG5cbi8qKiBMYWJlbCBpbmZvIGZyb20gU0hPVyBMQUJFTFMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFiZWxJbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7IC8vIFwiTk9ERVwiIG9yIFwiRURHRVwiXG59XG5cbi8qKiBOb2RlIHR5cGUgaW5mbyBmcm9tIFNIT1cgTk9ERSBUWVBFUyAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlVHlwZUluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IENvbnZQcm9wZXJ0eURlZltdO1xufVxuXG4vKiogRWRnZSB0eXBlIGluZm8gZnJvbSBTSE9XIEVER0UgVFlQRVMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRnZVR5cGVJbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICBwcm9wZXJ0aWVzOiBDb252UHJvcGVydHlEZWZbXTtcbn1cblxuLyoqIExhYmVsIGRlZmluaXRpb24gdXNlZCB3aGVuIGNyZWF0aW5nIGNsb3NlZCBncmFwaHMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFiZWxEZWYge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IENvbnZQcm9wZXJ0eURlZltdO1xufVxuXG4vKiogUHJvcGVydHkgZGVmaW5pdGlvbiBmb3IgY29udmVuaWVuY2UgQVBJICh1c2VzIHN0cmluZyB0eXBlIG5hbWUpICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnZQcm9wZXJ0eURlZiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nOyAvLyBHUUwgdHlwZSBuYW1lOiBcIlNUUklOR1wiLCBcIklOVDY0XCIsIFwiRE9VQkxFXCIsIGV0Yy5cbn1cblxuLyoqIFByb3BlcnR5IGluIGFuIGluZGV4IGRlZmluaXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhQcm9wZXJ0eSB7XG4gIG5hbWU6IHN0cmluZztcbiAgcHJlZml4TGVuZ3RoPzogbnVtYmVyOyAvLyAwIG9yIHVuZGVmaW5lZCA9IG5vIHByZWZpeCwgPjAgPSBwcmVmaXggbGVuZ3RoIGZvciBTVFJJTkdcbn1cblxuLyoqIEluZGV4IGluZm8gZnJvbSBTSE9XIElOREVYICovXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4SW5mbyB7XG4gIGluZGV4TmFtZTogc3RyaW5nO1xuICBlbnRpdHlUeXBlOiBzdHJpbmc7IC8vIFwiTk9ERVwiIG9yIFwiRURHRVwiXG4gIGxhYmVsOiBzdHJpbmc7XG4gIHByb3BlcnR5OiBzdHJpbmc7XG4gIHByZWZpeExlbmd0aD86IG51bWJlcjtcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG4gIGluZGV4ZWRDb3VudDogbnVtYmVyO1xuICB0b3RhbENvdW50OiBudW1iZXI7XG4gIGVycm9yOiBzdHJpbmc7XG59XG5cbi8qKiBGdWxsdGV4dCBpbmRleCBpbmZvIGZyb20gU0hPVyBGVUxMVEVYVCAqL1xuZXhwb3J0IGludGVyZmFjZSBGdWxsdGV4dEluZm8ge1xuICBpbmRleE5hbWU6IHN0cmluZztcbiAgZW50aXR5VHlwZTogc3RyaW5nOyAvLyBcIk5PREVcIiBvciBcIkVER0VcIlxuICBzY2hlbWFOYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IHN0cmluZztcbiAgYW5hbHl6ZXI6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIGRvY0NvdW50OiBudW1iZXI7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG59XG5cbi8qKiBUYXNrIGluZm8gZnJvbSBTSE9XIFRBU0tTICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tJbmZvIHtcbiAgdGFza0lkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgYWxnb05hbWU6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHN0YXJ0ZWRBdDogc3RyaW5nO1xuICBwcm9ncmVzczogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBzdHJpbmc7XG4gIG5vZGVzV3JpdHRlbjogbnVtYmVyO1xuICBjb21wdXRlVGltZU1zOiBudW1iZXI7XG4gIHdyaXRlVGltZU1zOiBudW1iZXI7XG59XG5cbi8qKiBQcm9jZXNzIGluZm8gZnJvbSBUT1AgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0luZm8ge1xuICBxdWVyeUlkOiBzdHJpbmc7XG4gIHF1ZXJ5VGV4dDogc3RyaW5nO1xuICBzdGFydFRpbWU6IHN0cmluZztcbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICBzdGF0dXM6IHN0cmluZztcbn1cblxuLyoqIEdyYXBoIHN0YXRpc3RpY3MgZnJvbSBkYi5zdGF0cygpICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoU3RhdHMge1xuICBncmFwaE5hbWU6IHN0cmluZztcbiAgbm9kZUNvdW50OiBudW1iZXI7XG4gIGVkZ2VDb3VudDogbnVtYmVyO1xuICBsYWJlbENvdW50czogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgZWRnZUxhYmVsQ291bnRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBub2RlUHJvcGVydHlTdGF0czogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgbnVtYmVyPj47XG4gIGVkZ2VQcm9wZXJ0eVN0YXRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+Pjtcbn1cblxuLyoqIFJlc3BvbnNlIGZvciBHUUwtYmFzZWQgaW5zZXJ0IG9wZXJhdGlvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0R3FsUmVzcG9uc2Uge1xuICByb3dzQWZmZWN0ZWQ6IG51bWJlcjtcbn1cblxuLyoqIEFsZ29yaXRobSBpbmZvIGZyb20gU0hPVyBBTEdPUyAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGdvSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBzdHJpbmc7XG59XG5cbi8vIENvbnZOb2RlIGFuZCBDb252RWRnZSBoYXZlIGJlZW4gcmVtb3ZlZC5cbi8vIFVzZSBOb2RlRGF0YSBhbmQgRWRnZURhdGEgZnJvbSBncmFwaF9tb2RlbHMgaW5zdGVhZC5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhlbHBlciBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUGFyc2UgYSBjb21tYS1zZXBhcmF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbiBzdHJpbmcgbGlrZSBcImFnZSBJTlRFR0VSLCBuYW1lIFNUUklOR1wiXG4gKiBpbnRvIGFuIGFycmF5IG9mIENvbnZQcm9wZXJ0eURlZi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHJvcGVydHlTdHJpbmcoczogc3RyaW5nKTogQ29udlByb3BlcnR5RGVmW10ge1xuICBzID0gcy50cmltKCk7XG4gIGlmICghcykgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IHBhcnRzID0gcy5zcGxpdCgnLCcpO1xuICBjb25zdCByZXN1bHQ6IENvbnZQcm9wZXJ0eURlZltdID0gW107XG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBwYXJ0LnRyaW0oKTtcbiAgICBpZiAoIXRyaW1tZWQpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHRva2VucyA9IHRyaW1tZWQuc3BsaXQoL1xccysvKTtcbiAgICBpZiAodG9rZW5zLmxlbmd0aCA8IDIpIGNvbnRpbnVlO1xuICAgIHJlc3VsdC5wdXNoKHsgbmFtZTogdG9rZW5zWzBdLCB0eXBlOiB0b2tlbnNbMV0udG9VcHBlckNhc2UoKSB9KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBDb252UHJvcGVydHlEZWYgdHlwZSBzdHJpbmcgdG8gaXRzIEdRTCByZXByZXNlbnRhdGlvbi5cbiAqIElmIHRoZSB0eXBlIGlzIGFscmVhZHkgYSB2YWxpZCBHUUwgdHlwZSBuYW1lLCByZXR1cm5zIGl0IGFzLWlzICh1cHBlcmNhc2VkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5VHlwZVRvR1FMKHR5cGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZU5hbWUudG9VcHBlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIEdRTCBwcm9wZXJ0eSBkZWZpbml0aW9uIHN0cmluZyBsaWtlIFwie2FnZSBJTlQ2NCwgbmFtZSBTVFJJTkd9XCIgZnJvbSBDb252UHJvcGVydHlEZWZbXS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvcGVydHlEZWZTdHJpbmcocHJvcHM6IENvbnZQcm9wZXJ0eURlZltdKTogc3RyaW5nIHtcbiAgaWYgKCFwcm9wcyB8fCBwcm9wcy5sZW5ndGggPT09IDApIHJldHVybiAne30nO1xuICBjb25zdCBwYXJ0cyA9IHByb3BzLm1hcChwID0+IGBcXGAke3AubmFtZX1cXGAgJHtwcm9wZXJ0eVR5cGVUb0dRTChwLnR5cGUpfWApO1xuICByZXR1cm4gJ3snICsgcGFydHMuam9pbignLCAnKSArICd9Jztcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgcHJvcGVydHkgbGlzdCBmb3IgQ1JFQVRFIElOREVYLCBlLmcuIFwicHJvcDEsIHByb3AyKDEwKVwiLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRJbmRleFByb3BlcnR5U3RyaW5nKHByb3BzOiBJbmRleFByb3BlcnR5W10pOiBzdHJpbmcge1xuICByZXR1cm4gcHJvcHMubWFwKHAgPT4ge1xuICAgIGlmIChwLnByZWZpeExlbmd0aCAmJiBwLnByZWZpeExlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBgXFxgJHtwLm5hbWV9XFxgKCR7cC5wcmVmaXhMZW5ndGh9KWA7XG4gICAgfVxuICAgIHJldHVybiBgXFxgJHtwLm5hbWV9XFxgYDtcbiAgfSkuam9pbignLCAnKTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgYSBKYXZhU2NyaXB0IHZhbHVlIGFzIGEgR1FMIGxpdGVyYWwgZm9yIElOU0VSVCBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0R3FsVmFsdWUodjogYW55KTogc3RyaW5nIHtcbiAgaWYgKHYgPT09IG51bGwgfHwgdiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJ05VTEwnO1xuICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgZXNjYXBlZCA9IHYucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpO1xuICAgIHJldHVybiBgJyR7ZXNjYXBlZH0nYDtcbiAgfVxuICBpZiAodHlwZW9mIHYgPT09ICdib29sZWFuJykgcmV0dXJuIHYgPyAnVFJVRScgOiAnRkFMU0UnO1xuICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSByZXR1cm4gU3RyaW5nKHYpO1xuICBpZiAodHlwZW9mIHYgPT09ICdiaWdpbnQnKSByZXR1cm4gU3RyaW5nKHYpO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2KSkge1xuICAgIGNvbnN0IGVsZW1zID0gdi5tYXAoKGVsZW06IGFueSkgPT4gZm9ybWF0R3FsVmFsdWUoZWxlbSkpO1xuICAgIHJldHVybiAnWycgKyBlbGVtcy5qb2luKCcsICcpICsgJ10nO1xuICB9XG4gIGlmICh0eXBlb2YgdiA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModik7XG4gICAgY29uc3QgcGFydHMgPSBlbnRyaWVzLm1hcCgoW2ssIHZhbF0pID0+IGAke2t9OiAke2Zvcm1hdEdxbFZhbHVlKHZhbCl9YCk7XG4gICAgcmV0dXJuICd7JyArIHBhcnRzLmpvaW4oJywgJykgKyAnfSc7XG4gIH1cbiAgcmV0dXJuIGAnJHtTdHJpbmcodil9J2A7XG59XG5cbi8qKlxuICogQnVpbGQgYSBHUUwgcHJvcGVydHkgdmFsdWUgbWFwIGxpa2UgXCJ7bmFtZTogJ0FsaWNlJywgYWdlOiAzMH1cIiBmcm9tIGEgUmVjb3JkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQcm9wZXJ0aWVzVmFsdWVTdHJpbmcocHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBzdHJpbmcge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMpO1xuICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHJldHVybiAnJztcbiAgY29uc3QgcGFydHMgPSBrZXlzLm1hcChrID0+IGAke2t9OiAke2Zvcm1hdEdxbFZhbHVlKHByb3BzW2tdKX1gKTtcbiAgcmV0dXJuICd7JyArIHBhcnRzLmpvaW4oJywgJykgKyAnfSc7XG59XG5cbi8qKlxuICogUmV0dXJuIFwiVVNFIEdSQVBIIDxuYW1lPlxcblwiIGlmIGdyYXBoTmFtZSBpcyBub24tZW1wdHksIG90aGVyd2lzZSBcIlwiLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlR3JhcGhQcmVmaXgoZ3JhcGhOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIWdyYXBoTmFtZSkgcmV0dXJuICcnO1xuICByZXR1cm4gYFVTRSBHUkFQSCAke2dyYXBoTmFtZX1cXG5gO1xufVxuXG4vKipcbiAqIENvbnZlcnQgREJUeXBlIHRvIEdRTCBrZXl3b3JkIFwiTk9ERVwiIG9yIFwiRURHRVwiLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGJUeXBlVG9LZXl3b3JkKGR0OiBEQlR5cGUpOiBzdHJpbmcge1xuICByZXR1cm4gZHQgPT09IERCVHlwZS5FREdFID8gJ0VER0UnIDogJ05PREUnO1xufVxuIl19
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVuaWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvY29udmVuaWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFpTEgsa0RBY0M7QUFNRCw4Q0FFQztBQUtELHdEQUlDO0FBS0QsNERBT0M7QUFLRCx3Q0FtQkM7QUFLRCxnRUFLQztBQUtELHdDQUdDO0FBS0QsMENBRUM7QUF4UUQscURBQXFEO0FBQ3JELElBQVksTUFHWDtBQUhELFdBQVksTUFBTTtJQUNoQixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtBQUNWLENBQUMsRUFIVyxNQUFNLHNCQUFOLE1BQU0sUUFHakI7QUFFRCwrREFBK0Q7QUFDL0QsSUFBWSxVQUdYO0FBSEQsV0FBWSxVQUFVO0lBQ3BCLCtDQUFVLENBQUE7SUFDVixxREFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLFVBQVUsMEJBQVYsVUFBVSxRQUdyQjtBQXVKRCwyQ0FBMkM7QUFDM0MsdURBQXVEO0FBRXZELGdGQUFnRjtBQUNoRixtQkFBbUI7QUFDbkIsZ0ZBQWdGO0FBRWhGOzs7R0FHRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLENBQVM7SUFDM0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFbEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBc0IsRUFBRSxDQUFDO0lBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPO1lBQUUsU0FBUztRQUN2QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFD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R0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEUsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDdEMsQ0FBQztJQUNELE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUMxQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiwwQkFBMEIsQ0FBQyxLQUEwQjtJQUNuRSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakUsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDdEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLFNBQWlCO0lBQzlDLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDMUIsT0FBTyxhQUFhLFNBQVMsSUFBSSxDQUFDO0FBQ3BDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxFQUFVO0lBQ3hDLE9BQU8sRUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnZlbmllbmNlIEFQSSB0eXBlcyBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0IHsgUHJvcGVydHlUeXBlIH0gZnJvbSAnLi9lbnVtcyc7XG5pbXBvcnQgdHlwZSB7IFJlc3BvbnNlIH0gZnJvbSAnLi4vcmVzcG9uc2UnO1xuXG4vKiogRGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIG5vZGUgYW5kIGVkZ2Ugb3BlcmF0aW9ucyAqL1xuZXhwb3J0IGVudW0gREJUeXBlIHtcbiAgTk9ERSA9IDAsXG4gIEVER0UgPSAxLFxufVxuXG4vKiogQ29udHJvbHMgdGhlIGluc2VydCBtb2RlIGZvciBHUUwtYmFzZWQgaW5zZXJ0IG9wZXJhdGlvbnMgKi9cbmV4cG9ydCBlbnVtIEluc2VydFR5cGUge1xuICBOb3JtYWwgPSAwLFxuICBPdmVyd3JpdGUgPSAxLFxufVxuXG4vKiogTGFiZWwgaW5mbyBmcm9tIFNIT1cgTEFCRUxTLlxuICpcbiAqIEdRTCBzdXBwb3J0cyBtdWx0aS1sYWJlbCBub2RlcyAoZS5nLiAobjpQZXJzb246RW1wbG95ZWUpKSwgc28gdGhlXG4gKiBzZXJ2ZXIgcmV0dXJucyBsYWJlbHMgYXMgYSBsaXN0IGV2ZW4gd2hlbiB0aGVyZSBpcyBvbmx5IG9uZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYWJlbEluZm8ge1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICB0eXBlOiBzdHJpbmc7IC8vIFwiTk9ERVwiIG9yIFwiRURHRVwiXG59XG5cbi8qKiBOb2RlIHR5cGUgaW5mbyBmcm9tIFNIT1cgTk9ERSBUWVBFUyAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlVHlwZUluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IENvbnZQcm9wZXJ0eURlZltdO1xufVxuXG4vKiogRWRnZSB0eXBlIGluZm8gZnJvbSBTSE9XIEVER0UgVFlQRVMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRnZVR5cGVJbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICBwcm9wZXJ0aWVzOiBDb252UHJvcGVydHlEZWZbXTtcbn1cblxuLyoqIExhYmVsIGRlZmluaXRpb24gdXNlZCB3aGVuIGNyZWF0aW5nIGNsb3NlZCBncmFwaHMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFiZWxEZWYge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IENvbnZQcm9wZXJ0eURlZltdO1xufVxuXG4vKiogUHJvcGVydHkgZGVmaW5pdGlvbiBmb3IgY29udmVuaWVuY2UgQVBJICh1c2VzIHN0cmluZyB0eXBlIG5hbWUpICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnZQcm9wZXJ0eURlZiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nOyAvLyBHUUwgdHlwZSBuYW1lOiBcIlNUUklOR1wiLCBcIklOVDY0XCIsIFwiRE9VQkxFXCIsIGV0Yy5cbn1cblxuLyoqIFByb3BlcnR5IGluIGFuIGluZGV4IGRlZmluaXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhQcm9wZXJ0eSB7XG4gIG5hbWU6IHN0cmluZztcbiAgcHJlZml4TGVuZ3RoPzogbnVtYmVyOyAvLyAwIG9yIHVuZGVmaW5lZCA9IG5vIHByZWZpeCwgPjAgPSBwcmVmaXggbGVuZ3RoIGZvciBTVFJJTkdcbn1cblxuLyoqIEluZGV4IGluZm8gZnJvbSBTSE9XIElOREVYICovXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4SW5mbyB7XG4gIGluZGV4TmFtZTogc3RyaW5nO1xuICBlbnRpdHlUeXBlOiBzdHJpbmc7IC8vIFwiTk9ERVwiIG9yIFwiRURHRVwiXG4gIGxhYmVsOiBzdHJpbmc7XG4gIHByb3BlcnR5OiBzdHJpbmc7XG4gIHByZWZpeExlbmd0aD86IG51bWJlcjtcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG4gIGluZGV4ZWRDb3VudDogbnVtYmVyO1xuICB0b3RhbENvdW50OiBudW1iZXI7XG4gIGVycm9yOiBzdHJpbmc7XG59XG5cbi8qKiBGdWxsdGV4dCBpbmRleCBpbmZvIGZyb20gU0hPVyBGVUxMVEVYVCAqL1xuZXhwb3J0IGludGVyZmFjZSBGdWxsdGV4dEluZm8ge1xuICBpbmRleE5hbWU6IHN0cmluZztcbiAgZW50aXR5VHlwZTogc3RyaW5nOyAvLyBcIk5PREVcIiBvciBcIkVER0VcIlxuICBzY2hlbWFOYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IHN0cmluZztcbiAgYW5hbHl6ZXI6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIGRvY0NvdW50OiBudW1iZXI7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG59XG5cbi8qKiBUYXNrIGluZm8gZnJvbSBTSE9XIFRBU0tTICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tJbmZvIHtcbiAgdGFza0lkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgYWxnb05hbWU6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHN0YXJ0ZWRBdDogc3RyaW5nO1xuICBwcm9ncmVzczogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBzdHJpbmc7XG4gIG5vZGVzV3JpdHRlbjogbnVtYmVyO1xuICBjb21wdXRlVGltZU1zOiBudW1iZXI7XG4gIHdyaXRlVGltZU1zOiBudW1iZXI7XG59XG5cbi8qKiBQcm9jZXNzIGluZm8gZnJvbSBUT1AgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0luZm8ge1xuICBxdWVyeUlkOiBzdHJpbmc7XG4gIHF1ZXJ5VGV4dDogc3RyaW5nO1xuICBzdGFydFRpbWU6IHN0cmluZztcbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICBzdGF0dXM6IHN0cmluZztcbn1cblxuLyoqIEdyYXBoIHN0YXRpc3RpY3MgZnJvbSBkYi5zdGF0cygpICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoU3RhdHMge1xuICBncmFwaE5hbWU6IHN0cmluZztcbiAgbm9kZUNvdW50OiBudW1iZXI7XG4gIGVkZ2VDb3VudDogbnVtYmVyO1xuICBsYWJlbENvdW50czogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgZWRnZUxhYmVsQ291bnRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBub2RlUHJvcGVydHlTdGF0czogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgbnVtYmVyPj47XG4gIGVkZ2VQcm9wZXJ0eVN0YXRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+Pjtcbn1cblxuLyoqIFJlc3BvbnNlIGZvciBHUUwtYmFzZWQgaW5zZXJ0IG9wZXJhdGlvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0R3FsUmVzcG9uc2Uge1xuICByb3dzQWZmZWN0ZWQ6IG51bWJlcjtcbn1cblxuLyoqIEFsZ29yaXRobSBpbmZvIGZyb20gU0hPVyBBTEdPUyAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGdvSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT25lIHN0YWdlIHJvdyBmcm9tIGEgQ0FMTCBhaS5yZWFkIC8gYWkuZ3FsIFlJRUxEIHN0cmVhbS5cbiAqIFN0YWdlIG5hbWVzIGluY2x1ZGU6IHN0YXJ0LCByb3V0aW5nLCBpbnRlbnRfZXh0cmFjdGlvbiwgZGVzY3JpYmVfYWxnb3JpdGhtLFxuICogZ2VuZXJhdGlvbiwgdmFsaWRhdGlvbiwgZXhlY3V0aW9uLCBmaW5hbCwgZXJyb3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWlTdGFnZSB7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIGRldGFpbDogc3RyaW5nO1xuICBlbGFwc2VkTXM6IG51bWJlcjtcbiAgdG9rZW5zSW5wdXQ6IG51bWJlcjtcbiAgdG9rZW5zT3V0cHV0OiBudW1iZXI7XG4gIHRva2Vuc0NhY2hlZDogbnVtYmVyO1xuICAvKiogU3RhZ2Utc3BlY2lmaWMgcGF5bG9hZCAocG9seW1vcnBoaWMgSlNPTiBmcm9tIHNlcnZlcikuICovXG4gIGRhdGE6IGFueTtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYSBjbGllbnQuYWlSZWFkKCkgLyBjbGllbnQuYWlHcWwoKSBjYWxsLlxuICpcbiAqIEZvciBhaVJlYWQ6IGBkYXRhYCBpcyB0aGUgUmVzcG9uc2UgZnJvbSByZS1leGVjdXRpbmcgdGhlIGdlbmVyYXRlZCBHUUwuXG4gKiBGb3IgYWlHcWw6ICBgZGF0YWAgaXMgYWx3YXlzIG51bGwgKGdlbmVyYXRpb24tb25seTsgY2FsbGVyIHJlcnVucyBtYW51YWxseSkuXG4gKiBPbiBBSS1zaWRlIGVycm9ycywgYHN1Y2Nlc3M9ZmFsc2VgLCBgZXJyb3JgIGlzIHBvcHVsYXRlZCwgYW5kIGBkYXRhYCBpcyBudWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFpUmVhZFJlc3VsdCB7XG4gIHN0YWdlczogQWlTdGFnZVtdO1xuICBnZW5lcmF0ZWRHcWw6IHN0cmluZyB8IG51bGw7XG4gIGRhdGE6IFJlc3BvbnNlIHwgbnVsbDtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIHRvdGFsRWxhcHNlZE1zOiBudW1iZXI7XG4gIHRvdGFsVG9rZW5zSW5wdXQ6IG51bWJlcjtcbiAgdG90YWxUb2tlbnNPdXRwdXQ6IG51bWJlcjtcbiAgdG90YWxUb2tlbnNDYWNoZWQ6IG51bWJlcjtcbn1cblxuLy8gQ29udk5vZGUgYW5kIENvbnZFZGdlIGhhdmUgYmVlbiByZW1vdmVkLlxuLy8gVXNlIE5vZGVEYXRhIGFuZCBFZGdlRGF0YSBmcm9tIGdyYXBoX21vZGVscyBpbnN0ZWFkLlxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGVscGVyIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBQYXJzZSBhIGNvbW1hLXNlcGFyYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9uIHN0cmluZyBsaWtlIFwiYWdlIElOVEVHRVIsIG5hbWUgU1RSSU5HXCJcbiAqIGludG8gYW4gYXJyYXkgb2YgQ29udlByb3BlcnR5RGVmLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQcm9wZXJ0eVN0cmluZyhzOiBzdHJpbmcpOiBDb252UHJvcGVydHlEZWZbXSB7XG4gIHMgPSBzLnRyaW0oKTtcbiAgaWYgKCFzKSByZXR1cm4gW107XG5cbiAgY29uc3QgcGFydHMgPSBzLnNwbGl0KCcsJyk7XG4gIGNvbnN0IHJlc3VsdDogQ29udlByb3BlcnR5RGVmW10gPSBbXTtcbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHBhcnQudHJpbSgpO1xuICAgIGlmICghdHJpbW1lZCkgY29udGludWU7XG4gICAgY29uc3QgdG9rZW5zID0gdHJpbW1lZC5zcGxpdCgvXFxzKy8pO1xuICAgIGlmICh0b2tlbnMubGVuZ3RoIDwgMikgY29udGludWU7XG4gICAgcmVzdWx0LnB1c2goeyBuYW1lOiB0b2tlbnNbMF0sIHR5cGU6IHRva2Vuc1sxXS50b1VwcGVyQ2FzZSgpIH0pO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29udmVydCBhIENvbnZQcm9wZXJ0eURlZiB0eXBlIHN0cmluZyB0byBpdHMgR1FMIHJlcHJlc2VudGF0aW9uLlxuICogSWYgdGhlIHR5cGUgaXMgYWxyZWFkeSBhIHZhbGlkIEdRTCB0eXBlIG5hbWUsIHJldHVybnMgaXQgYXMtaXMgKHVwcGVyY2FzZWQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlUeXBlVG9HUUwodHlwZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlTmFtZS50b1VwcGVyQ2FzZSgpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgR1FMIHByb3BlcnR5IGRlZmluaXRpb24gc3RyaW5nIGxpa2UgXCJ7YWdlIElOVDY0LCBuYW1lIFNUUklOR31cIiBmcm9tIENvbnZQcm9wZXJ0eURlZltdLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQcm9wZXJ0eURlZlN0cmluZyhwcm9wczogQ29udlByb3BlcnR5RGVmW10pOiBzdHJpbmcge1xuICBpZiAoIXByb3BzIHx8IHByb3BzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICd7fSc7XG4gIGNvbnN0IHBhcnRzID0gcHJvcHMubWFwKHAgPT4gYFxcYCR7cC5uYW1lfVxcYCAke3Byb3BlcnR5VHlwZVRvR1FMKHAudHlwZSl9YCk7XG4gIHJldHVybiAneycgKyBwYXJ0cy5qb2luKCcsICcpICsgJ30nO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBwcm9wZXJ0eSBsaXN0IGZvciBDUkVBVEUgSU5ERVgsIGUuZy4gXCJwcm9wMSwgcHJvcDIoMTApXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEluZGV4UHJvcGVydHlTdHJpbmcocHJvcHM6IEluZGV4UHJvcGVydHlbXSk6IHN0cmluZyB7XG4gIHJldHVybiBwcm9wcy5tYXAocCA9PiB7XG4gICAgaWYgKHAucHJlZml4TGVuZ3RoICYmIHAucHJlZml4TGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGBcXGAke3AubmFtZX1cXGAoJHtwLnByZWZpeExlbmd0aH0pYDtcbiAgICB9XG4gICAgcmV0dXJuIGBcXGAke3AubmFtZX1cXGBgO1xuICB9KS5qb2luKCcsICcpO1xufVxuXG4vKipcbiAqIEZvcm1hdCBhIEphdmFTY3JpcHQgdmFsdWUgYXMgYSBHUUwgbGl0ZXJhbCBmb3IgSU5TRVJUIHN0YXRlbWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRHcWxWYWx1ZSh2OiBhbnkpOiBzdHJpbmcge1xuICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQpIHJldHVybiAnTlVMTCc7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBlc2NhcGVkID0gdi5yZXBsYWNlKC8nL2csIFwiXFxcXCdcIik7XG4gICAgcmV0dXJuIGAnJHtlc2NhcGVkfSdgO1xuICB9XG4gIGlmICh0eXBlb2YgdiA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdiA/ICdUUlVFJyA6ICdGQUxTRSc7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ251bWJlcicpIHJldHVybiBTdHJpbmcodik7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ2JpZ2ludCcpIHJldHVybiBTdHJpbmcodik7XG4gIGlmIChBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgY29uc3QgZWxlbXMgPSB2Lm1hcCgoZWxlbTogYW55KSA9PiBmb3JtYXRHcWxWYWx1ZShlbGVtKSk7XG4gICAgcmV0dXJuICdbJyArIGVsZW1zLmpvaW4oJywgJykgKyAnXSc7XG4gIH1cbiAgaWYgKHR5cGVvZiB2ID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh2KTtcbiAgICBjb25zdCBwYXJ0cyA9IGVudHJpZXMubWFwKChbaywgdmFsXSkgPT4gYCR7a306ICR7Zm9ybWF0R3FsVmFsdWUodmFsKX1gKTtcbiAgICByZXR1cm4gJ3snICsgcGFydHMuam9pbignLCAnKSArICd9JztcbiAgfVxuICByZXR1cm4gYCcke1N0cmluZyh2KX0nYDtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIEdRTCBwcm9wZXJ0eSB2YWx1ZSBtYXAgbGlrZSBcIntuYW1lOiAnQWxpY2UnLCBhZ2U6IDMwfVwiIGZyb20gYSBSZWNvcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFByb3BlcnRpZXNWYWx1ZVN0cmluZyhwcm9wczogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwcm9wcyk7XG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICBjb25zdCBwYXJ0cyA9IGtleXMubWFwKGsgPT4gYCR7a306ICR7Zm9ybWF0R3FsVmFsdWUocHJvcHNba10pfWApO1xuICByZXR1cm4gJ3snICsgcGFydHMuam9pbignLCAnKSArICd9Jztcbn1cblxuLyoqXG4gKiBSZXR1cm4gXCJVU0UgR1JBUEggPG5hbWU+XFxuXCIgaWYgZ3JhcGhOYW1lIGlzIG5vbi1lbXB0eSwgb3RoZXJ3aXNlIFwiXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VHcmFwaFByZWZpeChncmFwaE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghZ3JhcGhOYW1lKSByZXR1cm4gJyc7XG4gIHJldHVybiBgVVNFIEdSQVBIICR7Z3JhcGhOYW1lfVxcbmA7XG59XG5cbi8qKlxuICogQ29udmVydCBEQlR5cGUgdG8gR1FMIGtleXdvcmQgXCJOT0RFXCIgb3IgXCJFREdFXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYlR5cGVUb0tleXdvcmQoZHQ6IERCVHlwZSk6IHN0cmluZyB7XG4gIHJldHVybiBkdCA9PT0gREJUeXBlLkVER0UgPyAnRURHRScgOiAnTk9ERSc7XG59XG4iXX0=
|