@kepler.gl/duckdb 3.3.0-alpha.6 → 3.3.0-alpha.8
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/cjs/components/monaco-editor.js +3 -3
- package/dist/cjs/table/duckdb-table-utils.js +36 -34
- package/dist/cjs/table/duckdb-table.js +27 -24
- package/dist/esm/components/monaco-editor.js +3 -3
- package/dist/esm/table/duckdb-table-utils.js +36 -35
- package/dist/esm/table/duckdb-table.js +29 -26
- package/dist/table/duckdb-table-utils.d.ts +7 -0
- package/package.json +8 -7
|
@@ -83,7 +83,7 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
83
83
|
// @ts-expect-error TODO extend fields to contain duckDBColumnType
|
|
84
84
|
return "".concat(acc).concat(index > 0 ? ',' : '', " '").concat(field.name, "': '").concat(field.duckDBColumnType, "'");
|
|
85
85
|
}, '');
|
|
86
|
-
createTableSql = "\n CREATE TABLE
|
|
86
|
+
createTableSql = "\n CREATE TABLE ".concat((0, _duckdbTableUtils2.quoteTableName)(this.label), " AS\n SELECT *\n FROM read_json('").concat(this.id, "',\n columns = {").concat(columns, "});\n ");
|
|
87
87
|
_context.next = 10;
|
|
88
88
|
return c.query(createTableSql);
|
|
89
89
|
case 10:
|
|
@@ -109,7 +109,7 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
109
109
|
key: "importGeoJsonData",
|
|
110
110
|
value: function () {
|
|
111
111
|
var _importGeoJsonData = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(_ref2) {
|
|
112
|
-
var data, db, c, rows, createTableSql;
|
|
112
|
+
var data, db, c, rows, tableName, createTableSql;
|
|
113
113
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
114
114
|
while (1) switch (_context2.prev = _context2.next) {
|
|
115
115
|
case 0:
|
|
@@ -119,27 +119,29 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
119
119
|
_context2.next = 5;
|
|
120
120
|
return db.registerFileText(this.id, JSON.stringify(rows));
|
|
121
121
|
case 5:
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
// Identifiers need double quotes; file paths stay single-quoted string literals.
|
|
123
|
+
tableName = (0, _duckdbTableUtils2.quoteTableName)(this.label);
|
|
124
|
+
createTableSql = "\n install spatial;\n load spatial;\n CREATE TABLE ".concat(tableName, " AS\n SELECT *\n FROM ST_READ('").concat(this.id, "', keep_wkb = TRUE);\n ALTER TABLE ").concat(tableName, "\n RENAME ").concat((0, _duckdbTableUtils2.quoteColumnName)(DUCKDB_WKB_COLUMN), "\n TO ").concat((0, _duckdbTableUtils2.quoteColumnName)(KEPLER_GEOM_FROM_GEOJSON_COLUMN), ";\n ");
|
|
125
|
+
_context2.next = 9;
|
|
124
126
|
return c.query(createTableSql);
|
|
125
|
-
case
|
|
126
|
-
_context2.next =
|
|
127
|
+
case 9:
|
|
128
|
+
_context2.next = 15;
|
|
127
129
|
break;
|
|
128
|
-
case
|
|
129
|
-
_context2.prev =
|
|
130
|
+
case 11:
|
|
131
|
+
_context2.prev = 11;
|
|
130
132
|
_context2.t0 = _context2["catch"](1);
|
|
131
133
|
console.error('importGeoJsonData', _context2.t0);
|
|
132
134
|
throw _context2.t0;
|
|
133
|
-
case
|
|
135
|
+
case 15:
|
|
134
136
|
return _context2.abrupt("return", {
|
|
135
137
|
// _geojson column is created from geometry with keep_wkb flag and contains valid WKB data.
|
|
136
138
|
geoarrowMetadata: (0, _defineProperty2["default"])({}, KEPLER_GEOM_FROM_GEOJSON_COLUMN, _constants.GEOARROW_EXTENSIONS.WKB)
|
|
137
139
|
});
|
|
138
|
-
case
|
|
140
|
+
case 16:
|
|
139
141
|
case "end":
|
|
140
142
|
return _context2.stop();
|
|
141
143
|
}
|
|
142
|
-
}, _callee2, this, [[1,
|
|
144
|
+
}, _callee2, this, [[1, 11]]);
|
|
143
145
|
}));
|
|
144
146
|
function importGeoJsonData(_x2) {
|
|
145
147
|
return _importGeoJsonData.apply(this, arguments);
|
|
@@ -207,7 +209,7 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
207
209
|
key: "createTableAndGetArrow",
|
|
208
210
|
value: (function () {
|
|
209
211
|
var _createTableAndGetArrow = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4(data) {
|
|
210
|
-
var db, c, tableName, format, _data$rows, _data$rows2, _data$rows3, _data$cols, importDetails, fields, cols, _data$fields, _ref4, _ref4$geoarrowMetadat, geoarrowMetadata, _ref4$useNewFields, useNewFields, duckDbColumns, tableDuckDBTypes, adjustedQuery, arrowResult;
|
|
212
|
+
var db, c, tableName, format, _data$rows, _data$rows2, _data$rows3, _data$cols, importDetails, fields, cols, _data$fields, _ref4, _ref4$geoarrowMetadat, geoarrowMetadata, _ref4$useNewFields, useNewFields, duckDbColumns, tableDuckDBTypes, adjustedQuery, arrowResult, compactedResult;
|
|
211
213
|
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
212
214
|
while (1) switch (_context4.prev = _context4.next) {
|
|
213
215
|
case 0:
|
|
@@ -307,32 +309,33 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
307
309
|
// TODO if format is an arrow table then just use the original one, instead of the new table from the query?
|
|
308
310
|
|
|
309
311
|
restoreGeoarrowMetadata(arrowResult, geoarrowMetadata);
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
312
|
+
compactedResult = (0, _utils.compactArrowTable)(arrowResult);
|
|
313
|
+
fields = useNewFields ? (0, _processors.arrowSchemaToFields)(compactedResult, tableDuckDBTypes) : (_data$fields = data.fields) !== null && _data$fields !== void 0 ? _data$fields : (0, _processors.arrowSchemaToFields)(compactedResult, tableDuckDBTypes);
|
|
314
|
+
cols = (0, _toConsumableArray2["default"])(Array(compactedResult.numCols).keys()).map(function (i) {
|
|
315
|
+
return compactedResult.getChildAt(i);
|
|
313
316
|
}).filter(function (col) {
|
|
314
317
|
return col;
|
|
315
318
|
});
|
|
316
|
-
_context4.next =
|
|
319
|
+
_context4.next = 54;
|
|
317
320
|
break;
|
|
318
|
-
case
|
|
319
|
-
_context4.prev =
|
|
321
|
+
case 50:
|
|
322
|
+
_context4.prev = 50;
|
|
320
323
|
_context4.t0 = _context4["catch"](34);
|
|
321
324
|
console.error('DuckDB table: createTableAndGetArrow', _context4.t0);
|
|
322
325
|
throw _context4.t0;
|
|
323
|
-
case
|
|
324
|
-
_context4.next =
|
|
326
|
+
case 54:
|
|
327
|
+
_context4.next = 56;
|
|
325
328
|
return c.close();
|
|
326
|
-
case
|
|
329
|
+
case 56:
|
|
327
330
|
return _context4.abrupt("return", {
|
|
328
331
|
fields: fields,
|
|
329
332
|
cols: cols
|
|
330
333
|
});
|
|
331
|
-
case
|
|
334
|
+
case 57:
|
|
332
335
|
case "end":
|
|
333
336
|
return _context4.stop();
|
|
334
337
|
}
|
|
335
|
-
}, _callee4, this, [[34,
|
|
338
|
+
}, _callee4, this, [[34, 50]]);
|
|
336
339
|
}));
|
|
337
340
|
function createTableAndGetArrow(_x4) {
|
|
338
341
|
return _createTableAndGetArrow.apply(this, arguments);
|
|
@@ -476,4 +479,4 @@ var restoreGeoarrowMetadata = exports.restoreGeoarrowMetadata = function restore
|
|
|
476
479
|
}
|
|
477
480
|
});
|
|
478
481
|
};
|
|
479
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJfcHJvY2Vzc29ycyIsIl90YWJsZSIsIl91dGlscyIsIl9kYXRhUHJvY2Vzc29yIiwiX2R1Y2tkYlRhYmxlVXRpbHMiLCJfZHVja2RiVGFibGVVdGlsczIiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mMyIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsIkRVQ0tEQl9HRU9NX0NPTFVNTiIsIkRVQ0tEQl9XS0JfQ09MVU1OIiwiS0VQTEVSX0dFT01fRlJPTV9HRU9KU09OX0NPTFVNTiIsIlNVR0dFU1RFRF9HRU9NX0NPTFVNTlMiLCJHRU9BUlJPV19FWFRFTlNJT05TIiwiV0tCIiwiS2VwbGVyR2xEdWNrRGJUYWJsZSIsImV4cG9ydHMiLCJfS2VwbGVyVGFibGUiLCJwcm9wcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwiX2ltcG9ydFJvd0RhdGEiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9yZWYiLCJkYXRhIiwiZGIiLCJjIiwiZmllbGRzIiwicm93cyIsInJvd3NGb3JEYiIsImNvbHVtbnMiLCJjcmVhdGVUYWJsZVNxbCIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJyb3ciLCJuZXdSb3ciLCJpbmRleCIsIm5hbWUiLCJyZWdpc3RlckZpbGVUZXh0IiwiaWQiLCJKU09OIiwic3RyaW5naWZ5IiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJjb25jYXQiLCJkdWNrREJDb2x1bW5UeXBlIiwibGFiZWwiLCJxdWVyeSIsInQwIiwiY29uc29sZSIsImxvZyIsInN0b3AiLCJpbXBvcnRSb3dEYXRhIiwiX3giLCJfaW1wb3J0R2VvSnNvbkRhdGEiLCJfY2FsbGVlMiIsIl9yZWYyIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZXJyb3IiLCJhYnJ1cHQiLCJnZW9hcnJvd01ldGFkYXRhIiwiaW1wb3J0R2VvSnNvbkRhdGEiLCJfeDIiLCJfaW1wb3J0QXJyb3dEYXRhIiwiX2NhbGxlZTMiLCJfcmVmMyIsImFkanVzdGVkTWV0YWRhdGEiLCJhcnJvd1RhYmxlIiwic2V0dXBTcWwiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJpc0Fycm93VGFibGUiLCJyZXN0b3JlQXJyb3dUYWJsZSIsImNvbHMiLCJhcnJvd1NjaGVtYSIsInJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyIsImluc2VydEFycm93VGFibGUiLCJyZXN0b3JlVW5zdXBwb3J0ZWRFeHRlbnNpb25zIiwidXNlTmV3RmllbGRzIiwiaW1wb3J0QXJyb3dEYXRhIiwiX3gzIiwiX2NyZWF0ZVRhYmxlQW5kR2V0QXJyb3ciLCJfY2FsbGVlNCIsInRhYmxlTmFtZSIsImZvcm1hdCIsIl9kYXRhJHJvd3MiLCJfZGF0YSRyb3dzMiIsIl9kYXRhJHJvd3MzIiwiX2RhdGEkY29scyIsImltcG9ydERldGFpbHMiLCJfZGF0YSRmaWVsZHMiLCJfcmVmNCIsIl9yZWY0JGdlb2Fycm93TWV0YWRhdCIsIl9yZWY0JHVzZU5ld0ZpZWxkcyIsImR1Y2tEYkNvbHVtbnMiLCJ0YWJsZUR1Y2tEQlR5cGVzIiwiYWRqdXN0ZWRRdWVyeSIsImFycm93UmVzdWx0IiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJkYXRhYmFzZSIsInNlbnQiLCJjb25uZWN0IiwiZHJvcFRhYmxlSWZFeGlzdHMiLCJtZXRhZGF0YSIsIl90eXBlb2YyIiwiREFUQVNFVF9GT1JNQVRTIiwidHlwZSIsImdlb2pzb24iLCJpc0Fycm93VmVjdG9yIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImNhc3REdWNrREJUeXBlc0ZvcktlcGxlciIsInJlc3RvcmVHZW9hcnJvd01ldGFkYXRhIiwiYXJyb3dTY2hlbWFUb0ZpZWxkcyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJudW1Db2xzIiwiZ2V0Q2hpbGRBdCIsImNvbCIsImNsb3NlIiwiY3JlYXRlVGFibGVBbmRHZXRBcnJvdyIsIl94NCIsIl9pbXBvcnREYXRhIiwiX2NhbGxlZTUiLCJfcmVmNSIsIl95aWVsZCR0aGlzJGNyZWF0ZVRhYiIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIkRhdGFzZXRUeXBlIiwiVkVDVE9SX1RJTEUiLCJpbXBvcnREYXRhIiwiX3g1IiwiX3VwZGF0ZSIsIl9jYWxsZWU2IiwiX3lpZWxkJHRoaXMkY3JlYXRlVGFiMiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsInVwZGF0ZSIsIl94NiIsIktlcGxlclRhYmxlIiwiaW5wdXRGb3JtYXQiLCJwcm9jZXNzb3IiLCJpc0Fycm93RGF0YSIsInByb2Nlc3NBcnJvd0JhdGNoZXMiLCJrZXBsZXJnbCIsImlzS2VwbGVyR2xNYXAiLCJwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiIiwiaXNSb3dPYmplY3QiLCJwcm9jZXNzQ3N2Um93T2JqZWN0IiwiaXNHZW9Kc29uIiwicHJvY2Vzc0dlb2pzb24iLCJkIiwic2NoZW1hIiwiRGF0YVR5cGUiLCJpc0JpbmFyeSIsIkdFT0FSUk9XX01FVEFEQVRBX0tFWSIsImlzR2VvQXJyb3dQb2ludCIsIlBPSU5UIiwiaXNHZW9BcnJvd0xpbmVTdHJpbmciLCJMSU5FU1RSSU5HIiwiaXNHZW9BcnJvd1BvbHlnb24iLCJQT0xZR09OIiwiaXNHZW9BcnJvd011bHRpUG9pbnQiLCJNVUxUSVBPSU5UIiwiaXNHZW9BcnJvd011bHRpTGluZVN0cmluZyIsIk1VTFRJTElORVNUUklORyIsImlzR2VvQXJyb3dNdWx0aVBvbHlnb24iLCJNVUxUSVBPTFlHT04iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGFibGUvZHVja2RiLXRhYmxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5cbmltcG9ydCB7XG4gIERhdGFzZXRUeXBlLFxuICBEQVRBU0VUX0ZPUk1BVFMsXG4gIEdFT0FSUk9XX0VYVEVOU0lPTlMsXG4gIEdFT0FSUk9XX01FVEFEQVRBX0tFWVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBhcnJvd1NjaGVtYVRvRmllbGRzLFxuICBpc0Fycm93RGF0YSxcbiAgaXNHZW9Kc29uLFxuICBpc0tlcGxlckdsTWFwLFxuICBpc1Jvd09iamVjdCxcbiAgcHJvY2Vzc0Fycm93QmF0Y2hlc1xufSBmcm9tICdAa2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge0ZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIGdldEFwcGxpY2F0aW9uQ29uZmlnLFxuICBEYXRhYmFzZUFkYXB0ZXIsXG4gIERhdGFiYXNlQ29ubmVjdGlvbixcbiAgaXNBcnJvd1RhYmxlLFxuICBpc0Fycm93VmVjdG9yXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge1xuICBwcm9jZXNzQ3N2Um93T2JqZWN0LFxuICBwcm9jZXNzR2VvanNvbixcbiAgcHJvY2Vzc0tlcGxlcmdsSlNPTmZvckR1Y2tEYixcbiAgUHJvY2Vzc29yUmVzdWx0XG59IGZyb20gJy4uL3Byb2Nlc3NvcnMvZGF0YS1wcm9jZXNzb3InO1xuXG5pbXBvcnQge1xuICBpc0dlb0Fycm93UG9pbnQsXG4gIGlzR2VvQXJyb3dMaW5lU3RyaW5nLFxuICBpc0dlb0Fycm93UG9seWdvbixcbiAgaXNHZW9BcnJvd011bHRpUG9pbnQsXG4gIGlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmcsXG4gIGlzR2VvQXJyb3dNdWx0aVBvbHlnb25cbn0gZnJvbSAnLi9kdWNrZGItdGFibGUtdXRpbHMnO1xuXG5pbXBvcnQge1xuICBjYXN0RHVja0RCVHlwZXNGb3JLZXBsZXIsXG4gIGRyb3BUYWJsZUlmRXhpc3RzLFxuICBnZXREdWNrREJDb2x1bW5UeXBlcyxcbiAgZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAsXG4gIHJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyxcbiAgcmVzdG9yZUFycm93VGFibGUsXG4gIHJlc3RvcmVVbnN1cHBvcnRlZEV4dGVuc2lvbnNcbn0gZnJvbSAnLi4vdGFibGUvZHVja2RiLXRhYmxlLXV0aWxzJztcblxuLy8gVE9ETyB1c2UgZmlsZXMgZnJvbSBkaXNrIG9yIHVybCBkaXJlY3RseSwgd2l0aG91dCBwYXJzaW5nIGJ5IGxvYWRlcnMgYW5kIHRoZW4gaW5nZWN0aW9uIGludG8gRGVja0RiXG5cbi8qKlxuICogRGVmYXVsdCBEdWNrRGIgZ2VvbWV0cnkgY29sdW1ucyBjcmVhdGVkIGJ5IFNUX1JFQURcbiAqL1xuY29uc3QgRFVDS0RCX0dFT01fQ09MVU1OID0gJ2dlb20nO1xuY29uc3QgRFVDS0RCX1dLQl9DT0xVTU4gPSAnd2tiX2dlb21ldHJ5JztcblxuLyoqXG4gRGVmYXVsdCBjb2x1bW4gbmFtZSBmb3IgcHJvY2Vzc2VkIGdlb2pzb24gaW4gS2VwbGVyLlxuIFVzZSB0aGlzIG5hbWUgdG8gcmVuYW1lIGRlZmF1bHQgJ2dlb20nIGNvbHVtbiBmcm9tIER1Y2tEYlxuIGluIG9yZGVyIHRvIHN1cHBvcnQgS2VwbGVyIG1hcHMgc2F2ZWQgYmVmb3JlIGludHJvZHVjdGlvbiBvZiBEdWNrRGIgcGx1Z2luLlxuICovXG5jb25zdCBLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OID0gJ19nZW9qc29uJztcblxuLyoqXG4gKiBOYW1lcyBvZiBjb2x1bW5zIHRoYXQgbW9zdCBsaWtlbHkgY29udGFpbiBiaW5hcnkgd2tiIGdlb21ldHJ5XG4gKi9cbmNvbnN0IFNVR0dFU1RFRF9HRU9NX0NPTFVNTlMgPSB7XG4gIFtLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OXTogR0VPQVJST1dfRVhURU5TSU9OUy5XS0IsXG4gIFtEVUNLREJfR0VPTV9DT0xVTU5dOiBHRU9BUlJPV19FWFRFTlNJT05TLldLQixcbiAgZ2VvbWV0cnk6IEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCXG59O1xuXG50eXBlIEltcG9ydERhdGFUb0R1Y2tQcm9wcyA9IHtcbiAgZGF0YTogUHJvY2Vzc29yUmVzdWx0ICYge2Fycm93U2NoZW1hOiBhcnJvdy5TY2hlbWF9O1xuICBkYjogRGF0YWJhc2VBZGFwdGVyO1xuICBjOiBEYXRhYmFzZUNvbm5lY3Rpb247XG59O1xuXG50eXBlIEltcG9ydERhdGFUb0R1Y2tSZXN1bHQgPSB7XG4gIC8vIER1Y2tEYiBkcm9wcyBnZW9hcnJvdyBtZXRhZGF0YSwgc28gdHJ5IHRvIHByZXNlcnZlIGFuZCB0aGVuIHJlc3RvcmUgdGhlIGV4dGVuc2lvbiBuYW1lXG4gIGdlb2Fycm93TWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvLyBVc2UgZmllbGRzIGZyb20gYXJyb3cgdGFibGUgZXZlbiBpZiBmaWVsZHMgYXJlIHByb3ZpZGVkXG4gIHVzZU5ld0ZpZWxkcz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY2xhc3MgS2VwbGVyR2xEdWNrRGJUYWJsZSBleHRlbmRzIEtlcGxlclRhYmxlIHtcbiAgZGVjbGFyZSByZWFkb25seSBpZDogc3RyaW5nO1xuICBkZWNsYXJlIGxhYmVsOiBzdHJpbmc7XG4gIGRlY2xhcmUgdHlwZTogc3RyaW5nO1xuICBkZWNsYXJlIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0Um93RGF0YSh7ZGF0YSwgZGIsIGN9OiBJbXBvcnREYXRhVG9EdWNrUHJvcHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge2ZpZWxkcywgcm93c30gPSBkYXRhO1xuXG4gICAgICAvLyBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2wgbG9hZHMgZGF0YSBhcyBhbnlbXVtdIGluc3RlYWQgb2YgW3t9XVxuICAgICAgLy8gVE9ETyBwb3RlbnRpYWwgbWVtb3J5IHVzYWdlIGV4cGxvc2lvbjogb3JpZ2luYWwgZGF0YSwgbmV3IG9iamVjdCBhbmQgdGhlbiBEdWNrRGIgdGFibGVcbiAgICAgIGNvbnN0IHJvd3NGb3JEYiA9IEFycmF5LmlzQXJyYXkocm93c1swXSlcbiAgICAgICAgPyByb3dzLm1hcChyb3cgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Um93ID0ge307XG4gICAgICAgICAgICByb3cuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIG5ld1Jvd1tmaWVsZHNbaW5kZXhdLm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBuZXdSb3c7XG4gICAgICAgICAgfSlcbiAgICAgICAgOiByb3dzO1xuXG4gICAgICBhd2FpdCBkYi5yZWdpc3RlckZpbGVUZXh0KHRoaXMuaWQsIEpTT04uc3RyaW5naWZ5KHJvd3NGb3JEYikpO1xuXG4gICAgICBjb25zdCBjb2x1bW5zID0gZmllbGRzLnJlZHVjZSgoYWNjLCBmaWVsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPIGV4dGVuZCBmaWVsZHMgdG8gY29udGFpbiBkdWNrREJDb2x1bW5UeXBlXG4gICAgICAgIHJldHVybiBgJHthY2N9JHtpbmRleCA+IDAgPyAnLCcgOiAnJ30gJyR7ZmllbGQubmFtZX0nOiAnJHtmaWVsZC5kdWNrREJDb2x1bW5UeXBlfSdgO1xuICAgICAgfSwgJycpO1xuXG4gICAgICBjb25zdCBjcmVhdGVUYWJsZVNxbCA9IGBcbiAgICAgICAgQ1JFQVRFIFRBQkxFICcke3RoaXMubGFiZWx9JyBBU1xuICAgICAgICBTRUxFQ1QgKlxuICAgICAgICBGUk9NIHJlYWRfanNvbignJHt0aGlzLmlkfScsXG4gICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPSB7JHtjb2x1bW5zfX0pO1xuICAgICAgYDtcbiAgICAgIGF3YWl0IGMucXVlcnkoY3JlYXRlVGFibGVTcWwpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygnaW1wb3J0Um93RGF0YScsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGltcG9ydEdlb0pzb25EYXRhKHtkYXRhLCBkYiwgY306IEltcG9ydERhdGFUb0R1Y2tQcm9wcyk6IFByb21pc2U8SW1wb3J0RGF0YVRvRHVja1Jlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7cm93c30gPSBkYXRhO1xuICAgICAgYXdhaXQgZGIucmVnaXN0ZXJGaWxlVGV4dCh0aGlzLmlkLCBKU09OLnN0cmluZ2lmeShyb3dzKSk7XG5cbiAgICAgIGNvbnN0IGNyZWF0ZVRhYmxlU3FsID0gYFxuICAgICAgICBpbnN0YWxsIHNwYXRpYWw7XG4gICAgICAgIGxvYWQgc3BhdGlhbDtcbiAgICAgICAgQ1JFQVRFIFRBQkxFICcke3RoaXMubGFiZWx9JyBBU1xuICAgICAgICBTRUxFQ1QgKlxuICAgICAgICBGUk9NIFNUX1JFQUQoJyR7dGhpcy5pZH0nLCBrZWVwX3drYiA9IFRSVUUpO1xuICAgICAgICBBTFRFUiBUQUJMRSAnJHt0aGlzLmxhYmVsfScgUkVOQU1FICcke0RVQ0tEQl9XS0JfQ09MVU1OfScgVE8gJyR7S0VQTEVSX0dFT01fRlJPTV9HRU9KU09OX0NPTFVNTn0nO1xuICAgICAgYDtcblxuICAgICAgYXdhaXQgYy5xdWVyeShjcmVhdGVUYWJsZVNxbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ltcG9ydEdlb0pzb25EYXRhJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIF9nZW9qc29uIGNvbHVtbiBpcyBjcmVhdGVkIGZyb20gZ2VvbWV0cnkgd2l0aCBrZWVwX3drYiBmbGFnIGFuZCBjb250YWlucyB2YWxpZCBXS0IgZGF0YS5cbiAgICAgIGdlb2Fycm93TWV0YWRhdGE6IHtbS0VQTEVSX0dFT01fRlJPTV9HRU9KU09OX0NPTFVNTl06IEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCfVxuICAgIH07XG4gIH1cblxuICBhc3luYyBpbXBvcnRBcnJvd0RhdGEoe2RhdGEsIGN9OiBJbXBvcnREYXRhVG9EdWNrUHJvcHMpOiBQcm9taXNlPEltcG9ydERhdGFUb0R1Y2tSZXN1bHQ+IHtcbiAgICBsZXQgYWRqdXN0ZWRNZXRhZGF0YSA9IHt9O1xuICAgIHRyeSB7XG4gICAgICAvLyAxKSBkYXRhLnJvd3MgY29udGFpbnMgYW4gYXJyb3cgdGFibGUgY3JlYXRlZCBieSBBZGQgdG8gTWFwIGRhdGEgZnJvbSBEdWNrRGIgcXVlcnkuXG4gICAgICAvLyAyKSBhcnJvdyB0YWJsZSBpcyBpbiBjb2xzICYgZmllbGRzIHdoZW4gYSBmaWxlIGlzIGRyYWdnZWQgJiBkcm9wcGVkIGludG8gQWRkIERhdGEgVG8gTWFwIGRpYWxvZy5cbiAgICAgIGNvbnN0IGFycm93VGFibGUgPSBpc0Fycm93VGFibGUoZGF0YS5yb3dzKVxuICAgICAgICA/IGRhdGEucm93c1xuICAgICAgICA6IHJlc3RvcmVBcnJvd1RhYmxlKGRhdGEuY29scyB8fCBbXSwgZGF0YS5maWVsZHMsIGRhdGEuYXJyb3dTY2hlbWEpO1xuXG4gICAgICAvLyByZW1vdmUgdW5zdXBwb3J0ZWQgZXh0ZW5zaW9ucyBmcm9tIGFuIGFycm93IHRhYmxlIHRoYXQgdGhyb3cgZXhjZXB0aW9ucyBpbiBEdWNrREIuXG4gICAgICBhZGp1c3RlZE1ldGFkYXRhID0gcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zKGFycm93VGFibGUpO1xuXG4gICAgICBjb25zdCBzZXR1cFNxbCA9IGBcbiAgICAgICAgaW5zdGFsbCBzcGF0aWFsO1xuICAgICAgICBsb2FkIHNwYXRpYWw7XG4gICAgICBgO1xuICAgICAgYXdhaXQgYy5xdWVyeShzZXR1cFNxbCk7XG4gICAgICBhd2FpdCBjLmluc2VydEFycm93VGFibGUoYXJyb3dUYWJsZSwge25hbWU6IHRoaXMubGFiZWx9KTtcblxuICAgICAgLy8gcmVzdG9yZSB1bnN1cHBvcnRlZCBleHRlbnNpb25zIHRoYXQgdGhyb3cgZXhjZXB0aW9ucyBpbiBEdWNrRGJcbiAgICAgIHJlc3RvcmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMoYXJyb3dUYWJsZSwgYWRqdXN0ZWRNZXRhZGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIEtub3duIGlzc3VlczpcbiAgICAgIC8vIDEpIEFycm93IFR5cGUgd2l0aCBleHRlbnNpb24gbmFtZTogZ2VvYXJyb3cucG9pbnQgYW5kIGZvcm1hdDogK3c6MiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBpbiBEdWNrREIuXG4gICAgICBjb25zb2xlLmVycm9yKCdpbXBvcnRBcnJvd0RhdGEnLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2VvYXJyb3dNZXRhZGF0YTogey4uLlNVR0dFU1RFRF9HRU9NX0NPTFVNTlMsIC4uLmFkanVzdGVkTWV0YWRhdGF9LFxuICAgICAgLy8gdXNlIGZpZWxkcyBnZW5lcmF0ZWQgZnJvbSB0aGUgY3JlYXRlZCBhcnJvdyB0YWJsZVxuICAgICAgdXNlTmV3RmllbGRzOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGFibGUgZnJvbSBkYXRhLCByZXR1cm5zIGFuIGFycm93IHRhYmxlIHdpdGggdGhlIGRhdGFcbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHJldHVybnMge1Byb21pc2U8e2ZpZWxkczogRmllbGRbXSwgY29sczogYW55W119Pn1cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBjcmVhdGVUYWJsZUFuZEdldEFycm93KGRhdGEpOiBQcm9taXNlPHtmaWVsZHM6IGFueVtdOyBjb2xzOiBhcnJvdy5WZWN0b3JbXX0+IHtcbiAgICBjb25zdCBkYiA9IGF3YWl0IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZGF0YWJhc2U7XG4gICAgaWYgKCFkYikge1xuICAgICAgY29uc29sZS5lcnJvcignVGhlIGRhdGFiYXNlIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5LicpO1xuICAgICAgcmV0dXJuIHtmaWVsZHM6IFtdLCBjb2xzOiBbXX07XG4gICAgfVxuICAgIGNvbnN0IGMgPSBhd2FpdCBkYi5jb25uZWN0KCk7XG5cbiAgICBjb25zdCB0YWJsZU5hbWUgPSB0aGlzLmxhYmVsO1xuICAgIGF3YWl0IGRyb3BUYWJsZUlmRXhpc3RzKGMsIHRhYmxlTmFtZSk7XG5cbiAgICBsZXQgZm9ybWF0ID0gdGhpcy5tZXRhZGF0YS5mb3JtYXQ7XG4gICAgaWYgKCFmb3JtYXQpIHtcbiAgICAgIC8vIGZvcm1hdCBpcyBtaXNzaW5nIHdoZW4gd2UgbG9hZCBLZXBsZXIuZ2wgZXhhbXBsZXNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEucm93cz8uWzBdKSB8fCB0eXBlb2YgZGF0YS5yb3dzPy5bMF0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5yb3c7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEucm93cz8udHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJykge1xuICAgICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbjtcbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJvd1ZlY3RvcihkYXRhLmNvbHM/LlswXSkpIHtcbiAgICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmFycm93O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBpbXBvcnREZXRhaWxzOiBJbXBvcnREYXRhVG9EdWNrUmVzdWx0IHwgdW5kZWZpbmVkO1xuICAgIGlmIChmb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5yb3cpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW1wb3J0Um93RGF0YSh7ZGF0YSwgZGIsIGN9KTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb24pIHtcbiAgICAgIGltcG9ydERldGFpbHMgPSBhd2FpdCB0aGlzLmltcG9ydEdlb0pzb25EYXRhKHtkYXRhLCBkYiwgY30pO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMuYXJyb3cpIHtcbiAgICAgIGltcG9ydERldGFpbHMgPSBhd2FpdCB0aGlzLmltcG9ydEFycm93RGF0YSh7ZGF0YSwgZGIsIGN9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignVW5yZWNvZ25pemVkIGZvcm1hdCcsIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgbGV0IGZpZWxkczogRmllbGRbXSA9IFtdO1xuICAgIGxldCBjb2xzOiBhcnJvdy5WZWN0b3JbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtnZW9hcnJvd01ldGFkYXRhID0ge30sIHVzZU5ld0ZpZWxkcyA9IGZhbHNlfSA9IGltcG9ydERldGFpbHMgfHwge307XG5cbiAgICAgIGNvbnN0IGR1Y2tEYkNvbHVtbnMgPSBhd2FpdCBnZXREdWNrREJDb2x1bW5UeXBlcyhjLCB0YWJsZU5hbWUpO1xuICAgICAgY29uc3QgdGFibGVEdWNrREJUeXBlcyA9IGdldER1Y2tEQkNvbHVtblR5cGVzTWFwKGR1Y2tEYkNvbHVtbnMpO1xuICAgICAgY29uc3QgYWRqdXN0ZWRRdWVyeSA9IGNhc3REdWNrREJUeXBlc0ZvcktlcGxlcih0YWJsZU5hbWUsIGR1Y2tEYkNvbHVtbnMpO1xuICAgICAgY29uc3QgYXJyb3dSZXN1bHQgPSBhd2FpdCBjLnF1ZXJ5KGFkanVzdGVkUXVlcnkpO1xuXG4gICAgICAvLyBUT0RPIGlmIGZvcm1hdCBpcyBhbiBhcnJvdyB0YWJsZSB0aGVuIGp1c3QgdXNlIHRoZSBvcmlnaW5hbCBvbmUsIGluc3RlYWQgb2YgdGhlIG5ldyB0YWJsZSBmcm9tIHRoZSBxdWVyeT9cblxuICAgICAgcmVzdG9yZUdlb2Fycm93TWV0YWRhdGEoYXJyb3dSZXN1bHQsIGdlb2Fycm93TWV0YWRhdGEpO1xuXG4gICAgICBmaWVsZHMgPSB1c2VOZXdGaWVsZHNcbiAgICAgICAgPyBhcnJvd1NjaGVtYVRvRmllbGRzKGFycm93UmVzdWx0LCB0YWJsZUR1Y2tEQlR5cGVzKVxuICAgICAgICA6IGRhdGEuZmllbGRzID8/IGFycm93U2NoZW1hVG9GaWVsZHMoYXJyb3dSZXN1bHQsIHRhYmxlRHVja0RCVHlwZXMpO1xuICAgICAgY29scyA9IFsuLi5BcnJheShhcnJvd1Jlc3VsdC5udW1Db2xzKS5rZXlzKCldXG4gICAgICAgIC5tYXAoaSA9PiBhcnJvd1Jlc3VsdC5nZXRDaGlsZEF0KGkpKVxuICAgICAgICAuZmlsdGVyKGNvbCA9PiBjb2wpIGFzIGFycm93LlZlY3RvcltdO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdEdWNrREIgdGFibGU6IGNyZWF0ZVRhYmxlQW5kR2V0QXJyb3cnLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBhd2FpdCBjLmNsb3NlKCk7XG5cbiAgICByZXR1cm4ge2ZpZWxkcywgY29sc307XG4gIH1cblxuICBhc3luYyBpbXBvcnREYXRhKHtkYXRhfToge2RhdGE6IFByb2Nlc3NvclJlc3VsdH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBWZWN0b3JUaWxlIGlzIGEgc3BlY2lhbCBjYXNlLCBpZ25vcmUgZm9yIG5vd1xuICAgIGlmICh0aGlzLnR5cGUgPT09IERhdGFzZXRUeXBlLlZFQ1RPUl9USUxFKSB7XG4gICAgICBzdXBlci5pbXBvcnREYXRhKHtkYXRhOiB7Li4uZGF0YSwgcm93czogW119fSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qge2ZpZWxkcywgY29sc30gPSBhd2FpdCB0aGlzLmNyZWF0ZVRhYmxlQW5kR2V0QXJyb3coZGF0YSk7XG5cbiAgICBzdXBlci5pbXBvcnREYXRhKHtkYXRhOiB7ZmllbGRzLCBjb2xzLCByb3dzOiBbXX19KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShkYXRhKSB7XG4gICAgLy8gVmVjdG9yVGlsZSBpcyBhIHNwZWNpYWwgY2FzZSwgaWdub3JlIGZvciBub3dcbiAgICBpZiAodGhpcy50eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YX0pO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgY29uc3Qge2NvbHN9ID0gYXdhaXQgdGhpcy5jcmVhdGVUYWJsZUFuZEdldEFycm93KGRhdGEpO1xuXG4gICAgcmV0dXJuIHN1cGVyLnVwZGF0ZSh7Y29scywgcm93czogW10sIGZpZWxkczogW119KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRGaWxlUHJvY2Vzc29yID0gZnVuY3Rpb24gKGRhdGE6IGFueSwgaW5wdXRGb3JtYXQ/OiBzdHJpbmcpIHtcbiAgICBsZXQgcHJvY2Vzc29yO1xuICAgIGxldCBmb3JtYXQ7XG4gICAgaWYgKGlucHV0Rm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMuYXJyb3cgfHwgaXNBcnJvd0RhdGEoZGF0YSkpIHtcbiAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5hcnJvdztcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NBcnJvd0JhdGNoZXM7XG4gICAgfSBlbHNlIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmtlcGxlcmdsIHx8IGlzS2VwbGVyR2xNYXAoZGF0YSkpIHtcbiAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbDtcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NLZXBsZXJnbEpTT05mb3JEdWNrRGI7XG4gICAgfSBlbHNlIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLnJvdyB8fCBpc1Jvd09iamVjdChkYXRhKSkge1xuICAgICAgLy8gY3N2IGZpbGUgZ29lcyBoZXJlXG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMucm93O1xuICAgICAgcHJvY2Vzc29yID0gcHJvY2Vzc0NzdlJvd09iamVjdDsgLy8gZGlyZWN0bHkgaW1wb3J0IGpzb24gb2JqZWN0IGludG8gZHVja2RiLXdhc21cbiAgICB9IGVsc2UgaWYgKGlucHV0Rm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbiB8fCBpc0dlb0pzb24oZGF0YSkpIHtcbiAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5nZW9qc29uO1xuICAgICAgcHJvY2Vzc29yID0gcHJvY2Vzc0dlb2pzb247XG4gICAgfVxuICAgIHJldHVybiB7cHJvY2Vzc29yLCBmb3JtYXR9O1xuICB9O1xuXG4gIHN0YXRpYyBnZXRJbnB1dERhdGFWYWxpZGF0b3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gSW4gRHVja0RCIG1vZGUgZGF0YSBpcyB2YWxpZGF0ZWQgbGF0ZXIgZHVyaW5nIGltcG9ydC5cbiAgICByZXR1cm4gZCA9PiBkO1xuICB9O1xufVxuXG4vKipcbiAqIFRyeSB0byByZXN0b3JlIGdlb2Fycm93IG1ldGFkYXRhIGxvc3QgZHVyaW5nIER1Y2tEYiBpbmdlc3Rpb24uXG4gKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBjYW4gZ2VuZXJhdGUgd3JvbmcgZ2VvbWV0cnkgdHlwZXMuXG4gKiBAcGFyYW0gYXJyb3dUYWJsZSBBcnJvdyB0YWJsZSB0byB1cGRhdGUuXG4gKiBAcGFyYW0gZ2VvYXJyb3dNZXRhZGF0YSBBIG1hcCB3aXRoIGZpZWxkIG5hbWVzIHRoYXQgdXN1YWxseSB1c2VkIHRvIHN0b3JlIGdlb2Fycm93IGdlb21ldHJ5LlxuICovXG5leHBvcnQgY29uc3QgcmVzdG9yZUdlb2Fycm93TWV0YWRhdGEgPSAoXG4gIGFycm93VGFibGU6IGFycm93LlRhYmxlLFxuICBnZW9hcnJvd01ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4pID0+IHtcbiAgYXJyb3dUYWJsZS5zY2hlbWEuZmllbGRzLmZvckVhY2goZiA9PiB7XG4gICAgaWYgKGFycm93LkRhdGFUeXBlLmlzQmluYXJ5KGYudHlwZSkgJiYgZ2VvYXJyb3dNZXRhZGF0YVtmLm5hbWVdKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIGdlb2Fycm93TWV0YWRhdGFbZi5uYW1lXSk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93UG9pbnQoZi50eXBlKSkge1xuICAgICAgZi5tZXRhZGF0YS5zZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZLCBHRU9BUlJPV19FWFRFTlNJT05TLlBPSU5UKTtcbiAgICB9IGVsc2UgaWYgKGlzR2VvQXJyb3dMaW5lU3RyaW5nKGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5MSU5FU1RSSU5HKTtcbiAgICB9IGVsc2UgaWYgKGlzR2VvQXJyb3dQb2x5Z29uKGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5QT0xZR09OKTtcbiAgICB9IGVsc2UgaWYgKGlzR2VvQXJyb3dNdWx0aVBvaW50KGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5NVUxUSVBPSU5UKTtcbiAgICB9IGVsc2UgaWYgKGlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmcoZi50eXBlKSkge1xuICAgICAgZi5tZXRhZGF0YS5zZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZLCBHRU9BUlJPV19FWFRFTlNJT05TLk1VTFRJTElORVNUUklORyk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlQb2x5Z29uKGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5NVUxUSVBPTFlHT04pO1xuICAgIH1cbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBTUEsSUFBQUUsV0FBQSxHQUFBRixPQUFBO0FBUUEsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBUUEsSUFBQUssY0FBQSxHQUFBTCxPQUFBO0FBT0EsSUFBQU0saUJBQUEsR0FBQU4sT0FBQTtBQVNBLElBQUFPLGtCQUFBLEdBQUFQLE9BQUE7QUFRcUMsU0FBQUQsd0JBQUFTLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMs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
|
|
482
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJfcHJvY2Vzc29ycyIsIl90YWJsZSIsIl91dGlscyIsIl9kYXRhUHJvY2Vzc29yIiwiX2R1Y2tkYlRhYmxlVXRpbHMiLCJfZHVja2RiVGFibGVVdGlsczIiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mMyIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsIkRVQ0tEQl9HRU9NX0NPTFVNTiIsIkRVQ0tEQl9XS0JfQ09MVU1OIiwiS0VQTEVSX0dFT01fRlJPTV9HRU9KU09OX0NPTFVNTiIsIlNVR0dFU1RFRF9HRU9NX0NPTFVNTlMiLCJHRU9BUlJPV19FWFRFTlNJT05TIiwiV0tCIiwiS2VwbGVyR2xEdWNrRGJUYWJsZSIsImV4cG9ydHMiLCJfS2VwbGVyVGFibGUiLCJwcm9wcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwiX2ltcG9ydFJvd0RhdGEiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9yZWYiLCJkYXRhIiwiZGIiLCJjIiwiZmllbGRzIiwicm93cyIsInJvd3NGb3JEYiIsImNvbHVtbnMiLCJjcmVhdGVUYWJsZVNxbCIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJyb3ciLCJuZXdSb3ciLCJpbmRleCIsIm5hbWUiLCJyZWdpc3RlckZpbGVUZXh0IiwiaWQiLCJKU09OIiwic3RyaW5naWZ5IiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJjb25jYXQiLCJkdWNrREJDb2x1bW5UeXBlIiwicXVvdGVUYWJsZU5hbWUiLCJsYWJlbCIsInF1ZXJ5IiwidDAiLCJjb25zb2xlIiwibG9nIiwic3RvcCIsImltcG9ydFJvd0RhdGEiLCJfeCIsIl9pbXBvcnRHZW9Kc29uRGF0YSIsIl9jYWxsZWUyIiwiX3JlZjIiLCJ0YWJsZU5hbWUiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJxdW90ZUNvbHVtbk5hbWUiLCJlcnJvciIsImFicnVwdCIsImdlb2Fycm93TWV0YWRhdGEiLCJpbXBvcnRHZW9Kc29uRGF0YSIsIl94MiIsIl9pbXBvcnRBcnJvd0RhdGEiLCJfY2FsbGVlMyIsIl9yZWYzIiwiYWRqdXN0ZWRNZXRhZGF0YSIsImFycm93VGFibGUiLCJzZXR1cFNxbCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsImlzQXJyb3dUYWJsZSIsInJlc3RvcmVBcnJvd1RhYmxlIiwiY29scyIsImFycm93U2NoZW1hIiwicmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zIiwiaW5zZXJ0QXJyb3dUYWJsZSIsInJlc3RvcmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMiLCJ1c2VOZXdGaWVsZHMiLCJpbXBvcnRBcnJvd0RhdGEiLCJfeDMiLCJfY3JlYXRlVGFibGVBbmRHZXRBcnJvdyIsIl9jYWxsZWU0IiwiZm9ybWF0IiwiX2RhdGEkcm93cyIsIl9kYXRhJHJvd3MyIiwiX2RhdGEkcm93czMiLCJfZGF0YSRjb2xzIiwiaW1wb3J0RGV0YWlscyIsIl9kYXRhJGZpZWxkcyIsIl9yZWY0IiwiX3JlZjQkZ2VvYXJyb3dNZXRhZGF0IiwiX3JlZjQkdXNlTmV3RmllbGRzIiwiZHVja0RiQ29sdW1ucyIsInRhYmxlRHVja0RCVHlwZXMiLCJhZGp1c3RlZFF1ZXJ5IiwiYXJyb3dSZXN1bHQiLCJjb21wYWN0ZWRSZXN1bHQiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsImRhdGFiYXNlIiwic2VudCIsImNvbm5lY3QiLCJkcm9wVGFibGVJZkV4aXN0cyIsIm1ldGFkYXRhIiwiX3R5cGVvZjIiLCJEQVRBU0VUX0ZPUk1BVFMiLCJ0eXBlIiwiZ2VvanNvbiIsImlzQXJyb3dWZWN0b3IiLCJnZXREdWNrREJDb2x1bW5UeXBlcyIsImdldER1Y2tEQkNvbHVtblR5cGVzTWFwIiwiY2FzdER1Y2tEQlR5cGVzRm9yS2VwbGVyIiwicmVzdG9yZUdlb2Fycm93TWV0YWRhdGEiLCJjb21wYWN0QXJyb3dUYWJsZSIsImFycm93U2NoZW1hVG9GaWVsZHMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwibnVtQ29scyIsImdldENoaWxkQXQiLCJjb2wiLCJjbG9zZSIsImNyZWF0ZVRhYmxlQW5kR2V0QXJyb3ciLCJfeDQiLCJfaW1wb3J0RGF0YSIsIl9jYWxsZWU1IiwiX3JlZjUiLCJfeWllbGQkdGhpcyRjcmVhdGVUYWIiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJEYXRhc2V0VHlwZSIsIlZFQ1RPUl9USUxFIiwiaW1wb3J0RGF0YSIsIl94NSIsIl91cGRhdGUiLCJfY2FsbGVlNiIsIl95aWVsZCR0aGlzJGNyZWF0ZVRhYjIiLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJ1cGRhdGUiLCJfeDYiLCJLZXBsZXJUYWJsZSIsImlucHV0Rm9ybWF0IiwicHJvY2Vzc29yIiwiaXNBcnJvd0RhdGEiLCJwcm9jZXNzQXJyb3dCYXRjaGVzIiwia2VwbGVyZ2wiLCJpc0tlcGxlckdsTWFwIiwicHJvY2Vzc0tlcGxlcmdsSlNPTmZvckR1Y2tEYiIsImlzUm93T2JqZWN0IiwicHJvY2Vzc0NzdlJvd09iamVjdCIsImlzR2VvSnNvbiIsInByb2Nlc3NHZW9qc29uIiwiZCIsInNjaGVtYSIsIkRhdGFUeXBlIiwiaXNCaW5hcnkiLCJHRU9BUlJPV19NRVRBREFUQV9LRVkiLCJpc0dlb0Fycm93UG9pbnQiLCJQT0lOVCIsImlzR2VvQXJyb3dMaW5lU3RyaW5nIiwiTElORVNUUklORyIsImlzR2VvQXJyb3dQb2x5Z29uIiwiUE9MWUdPTiIsImlzR2VvQXJyb3dNdWx0aVBvaW50IiwiTVVMVElQT0lOVCIsImlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmciLCJNVUxUSUxJTkVTVFJJTkciLCJpc0dlb0Fycm93TXVsdGlQb2x5Z29uIiwiTVVMVElQT0xZR09OIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RhYmxlL2R1Y2tkYi10YWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuXG5pbXBvcnQge1xuICBEYXRhc2V0VHlwZSxcbiAgREFUQVNFVF9GT1JNQVRTLFxuICBHRU9BUlJPV19FWFRFTlNJT05TLFxuICBHRU9BUlJPV19NRVRBREFUQV9LRVlcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgYXJyb3dTY2hlbWFUb0ZpZWxkcyxcbiAgaXNBcnJvd0RhdGEsXG4gIGlzR2VvSnNvbixcbiAgaXNLZXBsZXJHbE1hcCxcbiAgaXNSb3dPYmplY3QsXG4gIHByb2Nlc3NBcnJvd0JhdGNoZXNcbn0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtGaWVsZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBnZXRBcHBsaWNhdGlvbkNvbmZpZyxcbiAgRGF0YWJhc2VBZGFwdGVyLFxuICBEYXRhYmFzZUNvbm5lY3Rpb24sXG4gIGNvbXBhY3RBcnJvd1RhYmxlLFxuICBpc0Fycm93VGFibGUsXG4gIGlzQXJyb3dWZWN0b3Jcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7XG4gIHByb2Nlc3NDc3ZSb3dPYmplY3QsXG4gIHByb2Nlc3NHZW9qc29uLFxuICBwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiLFxuICBQcm9jZXNzb3JSZXN1bHRcbn0gZnJvbSAnLi4vcHJvY2Vzc29ycy9kYXRhLXByb2Nlc3Nvcic7XG5cbmltcG9ydCB7XG4gIGlzR2VvQXJyb3dQb2ludCxcbiAgaXNHZW9BcnJvd0xpbmVTdHJpbmcsXG4gIGlzR2VvQXJyb3dQb2x5Z29uLFxuICBpc0dlb0Fycm93TXVsdGlQb2ludCxcbiAgaXNHZW9BcnJvd011bHRpTGluZVN0cmluZyxcbiAgaXNHZW9BcnJvd011bHRpUG9seWdvblxufSBmcm9tICcuL2R1Y2tkYi10YWJsZS11dGlscyc7XG5cbmltcG9ydCB7XG4gIGNhc3REdWNrREJUeXBlc0ZvcktlcGxlcixcbiAgZHJvcFRhYmxlSWZFeGlzdHMsXG4gIGdldER1Y2tEQkNvbHVtblR5cGVzLFxuICBnZXREdWNrREJDb2x1bW5UeXBlc01hcCxcbiAgcXVvdGVDb2x1bW5OYW1lLFxuICBxdW90ZVRhYmxlTmFtZSxcbiAgcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zLFxuICByZXN0b3JlQXJyb3dUYWJsZSxcbiAgcmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9uc1xufSBmcm9tICcuLi90YWJsZS9kdWNrZGItdGFibGUtdXRpbHMnO1xuXG4vLyBUT0RPIHVzZSBmaWxlcyBmcm9tIGRpc2sgb3IgdXJsIGRpcmVjdGx5LCB3aXRob3V0IHBhcnNpbmcgYnkgbG9hZGVycyBhbmQgdGhlbiBpbmdlY3Rpb24gaW50byBEZWNrRGJcblxuLyoqXG4gKiBEZWZhdWx0IER1Y2tEYiBnZW9tZXRyeSBjb2x1bW5zIGNyZWF0ZWQgYnkgU1RfUkVBRFxuICovXG5jb25zdCBEVUNLREJfR0VPTV9DT0xVTU4gPSAnZ2VvbSc7XG5jb25zdCBEVUNLREJfV0tCX0NPTFVNTiA9ICd3a2JfZ2VvbWV0cnknO1xuXG4vKipcbiBEZWZhdWx0IGNvbHVtbiBuYW1lIGZvciBwcm9jZXNzZWQgZ2VvanNvbiBpbiBLZXBsZXIuXG4gVXNlIHRoaXMgbmFtZSB0byByZW5hbWUgZGVmYXVsdCAnZ2VvbScgY29sdW1uIGZyb20gRHVja0RiXG4gaW4gb3JkZXIgdG8gc3VwcG9ydCBLZXBsZXIgbWFwcyBzYXZlZCBiZWZvcmUgaW50cm9kdWN0aW9uIG9mIER1Y2tEYiBwbHVnaW4uXG4gKi9cbmNvbnN0IEtFUExFUl9HRU9NX0ZST01fR0VPSlNPTl9DT0xVTU4gPSAnX2dlb2pzb24nO1xuXG4vKipcbiAqIE5hbWVzIG9mIGNvbHVtbnMgdGhhdCBtb3N0IGxpa2VseSBjb250YWluIGJpbmFyeSB3a2IgZ2VvbWV0cnlcbiAqL1xuY29uc3QgU1VHR0VTVEVEX0dFT01fQ09MVU1OUyA9IHtcbiAgW0tFUExFUl9HRU9NX0ZST01fR0VPSlNPTl9DT0xVTU5dOiBHRU9BUlJPV19FWFRFTlNJT05TLldLQixcbiAgW0RVQ0tEQl9HRU9NX0NPTFVNTl06IEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCLFxuICBnZW9tZXRyeTogR0VPQVJST1dfRVhURU5TSU9OUy5XS0Jcbn07XG5cbnR5cGUgSW1wb3J0RGF0YVRvRHVja1Byb3BzID0ge1xuICBkYXRhOiBQcm9jZXNzb3JSZXN1bHQgJiB7YXJyb3dTY2hlbWE6IGFycm93LlNjaGVtYX07XG4gIGRiOiBEYXRhYmFzZUFkYXB0ZXI7XG4gIGM6IERhdGFiYXNlQ29ubmVjdGlvbjtcbn07XG5cbnR5cGUgSW1wb3J0RGF0YVRvRHVja1Jlc3VsdCA9IHtcbiAgLy8gRHVja0RiIGRyb3BzIGdlb2Fycm93IG1ldGFkYXRhLCBzbyB0cnkgdG8gcHJlc2VydmUgYW5kIHRoZW4gcmVzdG9yZSB0aGUgZXh0ZW5zaW9uIG5hbWVcbiAgZ2VvYXJyb3dNZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8vIFVzZSBmaWVsZHMgZnJvbSBhcnJvdyB0YWJsZSBldmVuIGlmIGZpZWxkcyBhcmUgcHJvdmlkZWRcbiAgdXNlTmV3RmllbGRzPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjbGFzcyBLZXBsZXJHbER1Y2tEYlRhYmxlIGV4dGVuZHMgS2VwbGVyVGFibGUge1xuICBkZWNsYXJlIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIGRlY2xhcmUgbGFiZWw6IHN0cmluZztcbiAgZGVjbGFyZSB0eXBlOiBzdHJpbmc7XG4gIGRlY2xhcmUgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cblxuICBhc3luYyBpbXBvcnRSb3dEYXRhKHtkYXRhLCBkYiwgY306IEltcG9ydERhdGFUb0R1Y2tQcm9wcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7ZmllbGRzLCByb3dzfSA9IGRhdGE7XG5cbiAgICAgIC8vIERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCBsb2FkcyBkYXRhIGFzIGFueVtdW10gaW5zdGVhZCBvZiBbe31dXG4gICAgICAvLyBUT0RPIHBvdGVudGlhbCBtZW1vcnkgdXNhZ2UgZXhwbG9zaW9uOiBvcmlnaW5hbCBkYXRhLCBuZXcgb2JqZWN0IGFuZCB0aGVuIER1Y2tEYiB0YWJsZVxuICAgICAgY29uc3Qgcm93c0ZvckRiID0gQXJyYXkuaXNBcnJheShyb3dzWzBdKVxuICAgICAgICA/IHJvd3MubWFwKHJvdyA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdSb3cgPSB7fTtcbiAgICAgICAgICAgIHJvdy5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgbmV3Um93W2ZpZWxkc1tpbmRleF0ubmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1JvdztcbiAgICAgICAgICB9KVxuICAgICAgICA6IHJvd3M7XG5cbiAgICAgIGF3YWl0IGRiLnJlZ2lzdGVyRmlsZVRleHQodGhpcy5pZCwgSlNPTi5zdHJpbmdpZnkocm93c0ZvckRiKSk7XG5cbiAgICAgIGNvbnN0IGNvbHVtbnMgPSBmaWVsZHMucmVkdWNlKChhY2MsIGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE8gZXh0ZW5kIGZpZWxkcyB0byBjb250YWluIGR1Y2tEQkNvbHVtblR5cGVcbiAgICAgICAgcmV0dXJuIGAke2FjY30ke2luZGV4ID4gMCA/ICcsJyA6ICcnfSAnJHtmaWVsZC5uYW1lfSc6ICcke2ZpZWxkLmR1Y2tEQkNvbHVtblR5cGV9J2A7XG4gICAgICB9LCAnJyk7XG5cbiAgICAgIGNvbnN0IGNyZWF0ZVRhYmxlU3FsID0gYFxuICAgICAgICBDUkVBVEUgVEFCTEUgJHtxdW90ZVRhYmxlTmFtZSh0aGlzLmxhYmVsKX0gQVNcbiAgICAgICAgU0VMRUNUICpcbiAgICAgICAgRlJPTSByZWFkX2pzb24oJyR7dGhpcy5pZH0nLFxuICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zID0geyR7Y29sdW1uc319KTtcbiAgICAgIGA7XG4gICAgICBhd2FpdCBjLnF1ZXJ5KGNyZWF0ZVRhYmxlU3FsKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coJ2ltcG9ydFJvd0RhdGEnLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbXBvcnRHZW9Kc29uRGF0YSh7ZGF0YSwgZGIsIGN9OiBJbXBvcnREYXRhVG9EdWNrUHJvcHMpOiBQcm9taXNlPEltcG9ydERhdGFUb0R1Y2tSZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3Jvd3N9ID0gZGF0YTtcbiAgICAgIGF3YWl0IGRiLnJlZ2lzdGVyRmlsZVRleHQodGhpcy5pZCwgSlNPTi5zdHJpbmdpZnkocm93cykpO1xuXG4gICAgICAvLyBJZGVudGlmaWVycyBuZWVkIGRvdWJsZSBxdW90ZXM7IGZpbGUgcGF0aHMgc3RheSBzaW5nbGUtcXVvdGVkIHN0cmluZyBsaXRlcmFscy5cbiAgICAgIGNvbnN0IHRhYmxlTmFtZSA9IHF1b3RlVGFibGVOYW1lKHRoaXMubGFiZWwpO1xuICAgICAgY29uc3QgY3JlYXRlVGFibGVTcWwgPSBgXG4gICAgICAgIGluc3RhbGwgc3BhdGlhbDtcbiAgICAgICAgbG9hZCBzcGF0aWFsO1xuICAgICAgICBDUkVBVEUgVEFCTEUgJHt0YWJsZU5hbWV9IEFTXG4gICAgICAgIFNFTEVDVCAqXG4gICAgICAgIEZST00gU1RfUkVBRCgnJHt0aGlzLmlkfScsIGtlZXBfd2tiID0gVFJVRSk7XG4gICAgICAgIEFMVEVSIFRBQkxFICR7dGFibGVOYW1lfVxuICAgICAgICBSRU5BTUUgJHtxdW90ZUNvbHVtbk5hbWUoRFVDS0RCX1dLQl9DT0xVTU4pfVxuICAgICAgICBUTyAke3F1b3RlQ29sdW1uTmFtZShLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OKX07XG4gICAgICBgO1xuXG4gICAgICBhd2FpdCBjLnF1ZXJ5KGNyZWF0ZVRhYmxlU3FsKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignaW1wb3J0R2VvSnNvbkRhdGEnLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLy8gX2dlb2pzb24gY29sdW1uIGlzIGNyZWF0ZWQgZnJvbSBnZW9tZXRyeSB3aXRoIGtlZXBfd2tiIGZsYWcgYW5kIGNvbnRhaW5zIHZhbGlkIFdLQiBkYXRhLlxuICAgICAgZ2VvYXJyb3dNZXRhZGF0YToge1tLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OXTogR0VPQVJST1dfRVhURU5TSU9OUy5XS0J9XG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGltcG9ydEFycm93RGF0YSh7ZGF0YSwgY306IEltcG9ydERhdGFUb0R1Y2tQcm9wcyk6IFByb21pc2U8SW1wb3J0RGF0YVRvRHVja1Jlc3VsdD4ge1xuICAgIGxldCBhZGp1c3RlZE1ldGFkYXRhID0ge307XG4gICAgdHJ5IHtcbiAgICAgIC8vIDEpIGRhdGEucm93cyBjb250YWlucyBhbiBhcnJvdyB0YWJsZSBjcmVhdGVkIGJ5IEFkZCB0byBNYXAgZGF0YSBmcm9tIER1Y2tEYiBxdWVyeS5cbiAgICAgIC8vIDIpIGFycm93IHRhYmxlIGlzIGluIGNvbHMgJiBmaWVsZHMgd2hlbiBhIGZpbGUgaXMgZHJhZ2dlZCAmIGRyb3BwZWQgaW50byBBZGQgRGF0YSBUbyBNYXAgZGlhbG9nLlxuICAgICAgY29uc3QgYXJyb3dUYWJsZSA9IGlzQXJyb3dUYWJsZShkYXRhLnJvd3MpXG4gICAgICAgID8gZGF0YS5yb3dzXG4gICAgICAgIDogcmVzdG9yZUFycm93VGFibGUoZGF0YS5jb2xzIHx8IFtdLCBkYXRhLmZpZWxkcywgZGF0YS5hcnJvd1NjaGVtYSk7XG5cbiAgICAgIC8vIHJlbW92ZSB1bnN1cHBvcnRlZCBleHRlbnNpb25zIGZyb20gYW4gYXJyb3cgdGFibGUgdGhhdCB0aHJvdyBleGNlcHRpb25zIGluIER1Y2tEQi5cbiAgICAgIGFkanVzdGVkTWV0YWRhdGEgPSByZW1vdmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMoYXJyb3dUYWJsZSk7XG5cbiAgICAgIGNvbnN0IHNldHVwU3FsID0gYFxuICAgICAgICBpbnN0YWxsIHNwYXRpYWw7XG4gICAgICAgIGxvYWQgc3BhdGlhbDtcbiAgICAgIGA7XG4gICAgICBhd2FpdCBjLnF1ZXJ5KHNldHVwU3FsKTtcbiAgICAgIGF3YWl0IGMuaW5zZXJ0QXJyb3dUYWJsZShhcnJvd1RhYmxlLCB7bmFtZTogdGhpcy5sYWJlbH0pO1xuXG4gICAgICAvLyByZXN0b3JlIHVuc3VwcG9ydGVkIGV4dGVuc2lvbnMgdGhhdCB0aHJvdyBleGNlcHRpb25zIGluIER1Y2tEYlxuICAgICAgcmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyhhcnJvd1RhYmxlLCBhZGp1c3RlZE1ldGFkYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gS25vd24gaXNzdWVzOlxuICAgICAgLy8gMSkgQXJyb3cgVHlwZSB3aXRoIGV4dGVuc2lvbiBuYW1lOiBnZW9hcnJvdy5wb2ludCBhbmQgZm9ybWF0OiArdzoyIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGluIER1Y2tEQi5cbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ltcG9ydEFycm93RGF0YScsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBnZW9hcnJvd01ldGFkYXRhOiB7Li4uU1VHR0VTVEVEX0dFT01fQ09MVU1OUywgLi4uYWRqdXN0ZWRNZXRhZGF0YX0sXG4gICAgICAvLyB1c2UgZmllbGRzIGdlbmVyYXRlZCBmcm9tIHRoZSBjcmVhdGVkIGFycm93IHRhYmxlXG4gICAgICB1c2VOZXdGaWVsZHM6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB0YWJsZSBmcm9tIGRhdGEsIHJldHVybnMgYW4gYXJyb3cgdGFibGUgd2l0aCB0aGUgZGF0YVxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx7ZmllbGRzOiBGaWVsZFtdLCBjb2xzOiBhbnlbXX0+fVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZVRhYmxlQW5kR2V0QXJyb3coZGF0YSk6IFByb21pc2U8e2ZpZWxkczogYW55W107IGNvbHM6IGFycm93LlZlY3RvcltdfT4ge1xuICAgIGNvbnN0IGRiID0gYXdhaXQgZ2V0QXBwbGljYXRpb25Db25maWcoKS5kYXRhYmFzZTtcbiAgICBpZiAoIWRiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdUaGUgZGF0YWJhc2UgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkuJyk7XG4gICAgICByZXR1cm4ge2ZpZWxkczogW10sIGNvbHM6IFtdfTtcbiAgICB9XG4gICAgY29uc3QgYyA9IGF3YWl0IGRiLmNvbm5lY3QoKTtcblxuICAgIGNvbnN0IHRhYmxlTmFtZSA9IHRoaXMubGFiZWw7XG4gICAgYXdhaXQgZHJvcFRhYmxlSWZFeGlzdHMoYywgdGFibGVOYW1lKTtcblxuICAgIGxldCBmb3JtYXQgPSB0aGlzLm1ldGFkYXRhLmZvcm1hdDtcbiAgICBpZiAoIWZvcm1hdCkge1xuICAgICAgLy8gZm9ybWF0IGlzIG1pc3Npbmcgd2hlbiB3ZSBsb2FkIEtlcGxlci5nbCBleGFtcGxlc1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5yb3dzPy5bMF0pIHx8IHR5cGVvZiBkYXRhLnJvd3M/LlswXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLnJvdztcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5yb3dzPy50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nKSB7XG4gICAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5nZW9qc29uO1xuICAgICAgfSBlbHNlIGlmIChpc0Fycm93VmVjdG9yKGRhdGEuY29scz8uWzBdKSkge1xuICAgICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuYXJyb3c7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGltcG9ydERldGFpbHM6IEltcG9ydERhdGFUb0R1Y2tSZXN1bHQgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLnJvdykge1xuICAgICAgYXdhaXQgdGhpcy5pbXBvcnRSb3dEYXRhKHtkYXRhLCBkYiwgY30pO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbikge1xuICAgICAgaW1wb3J0RGV0YWlscyA9IGF3YWl0IHRoaXMuaW1wb3J0R2VvSnNvbkRhdGEoe2RhdGEsIGRiLCBjfSk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5hcnJvdykge1xuICAgICAgaW1wb3J0RGV0YWlscyA9IGF3YWl0IHRoaXMuaW1wb3J0QXJyb3dEYXRhKHtkYXRhLCBkYiwgY30pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdVbnJlY29nbml6ZWQgZm9ybWF0JywgZm9ybWF0KTtcbiAgICB9XG5cbiAgICBsZXQgZmllbGRzOiBGaWVsZFtdID0gW107XG4gICAgbGV0IGNvbHM6IGFycm93LlZlY3RvcltdID0gW107XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qge2dlb2Fycm93TWV0YWRhdGEgPSB7fSwgdXNlTmV3RmllbGRzID0gZmFsc2V9ID0gaW1wb3J0RGV0YWlscyB8fCB7fTtcblxuICAgICAgY29uc3QgZHVja0RiQ29sdW1ucyA9IGF3YWl0IGdldER1Y2tEQkNvbHVtblR5cGVzKGMsIHRhYmxlTmFtZSk7XG4gICAgICBjb25zdCB0YWJsZUR1Y2tEQlR5cGVzID0gZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAoZHVja0RiQ29sdW1ucyk7XG4gICAgICBjb25zdCBhZGp1c3RlZFF1ZXJ5ID0gY2FzdER1Y2tEQlR5cGVzRm9yS2VwbGVyKHRhYmxlTmFtZSwgZHVja0RiQ29sdW1ucyk7XG4gICAgICBjb25zdCBhcnJvd1Jlc3VsdCA9IGF3YWl0IGMucXVlcnkoYWRqdXN0ZWRRdWVyeSk7XG5cbiAgICAgIC8vIFRPRE8gaWYgZm9ybWF0IGlzIGFuIGFycm93IHRhYmxlIHRoZW4ganVzdCB1c2UgdGhlIG9yaWdpbmFsIG9uZSwgaW5zdGVhZCBvZiB0aGUgbmV3IHRhYmxlIGZyb20gdGhlIHF1ZXJ5P1xuXG4gICAgICByZXN0b3JlR2VvYXJyb3dNZXRhZGF0YShhcnJvd1Jlc3VsdCwgZ2VvYXJyb3dNZXRhZGF0YSk7XG5cbiAgICAgIGNvbnN0IGNvbXBhY3RlZFJlc3VsdCA9IGNvbXBhY3RBcnJvd1RhYmxlKGFycm93UmVzdWx0KTtcblxuICAgICAgZmllbGRzID0gdXNlTmV3RmllbGRzXG4gICAgICAgID8gYXJyb3dTY2hlbWFUb0ZpZWxkcyhjb21wYWN0ZWRSZXN1bHQsIHRhYmxlRHVja0RCVHlwZXMpXG4gICAgICAgIDogZGF0YS5maWVsZHMgPz8gYXJyb3dTY2hlbWFUb0ZpZWxkcyhjb21wYWN0ZWRSZXN1bHQsIHRhYmxlRHVja0RCVHlwZXMpO1xuICAgICAgY29scyA9IFsuLi5BcnJheShjb21wYWN0ZWRSZXN1bHQubnVtQ29scykua2V5cygpXVxuICAgICAgICAubWFwKGkgPT4gY29tcGFjdGVkUmVzdWx0LmdldENoaWxkQXQoaSkpXG4gICAgICAgIC5maWx0ZXIoY29sID0+IGNvbCkgYXMgYXJyb3cuVmVjdG9yW107XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0R1Y2tEQiB0YWJsZTogY3JlYXRlVGFibGVBbmRHZXRBcnJvdycsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGF3YWl0IGMuY2xvc2UoKTtcblxuICAgIHJldHVybiB7ZmllbGRzLCBjb2xzfTtcbiAgfVxuXG4gIGFzeW5jIGltcG9ydERhdGEoe2RhdGF9OiB7ZGF0YTogUHJvY2Vzc29yUmVzdWx0fSk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFZlY3RvclRpbGUgaXMgYSBzcGVjaWFsIGNhc2UsIGlnbm9yZSBmb3Igbm93XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gRGF0YXNldFR5cGUuVkVDVE9SX1RJTEUpIHtcbiAgICAgIHN1cGVyLmltcG9ydERhdGEoe2RhdGE6IHsuLi5kYXRhLCByb3dzOiBbXX19KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7ZmllbGRzLCBjb2xzfSA9IGF3YWl0IHRoaXMuY3JlYXRlVGFibGVBbmRHZXRBcnJvdyhkYXRhKTtcblxuICAgIHN1cGVyLmltcG9ydERhdGEoe2RhdGE6IHtmaWVsZHMsIGNvbHMsIHJvd3M6IFtdfX0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlKGRhdGEpIHtcbiAgICAvLyBWZWN0b3JUaWxlIGlzIGEgc3BlY2lhbCBjYXNlLCBpZ25vcmUgZm9yIG5vd1xuICAgIGlmICh0aGlzLnR5cGUgPT09IERhdGFzZXRUeXBlLlZFQ1RPUl9USUxFKSB7XG4gICAgICBzdXBlci5pbXBvcnREYXRhKHtkYXRhfSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBjb25zdCB7Y29sc30gPSBhd2FpdCB0aGlzLmNyZWF0ZVRhYmxlQW5kR2V0QXJyb3coZGF0YSk7XG5cbiAgICByZXR1cm4gc3VwZXIudXBkYXRlKHtjb2xzLCByb3dzOiBbXSwgZmllbGRzOiBbXX0pO1xuICB9XG5cbiAgc3RhdGljIGdldEZpbGVQcm9jZXNzb3IgPSBmdW5jdGlvbiAoZGF0YTogYW55LCBpbnB1dEZvcm1hdD86IHN0cmluZykge1xuICAgIGxldCBwcm9jZXNzb3I7XG4gICAgbGV0IGZvcm1hdDtcbiAgICBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5hcnJvdyB8fCBpc0Fycm93RGF0YShkYXRhKSkge1xuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmFycm93O1xuICAgICAgcHJvY2Vzc29yID0gcHJvY2Vzc0Fycm93QmF0Y2hlcztcbiAgICB9IGVsc2UgaWYgKGlucHV0Rm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2wgfHwgaXNLZXBsZXJHbE1hcChkYXRhKSkge1xuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmtlcGxlcmdsO1xuICAgICAgcHJvY2Vzc29yID0gcHJvY2Vzc0tlcGxlcmdsSlNPTmZvckR1Y2tEYjtcbiAgICB9IGVsc2UgaWYgKGlucHV0Rm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMucm93IHx8IGlzUm93T2JqZWN0KGRhdGEpKSB7XG4gICAgICAvLyBjc3YgZmlsZSBnb2VzIGhlcmVcbiAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5yb3c7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzQ3N2Um93T2JqZWN0OyAvLyBkaXJlY3RseSBpbXBvcnQganNvbiBvYmplY3QgaW50byBkdWNrZGItd2FzbVxuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5nZW9qc29uIHx8IGlzR2VvSnNvbihkYXRhKSkge1xuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb247XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzR2VvanNvbjtcbiAgICB9XG4gICAgcmV0dXJuIHtwcm9jZXNzb3IsIGZvcm1hdH07XG4gIH07XG5cbiAgc3RhdGljIGdldElucHV0RGF0YVZhbGlkYXRvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBJbiBEdWNrREIgbW9kZSBkYXRhIGlzIHZhbGlkYXRlZCBsYXRlciBkdXJpbmcgaW1wb3J0LlxuICAgIHJldHVybiBkID0+IGQ7XG4gIH07XG59XG5cbi8qKlxuICogVHJ5IHRvIHJlc3RvcmUgZ2VvYXJyb3cgbWV0YWRhdGEgbG9zdCBkdXJpbmcgRHVja0RiIGluZ2VzdGlvbi5cbiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGNhbiBnZW5lcmF0ZSB3cm9uZyBnZW9tZXRyeSB0eXBlcy5cbiAqIEBwYXJhbSBhcnJvd1RhYmxlIEFycm93IHRhYmxlIHRvIHVwZGF0ZS5cbiAqIEBwYXJhbSBnZW9hcnJvd01ldGFkYXRhIEEgbWFwIHdpdGggZmllbGQgbmFtZXMgdGhhdCB1c3VhbGx5IHVzZWQgdG8gc3RvcmUgZ2VvYXJyb3cgZ2VvbWV0cnkuXG4gKi9cbmV4cG9ydCBjb25zdCByZXN0b3JlR2VvYXJyb3dNZXRhZGF0YSA9IChcbiAgYXJyb3dUYWJsZTogYXJyb3cuVGFibGUsXG4gIGdlb2Fycm93TWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbikgPT4ge1xuICBhcnJvd1RhYmxlLnNjaGVtYS5maWVsZHMuZm9yRWFjaChmID0+IHtcbiAgICBpZiAoYXJyb3cuRGF0YVR5cGUuaXNCaW5hcnkoZi50eXBlKSAmJiBnZW9hcnJvd01ldGFkYXRhW2YubmFtZV0pIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgZ2VvYXJyb3dNZXRhZGF0YVtmLm5hbWVdKTtcbiAgICB9IGVsc2UgaWYgKGlzR2VvQXJyb3dQb2ludChmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuUE9JTlQpO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd0xpbmVTdHJpbmcoZi50eXBlKSkge1xuICAgICAgZi5tZXRhZGF0YS5zZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZLCBHRU9BUlJPV19FWFRFTlNJT05TLkxJTkVTVFJJTkcpO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd1BvbHlnb24oZi50eXBlKSkge1xuICAgICAgZi5tZXRhZGF0YS5zZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZLCBHRU9BUlJPV19FWFRFTlNJT05TLlBPTFlHT04pO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd011bHRpUG9pbnQoZi50eXBlKSkge1xuICAgICAgZi5tZXRhZGF0YS5zZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZLCBHRU9BUlJPV19FWFRFTlNJT05TLk1VTFRJUE9JTlQpO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd011bHRpTGluZVN0cmluZyhmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElMSU5FU1RSSU5HKTtcbiAgICB9IGVsc2UgaWYgKGlzR2VvQXJyb3dNdWx0aVBvbHlnb24oZi50eXBlKSkge1xuICAgICAgZi5tZXRhZGF0YS5zZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZLCBHRU9BUlJPV19FWFRFTlNJT05TLk1VTFRJUE9MWUdPTik7XG4gICAgfVxuICB9KTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFNQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFRQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFTQSxJQUFBSyxjQUFBLEdBQUFMLE9BQUE7QUFPQSxJQUFBTSxpQkFBQSxHQUFBTixPQUFBO0FBU0EsSUFBQU8sa0JBQUEsR0FBQVAsT0FBQTtBQVVxQyxTQUFBRCx3QkFBQVMsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQVgsdUJBQUEsWUFBQUEsd0JBQUFTLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxtQkFBQVQsQ0FBQSxpQkFBQUEsQ0FBQSxnQkFBQVUsUUFBQSxDQUFBVixDQUFBLDBCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTSxDQUFBLENBQUFNLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTSxDQUFBLENBQUFPLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUSxDQUFBLGNBQUFNLEVBQUEsSUFBQWQsQ0FBQSxnQkFBQWMsRUFBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMs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
|
|
@@ -9,8 +9,8 @@ import React, { useCallback, useMemo, useRef } from 'react';
|
|
|
9
9
|
import Editor from '@monaco-editor/react';
|
|
10
10
|
import * as monaco from 'monaco-editor';
|
|
11
11
|
// import {tableSchema as DEFAULT_SCHEMA} from './table-schema';
|
|
12
|
-
import uniq from '
|
|
13
|
-
import uniqBy from '
|
|
12
|
+
import uniq from 'es-toolkit/compat/uniq';
|
|
13
|
+
import uniqBy from 'es-toolkit/compat/uniqBy';
|
|
14
14
|
var MONACO_OPTIONS = {
|
|
15
15
|
minimap: {
|
|
16
16
|
enabled: false
|
|
@@ -164,4 +164,4 @@ var MonacoEditor = function MonacoEditor(_ref) {
|
|
|
164
164
|
});
|
|
165
165
|
};
|
|
166
166
|
export default MonacoEditor;
|
|
167
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsInVzZVJlZiIsIkVkaXRvciIsIm1vbmFjbyIsInVuaXEiLCJ1bmlxQnkiLCJNT05BQ09fT1BUSU9OUyIsIm1pbmltYXAiLCJlbmFibGVkIiwibGFuZ3VhZ2UiLCJjb250ZXh0bWVudSIsInJlbmRlckxpbmVIaWdobGlnaHQiLCJzY3JvbGxCZXlvbmRMYXN0TGluZSIsInNjcm9sbGJhciIsImFsd2F5c0NvbnN1bWVNb3VzZVdoZWVsIiwib3ZlcnZpZXdSdWxlckxhbmVzIiwiYXV0b21hdGljTGF5b3V0IiwiYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXIiLCJxdWlja1N1Z2dlc3Rpb25zRGVsYXkiLCJtYXRjaE9uV29yZFN0YXJ0T25seSIsInRhYkNvbXBsZXRpb24iLCJsaW5lTnVtYmVycyIsInBhcnNlU3FsQW5kRmluZFRhYmxlTmFtZUFuZEFsaWFzZXMiLCJzcWwiLCJyZWdleCIsInRhYmxlcyIsIm1hdGNoIiwiZXhlYyIsInRhYmxlX25hbWUiLCJ0ZXN0IiwiYWxpYXMiLCJwdXNoIiwiTW9uYWNvRWRpdG9yIiwiX3JlZiIsIm9uUnVuUXVlcnkiLCJvbkNoYW5nZSIsImNvZGUiLCJ0YWJsZVNjaGVtYSIsImlzUmVhZE9ubHkiLCJzY2hlbWFUYWJsZU5hbWVzIiwibWFwIiwiZCIsInNjaGVtYVRhYmxlTmFtZXNTZXQiLCJTZXQiLCJoYW5kbGVSdW5RdWVyeVJlZiIsImN1cnJlbnQiLCJoYW5kbGVFZGl0b3JEaWRNb3VudCIsImVkaXRvciIsImZvY3VzIiwiYWRkQWN0aW9uIiwiaWQiLCJsYWJlbCIsImtleWJpbmRpbmdzIiwiS2V5TW9kIiwiQ3RybENtZCIsIktleUNvZGUiLCJFbnRlciIsIlNoaWZ0IiwiY29udGV4dE1lbnVHcm91cElkIiwiY29udGV4dE1lbnVPcmRlciIsInJ1biIsImxhbmd1YWdlcyIsInJlZ2lzdGVyQ29tcGxldGlvbkl0ZW1Qcm92aWRlciIsInByb3ZpZGVDb21wbGV0aW9uSXRlbXMiLCJtb2RlbCIsInBvc2l0aW9uIiwiX2NvbnRleHQiLCJfY2FuY2VsYXRpb25Ub2tlbiIsIl90aGlzTGluZSR0cmltJHNwbGl0JCIsIl9leGVjIiwiX2V4ZWMyIiwic3VnZ2VzdGlvbnMiLCJraW5kIiwiQ29tcGxldGlvbkl0ZW1LaW5kIiwiU25pcHBldCIsImluc2VydFRleHQiLCJpbnNlcnRUZXh0UnVsZXMiLCJDb21wbGV0aW9uSXRlbUluc2VydFRleHRSdWxlIiwiSW5zZXJ0QXNTbmlwcGV0IiwiZG9jdW1lbnRhdGlvbiIsImZ1bGxRdWVyeVRleHQiLCJnZXRWYWx1ZSIsInRhYmxlTmFtZXNBbmRBbGlhc2VzIiwiTWFwIiwiX3JlZjIiLCJ0aGlzTGluZSIsImdldFZhbHVlSW5SYW5nZSIsInN0YXJ0TGluZU51bWJlciIsImxpbmVOdW1iZXIiLCJzdGFydENvbHVtbiIsImVuZExpbmVOdW1iZXIiLCJlbmRDb2x1bW4iLCJjb2x1bW4iLCJ0aGlzVG9rZW4iLCJ0cmltIiwic3BsaXQiLCJzbGljZSIsImxhc3RUb2tlbkJlZm9yZVNwYWNlIiwibGFzdFRva2VuQmVmb3JlRG90IiwiYXBwbHkiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJGaWVsZCIsImhhcyIsImdldCIsImZpbHRlciIsIl9yZWYzIiwiY29sdW1uX25hbWUiLCJzIiwiY3JlYXRlRWxlbWVudCIsImhlaWdodCIsInRoZW1lIiwiZGVmYXVsdExhbmd1YWdlIiwiZGVmYXVsdFZhbHVlIiwib25Nb3VudCIsIm9wdGlvbnMiLCJfb2JqZWN0U3ByZWFkIiwicmVhZE9ubHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb25hY28tZWRpdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgRWRpdG9yLCB7T25DaGFuZ2UsIE9uTW91bnR9IGZyb20gJ0Btb25hY28tZWRpdG9yL3JlYWN0JztcbmltcG9ydCAqIGFzIG1vbmFjbyBmcm9tICdtb25hY28tZWRpdG9yJztcbi8vIGltcG9ydCB7dGFibGVTY2hlbWEgYXMgREVGQVVMVF9TQ0hFTUF9IGZyb20gJy4vdGFibGUtc2NoZW1hJztcbmltcG9ydCB1bmlxIGZyb20gJ2xvZGFzaC91bmlxJztcbmltcG9ydCB1bmlxQnkgZnJvbSAnbG9kYXNoL3VuaXFCeSc7XG5cbmNvbnN0IE1PTkFDT19PUFRJT05TOiBtb25hY28uZWRpdG9yLklTdGFuZGFsb25lRWRpdG9yQ29uc3RydWN0aW9uT3B0aW9ucyA9IHtcbiAgbWluaW1hcDoge2VuYWJsZWQ6IGZhbHNlfSxcbiAgbGFuZ3VhZ2U6ICdzcWwnLFxuICBjb250ZXh0bWVudTogZmFsc2UsXG4gIHJlbmRlckxpbmVIaWdobGlnaHQ6ICdub25lJyxcbiAgc2Nyb2xsQmV5b25kTGFzdExpbmU6IGZhbHNlLFxuICBzY3JvbGxiYXI6IHthbHdheXNDb25zdW1lTW91c2VXaGVlbDogZmFsc2V9LFxuICBvdmVydmlld1J1bGVyTGFuZXM6IDAsXG4gIGF1dG9tYXRpY0xheW91dDogdHJ1ZSxcbiAgYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXI6ICdvbicsXG4gIHF1aWNrU3VnZ2VzdGlvbnNEZWxheTogNDAwLFxuICBtYXRjaE9uV29yZFN0YXJ0T25seTogZmFsc2UsXG4gIHRhYkNvbXBsZXRpb246ICdvZmYnLFxuICBsaW5lTnVtYmVyczogJ29mZidcbn07XG5cbmZ1bmN0aW9uIHBhcnNlU3FsQW5kRmluZFRhYmxlTmFtZUFuZEFsaWFzZXMoc3FsOiBzdHJpbmcpIHtcbiAgY29uc3QgcmVnZXggPSAvXFxiKD86RlJPTXxKT0lOKVxccysoW15cXHMuXSsoPzpcXC5bXlxccy5dKyk/KVxccyooPzpBUyk/XFxzKihbXlxccyxdKyk/L2dpO1xuICBjb25zdCB0YWJsZXM6IHt0YWJsZV9uYW1lOiBzdHJpbmc7IGFsaWFzOiBzdHJpbmd9W10gPSBbXTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IG1hdGNoID0gcmVnZXguZXhlYyhzcWwpO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCB0YWJsZV9uYW1lID0gbWF0Y2hbMV07XG4gICAgaWYgKCEvXFwoLy50ZXN0KHRhYmxlX25hbWUpKSB7XG4gICAgICAvLyBleGNsdWRlIGZ1bmN0aW9uIGNhbGxzXG4gICAgICBsZXQgYWxpYXMgPSBtYXRjaFsyXSBhcyBzdHJpbmcgfCBudWxsO1xuICAgICAgaWYgKGFsaWFzICYmIC9vbnx3aGVyZXxpbm5lcnxsZWZ0fHJpZ2h0fGpvaW4vLnRlc3QoYWxpYXMpKSB7XG4gICAgICAgIGFsaWFzID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHRhYmxlcy5wdXNoKHtcbiAgICAgICAgdGFibGVfbmFtZSxcbiAgICAgICAgYWxpYXM6IGFsaWFzIHx8IHRhYmxlX25hbWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YWJsZXM7XG59XG5cbmludGVyZmFjZSBNb25hY29FZGl0b3JQcm9wcyB7XG4gIGNvZGU6IHN0cmluZztcbiAgaXNSZWFkT25seT86IGJvb2xlYW47XG4gIG9uQ2hhbmdlOiBPbkNoYW5nZTtcbiAgb25SdW5RdWVyeTogKCkgPT4gdm9pZDtcbiAgdGFibGVTY2hlbWE/OiB7dGFibGVfbmFtZTogc3RyaW5nOyBjb2x1bW5fbmFtZTogc3RyaW5nfVtdO1xufVxuXG5jb25zdCBNb25hY29FZGl0b3I6IFJlYWN0LkZDPE1vbmFjb0VkaXRvclByb3BzPiA9ICh7XG4gIG9uUnVuUXVlcnksXG4gIG9uQ2hhbmdlLFxuICBjb2RlLFxuICB0YWJsZVNjaGVtYSxcbiAgaXNSZWFkT25seVxufSkgPT4ge1xuICAvLyBwcml2YXRlIGVkaXRvcj86IG1vbmFjby5lZGl0b3IuSVN0YW5kYWxvbmVDb2RlRWRpdG9yO1xuICBjb25zdCBzY2hlbWFUYWJsZU5hbWVzID0gdXNlTWVtbyhcbiAgICAoKSA9PiAodGFibGVTY2hlbWEgPyB1bmlxKHRhYmxlU2NoZW1hLm1hcChkID0+IGQudGFibGVfbmFtZSkpIDogW10pLFxuICAgIFt0YWJsZVNjaGVtYV1cbiAgKTtcbiAgY29uc3Qgc2NoZW1hVGFibGVOYW1lc1NldCA9IHVzZU1lbW8oKCkgPT4gbmV3IFNldChzY2hlbWFUYWJsZU5hbWVzKSwgW3NjaGVtYVRhYmxlTmFtZXNdKTtcbiAgY29uc3QgaGFuZGxlUnVuUXVlcnlSZWYgPSB1c2VSZWYob25SdW5RdWVyeSk7XG4gIGhhbmRsZVJ1blF1ZXJ5UmVmLmN1cnJlbnQgPSBvblJ1blF1ZXJ5O1xuXG4gIGNvbnN0IGhhbmRsZUVkaXRvckRpZE1vdW50OiBPbk1vdW50ID0gdXNlQ2FsbGJhY2soXG4gICAgZWRpdG9yID0+IHtcbiAgICAgIC8vIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgICAgZWRpdG9yLmZvY3VzKCk7XG5cbiAgICAgIGVkaXRvci5hZGRBY3Rpb24oe1xuICAgICAgICBpZDogJ3J1bi1xdWVyeScsXG4gICAgICAgIGxhYmVsOiAnUnVuIFF1ZXJ5JyxcbiAgICAgICAga2V5YmluZGluZ3M6IFtcbiAgICAgICAgICBtb25hY28uS2V5TW9kLkN0cmxDbWQgfCBtb25hY28uS2V5Q29kZS5FbnRlcixcbiAgICAgICAgICBtb25hY28uS2V5TW9kLlNoaWZ0IHwgbW9uYWNvLktleUNvZGUuRW50ZXJcbiAgICAgICAgXSxcbiAgICAgICAgY29udGV4dE1lbnVHcm91cElkOiAnY3VzdG9tJyxcbiAgICAgICAgY29udGV4dE1lbnVPcmRlcjogMCxcbiAgICAgICAgcnVuOiAoKSA9PiBoYW5kbGVSdW5RdWVyeVJlZi5jdXJyZW50KClcbiAgICAgIH0pO1xuXG4gICAgICBtb25hY28ubGFuZ3VhZ2VzLnJlZ2lzdGVyQ29tcGxldGlvbkl0ZW1Qcm92aWRlcignKicsIHtcbiAgICAgICAgcHJvdmlkZUNvbXBsZXRpb25JdGVtczogKG1vZGVsLCBwb3NpdGlvbiwgX2NvbnRleHQsIF9jYW5jZWxhdGlvblRva2VuKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnM6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1bXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdteUN1c3RvbVNuaXBwZXQnLFxuICAgICAgICAgICAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5TbmlwcGV0LFxuICAgICAgICAgICAgICBpbnNlcnRUZXh0OiAnVGhpcyBpcyBhIHBpZWNlIG9mIGN1c3RvbSBjb2RlJyxcbiAgICAgICAgICAgICAgaW5zZXJ0VGV4dFJ1bGVzOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtSW5zZXJ0VGV4dFJ1bGUuSW5zZXJ0QXNTbmlwcGV0LFxuICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uOiAnVGhpcyBpcyBhIHBpZWNlIG9mIGN1c3RvbSBjb2RlJ1xuICAgICAgICAgICAgICAvLyBUT0RPOiByYW5nZSBpcyBtaXNzaW5nXG4gICAgICAgICAgICB9IGFzIG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1cbiAgICAgICAgICBdO1xuXG4gICAgICAgICAgY29uc3QgZnVsbFF1ZXJ5VGV4dCA9IG1vZGVsLmdldFZhbHVlKCk7XG5cbiAgICAgICAgICBjb25zdCB0YWJsZU5hbWVzQW5kQWxpYXNlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFxuICAgICAgICAgICAgcGFyc2VTcWxBbmRGaW5kVGFibGVOYW1lQW5kQWxpYXNlcyhmdWxsUXVlcnlUZXh0KS5tYXAoKHt0YWJsZV9uYW1lLCBhbGlhc30pID0+IFtcbiAgICAgICAgICAgICAgYWxpYXMsXG4gICAgICAgICAgICAgIHRhYmxlX25hbWVcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IHRoaXNMaW5lID0gbW9kZWwuZ2V0VmFsdWVJblJhbmdlKHtcbiAgICAgICAgICAgIHN0YXJ0TGluZU51bWJlcjogcG9zaXRpb24ubGluZU51bWJlcixcbiAgICAgICAgICAgIHN0YXJ0Q29sdW1uOiAxLFxuICAgICAgICAgICAgZW5kTGluZU51bWJlcjogcG9zaXRpb24ubGluZU51bWJlcixcbiAgICAgICAgICAgIGVuZENvbHVtbjogcG9zaXRpb24uY29sdW1uXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QgdGhpc1Rva2VuID0gdGhpc0xpbmUudHJpbSgpLnNwbGl0KCcgJykuc2xpY2UoLTEpPy5bMF0gfHwgJyc7XG5cbiAgICAgICAgICBjb25zdCBsYXN0VG9rZW5CZWZvcmVTcGFjZSA9IC9cXHM/KFxcdyspXFxzK1xcdyskLy5leGVjKHRoaXNMaW5lLnRyaW0oKSk/LlsxXTtcbiAgICAgICAgICBjb25zdCBsYXN0VG9rZW5CZWZvcmVEb3QgPSAvKFxcdyspXFwuXFx3KiQvLmV4ZWModGhpc1Rva2VuKT8uWzFdO1xuXG4gICAgICAgICAgLy8gY29uc29sZS5sb2codGFibGVOYW1lc0FuZEFsaWFzZXMsIHRoaXNUb2tlbiwgbGFzdFRva2VuQmVmb3JlU3BhY2UsIGxhc3RUb2tlbkJlZm9yZURvdCk7XG5cbiAgICAgICAgICBpZiAobGFzdFRva2VuQmVmb3JlU3BhY2UgJiYgL2Zyb218am9pbnx1cGRhdGV8aW50by8udGVzdChsYXN0VG9rZW5CZWZvcmVTcGFjZSkpIHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLnB1c2goXG4gICAgICAgICAgICAgIC4uLnNjaGVtYVRhYmxlTmFtZXMubWFwKFxuICAgICAgICAgICAgICAgIHRhYmxlX25hbWUgPT5cbiAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0YWJsZV9uYW1lLFxuICAgICAgICAgICAgICAgICAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5GaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0VGV4dDogdGFibGVfbmFtZVxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiByYW5nZSBpcyBtaXNzaW5nXG4gICAgICAgICAgICAgICAgICB9IGFzIG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGxhc3RUb2tlbkJlZm9yZURvdCkge1xuICAgICAgICAgICAgbGV0IHRhYmxlX25hbWUgPSBudWxsIGFzIHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBpZiAoc2NoZW1hVGFibGVOYW1lc1NldC5oYXMobGFzdFRva2VuQmVmb3JlRG90KSkge1xuICAgICAgICAgICAgICB0YWJsZV9uYW1lID0gbGFzdFRva2VuQmVmb3JlRG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0YWJsZU5hbWVzQW5kQWxpYXNlcy5nZXQobGFzdFRva2VuQmVmb3JlRG90KSkge1xuICAgICAgICAgICAgICB0YWJsZV9uYW1lID0gdGFibGVOYW1lc0FuZEFsaWFzZXMuZ2V0KGxhc3RUb2tlbkJlZm9yZURvdCkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRhYmxlX25hbWUgJiYgdGFibGVTY2hlbWEpIHtcbiAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICAuLi50YWJsZVNjaGVtYVxuICAgICAgICAgICAgICAgICAgLmZpbHRlcihkID0+IGQudGFibGVfbmFtZSA9PT0gdGFibGVfbmFtZSlcbiAgICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgICh7Y29sdW1uX25hbWV9KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29sdW1uX25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5GaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydFRleHQ6IGNvbHVtbl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiByYW5nZSBpcyBtaXNzaW5nXG4gICAgICAgICAgICAgICAgICAgICAgfSBhcyBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdWdnZXN0aW9uczogdW5pcUJ5KHN1Z2dlc3Rpb25zLCBzID0+IHMuaW5zZXJ0VGV4dClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIFt0YWJsZVNjaGVtYSwgc2NoZW1hVGFibGVOYW1lcywgc2NoZW1hVGFibGVOYW1lc1NldF1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxFZGl0b3JcbiAgICAgIGhlaWdodD1cIjEwMCVcIlxuICAgICAgdGhlbWU9XCJ2cy1kYXJrXCJcbiAgICAgIGRlZmF1bHRMYW5ndWFnZT1cInNxbFwiXG4gICAgICBkZWZhdWx0VmFsdWU9e2NvZGV9XG4gICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICBvbk1vdW50PXtoYW5kbGVFZGl0b3JEaWRNb3VudH1cbiAgICAgIG9wdGlvbnM9e3tcbiAgICAgICAgLi4uTU9OQUNPX09QVElPTlMsXG4gICAgICAgIHJlYWRPbmx5OiBpc1JlYWRPbmx5XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb25hY29FZGl0b3I7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBOztBQUVBLE9BQU9BLEtBQUssSUFBR0MsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sUUFBTyxPQUFPO0FBQ3pELE9BQU9DLE1BQU0sTUFBMkIsc0JBQXNCO0FB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
|
|
167
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsInVzZVJlZiIsIkVkaXRvciIsIm1vbmFjbyIsInVuaXEiLCJ1bmlxQnkiLCJNT05BQ09fT1BUSU9OUyIsIm1pbmltYXAiLCJlbmFibGVkIiwibGFuZ3VhZ2UiLCJjb250ZXh0bWVudSIsInJlbmRlckxpbmVIaWdobGlnaHQiLCJzY3JvbGxCZXlvbmRMYXN0TGluZSIsInNjcm9sbGJhciIsImFsd2F5c0NvbnN1bWVNb3VzZVdoZWVsIiwib3ZlcnZpZXdSdWxlckxhbmVzIiwiYXV0b21hdGljTGF5b3V0IiwiYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXIiLCJxdWlja1N1Z2dlc3Rpb25zRGVsYXkiLCJtYXRjaE9uV29yZFN0YXJ0T25seSIsInRhYkNvbXBsZXRpb24iLCJsaW5lTnVtYmVycyIsInBhcnNlU3FsQW5kRmluZFRhYmxlTmFtZUFuZEFsaWFzZXMiLCJzcWwiLCJyZWdleCIsInRhYmxlcyIsIm1hdGNoIiwiZXhlYyIsInRhYmxlX25hbWUiLCJ0ZXN0IiwiYWxpYXMiLCJwdXNoIiwiTW9uYWNvRWRpdG9yIiwiX3JlZiIsIm9uUnVuUXVlcnkiLCJvbkNoYW5nZSIsImNvZGUiLCJ0YWJsZVNjaGVtYSIsImlzUmVhZE9ubHkiLCJzY2hlbWFUYWJsZU5hbWVzIiwibWFwIiwiZCIsInNjaGVtYVRhYmxlTmFtZXNTZXQiLCJTZXQiLCJoYW5kbGVSdW5RdWVyeVJlZiIsImN1cnJlbnQiLCJoYW5kbGVFZGl0b3JEaWRNb3VudCIsImVkaXRvciIsImZvY3VzIiwiYWRkQWN0aW9uIiwiaWQiLCJsYWJlbCIsImtleWJpbmRpbmdzIiwiS2V5TW9kIiwiQ3RybENtZCIsIktleUNvZGUiLCJFbnRlciIsIlNoaWZ0IiwiY29udGV4dE1lbnVHcm91cElkIiwiY29udGV4dE1lbnVPcmRlciIsInJ1biIsImxhbmd1YWdlcyIsInJlZ2lzdGVyQ29tcGxldGlvbkl0ZW1Qcm92aWRlciIsInByb3ZpZGVDb21wbGV0aW9uSXRlbXMiLCJtb2RlbCIsInBvc2l0aW9uIiwiX2NvbnRleHQiLCJfY2FuY2VsYXRpb25Ub2tlbiIsIl90aGlzTGluZSR0cmltJHNwbGl0JCIsIl9leGVjIiwiX2V4ZWMyIiwic3VnZ2VzdGlvbnMiLCJraW5kIiwiQ29tcGxldGlvbkl0ZW1LaW5kIiwiU25pcHBldCIsImluc2VydFRleHQiLCJpbnNlcnRUZXh0UnVsZXMiLCJDb21wbGV0aW9uSXRlbUluc2VydFRleHRSdWxlIiwiSW5zZXJ0QXNTbmlwcGV0IiwiZG9jdW1lbnRhdGlvbiIsImZ1bGxRdWVyeVRleHQiLCJnZXRWYWx1ZSIsInRhYmxlTmFtZXNBbmRBbGlhc2VzIiwiTWFwIiwiX3JlZjIiLCJ0aGlzTGluZSIsImdldFZhbHVlSW5SYW5nZSIsInN0YXJ0TGluZU51bWJlciIsImxpbmVOdW1iZXIiLCJzdGFydENvbHVtbiIsImVuZExpbmVOdW1iZXIiLCJlbmRDb2x1bW4iLCJjb2x1bW4iLCJ0aGlzVG9rZW4iLCJ0cmltIiwic3BsaXQiLCJzbGljZSIsImxhc3RUb2tlbkJlZm9yZVNwYWNlIiwibGFzdFRva2VuQmVmb3JlRG90IiwiYXBwbHkiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJGaWVsZCIsImhhcyIsImdldCIsImZpbHRlciIsIl9yZWYzIiwiY29sdW1uX25hbWUiLCJzIiwiY3JlYXRlRWxlbWVudCIsImhlaWdodCIsInRoZW1lIiwiZGVmYXVsdExhbmd1YWdlIiwiZGVmYXVsdFZhbHVlIiwib25Nb3VudCIsIm9wdGlvbnMiLCJfb2JqZWN0U3ByZWFkIiwicmVhZE9ubHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb25hY28tZWRpdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgRWRpdG9yLCB7T25DaGFuZ2UsIE9uTW91bnR9IGZyb20gJ0Btb25hY28tZWRpdG9yL3JlYWN0JztcbmltcG9ydCAqIGFzIG1vbmFjbyBmcm9tICdtb25hY28tZWRpdG9yJztcbi8vIGltcG9ydCB7dGFibGVTY2hlbWEgYXMgREVGQVVMVF9TQ0hFTUF9IGZyb20gJy4vdGFibGUtc2NoZW1hJztcbmltcG9ydCB1bmlxIGZyb20gJ2VzLXRvb2xraXQvY29tcGF0L3VuaXEnO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdlcy10b29sa2l0L2NvbXBhdC91bmlxQnknO1xuXG5jb25zdCBNT05BQ09fT1BUSU9OUzogbW9uYWNvLmVkaXRvci5JU3RhbmRhbG9uZUVkaXRvckNvbnN0cnVjdGlvbk9wdGlvbnMgPSB7XG4gIG1pbmltYXA6IHtlbmFibGVkOiBmYWxzZX0sXG4gIGxhbmd1YWdlOiAnc3FsJyxcbiAgY29udGV4dG1lbnU6IGZhbHNlLFxuICByZW5kZXJMaW5lSGlnaGxpZ2h0OiAnbm9uZScsXG4gIHNjcm9sbEJleW9uZExhc3RMaW5lOiBmYWxzZSxcbiAgc2Nyb2xsYmFyOiB7YWx3YXlzQ29uc3VtZU1vdXNlV2hlZWw6IGZhbHNlfSxcbiAgb3ZlcnZpZXdSdWxlckxhbmVzOiAwLFxuICBhdXRvbWF0aWNMYXlvdXQ6IHRydWUsXG4gIGFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyOiAnb24nLFxuICBxdWlja1N1Z2dlc3Rpb25zRGVsYXk6IDQwMCxcbiAgbWF0Y2hPbldvcmRTdGFydE9ubHk6IGZhbHNlLFxuICB0YWJDb21wbGV0aW9uOiAnb2ZmJyxcbiAgbGluZU51bWJlcnM6ICdvZmYnXG59O1xuXG5mdW5jdGlvbiBwYXJzZVNxbEFuZEZpbmRUYWJsZU5hbWVBbmRBbGlhc2VzKHNxbDogc3RyaW5nKSB7XG4gIGNvbnN0IHJlZ2V4ID0gL1xcYig/OkZST018Sk9JTilcXHMrKFteXFxzLl0rKD86XFwuW15cXHMuXSspPylcXHMqKD86QVMpP1xccyooW15cXHMsXSspPy9naTtcbiAgY29uc3QgdGFibGVzOiB7dGFibGVfbmFtZTogc3RyaW5nOyBhbGlhczogc3RyaW5nfVtdID0gW107XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMoc3FsKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgdGFibGVfbmFtZSA9IG1hdGNoWzFdO1xuICAgIGlmICghL1xcKC8udGVzdCh0YWJsZV9uYW1lKSkge1xuICAgICAgLy8gZXhjbHVkZSBmdW5jdGlvbiBjYWxsc1xuICAgICAgbGV0IGFsaWFzID0gbWF0Y2hbMl0gYXMgc3RyaW5nIHwgbnVsbDtcbiAgICAgIGlmIChhbGlhcyAmJiAvb258d2hlcmV8aW5uZXJ8bGVmdHxyaWdodHxqb2luLy50ZXN0KGFsaWFzKSkge1xuICAgICAgICBhbGlhcyA9IG51bGw7XG4gICAgICB9XG4gICAgICB0YWJsZXMucHVzaCh7XG4gICAgICAgIHRhYmxlX25hbWUsXG4gICAgICAgIGFsaWFzOiBhbGlhcyB8fCB0YWJsZV9uYW1lXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFibGVzO1xufVxuXG5pbnRlcmZhY2UgTW9uYWNvRWRpdG9yUHJvcHMge1xuICBjb2RlOiBzdHJpbmc7XG4gIGlzUmVhZE9ubHk/OiBib29sZWFuO1xuICBvbkNoYW5nZTogT25DaGFuZ2U7XG4gIG9uUnVuUXVlcnk6ICgpID0+IHZvaWQ7XG4gIHRhYmxlU2NoZW1hPzoge3RhYmxlX25hbWU6IHN0cmluZzsgY29sdW1uX25hbWU6IHN0cmluZ31bXTtcbn1cblxuY29uc3QgTW9uYWNvRWRpdG9yOiBSZWFjdC5GQzxNb25hY29FZGl0b3JQcm9wcz4gPSAoe1xuICBvblJ1blF1ZXJ5LFxuICBvbkNoYW5nZSxcbiAgY29kZSxcbiAgdGFibGVTY2hlbWEsXG4gIGlzUmVhZE9ubHlcbn0pID0+IHtcbiAgLy8gcHJpdmF0ZSBlZGl0b3I/OiBtb25hY28uZWRpdG9yLklTdGFuZGFsb25lQ29kZUVkaXRvcjtcbiAgY29uc3Qgc2NoZW1hVGFibGVOYW1lcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHRhYmxlU2NoZW1hID8gdW5pcSh0YWJsZVNjaGVtYS5tYXAoZCA9PiBkLnRhYmxlX25hbWUpKSA6IFtdKSxcbiAgICBbdGFibGVTY2hlbWFdXG4gICk7XG4gIGNvbnN0IHNjaGVtYVRhYmxlTmFtZXNTZXQgPSB1c2VNZW1vKCgpID0+IG5ldyBTZXQoc2NoZW1hVGFibGVOYW1lcyksIFtzY2hlbWFUYWJsZU5hbWVzXSk7XG4gIGNvbnN0IGhhbmRsZVJ1blF1ZXJ5UmVmID0gdXNlUmVmKG9uUnVuUXVlcnkpO1xuICBoYW5kbGVSdW5RdWVyeVJlZi5jdXJyZW50ID0gb25SdW5RdWVyeTtcblxuICBjb25zdCBoYW5kbGVFZGl0b3JEaWRNb3VudDogT25Nb3VudCA9IHVzZUNhbGxiYWNrKFxuICAgIGVkaXRvciA9PiB7XG4gICAgICAvLyB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICAgIGVkaXRvci5mb2N1cygpO1xuXG4gICAgICBlZGl0b3IuYWRkQWN0aW9uKHtcbiAgICAgICAgaWQ6ICdydW4tcXVlcnknLFxuICAgICAgICBsYWJlbDogJ1J1biBRdWVyeScsXG4gICAgICAgIGtleWJpbmRpbmdzOiBbXG4gICAgICAgICAgbW9uYWNvLktleU1vZC5DdHJsQ21kIHwgbW9uYWNvLktleUNvZGUuRW50ZXIsXG4gICAgICAgICAgbW9uYWNvLktleU1vZC5TaGlmdCB8IG1vbmFjby5LZXlDb2RlLkVudGVyXG4gICAgICAgIF0sXG4gICAgICAgIGNvbnRleHRNZW51R3JvdXBJZDogJ2N1c3RvbScsXG4gICAgICAgIGNvbnRleHRNZW51T3JkZXI6IDAsXG4gICAgICAgIHJ1bjogKCkgPT4gaGFuZGxlUnVuUXVlcnlSZWYuY3VycmVudCgpXG4gICAgICB9KTtcblxuICAgICAgbW9uYWNvLmxhbmd1YWdlcy5yZWdpc3RlckNvbXBsZXRpb25JdGVtUHJvdmlkZXIoJyonLCB7XG4gICAgICAgIHByb3ZpZGVDb21wbGV0aW9uSXRlbXM6IChtb2RlbCwgcG9zaXRpb24sIF9jb250ZXh0LCBfY2FuY2VsYXRpb25Ub2tlbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnbXlDdXN0b21TbmlwcGV0JyxcbiAgICAgICAgICAgICAga2luZDogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuU25pcHBldCxcbiAgICAgICAgICAgICAgaW5zZXJ0VGV4dDogJ1RoaXMgaXMgYSBwaWVjZSBvZiBjdXN0b20gY29kZScsXG4gICAgICAgICAgICAgIGluc2VydFRleHRSdWxlczogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUluc2VydFRleHRSdWxlLkluc2VydEFzU25pcHBldCxcbiAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbjogJ1RoaXMgaXMgYSBwaWVjZSBvZiBjdXN0b20gY29kZSdcbiAgICAgICAgICAgICAgLy8gVE9ETzogcmFuZ2UgaXMgbWlzc2luZ1xuICAgICAgICAgICAgfSBhcyBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtXG4gICAgICAgICAgXTtcblxuICAgICAgICAgIGNvbnN0IGZ1bGxRdWVyeVRleHQgPSBtb2RlbC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgICAgY29uc3QgdGFibGVOYW1lc0FuZEFsaWFzZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihcbiAgICAgICAgICAgIHBhcnNlU3FsQW5kRmluZFRhYmxlTmFtZUFuZEFsaWFzZXMoZnVsbFF1ZXJ5VGV4dCkubWFwKCh7dGFibGVfbmFtZSwgYWxpYXN9KSA9PiBbXG4gICAgICAgICAgICAgIGFsaWFzLFxuICAgICAgICAgICAgICB0YWJsZV9uYW1lXG4gICAgICAgICAgICBdKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCB0aGlzTGluZSA9IG1vZGVsLmdldFZhbHVlSW5SYW5nZSh7XG4gICAgICAgICAgICBzdGFydExpbmVOdW1iZXI6IHBvc2l0aW9uLmxpbmVOdW1iZXIsXG4gICAgICAgICAgICBzdGFydENvbHVtbjogMSxcbiAgICAgICAgICAgIGVuZExpbmVOdW1iZXI6IHBvc2l0aW9uLmxpbmVOdW1iZXIsXG4gICAgICAgICAgICBlbmRDb2x1bW46IHBvc2l0aW9uLmNvbHVtblxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IHRoaXNUb2tlbiA9IHRoaXNMaW5lLnRyaW0oKS5zcGxpdCgnICcpLnNsaWNlKC0xKT8uWzBdIHx8ICcnO1xuXG4gICAgICAgICAgY29uc3QgbGFzdFRva2VuQmVmb3JlU3BhY2UgPSAvXFxzPyhcXHcrKVxccytcXHcrJC8uZXhlYyh0aGlzTGluZS50cmltKCkpPy5bMV07XG4gICAgICAgICAgY29uc3QgbGFzdFRva2VuQmVmb3JlRG90ID0gLyhcXHcrKVxcLlxcdyokLy5leGVjKHRoaXNUb2tlbik/LlsxXTtcblxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRhYmxlTmFtZXNBbmRBbGlhc2VzLCB0aGlzVG9rZW4sIGxhc3RUb2tlbkJlZm9yZVNwYWNlLCBsYXN0VG9rZW5CZWZvcmVEb3QpO1xuXG4gICAgICAgICAgaWYgKGxhc3RUb2tlbkJlZm9yZVNwYWNlICYmIC9mcm9tfGpvaW58dXBkYXRlfGludG8vLnRlc3QobGFzdFRva2VuQmVmb3JlU3BhY2UpKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAuLi5zY2hlbWFUYWJsZU5hbWVzLm1hcChcbiAgICAgICAgICAgICAgICB0YWJsZV9uYW1lID0+XG4gICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGFibGVfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAga2luZDogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuRmllbGQsXG4gICAgICAgICAgICAgICAgICAgIGluc2VydFRleHQ6IHRhYmxlX25hbWVcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogcmFuZ2UgaXMgbWlzc2luZ1xuICAgICAgICAgICAgICAgICAgfSBhcyBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChsYXN0VG9rZW5CZWZvcmVEb3QpIHtcbiAgICAgICAgICAgIGxldCB0YWJsZV9uYW1lID0gbnVsbCBhcyBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgaWYgKHNjaGVtYVRhYmxlTmFtZXNTZXQuaGFzKGxhc3RUb2tlbkJlZm9yZURvdCkpIHtcbiAgICAgICAgICAgICAgdGFibGVfbmFtZSA9IGxhc3RUb2tlbkJlZm9yZURvdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGFibGVOYW1lc0FuZEFsaWFzZXMuZ2V0KGxhc3RUb2tlbkJlZm9yZURvdCkpIHtcbiAgICAgICAgICAgICAgdGFibGVfbmFtZSA9IHRhYmxlTmFtZXNBbmRBbGlhc2VzLmdldChsYXN0VG9rZW5CZWZvcmVEb3QpIGFzIHN0cmluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0YWJsZV9uYW1lICYmIHRhYmxlU2NoZW1hKSB7XG4gICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgLi4udGFibGVTY2hlbWFcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZCA9PiBkLnRhYmxlX25hbWUgPT09IHRhYmxlX25hbWUpXG4gICAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoe2NvbHVtbl9uYW1lfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNvbHVtbl9uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAga2luZDogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuRmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRUZXh0OiBjb2x1bW5fbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogcmFuZ2UgaXMgbWlzc2luZ1xuICAgICAgICAgICAgICAgICAgICAgIH0gYXMgbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6IHVuaXFCeShzdWdnZXN0aW9ucywgcyA9PiBzLmluc2VydFRleHQpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbdGFibGVTY2hlbWEsIHNjaGVtYVRhYmxlTmFtZXMsIHNjaGVtYVRhYmxlTmFtZXNTZXRdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8RWRpdG9yXG4gICAgICBoZWlnaHQ9XCIxMDAlXCJcbiAgICAgIHRoZW1lPVwidnMtZGFya1wiXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2U9XCJzcWxcIlxuICAgICAgZGVmYXVsdFZhbHVlPXtjb2RlfVxuICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgb25Nb3VudD17aGFuZGxlRWRpdG9yRGlkTW91bnR9XG4gICAgICBvcHRpb25zPXt7XG4gICAgICAgIC4uLk1PTkFDT19PUFRJT05TLFxuICAgICAgICByZWFkT25seTogaXNSZWFkT25seVxuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9uYWNvRWRpdG9yO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTs7QUFFQSxPQUFPQSxLQUFLLElBQUdDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLFFBQU8sT0FBTztBQUN6RCxPQUFP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
|