@payloadcms/db-postgres 0.1.0-beta.15 → 0.1.0-beta.17

Sign up to get free protection for your applications and to get access to all the features.
@@ -224,7 +224,7 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
224
224
  case 'upload':
225
225
  {
226
226
  let relationshipFields;
227
- const relationTableName = `${tableName}_relationships`;
227
+ const relationTableName = `${tableName}_rels`;
228
228
  const newCollectionPath = pathSegments.slice(1).join('.');
229
229
  const aliasRelationshipTableName = (0, _uuid.v4)();
230
230
  const aliasRelationshipTable = (0, _pgcore.alias)(adapter.tables[relationTableName], aliasRelationshipTableName);
@@ -330,4 +330,4 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
330
330
  throw new _errors.APIError(`Cannot find field for path at ${fieldPath}`);
331
331
  };
332
332
 
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGVxLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IGFsaWFzIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBHZW5lcmljVGFibGUsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXMsIEJ1aWxkUXVlcnlKb2lucyB9IGZyb20gJy4vYnVpbGRRdWVyeSdcblxudHlwZSBDb25zdHJhaW50ID0ge1xuICBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgdGFibGU6IEdlbmVyaWNUYWJsZVxuICB2YWx1ZTogdW5rbm93blxufVxuXG50eXBlIFRhYmxlQ29sdW1uID0ge1xuICBjb2x1bW5OYW1lPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzOiBDb25zdHJhaW50W11cbiAgZmllbGQ6IEZpZWxkQWZmZWN0aW5nRGF0YVxuICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZT86ICh2YWw6IHVua25vd24pID0+IHN0cmluZ1xuICBwYXRoU2VnbWVudHM/OiBzdHJpbmdbXVxuICByYXdDb2x1bW4/OiBTUUxcbiAgdGFibGU6IEdlbmVyaWNUYWJsZVxufVxuXG50eXBlIEFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBhbGlhc1RhYmxlPzogR2VuZXJpY1RhYmxlXG4gIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmdcbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzPzogQ29uc3RyYWludFtdXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBqb2luQWxpYXNlczogQnVpbGRRdWVyeUpvaW5BbGlhc2VzXG4gIGpvaW5zOiBCdWlsZFF1ZXJ5Sm9pbnNcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBhdGhTZWdtZW50czogc3RyaW5nW11cbiAgc2VsZWN0RmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBHZW5lcmljQ29sdW1uPlxuICB0YWJsZU5hbWU6IHN0cmluZ1xufVxuLyoqXG4gKiBUcmFuc2Zvcm1zIHBhdGggdG8gdGFibGUgYW5kIGNvbHVtbiBuYW1lXG4gKiBBZGRzIHRhYmxlcyB0byBgam9pbmBcbiAqIEByZXR1cm5zIFRhYmxlQ29sdW1uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUYWJsZUNvbHVtbkZyb21QYXRoID0gKHtcbiAgYWRhcHRlcixcbiAgYWxpYXNUYWJsZSxcbiAgY29sbGVjdGlvblBhdGgsXG4gIGNvbHVtblByZWZpeCA9ICcnLFxuICBjb25zdHJhaW50cyA9IFtdLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlOiBpbmNvbWluZ0xvY2FsZSxcbiAgcGF0aFNlZ21lbnRzOiBpbmNvbWluZ1NlZ21lbnRzLFxuICBzZWxlY3RGaWVsZHMsXG4gIHRhYmxlTmFtZSxcbn06IEFyZ3MpOiBUYWJsZUNvbHVtbiA9PiB7XG4gIGNvbnN0IGZpZWxkUGF0aCA9IGluY29taW5nU2VnbWVudHNbMF1cbiAgbGV0IGxvY2FsZSA9IGluY29taW5nTG9jYWxlXG4gIGNvbnN0IGZpZWxkID0gZmxhdHRlblRvcExldmVsRmllbGRzKGZpZWxkcyBhcyBGaWVsZFtdKS5maW5kKFxuICAgIChmaWVsZFRvRmluZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZFRvRmluZCkgJiYgZmllbGRUb0ZpbmQubmFtZSA9PT0gZmllbGRQYXRoLFxuICApIGFzIEZpZWxkIHwgVGFiQXNGaWVsZFxuICBsZXQgbmV3VGFibGVOYW1lID0gdGFibGVOYW1lXG5cbiAgaWYgKCFmaWVsZCAmJiBmaWVsZFBhdGggPT09ICdpZCcpIHtcbiAgICBzZWxlY3RGaWVsZHMuaWQgPSBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLmlkXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbHVtbk5hbWU6ICdpZCcsXG4gICAgICBjb25zdHJhaW50cyxcbiAgICAgIGZpZWxkOiB7XG4gICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgfSxcbiAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZCkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IFsuLi5pbmNvbWluZ1NlZ21lbnRzXVxuXG4gICAgLy8gSWYgbmV4dCBzZWdtZW50IGlzIGEgbG9jYWxlLFxuICAgIC8vIHdlIG5lZWQgdG8gdGFrZSBpdCBvdXQgYW5kIHVzZSBpdCBhcyB0aGUgbG9jYWxlIGZyb20gdGhpcyBwb2ludCBvblxuICAgIGlmICgnbG9jYWxpemVkJyBpbiBmaWVsZCAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IG1hdGNoZWRMb2NhbGUgPSBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5maW5kKFxuICAgICAgICAobG9jYWxlKSA9PiBsb2NhbGUgPT09IHBhdGhTZWdtZW50c1sxXSxcbiAgICAgIClcblxuICAgICAgaWYgKG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgbG9jYWxlID0gbWF0Y2hlZExvY2FsZVxuICAgICAgICBwYXRoU2VnbWVudHMuc3BsaWNlKDEsIDEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7XG4gICAgICAgICAgICAuLi50YWIsXG4gICAgICAgICAgICB0eXBlOiAndGFiJyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgICAgaWYgKHRhYkhhc05hbWUoZmllbGQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1fYCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRUYWJsZUNvbHVtbkZyb21QYXRoKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgY29sbGVjdGlvblBhdGgsXG4gICAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICBpZiAobG9jYWxlICYmIGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fbG9jYWxlc2BcblxuICAgICAgICAgIGpvaW5zW3RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9X2AsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGFuZChcbiAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKSxcbiAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX2xvY2FsZSwgbG9jYWxlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElELFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICAgIGxldCBibG9ja1RhYmxlQ29sdW1uOiBUYWJsZUNvbHVtblxuICAgICAgICBsZXQgbmV3VGFibGVOYW1lOiBzdHJpbmdcbiAgICAgICAgY29uc3QgaGFzQmxvY2tGaWVsZCA9IGZpZWxkLmJsb2Nrcy5zb21lKChibG9jaykgPT4ge1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fYmxvY2tzXyR7dG9TbmFrZUNhc2UoYmxvY2suc2x1Zyl9YFxuICAgICAgICAgIGxldCByZXN1bHRcbiAgICAgICAgICBjb25zdCBibG9ja0NvbnN0cmFpbnRzID0gW11cbiAgICAgICAgICBjb25zdCBibG9ja1NlbGVjdEZpZWxkcyA9IHt9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHM6IGJsb2NrQ29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgICAgam9pbnMsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICAgIHNlbGVjdEZpZWxkczogYmxvY2tTZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBmaW5lLCBub3QgZXZlcnkgYmxvY2sgd2lsbCBoYXZlIHRoZSBmaWVsZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGJsb2NrVGFibGVDb2x1bW4gPSByZXN1bHRcbiAgICAgICAgICBjb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLmNvbmNhdChibG9ja0NvbnN0cmFpbnRzKVxuICAgICAgICAgIHNlbGVjdEZpZWxkcyA9IHsgLi4uc2VsZWN0RmllbGRzLCAuLi5ibG9ja1NlbGVjdEZpZWxkcyB9XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGFuZChcbiAgICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCwgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQpLFxuICAgICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9sb2NhbGUsIGxvY2FsZSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEoXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElELFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH0pXG4gICAgICAgIGlmIChoYXNCbG9ja0ZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IGJsb2NrVGFibGVDb2x1bW4uY29sdW1uTmFtZSxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQ6IGJsb2NrVGFibGVDb2x1bW4uZmllbGQsXG4gICAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICAgIHJhd0NvbHVtbjogYmxvY2tUYWJsZUNvbHVtbi5yYXdDb2x1bW4sXG4gICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmVsYXRpb25zaGlwJzpcbiAgICAgIGNhc2UgJ3VwbG9hZCc6IHtcbiAgICAgICAgbGV0IHJlbGF0aW9uc2hpcEZpZWxkc1xuICAgICAgICBjb25zdCByZWxhdGlvblRhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fcmVsYXRpb25zaGlwc2BcbiAgICAgICAgY29uc3QgbmV3Q29sbGVjdGlvblBhdGggPSBwYXRoU2VnbWVudHMuc2xpY2UoMSkuam9pbignLicpXG5cbiAgICAgICAgY29uc3QgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUgPSB1dWlkKClcbiAgICAgICAgY29uc3QgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSA9IGFsaWFzKFxuICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3JlbGF0aW9uVGFibGVOYW1lXSxcbiAgICAgICAgICBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEpvaW4gaW4gdGhlIHJlbGF0aW9uc2hpcHMgdGFibGVcbiAgICAgICAgam9pbkFsaWFzZXMucHVzaCh7XG4gICAgICAgICAgY29uZGl0aW9uOiBlcShcbiAgICAgICAgICAgIChhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pLmlkLFxuICAgICAgICAgICAgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXJlbnQsXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgfSlcblxuICAgICAgICBzZWxlY3RGaWVsZHNbYCR7cmVsYXRpb25UYWJsZU5hbWV9LnBhdGhgXSA9IGFsaWFzUmVsYXRpb25zaGlwVGFibGUucGF0aFxuXG4gICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgIGNvbHVtbk5hbWU6ICdwYXRoJyxcbiAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICB2YWx1ZTogZmllbGQubmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBsZXQgbmV3QWxpYXNUYWJsZVxuXG4gICAgICAgIGlmICh0eXBlb2YgZmllbGQucmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0b1NuYWtlQ2FzZShmaWVsZC5yZWxhdGlvblRvKX1gXG4gICAgICAgICAgLy8gcGFyZW50IHRvIHJlbGF0aW9uc2hpcCBqb2luIHRhYmxlXG4gICAgICAgICAgcmVsYXRpb25zaGlwRmllbGRzID0gYWRhcHRlci5wYXlsb2FkLmNvbGxlY3Rpb25zW2ZpZWxkLnJlbGF0aW9uVG9dLmNvbmZpZy5maWVsZHNcblxuICAgICAgICAgIG5ld0FsaWFzVGFibGUgPSBhbGlhcyhhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLCB0b1NuYWtlQ2FzZSh1dWlkKCkpKVxuXG4gICAgICAgICAgam9pbkFsaWFzZXMucHVzaCh7XG4gICAgICAgICAgICBjb25kaXRpb246IGVxKG5ld0FsaWFzVGFibGUuaWQsIGFsaWFzUmVsYXRpb25zaGlwVGFibGVbYCR7ZmllbGQucmVsYXRpb25Ub31JRGBdKSxcbiAgICAgICAgICAgIHRhYmxlOiBuZXdBbGlhc1RhYmxlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiBgJHtmaWVsZC5yZWxhdGlvblRvfUlEYCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICd2YWx1ZScpIHtcbiAgICAgICAgICBjb25zdCB0YWJsZUNvbHVtbnNOYW1lcyA9IGZpZWxkLnJlbGF0aW9uVG8ubWFwKFxuICAgICAgICAgICAgKHJlbGF0aW9uVG8pID0+IGBcIiR7YWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWV9XCIuXCIke3RvU25ha2VDYXNlKHJlbGF0aW9uVG8pfV9pZFwiYCxcbiAgICAgICAgICApXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICByYXdDb2x1bW46IHNxbC5yYXcoYENPQUxFU0NFKCR7dGFibGVDb2x1bW5zTmFtZXMuam9pbignLCAnKX0pYCksXG4gICAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICdyZWxhdGlvblRvJykge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uVG8gPSBBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pID8gZmllbGQucmVsYXRpb25UbyA6IFtmaWVsZC5yZWxhdGlvblRvXVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZTogKHZhbCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkUmVsYXRpb24gPSByZWxhdGlvblRvLmZpbmQoKHJlbGF0aW9uKSA9PiByZWxhdGlvbiA9PT0gdmFsKVxuICAgICAgICAgICAgICBpZiAobWF0Y2hlZFJlbGF0aW9uKSByZXR1cm4gYCR7bWF0Y2hlZFJlbGF0aW9ufUlEYFxuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBBUElFcnJvcignTm90IHN1cHBvcnRlZCcpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlOiBuZXdBbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoOiBuZXdDb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IHJlbGF0aW9uc2hpcEZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICAgIC8vIElmIGxvY2FsaXplZCwgd2UgZ28gdG8gbG9jYWxpemVkIHRhYmxlIGFuZCBzZXQgYWxpYXNUYWJsZSB0byB1bmRlZmluZWRcbiAgICAgICAgICAgIC8vIHNvIGl0IGlzIG5vdCBwaWNrZWQgdXAgYmVsb3cgdG8gYmUgdXNlZCBhcyB0YXJnZXRUYWJsZVxuICAgICAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV9sb2NhbGVzYFxuXG4gICAgICAgICAgICBjb25zdCBwYXJlbnRUYWJsZSA9IGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXVxuXG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEocGFyZW50VGFibGUuaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKVxuXG4gICAgICAgICAgICBhbGlhc1RhYmxlID0gdW5kZWZpbmVkXG5cbiAgICAgICAgICAgIGlmIChsb2NhbGUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHRhcmdldFRhYmxlID0gYWxpYXNUYWJsZSB8fCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdXG5cbiAgICAgICAgICBzZWxlY3RGaWVsZHNbYCR7bmV3VGFibGVOYW1lfS4ke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9YF0gPVxuICAgICAgICAgICAgdGFyZ2V0VGFibGVbYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1gXVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IGAke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9YCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cyxcbiAgICAgICAgICAgIHRhYmxlOiB0YXJnZXRUYWJsZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgQVBJRXJyb3IoYENhbm5vdCBmaW5kIGZpZWxkIGZvciBwYXRoIGF0ICR7ZmllbGRQYXRofWApXG59XG4iXSwibmFtZXMiOlsiZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCIsImFkYXB0ZXIiLCJhbGlhc1RhYmxlIiwiY29sbGVjdGlvblBhdGgiLCJjb2x1bW5QcmVmaXgiLCJjb25zdHJhaW50cyIsImZpZWxkcyIsImpvaW5BbGlhc2VzIiwiam9pbnMiLCJsb2NhbGUiLCJpbmNvbWluZ0xvY2FsZSIsInBhdGhTZWdtZW50cyIsImluY29taW5nU2VnbWVudHMiLCJzZWxlY3RGaWVsZHMiLCJ0YWJsZU5hbWUiLCJmaWVsZFBhdGgiLCJmaWVsZCIsImZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyIsImZpbmQiLCJmaWVsZFRvRmluZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJuYW1lIiwibmV3VGFibGVOYW1lIiwiaWQiLCJ0YWJsZXMiLCJjb2x1bW5OYW1lIiwidHlwZSIsInRhYmxlIiwibG9jYWxpemVkIiwicGF5bG9hZCIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsIm1hdGNoZWRMb2NhbGUiLCJsb2NhbGVDb2RlcyIsInNwbGljZSIsInRhYnMiLCJtYXAiLCJ0YWIiLCJzbGljZSIsInRhYkhhc05hbWUiLCJlcSIsIl9wYXJlbnRJRCIsInB1c2giLCJ2YWx1ZSIsInRvU25ha2VDYXNlIiwiYW5kIiwiX2xvY2FsZSIsImJsb2NrVGFibGVDb2x1bW4iLCJoYXNCbG9ja0ZpZWxkIiwiYmxvY2tzIiwic29tZSIsImJsb2NrIiwic2x1ZyIsInJlc3VsdCIsImJsb2NrQ29uc3RyYWludHMiLCJibG9ja1NlbGVjdEZpZWxkcyIsImVycm9yIiwiY29uY2F0IiwicmF3Q29sdW1uIiwicmVsYXRpb25zaGlwRmllbGRzIiwicmVsYXRpb25UYWJsZU5hbWUiLCJuZXdDb2xsZWN0aW9uUGF0aCIsImpvaW4iLCJhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSIsInV1aWQiLCJhbGlhc1JlbGF0aW9uc2hpcFRhYmxlIiwiYWxpYXMiLCJjb25kaXRpb24iLCJwYXJlbnQiLCJwYXRoIiwibmV3QWxpYXNUYWJsZSIsInJlbGF0aW9uVG8iLCJjb2xsZWN0aW9ucyIsInRhYmxlQ29sdW1uc05hbWVzIiwic3FsIiwicmF3IiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0Tm90TnVsbENvbHVtbkJ5VmFsdWUiLCJ2YWwiLCJtYXRjaGVkUmVsYXRpb24iLCJyZWxhdGlvbiIsInVuZGVmaW5lZCIsIkFQSUVycm9yIiwicGFyZW50VGFibGUiLCJ0YXJnZXRUYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQWtEdkJBOzs7ZUFBQUE7Ozs0QkE5Q2dCO3dCQUNQO3dCQUNHO3VCQUNvQjsyQkFDUDtvRUFDZDtzQkFDRzs7Ozs7O0FBd0NwQixNQUFNQSx5QkFBeUIsQ0FBQyxFQUNyQ0MsT0FBTyxFQUNQQyxVQUFVLEVBQ1ZDLGNBQWMsRUFDZEMsZUFBZSxFQUFFLEVBQ2pCQyxjQUFjLEVBQUUsRUFDaEJDLE1BQU0sRUFDTkMsV0FBVyxFQUNYQyxLQUFLLEVBQ0xDLFFBQVFDLGNBQWMsRUFDdEJDLGNBQWNDLGdCQUFnQixFQUM5QkMsWUFBWSxFQUNaQyxTQUFTLEVBQ0o7SUFDTCxNQUFNQyxZQUFZSCxnQkFBZ0Is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
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGVxLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IGFsaWFzIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBHZW5lcmljVGFibGUsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXMsIEJ1aWxkUXVlcnlKb2lucyB9IGZyb20gJy4vYnVpbGRRdWVyeSdcblxudHlwZSBDb25zdHJhaW50ID0ge1xuICBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgdGFibGU6IEdlbmVyaWNUYWJsZVxuICB2YWx1ZTogdW5rbm93blxufVxuXG50eXBlIFRhYmxlQ29sdW1uID0ge1xuICBjb2x1bW5OYW1lPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzOiBDb25zdHJhaW50W11cbiAgZmllbGQ6IEZpZWxkQWZmZWN0aW5nRGF0YVxuICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZT86ICh2YWw6IHVua25vd24pID0+IHN0cmluZ1xuICBwYXRoU2VnbWVudHM/OiBzdHJpbmdbXVxuICByYXdDb2x1bW4/OiBTUUxcbiAgdGFibGU6IEdlbmVyaWNUYWJsZVxufVxuXG50eXBlIEFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBhbGlhc1RhYmxlPzogR2VuZXJpY1RhYmxlXG4gIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmdcbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzPzogQ29uc3RyYWludFtdXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBqb2luQWxpYXNlczogQnVpbGRRdWVyeUpvaW5BbGlhc2VzXG4gIGpvaW5zOiBCdWlsZFF1ZXJ5Sm9pbnNcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBhdGhTZWdtZW50czogc3RyaW5nW11cbiAgc2VsZWN0RmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBHZW5lcmljQ29sdW1uPlxuICB0YWJsZU5hbWU6IHN0cmluZ1xufVxuLyoqXG4gKiBUcmFuc2Zvcm1zIHBhdGggdG8gdGFibGUgYW5kIGNvbHVtbiBuYW1lXG4gKiBBZGRzIHRhYmxlcyB0byBgam9pbmBcbiAqIEByZXR1cm5zIFRhYmxlQ29sdW1uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUYWJsZUNvbHVtbkZyb21QYXRoID0gKHtcbiAgYWRhcHRlcixcbiAgYWxpYXNUYWJsZSxcbiAgY29sbGVjdGlvblBhdGgsXG4gIGNvbHVtblByZWZpeCA9ICcnLFxuICBjb25zdHJhaW50cyA9IFtdLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlOiBpbmNvbWluZ0xvY2FsZSxcbiAgcGF0aFNlZ21lbnRzOiBpbmNvbWluZ1NlZ21lbnRzLFxuICBzZWxlY3RGaWVsZHMsXG4gIHRhYmxlTmFtZSxcbn06IEFyZ3MpOiBUYWJsZUNvbHVtbiA9PiB7XG4gIGNvbnN0IGZpZWxkUGF0aCA9IGluY29taW5nU2VnbWVudHNbMF1cbiAgbGV0IGxvY2FsZSA9IGluY29taW5nTG9jYWxlXG4gIGNvbnN0IGZpZWxkID0gZmxhdHRlblRvcExldmVsRmllbGRzKGZpZWxkcyBhcyBGaWVsZFtdKS5maW5kKFxuICAgIChmaWVsZFRvRmluZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZFRvRmluZCkgJiYgZmllbGRUb0ZpbmQubmFtZSA9PT0gZmllbGRQYXRoLFxuICApIGFzIEZpZWxkIHwgVGFiQXNGaWVsZFxuICBsZXQgbmV3VGFibGVOYW1lID0gdGFibGVOYW1lXG5cbiAgaWYgKCFmaWVsZCAmJiBmaWVsZFBhdGggPT09ICdpZCcpIHtcbiAgICBzZWxlY3RGaWVsZHMuaWQgPSBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLmlkXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbHVtbk5hbWU6ICdpZCcsXG4gICAgICBjb25zdHJhaW50cyxcbiAgICAgIGZpZWxkOiB7XG4gICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgfSxcbiAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZCkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IFsuLi5pbmNvbWluZ1NlZ21lbnRzXVxuXG4gICAgLy8gSWYgbmV4dCBzZWdtZW50IGlzIGEgbG9jYWxlLFxuICAgIC8vIHdlIG5lZWQgdG8gdGFrZSBpdCBvdXQgYW5kIHVzZSBpdCBhcyB0aGUgbG9jYWxlIGZyb20gdGhpcyBwb2ludCBvblxuICAgIGlmICgnbG9jYWxpemVkJyBpbiBmaWVsZCAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IG1hdGNoZWRMb2NhbGUgPSBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5maW5kKFxuICAgICAgICAobG9jYWxlKSA9PiBsb2NhbGUgPT09IHBhdGhTZWdtZW50c1sxXSxcbiAgICAgIClcblxuICAgICAgaWYgKG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgbG9jYWxlID0gbWF0Y2hlZExvY2FsZVxuICAgICAgICBwYXRoU2VnbWVudHMuc3BsaWNlKDEsIDEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7XG4gICAgICAgICAgICAuLi50YWIsXG4gICAgICAgICAgICB0eXBlOiAndGFiJyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgICAgaWYgKHRhYkhhc05hbWUoZmllbGQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1fYCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRUYWJsZUNvbHVtbkZyb21QYXRoKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgY29sbGVjdGlvblBhdGgsXG4gICAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICBpZiAobG9jYWxlICYmIGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fbG9jYWxlc2BcblxuICAgICAgICAgIGpvaW5zW3RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9X2AsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGFuZChcbiAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKSxcbiAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX2xvY2FsZSwgbG9jYWxlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElELFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICAgIGxldCBibG9ja1RhYmxlQ29sdW1uOiBUYWJsZUNvbHVtblxuICAgICAgICBsZXQgbmV3VGFibGVOYW1lOiBzdHJpbmdcbiAgICAgICAgY29uc3QgaGFzQmxvY2tGaWVsZCA9IGZpZWxkLmJsb2Nrcy5zb21lKChibG9jaykgPT4ge1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fYmxvY2tzXyR7dG9TbmFrZUNhc2UoYmxvY2suc2x1Zyl9YFxuICAgICAgICAgIGxldCByZXN1bHRcbiAgICAgICAgICBjb25zdCBibG9ja0NvbnN0cmFpbnRzID0gW11cbiAgICAgICAgICBjb25zdCBibG9ja1NlbGVjdEZpZWxkcyA9IHt9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHM6IGJsb2NrQ29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgICAgam9pbnMsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICAgIHNlbGVjdEZpZWxkczogYmxvY2tTZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBmaW5lLCBub3QgZXZlcnkgYmxvY2sgd2lsbCBoYXZlIHRoZSBmaWVsZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGJsb2NrVGFibGVDb2x1bW4gPSByZXN1bHRcbiAgICAgICAgICBjb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLmNvbmNhdChibG9ja0NvbnN0cmFpbnRzKVxuICAgICAgICAgIHNlbGVjdEZpZWxkcyA9IHsgLi4uc2VsZWN0RmllbGRzLCAuLi5ibG9ja1NlbGVjdEZpZWxkcyB9XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGFuZChcbiAgICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCwgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQpLFxuICAgICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9sb2NhbGUsIGxvY2FsZSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEoXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElELFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH0pXG4gICAgICAgIGlmIChoYXNCbG9ja0ZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IGJsb2NrVGFibGVDb2x1bW4uY29sdW1uTmFtZSxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQ6IGJsb2NrVGFibGVDb2x1bW4uZmllbGQsXG4gICAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICAgIHJhd0NvbHVtbjogYmxvY2tUYWJsZUNvbHVtbi5yYXdDb2x1bW4sXG4gICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmVsYXRpb25zaGlwJzpcbiAgICAgIGNhc2UgJ3VwbG9hZCc6IHtcbiAgICAgICAgbGV0IHJlbGF0aW9uc2hpcEZpZWxkc1xuICAgICAgICBjb25zdCByZWxhdGlvblRhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fcmVsc2BcbiAgICAgICAgY29uc3QgbmV3Q29sbGVjdGlvblBhdGggPSBwYXRoU2VnbWVudHMuc2xpY2UoMSkuam9pbignLicpXG5cbiAgICAgICAgY29uc3QgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUgPSB1dWlkKClcbiAgICAgICAgY29uc3QgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSA9IGFsaWFzKFxuICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3JlbGF0aW9uVGFibGVOYW1lXSxcbiAgICAgICAgICBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEpvaW4gaW4gdGhlIHJlbGF0aW9uc2hpcHMgdGFibGVcbiAgICAgICAgam9pbkFsaWFzZXMucHVzaCh7XG4gICAgICAgICAgY29uZGl0aW9uOiBlcShcbiAgICAgICAgICAgIChhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pLmlkLFxuICAgICAgICAgICAgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXJlbnQsXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgfSlcblxuICAgICAgICBzZWxlY3RGaWVsZHNbYCR7cmVsYXRpb25UYWJsZU5hbWV9LnBhdGhgXSA9IGFsaWFzUmVsYXRpb25zaGlwVGFibGUucGF0aFxuXG4gICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgIGNvbHVtbk5hbWU6ICdwYXRoJyxcbiAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICB2YWx1ZTogZmllbGQubmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBsZXQgbmV3QWxpYXNUYWJsZVxuXG4gICAgICAgIGlmICh0eXBlb2YgZmllbGQucmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0b1NuYWtlQ2FzZShmaWVsZC5yZWxhdGlvblRvKX1gXG4gICAgICAgICAgLy8gcGFyZW50IHRvIHJlbGF0aW9uc2hpcCBqb2luIHRhYmxlXG4gICAgICAgICAgcmVsYXRpb25zaGlwRmllbGRzID0gYWRhcHRlci5wYXlsb2FkLmNvbGxlY3Rpb25zW2ZpZWxkLnJlbGF0aW9uVG9dLmNvbmZpZy5maWVsZHNcblxuICAgICAgICAgIG5ld0FsaWFzVGFibGUgPSBhbGlhcyhhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLCB0b1NuYWtlQ2FzZSh1dWlkKCkpKVxuXG4gICAgICAgICAgam9pbkFsaWFzZXMucHVzaCh7XG4gICAgICAgICAgICBjb25kaXRpb246IGVxKG5ld0FsaWFzVGFibGUuaWQsIGFsaWFzUmVsYXRpb25zaGlwVGFibGVbYCR7ZmllbGQucmVsYXRpb25Ub31JRGBdKSxcbiAgICAgICAgICAgIHRhYmxlOiBuZXdBbGlhc1RhYmxlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiBgJHtmaWVsZC5yZWxhdGlvblRvfUlEYCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICd2YWx1ZScpIHtcbiAgICAgICAgICBjb25zdCB0YWJsZUNvbHVtbnNOYW1lcyA9IGZpZWxkLnJlbGF0aW9uVG8ubWFwKFxuICAgICAgICAgICAgKHJlbGF0aW9uVG8pID0+IGBcIiR7YWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWV9XCIuXCIke3RvU25ha2VDYXNlKHJlbGF0aW9uVG8pfV9pZFwiYCxcbiAgICAgICAgICApXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICByYXdDb2x1bW46IHNxbC5yYXcoYENPQUxFU0NFKCR7dGFibGVDb2x1bW5zTmFtZXMuam9pbignLCAnKX0pYCksXG4gICAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICdyZWxhdGlvblRvJykge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uVG8gPSBBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pID8gZmllbGQucmVsYXRpb25UbyA6IFtmaWVsZC5yZWxhdGlvblRvXVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZTogKHZhbCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkUmVsYXRpb24gPSByZWxhdGlvblRvLmZpbmQoKHJlbGF0aW9uKSA9PiByZWxhdGlvbiA9PT0gdmFsKVxuICAgICAgICAgICAgICBpZiAobWF0Y2hlZFJlbGF0aW9uKSByZXR1cm4gYCR7bWF0Y2hlZFJlbGF0aW9ufUlEYFxuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBBUElFcnJvcignTm90IHN1cHBvcnRlZCcpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlOiBuZXdBbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoOiBuZXdDb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IHJlbGF0aW9uc2hpcEZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICAgIC8vIElmIGxvY2FsaXplZCwgd2UgZ28gdG8gbG9jYWxpemVkIHRhYmxlIGFuZCBzZXQgYWxpYXNUYWJsZSB0byB1bmRlZmluZWRcbiAgICAgICAgICAgIC8vIHNvIGl0IGlzIG5vdCBwaWNrZWQgdXAgYmVsb3cgdG8gYmUgdXNlZCBhcyB0YXJnZXRUYWJsZVxuICAgICAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV9sb2NhbGVzYFxuXG4gICAgICAgICAgICBjb25zdCBwYXJlbnRUYWJsZSA9IGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXVxuXG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEocGFyZW50VGFibGUuaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKVxuXG4gICAgICAgICAgICBhbGlhc1RhYmxlID0gdW5kZWZpbmVkXG5cbiAgICAgICAgICAgIGlmIChsb2NhbGUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHRhcmdldFRhYmxlID0gYWxpYXNUYWJsZSB8fCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdXG5cbiAgICAgICAgICBzZWxlY3RGaWVsZHNbYCR7bmV3VGFibGVOYW1lfS4ke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9YF0gPVxuICAgICAgICAgICAgdGFyZ2V0VGFibGVbYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1gXVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IGAke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9YCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cyxcbiAgICAgICAgICAgIHRhYmxlOiB0YXJnZXRUYWJsZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgQVBJRXJyb3IoYENhbm5vdCBmaW5kIGZpZWxkIGZvciBwYXRoIGF0ICR7ZmllbGRQYXRofWApXG59XG4iXSwibmFtZXMiOlsiZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCIsImFkYXB0ZXIiLCJhbGlhc1RhYmxlIiwiY29sbGVjdGlvblBhdGgiLCJjb2x1bW5QcmVmaXgiLCJjb25zdHJhaW50cyIsImZpZWxkcyIsImpvaW5BbGlhc2VzIiwiam9pbnMiLCJsb2NhbGUiLCJpbmNvbWluZ0xvY2FsZSIsInBhdGhTZWdtZW50cyIsImluY29taW5nU2VnbWVudHMiLCJzZWxlY3RGaWVsZHMiLCJ0YWJsZU5hbWUiLCJmaWVsZFBhdGgiLCJmaWVsZCIsImZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyIsImZpbmQiLCJmaWVsZFRvRmluZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJuYW1lIiwibmV3VGFibGVOYW1lIiwiaWQiLCJ0YWJsZXMiLCJjb2x1bW5OYW1lIiwidHlwZSIsInRhYmxlIiwibG9jYWxpemVkIiwicGF5bG9hZCIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsIm1hdGNoZWRMb2NhbGUiLCJsb2NhbGVDb2RlcyIsInNwbGljZSIsInRhYnMiLCJtYXAiLCJ0YWIiLCJzbGljZSIsInRhYkhhc05hbWUiLCJlcSIsIl9wYXJlbnRJRCIsInB1c2giLCJ2YWx1ZSIsInRvU25ha2VDYXNlIiwiYW5kIiwiX2xvY2FsZSIsImJsb2NrVGFibGVDb2x1bW4iLCJoYXNCbG9ja0ZpZWxkIiwiYmxvY2tzIiwic29tZSIsImJsb2NrIiwic2x1ZyIsInJlc3VsdCIsImJsb2NrQ29uc3RyYWludHMiLCJibG9ja1NlbGVjdEZpZWxkcyIsImVycm9yIiwiY29uY2F0IiwicmF3Q29sdW1uIiwicmVsYXRpb25zaGlwRmllbGRzIiwicmVsYXRpb25UYWJsZU5hbWUiLCJuZXdDb2xsZWN0aW9uUGF0aCIsImpvaW4iLCJhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSIsInV1aWQiLCJhbGlhc1JlbGF0aW9uc2hpcFRhYmxlIiwiYWxpYXMiLCJjb25kaXRpb24iLCJwYXJlbnQiLCJwYXRoIiwibmV3QWxpYXNUYWJsZSIsInJlbGF0aW9uVG8iLCJjb2xsZWN0aW9ucyIsInRhYmxlQ29sdW1uc05hbWVzIiwic3FsIiwicmF3IiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0Tm90TnVsbENvbHVtbkJ5VmFsdWUiLCJ2YWwiLCJtYXRjaGVkUmVsYXRpb24iLCJyZWxhdGlvbiIsInVuZGVmaW5lZCIsIkFQSUVycm9yIiwicGFyZW50VGFibGUiLCJ0YXJnZXRUYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQWtEdkJBOzs7ZUFBQUE7Ozs0QkE5Q2dCO3dCQUNQO3dCQUNHO3VCQUNvQjsyQkFDUDtvRUFDZDtzQkFDRzs7Ozs7O0FBd0NwQixNQUFNQSx5QkFBeUIsQ0FBQyxFQUNyQ0MsT0FBTyxFQUNQQyxVQUFVLEVBQ1ZDLGNBQWMsRUFDZEMsZUFBZSxFQUFFLEVBQ2pCQyxjQUFjLEVBQUUsRUFDaEJDLE1BQU0sRUFDTkMsV0FBVyxFQUNYQyxLQUFLLEVBQ0xDLFFBQVFDLGNBQWMsRUFDdEJDLGNBQWNDLGdCQUFnQixFQUM5QkMsWUFBWSxFQUNaQyxTQUFTLEVBQ0o7SUFDTCxNQUFNQyxZQUFZSCxnQkFBZ0IsQ0FBQyxFQUFF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
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAgBrE,OAAO,KAAK,EAAE,cAAc,EAAgB,eAAe,EAAE,MAAM,UAAU,CAAA;AAK7E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,GAAG,uBAAuB,CAAC,CAAA;IAClG,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,iBAAiB,CAAC,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAA;IACxD,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,UAAU,6LAapB,IAAI,KAAG,MAgRT,CAAA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAgBrE,OAAO,KAAK,EAAE,cAAc,EAAgB,eAAe,EAAE,MAAM,UAAU,CAAA;AAK7E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,GAAG,uBAAuB,CAAC,CAAA;IAClG,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,iBAAiB,CAAC,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAA;IACxD,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,UAAU,6LAapB,IAAI,KAAG,MAqRT,CAAA"}
@@ -178,14 +178,14 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildRela
178
178
  onDelete: 'cascade'
179
179
  });
180
180
  });
181
- const relationshipsTableName = `${tableName}_relationships`;
181
+ const relationshipsTableName = `${tableName}_rels`;
182
182
  relationshipsTable = (0, _pgcore.pgTable)(relationshipsTableName, relationshipColumns, (cols)=>{
183
183
  const result = {};
184
184
  if (hasLocalizedRelationshipField) {
185
185
  result.localeIdx = (0, _pgcore.index)('locale_idx').on(cols.locale);
186
- result.parentPathOrderLocale = (0, _pgcore.unique)(`${relationshipsTableName}_parent_id_path_order_locale_unique`).on(cols.parent, cols.path, cols.order, cols.locale);
186
+ result.parentPathOrderLocale = (0, _pgcore.unique)(`${relationshipsTableName}_unique`).on(cols.parent, cols.path, cols.order, cols.locale);
187
187
  } else {
188
- result.parentPathOrder = (0, _pgcore.unique)(`${relationshipsTableName}_parent_id_path_order_unique`).on(cols.parent, cols.path, cols.order);
188
+ result.parentPathOrder = (0, _pgcore.unique)(`${relationshipsTableName}_unique`).on(cols.parent, cols.path, cols.order);
189
189
  }
190
190
  return result;
191
191
  });
@@ -199,7 +199,7 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildRela
199
199
  references: [
200
200
  table.id
201
201
  ],
202
- relationName: '_relationships'
202
+ relationName: '_rels'
203
203
  })
204
204
  };
205
205
  relationships.forEach((relationTo)=>{
@@ -231,8 +231,8 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildRela
231
231
  result._numbers = many(numbersTable);
232
232
  }
233
233
  if (relationships.size && relationshipsTable) {
234
- result._relationships = many(relationshipsTable, {
235
- relationName: '_relationships'
234
+ result._rels = many(relationshipsTable, {
235
+ relationName: '_rels'
236
236
  });
237
237
  }
238
238
  return result;
@@ -243,4 +243,4 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildRela
243
243
  };
244
244
  };
245
245
 
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvYnVpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBudW1lcmljLFxuICBwZ1RhYmxlLFxuICBzZXJpYWwsXG4gIHRpbWVzdGFtcCxcbiAgdW5pcXVlLFxuICB2YXJjaGFyLFxufSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgR2VuZXJpY1RhYmxlLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgcGFyZW50SURDb2x1bW5NYXAgfSBmcm9tICcuL3BhcmVudElEQ29sdW1uTWFwJ1xuaW1wb3J0IHsgdHJhdmVyc2VGaWVsZHMgfSBmcm9tICcuL3RyYXZlcnNlRmllbGRzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBiYXNlQ29sdW1ucz86IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj5cbiAgYmFzZUV4dHJhQ29uZmlnPzogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXIgfCBVbmlxdWVDb25zdHJhaW50QnVpbGRlcj5cbiAgYnVpbGRSZWxhdGlvbnNoaXBzPzogYm9vbGVhblxuICBjb2xsZWN0aW9uSW5kZXhlcz86IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdbJ2luZGV4ZXMnXVxuICBkaXNhYmxlVW5pcXVlOiBib29sZWFuXG4gIGZpZWxkczogRmllbGRbXVxuICByb290UmVsYXRpb25zVG9CdWlsZD86IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcm9vdFRhYmxlSURDb2xUeXBlPzogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU/OiBzdHJpbmdcbiAgdGFibGVOYW1lOiBzdHJpbmdcbiAgdGltZXN0YW1wcz86IGJvb2xlYW5cbn1cblxudHlwZSBSZXN1bHQgPSB7XG4gIHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz5cbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkVGFibGUgPSAoe1xuICBhZGFwdGVyLFxuICBiYXNlQ29sdW1ucyA9IHt9LFxuICBiYXNlRXh0cmFDb25maWcgPSB7fSxcbiAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICBjb2xsZWN0aW9uSW5kZXhlcyA9IFtdLFxuICBkaXNhYmxlVW5pcXVlID0gZmFsc2UsXG4gIGZpZWxkcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbiAgdGFibGVOYW1lLFxuICB0aW1lc3RhbXBzLFxufTogQXJncyk6IFJlc3VsdCA9PiB7XG4gIGNvbnN0IGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSBiYXNlQ29sdW1uc1xuICBjb25zdCBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlcj4gPSB7fVxuXG4gIGxldCBoYXNMb2NhbGl6ZWRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IGZhbHNlXG5cbiAgY29uc3QgbG9jYWxlc0NvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7fVxuICBjb25zdCBsb2NhbGVzSW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+ID0ge31cbiAgbGV0IGxvY2FsZXNUYWJsZTogR2VuZXJpY1RhYmxlXG4gIGxldCBudW1iZXJzVGFibGU6IEdlbmVyaWNUYWJsZVxuXG4gIGNvbnN0IHJlbGF0aW9uc2hpcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpXG4gIGxldCByZWxhdGlvbnNoaXBzVGFibGU6IEdlbmVyaWNUYWJsZVxuXG4gIGNvbnN0IHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKClcblxuICBjb25zdCBpZEZpZWxkID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnKVxuICBsZXQgaWRDb2xUeXBlID0gJ2ludGVnZXInXG5cbiAgaWYgKGlkRmllbGQpIHtcbiAgICBpZiAoaWRGaWVsZC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgaWRDb2xUeXBlID0gJ251bWVyaWMnXG4gICAgICBjb2x1bW5zLmlkID0gbnVtZXJpYygnaWQnKS5wcmltYXJ5S2V5KClcbiAgICB9XG5cbiAgICBpZiAoaWRGaWVsZC50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIGlkQ29sVHlwZSA9ICd2YXJjaGFyJ1xuICAgICAgY29sdW1ucy5pZCA9IHZhcmNoYXIoJ2lkJykucHJpbWFyeUtleSgpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbHVtbnMuaWQgPSBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpXG4gIH1cblxuICA7KHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgaGFzTWFueU51bWJlckZpZWxkLFxuICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgIGFkYXB0ZXIsXG4gICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgIGNvbGxlY3Rpb25JbmRleGVzLFxuICAgIGNvbHVtbnMsXG4gICAgZGlzYWJsZVVuaXF1ZSxcbiAgICBmaWVsZHMsXG4gICAgaW5kZXhlcyxcbiAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICBuZXdUYWJsZU5hbWU6IHRhYmxlTmFtZSxcbiAgICBwYXJlbnRUYWJsZU5hbWU6IHRhYmxlTmFtZSxcbiAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ6IHJvb3RSZWxhdGlvbnNUb0J1aWxkIHx8IHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgcm9vdFRhYmxlSURDb2xUeXBlOiByb290VGFibGVJRENvbFR5cGUgfHwgaWRDb2xUeXBlLFxuICAgIHJvb3RUYWJsZU5hbWU6IHJvb3RUYWJsZU5hbWUgfHwgdGFibGVOYW1lLFxuICB9KSlcblxuICBpZiAodGltZXN0YW1wcykge1xuICAgIGNvbHVtbnMuY3JlYXRlZEF0ID0gdGltZXN0YW1wKCdjcmVhdGVkX2F0Jywge1xuICAgICAgbW9kZTogJ3N0cmluZycsXG4gICAgICBwcmVjaXNpb246IDMsXG4gICAgICB3aXRoVGltZXpvbmU6IHRydWUsXG4gICAgfSlcbiAgICAgIC5kZWZhdWx0Tm93KClcbiAgICAgIC5ub3ROdWxsKClcbiAgICBjb2x1bW5zLnVwZGF0ZWRBdCA9IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHtcbiAgICAgIG1vZGU6ICdzdHJpbmcnLFxuICAgICAgcHJlY2lzaW9uOiAzLFxuICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgIH0pXG4gICAgICAuZGVmYXVsdE5vdygpXG4gICAgICAubm90TnVsbCgpXG4gIH1cblxuICBjb25zdCB0YWJsZSA9IHBnVGFibGUodGFibGVOYW1lLCBjb2x1bW5zLCAoY29scykgPT4ge1xuICAgIGNvbnN0IGV4dHJhQ29uZmlnID0gT2JqZWN0LmVudHJpZXMoYmFzZUV4dHJhQ29uZmlnKS5yZWR1Y2UoKGNvbmZpZywgW2tleSwgZnVuY10pID0+IHtcbiAgICAgIGNvbmZpZ1trZXldID0gZnVuYyhjb2xzKVxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIH0sIHt9KVxuXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGluZGV4ZXMpLnJlZHVjZSgoYWNjLCBbY29sTmFtZSwgZnVuY10pID0+IHtcbiAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgIHJldHVybiBhY2NcbiAgICB9LCBleHRyYUNvbmZpZylcbiAgfSlcblxuICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdID0gdGFibGVcblxuICBpZiAoaGFzTG9jYWxpemVkRmllbGQpIHtcbiAgICBjb25zdCBsb2NhbGVUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2xvY2FsZXNgXG4gICAgbG9jYWxlc0NvbHVtbnMuaWQgPSBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpXG4gICAgbG9jYWxlc0NvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgIGxvY2FsZXNDb2x1bW5zLl9wYXJlbnRJRCA9IHBhcmVudElEQ29sdW1uTWFwW2lkQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgLm5vdE51bGwoKVxuXG4gICAgbG9jYWxlc1RhYmxlID0gcGdUYWJsZShsb2NhbGVUYWJsZU5hbWUsIGxvY2FsZXNDb2x1bW5zLCAoY29scykgPT4ge1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGxvY2FsZXNJbmRleGVzKS5yZWR1Y2UoXG4gICAgICAgIChhY2MsIFtjb2xOYW1lLCBmdW5jXSkgPT4ge1xuICAgICAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgICAgICByZXR1cm4gYWNjXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBfbG9jYWxlUGFyZW50OiB1bmlxdWUoYCR7bG9jYWxlVGFibGVOYW1lfV9sb2NhbGVfcGFyZW50X2lkX3VuaXF1ZWApLm9uKFxuICAgICAgICAgICAgY29scy5fbG9jYWxlLFxuICAgICAgICAgICAgY29scy5fcGFyZW50SUQsXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB9KVxuXG4gICAgYWRhcHRlci50YWJsZXNbbG9jYWxlVGFibGVOYW1lXSA9IGxvY2FsZXNUYWJsZVxuXG4gICAgY29uc3QgbG9jYWxlc1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGxvY2FsZXNUYWJsZSwgKHsgb25lIH0pID0+ICh7XG4gICAgICBfcGFyZW50SUQ6IG9uZSh0YWJsZSwge1xuICAgICAgICBmaWVsZHM6IFtsb2NhbGVzVGFibGUuX3BhcmVudElEXSxcbiAgICAgICAgcmVmZXJlbmNlczogW3RhYmxlLmlkXSxcbiAgICAgIH0pLFxuICAgIH0pKVxuXG4gICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2xvY2FsZVRhYmxlTmFtZX1gXSA9IGxvY2FsZXNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgIGNvbnN0IG51bWJlcnNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X251bWJlcnNgXG4gICAgY29uc3QgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgIGlkOiBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpLFxuICAgICAgbnVtYmVyOiBudW1lcmljKCdudW1iZXInKSxcbiAgICAgIG9yZGVyOiBpbnRlZ2VyKCdvcmRlcicpLm5vdE51bGwoKSxcbiAgICAgIHBhcmVudDogcGFyZW50SURDb2x1bW5NYXBbaWRDb2xUeXBlXSgncGFyZW50X2lkJylcbiAgICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgICAubm90TnVsbCgpLFxuICAgICAgcGF0aDogdmFyY2hhcigncGF0aCcpLm5vdE51bGwoKSxcbiAgICB9XG5cbiAgICBpZiAoaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSB7XG4gICAgICBjb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJylcbiAgICB9XG5cbiAgICBudW1iZXJzVGFibGUgPSBwZ1RhYmxlKG51bWJlcnNUYWJsZU5hbWUsIGNvbHVtbnMsIChjb2xzKSA9PiB7XG4gICAgICBjb25zdCBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCBJbmRleEJ1aWxkZXI+ID0ge1xuICAgICAgICBvcmRlclBhcmVudElkeDogaW5kZXgoJ29yZGVyX3BhcmVudF9pZHgnKS5vbihjb2xzLm9yZGVyLCBjb2xzLnBhcmVudCksXG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNNYW55TnVtYmVyRmllbGQgPT09ICdpbmRleCcpIHtcbiAgICAgICAgaW5kZXhlcy5udW1iZXJJZHggPSBpbmRleCgnbnVtYmVyX2lkeCcpLm9uKGNvbHMubnVtYmVyKVxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgIGluZGV4ZXMubG9jYWxlUGFyZW50ID0gaW5kZXgoJ2xvY2FsZV9wYXJlbnQnKS5vbihjb2xzLmxvY2FsZSwgY29scy5wYXJlbnQpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbmRleGVzXG4gICAgfSlcblxuICAgIGFkYXB0ZXIudGFibGVzW251bWJlcnNUYWJsZU5hbWVdID0gbnVtYmVyc1RhYmxlXG5cbiAgICBjb25zdCBudW1iZXJzVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMobnVtYmVyc1RhYmxlLCAoeyBvbmUgfSkgPT4gKHtcbiAgICAgIHBhcmVudDogb25lKHRhYmxlLCB7XG4gICAgICAgIGZpZWxkczogW251bWJlcnNUYWJsZS5wYXJlbnRdLFxuICAgICAgICByZWZlcmVuY2VzOiBbdGFibGUuaWRdLFxuICAgICAgfSksXG4gICAgfSkpXG5cbiAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7bnVtYmVyc1RhYmxlTmFtZX1gXSA9IG51bWJlcnNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGJ1aWxkUmVsYXRpb25zaGlwcykge1xuICAgIGlmIChyZWxhdGlvbnNoaXBzLnNpemUpIHtcbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcENvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgIGlkOiBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpLFxuICAgICAgICBvcmRlcjogaW50ZWdlcignb3JkZXInKSxcbiAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtpZENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IHRhYmxlLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICBwYXRoOiB2YXJjaGFyKCdwYXRoJykubm90TnVsbCgpLFxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIHtcbiAgICAgICAgcmVsYXRpb25zaGlwQ29sdW1ucy5sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ2xvY2FsZScpXG4gICAgICB9XG5cbiAgICAgIHJlbGF0aW9uc2hpcHMuZm9yRWFjaCgocmVsYXRpb25UbykgPT4ge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRSZWxhdGlvblRvID0gdG9TbmFrZUNhc2UocmVsYXRpb25UbylcbiAgICAgICAgbGV0IGNvbFR5cGUgPSAnaW50ZWdlcidcbiAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb25DdXN0b21JRCA9IGFkYXB0ZXIucGF5bG9hZC5jb2xsZWN0aW9uc1tcbiAgICAgICAgICByZWxhdGlvblRvXG4gICAgICAgIF0uY29uZmlnLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcbiAgICAgICAgaWYgKHJlbGF0ZWRDb2xsZWN0aW9uQ3VzdG9tSUQ/LnR5cGUgPT09ICdudW1iZXInKSBjb2xUeXBlID0gJ251bWVyaWMnXG4gICAgICAgIGlmIChyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEPy50eXBlID09PSAndGV4dCcpIGNvbFR5cGUgPSAndmFyY2hhcidcblxuICAgICAgICByZWxhdGlvbnNoaXBDb2x1bW5zW2Ake3JlbGF0aW9uVG99SURgXSA9IHBhcmVudElEQ29sdW1uTWFwW2NvbFR5cGVdKFxuICAgICAgICAgIGAke2Zvcm1hdHRlZFJlbGF0aW9uVG99X2lkYCxcbiAgICAgICAgKS5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW2Zvcm1hdHRlZFJlbGF0aW9uVG9dLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X3JlbGF0aW9uc2hpcHNgXG5cbiAgICAgIHJlbGF0aW9uc2hpcHNUYWJsZSA9IHBnVGFibGUocmVsYXRpb25zaGlwc1RhYmxlTmFtZSwgcmVsYXRpb25zaGlwQ29sdW1ucywgKGNvbHMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9XG5cbiAgICAgICAgaWYgKGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSB7XG4gICAgICAgICAgcmVzdWx0LmxvY2FsZUlkeCA9IGluZGV4KCdsb2NhbGVfaWR4Jykub24oY29scy5sb2NhbGUpXG4gICAgICAgICAgcmVzdWx0LnBhcmVudFBhdGhPcmRlckxvY2FsZSA9IHVuaXF1ZShcbiAgICAgICAgICAgIGAke3JlbGF0aW9uc2hpcHNUYWJsZU5hbWV9X3BhcmVudF9pZF9wYXRoX29yZGVyX2xvY2FsZV91bmlxdWVgLFxuICAgICAgICAgICkub24oY29scy5wYXJlbnQsIGNvbHMucGF0aCwgY29scy5vcmRlciwgY29scy5sb2NhbGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0LnBhcmVudFBhdGhPcmRlciA9IHVuaXF1ZShcbiAgICAgICAgICAgIGAke3JlbGF0aW9uc2hpcHNUYWJsZU5hbWV9X3BhcmVudF9pZF9wYXRoX29yZGVyX3VuaXF1ZWAsXG4gICAgICAgICAgKS5vbihjb2xzLnBhcmVudCwgY29scy5wYXRoLCBjb2xzLm9yZGVyKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSlcblxuICAgICAgYWRhcHRlci50YWJsZXNbcmVsYXRpb25zaGlwc1RhYmxlTmFtZV0gPSByZWxhdGlvbnNoaXBzVGFibGVcblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwc1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKHJlbGF0aW9uc2hpcHNUYWJsZSwgKHsgb25lIH0pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICBwYXJlbnQ6IG9uZSh0YWJsZSwge1xuICAgICAgICAgICAgZmllbGRzOiBbcmVsYXRpb25zaGlwc1RhYmxlLnBhcmVudF0sXG4gICAgICAgICAgICByZWZlcmVuY2VzOiBbdGFibGUuaWRdLFxuICAgICAgICAgICAgcmVsYXRpb25OYW1lOiAnX3JlbGF0aW9uc2hpcHMnLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9XG5cbiAgICAgICAgcmVsYXRpb25zaGlwcy5mb3JFYWNoKChyZWxhdGlvblRvKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVsYXRlZFRhYmxlTmFtZSA9IHRvU25ha2VDYXNlKHJlbGF0aW9uVG8pXG4gICAgICAgICAgY29uc3QgaWRDb2x1bW5OYW1lID0gYCR7cmVsYXRpb25Ub31JRGBcbiAgICAgICAgICByZXN1bHRbaWRDb2x1bW5OYW1lXSA9IG9uZShhZGFwdGVyLnRhYmxlc1tyZWxhdGVkVGFibGVOYW1lXSwge1xuICAgICAgICAgICAgZmllbGRzOiBbcmVsYXRpb25zaGlwc1RhYmxlW2lkQ29sdW1uTmFtZV1dLFxuICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3JlbGF0ZWRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH0pXG5cbiAgICAgIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHtyZWxhdGlvbnNoaXBzVGFibGVOYW1lfWBdID0gcmVsYXRpb25zaGlwc1RhYmxlUmVsYXRpb25zXG4gICAgfVxuICB9XG5cbiAgY29uc3QgdGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnModGFibGUsICh7IG1hbnkgfSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVsYXRpb248c3RyaW5nPj4gPSB7fVxuXG4gICAgcmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgfSlcblxuICAgIGlmIChoYXNMb2NhbGl6ZWRGaWVsZCkge1xuICAgICAgcmVzdWx0Ll9sb2NhbGVzID0gbWFueShsb2NhbGVzVGFibGUpXG4gICAgfVxuXG4gICAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgcmVzdWx0Ll9udW1iZXJzID0gbWFueShudW1iZXJzVGFibGUpXG4gICAgfVxuXG4gICAgaWYgKHJlbGF0aW9uc2hpcHMuc2l6ZSAmJiByZWxhdGlvbnNoaXBzVGFibGUpIHtcbiAgICAgIHJlc3VsdC5fcmVsYXRpb25zaGlwcyA9IG1hbnkocmVsYXRpb25zaGlwc1RhYmxlLCB7XG4gICAgICAgIHJlbGF0aW9uTmFtZTogJ19yZWxhdGlvbnNoaXBzJyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KVxuXG4gIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHt0YWJsZU5hbWV9YF0gPSB0YWJsZVJlbGF0aW9uc1xuXG4gIHJldHVybiB7IHJlbGF0aW9uc1RvQnVpbGQgfVxufVxuIl0sIm5hbWVzIjpbImJ1aWxkVGFibGUiLCJhZGFwdGVyIiwiYmFzZUNvbHVtbnMiLCJiYXNlRXh0cmFDb25maWciLCJidWlsZFJlbGF0aW9uc2hpcHMiLCJjb2xsZWN0aW9uSW5kZXhlcyIsImRpc2FibGVVbmlxdWUiLCJmaWVsZHMiLCJyb290UmVsYXRpb25zVG9CdWlsZCIsInJvb3RUYWJsZUlEQ29sVHlwZSIsInJvb3RUYWJsZU5hbWUiLCJ0YWJsZU5hbWUiLCJ0aW1lc3RhbXBzIiwiY29sdW1ucyIsImluZGV4ZXMiLCJoYXNMb2NhbGl6ZWRGaWVsZCIsImhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiaGFzTWFueU51bWJlckZpZWxkIiwiaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwibG9jYWxlc0NvbHVtbnMiLCJsb2NhbGVzSW5kZXhlcyIsImxvY2FsZXNUYWJsZSIsIm51bWJlcnNUYWJsZSIsInJlbGF0aW9uc2hpcHMiLCJTZXQiLCJyZWxhdGlvbnNoaXBzVGFibGUiLCJyZWxhdGlvbnNUb0J1aWxkIiwiTWFwIiwiaWRGaWVsZCIsImZpbmQiLCJmaWVsZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJuYW1lIiwiaWRDb2xUeXBlIiwidHlwZSIsImlkIiwibnVtZXJpYyIsInByaW1hcnlLZXkiLCJ2YXJjaGFyIiwic2VyaWFsIiwidHJhdmVyc2VGaWVsZHMiLCJuZXdUYWJsZU5hbWUiLCJwYXJlbnRUYWJsZU5hbWUiLCJjcmVhdGVkQXQiLCJ0aW1lc3RhbXAiLCJtb2RlIiwicHJlY2lzaW9uIiwid2l0aFRpbWV6b25lIiwiZGVmYXVsdE5vdyIsIm5vdE51bGwiLCJ1cGRhdGVkQXQiLCJ0YWJsZSIsInBnVGFibGUiLCJjb2xzIiwiZXh0cmFDb25maWciLCJPYmplY3QiLCJlbnRyaWVzIiwicmVkdWNlIiwiY29uZmlnIiwia2V5IiwiZnVuYyIsImFjYyIsImNvbE5hbWUiLCJ0YWJsZXMiLCJsb2NhbGVUYWJsZU5hbWUiLCJfbG9jYWxlIiwiZW51bXMiLCJlbnVtX19sb2NhbGVzIiwiX3BhcmVudElEIiwicGFyZW50SURDb2x1bW5NYXAiLCJyZWZlcmVuY2VzIiwib25EZWxldGUiLCJfbG9jYWxlUGFyZW50IiwidW5pcXVlIiwib24iLCJsb2NhbGVzVGFibGVSZWxhdGlvbnMiLCJyZWxhdGlvbnMiLCJvbmUiLCJudW1iZXJzVGFibGVOYW1lIiwibnVtYmVyIiwib3JkZXIiLCJpbnRlZ2VyIiwicGFyZW50IiwicGF0aCIsImxvY2FsZSIsIm9yZGVyUGFyZW50SWR4IiwiaW5kZXgiLCJudW1iZXJJZHgiLCJsb2NhbGVQYXJlbnQiLCJudW1iZXJzVGFibGVSZWxhdGlvbnMiLCJzaXplIiwicmVsYXRpb25zaGlwQ29sdW1ucyIsImZvckVhY2giLCJyZWxhdGlvblRvIiwiZm9ybWF0dGVkUmVsYXRpb25UbyIsInRvU25ha2VDYXNlIiwiY29sVHlwZSIsInJlbGF0ZWRDb2xsZWN0aW9uQ3VzdG9tSUQiLCJwYXlsb2FkIiwiY29sbGVjdGlvbnMiLCJyZWxhdGlvbnNoaXBzVGFibGVOYW1lIiwicmVzdWx0IiwibG9jYWxlSWR4IiwicGFyZW50UGF0aE9yZGVyTG9jYWxlIiwicGFyZW50UGF0aE9yZGVyIiwicmVsYXRpb25zaGlwc1RhYmxlUmVsYXRpb25zIiwicmVsYXRpb25OYW1lIiwicmVsYXRlZFRhYmxlTmFtZSIsImlkQ29sdW1uTmFtZSIsInRhYmxlUmVsYXRpb25zIiwibWFueSIsInZhbCIsIl9sb2NhbGVzIiwiX251bWJlcnMiLCJfcmVsYXRpb25zaGlwcyJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQTJDdkJBOzs7ZUFBQUE7Ozs0QkF0Q2E7d0JBVW5CO3VCQUMwQjtvRUFDVDttQ0FJVTtnQ0FDSDs7Ozs7O0FBcUJ4QixNQUFNQSxhQUFhLENBQUMsRUFDekJDLE9BQU8sRUFDUEMsY0FBYyxDQUFDLENBQUMsRUFDaEJDLGtCQUFrQixDQUFDLENBQUMsRUFDcEJDLGtCQUFrQixFQUNsQkMsb0JBQW9CLEVBQUUsRUFDdEJDLGdCQUFnQixLQUFLLEVBQ3JCQyxNQUFNLEVBQ05DLG9CQUFvQixFQUNwQkMsa0JBQWtCLEVBQ2xCQyxhQUFhLEVBQ2JDLFNBQVMsRUFDVEMsVUFBVSxFQUNMO0lBQ0wsTUFBTUMsVUFBMkNYO0lBQ2pELE1BQU1ZLFVBQWtFLENBQUM7SUFFekUsSUFBSUMsb0JBQW9CO0lBQ3hCLElBQUlDLGdDQUFnQztJQUNwQyxJQUFJQyxxQkFBd0M7SUFDNUMsSUFBSUMsOEJBQThCO0lBRWxDLE1BQU1DLGlCQUFrRCxDQUFDO0lBQ3pELE1BQU1DLGlCQUF5RSxDQUFDO0lBQ2hGLElBQUlDO0lBQ0osSUFBSUM7SUFFSixNQUFNQyxnQkFBNkIsSUFBSUM7SUFDdkMsSUFBSUM7SUFFSixNQUFNQyxtQkFBd0MsSUFBSUM7SUFFbEQsTUFBTUMsVUFBVXJCLE9BQU9zQixJQUFJLENBQUMsQ0FBQ0MsUUFBVUMsSUFBQUEsdUJBQWdCLEVBQUNELFVBQVVBLE1BQU1FLElBQUksS0FBSztJQUNqRixJQUFJQyxZQUFZO0lBRWhCLElBQUlMLFNBQVM7UUFDWCxJQUFJQSxRQUFRTSxJQUFJLEtBQUssVUFBVTtZQUM3QkQsWUFBWTtZQUNacEIsUUFBUXNCLEVBQUUsR0FBR0MsSUFBQUEsZUFBTyxFQUFDLE1B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
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvYnVpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBudW1lcmljLFxuICBwZ1RhYmxlLFxuICBzZXJpYWwsXG4gIHRpbWVzdGFtcCxcbiAgdW5pcXVlLFxuICB2YXJjaGFyLFxufSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgR2VuZXJpY1RhYmxlLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgcGFyZW50SURDb2x1bW5NYXAgfSBmcm9tICcuL3BhcmVudElEQ29sdW1uTWFwJ1xuaW1wb3J0IHsgdHJhdmVyc2VGaWVsZHMgfSBmcm9tICcuL3RyYXZlcnNlRmllbGRzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBiYXNlQ29sdW1ucz86IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj5cbiAgYmFzZUV4dHJhQ29uZmlnPzogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXIgfCBVbmlxdWVDb25zdHJhaW50QnVpbGRlcj5cbiAgYnVpbGRSZWxhdGlvbnNoaXBzPzogYm9vbGVhblxuICBjb2xsZWN0aW9uSW5kZXhlcz86IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdbJ2luZGV4ZXMnXVxuICBkaXNhYmxlVW5pcXVlOiBib29sZWFuXG4gIGZpZWxkczogRmllbGRbXVxuICByb290UmVsYXRpb25zVG9CdWlsZD86IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcm9vdFRhYmxlSURDb2xUeXBlPzogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU/OiBzdHJpbmdcbiAgdGFibGVOYW1lOiBzdHJpbmdcbiAgdGltZXN0YW1wcz86IGJvb2xlYW5cbn1cblxudHlwZSBSZXN1bHQgPSB7XG4gIHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz5cbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkVGFibGUgPSAoe1xuICBhZGFwdGVyLFxuICBiYXNlQ29sdW1ucyA9IHt9LFxuICBiYXNlRXh0cmFDb25maWcgPSB7fSxcbiAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICBjb2xsZWN0aW9uSW5kZXhlcyA9IFtdLFxuICBkaXNhYmxlVW5pcXVlID0gZmFsc2UsXG4gIGZpZWxkcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbiAgdGFibGVOYW1lLFxuICB0aW1lc3RhbXBzLFxufTogQXJncyk6IFJlc3VsdCA9PiB7XG4gIGNvbnN0IGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSBiYXNlQ29sdW1uc1xuICBjb25zdCBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlcj4gPSB7fVxuXG4gIGxldCBoYXNMb2NhbGl6ZWRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IGZhbHNlXG5cbiAgY29uc3QgbG9jYWxlc0NvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7fVxuICBjb25zdCBsb2NhbGVzSW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+ID0ge31cbiAgbGV0IGxvY2FsZXNUYWJsZTogR2VuZXJpY1RhYmxlXG4gIGxldCBudW1iZXJzVGFibGU6IEdlbmVyaWNUYWJsZVxuXG4gIGNvbnN0IHJlbGF0aW9uc2hpcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpXG4gIGxldCByZWxhdGlvbnNoaXBzVGFibGU6IEdlbmVyaWNUYWJsZVxuXG4gIGNvbnN0IHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKClcblxuICBjb25zdCBpZEZpZWxkID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnKVxuICBsZXQgaWRDb2xUeXBlID0gJ2ludGVnZXInXG5cbiAgaWYgKGlkRmllbGQpIHtcbiAgICBpZiAoaWRGaWVsZC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgaWRDb2xUeXBlID0gJ251bWVyaWMnXG4gICAgICBjb2x1bW5zLmlkID0gbnVtZXJpYygnaWQnKS5wcmltYXJ5S2V5KClcbiAgICB9XG5cbiAgICBpZiAoaWRGaWVsZC50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIGlkQ29sVHlwZSA9ICd2YXJjaGFyJ1xuICAgICAgY29sdW1ucy5pZCA9IHZhcmNoYXIoJ2lkJykucHJpbWFyeUtleSgpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbHVtbnMuaWQgPSBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpXG4gIH1cblxuICA7KHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgaGFzTWFueU51bWJlckZpZWxkLFxuICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgIGFkYXB0ZXIsXG4gICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgIGNvbGxlY3Rpb25JbmRleGVzLFxuICAgIGNvbHVtbnMsXG4gICAgZGlzYWJsZVVuaXF1ZSxcbiAgICBmaWVsZHMsXG4gICAgaW5kZXhlcyxcbiAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICBuZXdUYWJsZU5hbWU6IHRhYmxlTmFtZSxcbiAgICBwYXJlbnRUYWJsZU5hbWU6IHRhYmxlTmFtZSxcbiAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ6IHJvb3RSZWxhdGlvbnNUb0J1aWxkIHx8IHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgcm9vdFRhYmxlSURDb2xUeXBlOiByb290VGFibGVJRENvbFR5cGUgfHwgaWRDb2xUeXBlLFxuICAgIHJvb3RUYWJsZU5hbWU6IHJvb3RUYWJsZU5hbWUgfHwgdGFibGVOYW1lLFxuICB9KSlcblxuICBpZiAodGltZXN0YW1wcykge1xuICAgIGNvbHVtbnMuY3JlYXRlZEF0ID0gdGltZXN0YW1wKCdjcmVhdGVkX2F0Jywge1xuICAgICAgbW9kZTogJ3N0cmluZycsXG4gICAgICBwcmVjaXNpb246IDMsXG4gICAgICB3aXRoVGltZXpvbmU6IHRydWUsXG4gICAgfSlcbiAgICAgIC5kZWZhdWx0Tm93KClcbiAgICAgIC5ub3ROdWxsKClcbiAgICBjb2x1bW5zLnVwZGF0ZWRBdCA9IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHtcbiAgICAgIG1vZGU6ICdzdHJpbmcnLFxuICAgICAgcHJlY2lzaW9uOiAzLFxuICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgIH0pXG4gICAgICAuZGVmYXVsdE5vdygpXG4gICAgICAubm90TnVsbCgpXG4gIH1cblxuICBjb25zdCB0YWJsZSA9IHBnVGFibGUodGFibGVOYW1lLCBjb2x1bW5zLCAoY29scykgPT4ge1xuICAgIGNvbnN0IGV4dHJhQ29uZmlnID0gT2JqZWN0LmVudHJpZXMoYmFzZUV4dHJhQ29uZmlnKS5yZWR1Y2UoKGNvbmZpZywgW2tleSwgZnVuY10pID0+IHtcbiAgICAgIGNvbmZpZ1trZXldID0gZnVuYyhjb2xzKVxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIH0sIHt9KVxuXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGluZGV4ZXMpLnJlZHVjZSgoYWNjLCBbY29sTmFtZSwgZnVuY10pID0+IHtcbiAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgIHJldHVybiBhY2NcbiAgICB9LCBleHRyYUNvbmZpZylcbiAgfSlcblxuICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdID0gdGFibGVcblxuICBpZiAoaGFzTG9jYWxpemVkRmllbGQpIHtcbiAgICBjb25zdCBsb2NhbGVUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2xvY2FsZXNgXG4gICAgbG9jYWxlc0NvbHVtbnMuaWQgPSBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpXG4gICAgbG9jYWxlc0NvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgIGxvY2FsZXNDb2x1bW5zLl9wYXJlbnRJRCA9IHBhcmVudElEQ29sdW1uTWFwW2lkQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgLm5vdE51bGwoKVxuXG4gICAgbG9jYWxlc1RhYmxlID0gcGdUYWJsZShsb2NhbGVUYWJsZU5hbWUsIGxvY2FsZXNDb2x1bW5zLCAoY29scykgPT4ge1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGxvY2FsZXNJbmRleGVzKS5yZWR1Y2UoXG4gICAgICAgIChhY2MsIFtjb2xOYW1lLCBmdW5jXSkgPT4ge1xuICAgICAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgICAgICByZXR1cm4gYWNjXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBfbG9jYWxlUGFyZW50OiB1bmlxdWUoYCR7bG9jYWxlVGFibGVOYW1lfV9sb2NhbGVfcGFyZW50X2lkX3VuaXF1ZWApLm9uKFxuICAgICAgICAgICAgY29scy5fbG9jYWxlLFxuICAgICAgICAgICAgY29scy5fcGFyZW50SUQsXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB9KVxuXG4gICAgYWRhcHRlci50YWJsZXNbbG9jYWxlVGFibGVOYW1lXSA9IGxvY2FsZXNUYWJsZVxuXG4gICAgY29uc3QgbG9jYWxlc1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGxvY2FsZXNUYWJsZSwgKHsgb25lIH0pID0+ICh7XG4gICAgICBfcGFyZW50SUQ6IG9uZSh0YWJsZSwge1xuICAgICAgICBmaWVsZHM6IFtsb2NhbGVzVGFibGUuX3BhcmVudElEXSxcbiAgICAgICAgcmVmZXJlbmNlczogW3RhYmxlLmlkXSxcbiAgICAgIH0pLFxuICAgIH0pKVxuXG4gICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2xvY2FsZVRhYmxlTmFtZX1gXSA9IGxvY2FsZXNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgIGNvbnN0IG51bWJlcnNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X251bWJlcnNgXG4gICAgY29uc3QgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgIGlkOiBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpLFxuICAgICAgbnVtYmVyOiBudW1lcmljKCdudW1iZXInKSxcbiAgICAgIG9yZGVyOiBpbnRlZ2VyKCdvcmRlcicpLm5vdE51bGwoKSxcbiAgICAgIHBhcmVudDogcGFyZW50SURDb2x1bW5NYXBbaWRDb2xUeXBlXSgncGFyZW50X2lkJylcbiAgICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgICAubm90TnVsbCgpLFxuICAgICAgcGF0aDogdmFyY2hhcigncGF0aCcpLm5vdE51bGwoKSxcbiAgICB9XG5cbiAgICBpZiAoaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSB7XG4gICAgICBjb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJylcbiAgICB9XG5cbiAgICBudW1iZXJzVGFibGUgPSBwZ1RhYmxlKG51bWJlcnNUYWJsZU5hbWUsIGNvbHVtbnMsIChjb2xzKSA9PiB7XG4gICAgICBjb25zdCBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCBJbmRleEJ1aWxkZXI+ID0ge1xuICAgICAgICBvcmRlclBhcmVudElkeDogaW5kZXgoJ29yZGVyX3BhcmVudF9pZHgnKS5vbihjb2xzLm9yZGVyLCBjb2xzLnBhcmVudCksXG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNNYW55TnVtYmVyRmllbGQgPT09ICdpbmRleCcpIHtcbiAgICAgICAgaW5kZXhlcy5udW1iZXJJZHggPSBpbmRleCgnbnVtYmVyX2lkeCcpLm9uKGNvbHMubnVtYmVyKVxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgIGluZGV4ZXMubG9jYWxlUGFyZW50ID0gaW5kZXgoJ2xvY2FsZV9wYXJlbnQnKS5vbihjb2xzLmxvY2FsZSwgY29scy5wYXJlbnQpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbmRleGVzXG4gICAgfSlcblxuICAgIGFkYXB0ZXIudGFibGVzW251bWJlcnNUYWJsZU5hbWVdID0gbnVtYmVyc1RhYmxlXG5cbiAgICBjb25zdCBudW1iZXJzVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMobnVtYmVyc1RhYmxlLCAoeyBvbmUgfSkgPT4gKHtcbiAgICAgIHBhcmVudDogb25lKHRhYmxlLCB7XG4gICAgICAgIGZpZWxkczogW251bWJlcnNUYWJsZS5wYXJlbnRdLFxuICAgICAgICByZWZlcmVuY2VzOiBbdGFibGUuaWRdLFxuICAgICAgfSksXG4gICAgfSkpXG5cbiAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7bnVtYmVyc1RhYmxlTmFtZX1gXSA9IG51bWJlcnNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGJ1aWxkUmVsYXRpb25zaGlwcykge1xuICAgIGlmIChyZWxhdGlvbnNoaXBzLnNpemUpIHtcbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcENvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgIGlkOiBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpLFxuICAgICAgICBvcmRlcjogaW50ZWdlcignb3JkZXInKSxcbiAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtpZENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IHRhYmxlLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICBwYXRoOiB2YXJjaGFyKCdwYXRoJykubm90TnVsbCgpLFxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIHtcbiAgICAgICAgcmVsYXRpb25zaGlwQ29sdW1ucy5sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ2xvY2FsZScpXG4gICAgICB9XG5cbiAgICAgIHJlbGF0aW9uc2hpcHMuZm9yRWFjaCgocmVsYXRpb25UbykgPT4ge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRSZWxhdGlvblRvID0gdG9TbmFrZUNhc2UocmVsYXRpb25UbylcbiAgICAgICAgbGV0IGNvbFR5cGUgPSAnaW50ZWdlcidcbiAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb25DdXN0b21JRCA9IGFkYXB0ZXIucGF5bG9hZC5jb2xsZWN0aW9uc1tcbiAgICAgICAgICByZWxhdGlvblRvXG4gICAgICAgIF0uY29uZmlnLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcbiAgICAgICAgaWYgKHJlbGF0ZWRDb2xsZWN0aW9uQ3VzdG9tSUQ/LnR5cGUgPT09ICdudW1iZXInKSBjb2xUeXBlID0gJ251bWVyaWMnXG4gICAgICAgIGlmIChyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEPy50eXBlID09PSAndGV4dCcpIGNvbFR5cGUgPSAndmFyY2hhcidcblxuICAgICAgICByZWxhdGlvbnNoaXBDb2x1bW5zW2Ake3JlbGF0aW9uVG99SURgXSA9IHBhcmVudElEQ29sdW1uTWFwW2NvbFR5cGVdKFxuICAgICAgICAgIGAke2Zvcm1hdHRlZFJlbGF0aW9uVG99X2lkYCxcbiAgICAgICAgKS5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW2Zvcm1hdHRlZFJlbGF0aW9uVG9dLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X3JlbHNgXG5cbiAgICAgIHJlbGF0aW9uc2hpcHNUYWJsZSA9IHBnVGFibGUocmVsYXRpb25zaGlwc1RhYmxlTmFtZSwgcmVsYXRpb25zaGlwQ29sdW1ucywgKGNvbHMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9XG5cbiAgICAgICAgaWYgKGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSB7XG4gICAgICAgICAgcmVzdWx0LmxvY2FsZUlkeCA9IGluZGV4KCdsb2NhbGVfaWR4Jykub24oY29scy5sb2NhbGUpXG4gICAgICAgICAgcmVzdWx0LnBhcmVudFBhdGhPcmRlckxvY2FsZSA9IHVuaXF1ZShgJHtyZWxhdGlvbnNoaXBzVGFibGVOYW1lfV91bmlxdWVgKS5vbihcbiAgICAgICAgICAgIGNvbHMucGFyZW50LFxuICAgICAgICAgICAgY29scy5wYXRoLFxuICAgICAgICAgICAgY29scy5vcmRlcixcbiAgICAgICAgICAgIGNvbHMubG9jYWxlLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQucGFyZW50UGF0aE9yZGVyID0gdW5pcXVlKGAke3JlbGF0aW9uc2hpcHNUYWJsZU5hbWV9X3VuaXF1ZWApLm9uKFxuICAgICAgICAgICAgY29scy5wYXJlbnQsXG4gICAgICAgICAgICBjb2xzLnBhdGgsXG4gICAgICAgICAgICBjb2xzLm9yZGVyLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH0pXG5cbiAgICAgIGFkYXB0ZXIudGFibGVzW3JlbGF0aW9uc2hpcHNUYWJsZU5hbWVdID0gcmVsYXRpb25zaGlwc1RhYmxlXG5cbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyhyZWxhdGlvbnNoaXBzVGFibGUsICh7IG9uZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVsYXRpb248c3RyaW5nPj4gPSB7XG4gICAgICAgICAgcGFyZW50OiBvbmUodGFibGUsIHtcbiAgICAgICAgICAgIGZpZWxkczogW3JlbGF0aW9uc2hpcHNUYWJsZS5wYXJlbnRdLFxuICAgICAgICAgICAgcmVmZXJlbmNlczogW3RhYmxlLmlkXSxcbiAgICAgICAgICAgIHJlbGF0aW9uTmFtZTogJ19yZWxzJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbGF0aW9uc2hpcHMuZm9yRWFjaCgocmVsYXRpb25UbykgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlbGF0ZWRUYWJsZU5hbWUgPSB0b1NuYWtlQ2FzZShyZWxhdGlvblRvKVxuICAgICAgICAgIGNvbnN0IGlkQ29sdW1uTmFtZSA9IGAke3JlbGF0aW9uVG99SURgXG4gICAgICAgICAgcmVzdWx0W2lkQ29sdW1uTmFtZV0gPSBvbmUoYWRhcHRlci50YWJsZXNbcmVsYXRlZFRhYmxlTmFtZV0sIHtcbiAgICAgICAgICAgIGZpZWxkczogW3JlbGF0aW9uc2hpcHNUYWJsZVtpZENvbHVtbk5hbWVdXSxcbiAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1tyZWxhdGVkVGFibGVOYW1lXS5pZF0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9KVxuXG4gICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7cmVsYXRpb25zaGlwc1RhYmxlTmFtZX1gXSA9IHJlbGF0aW9uc2hpcHNUYWJsZVJlbGF0aW9uc1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKHRhYmxlLCAoeyBtYW55IH0pID0+IHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge31cblxuICAgIHJlbGF0aW9uc1RvQnVpbGQuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgIHJlc3VsdFtrZXldID0gbWFueShhZGFwdGVyLnRhYmxlc1t2YWxdKVxuICAgIH0pXG5cbiAgICBpZiAoaGFzTG9jYWxpemVkRmllbGQpIHtcbiAgICAgIHJlc3VsdC5fbG9jYWxlcyA9IG1hbnkobG9jYWxlc1RhYmxlKVxuICAgIH1cblxuICAgIGlmIChoYXNNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgIHJlc3VsdC5fbnVtYmVycyA9IG1hbnkobnVtYmVyc1RhYmxlKVxuICAgIH1cblxuICAgIGlmIChyZWxhdGlvbnNoaXBzLnNpemUgJiYgcmVsYXRpb25zaGlwc1RhYmxlKSB7XG4gICAgICByZXN1bHQuX3JlbHMgPSBtYW55KHJlbGF0aW9uc2hpcHNUYWJsZSwge1xuICAgICAgICByZWxhdGlvbk5hbWU6ICdfcmVscycsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfSlcblxuICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7dGFibGVOYW1lfWBdID0gdGFibGVSZWxhdGlvbnNcblxuICByZXR1cm4geyByZWxhdGlvbnNUb0J1aWxkIH1cbn1cbiJdLCJuYW1lcyI6WyJidWlsZFRhYmxlIiwiYWRhcHRlciIsImJhc2VDb2x1bW5zIiwiYmFzZUV4dHJhQ29uZmlnIiwiYnVpbGRSZWxhdGlvbnNoaXBzIiwiY29sbGVjdGlvbkluZGV4ZXMiLCJkaXNhYmxlVW5pcXVlIiwiZmllbGRzIiwicm9vdFJlbGF0aW9uc1RvQnVpbGQiLCJyb290VGFibGVJRENvbFR5cGUiLCJyb290VGFibGVOYW1lIiwidGFibGVOYW1lIiwidGltZXN0YW1wcyIsImNvbHVtbnMiLCJpbmRleGVzIiwiaGFzTG9jYWxpemVkRmllbGQiLCJoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsImhhc01hbnlOdW1iZXJGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsImxvY2FsZXNDb2x1bW5zIiwibG9jYWxlc0luZGV4ZXMiLCJsb2NhbGVzVGFibGUiLCJudW1iZXJzVGFibGUiLCJyZWxhdGlvbnNoaXBzIiwiU2V0IiwicmVsYXRpb25zaGlwc1RhYmxlIiwicmVsYXRpb25zVG9CdWlsZCIsIk1hcCIsImlkRmllbGQiLCJmaW5kIiwiZmllbGQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsImlkQ29sVHlwZSIsInR5cGUiLCJpZCIsIm51bWVyaWMiLCJwcmltYXJ5S2V5IiwidmFyY2hhciIsInNlcmlhbCIsInRyYXZlcnNlRmllbGRzIiwibmV3VGFibGVOYW1lIiwicGFyZW50VGFibGVOYW1lIiwiY3JlYXRlZEF0IiwidGltZXN0YW1wIiwibW9kZSIsInByZWNpc2lvbiIsIndpdGhUaW1lem9uZSIsImRlZmF1bHROb3ciLCJub3ROdWxsIiwidXBkYXRlZEF0IiwidGFibGUiLCJwZ1RhYmxlIiwiY29scyIsImV4dHJhQ29uZmlnIiwiT2JqZWN0IiwiZW50cmllcyIsInJlZHVjZSIsImNvbmZpZyIsImtleSIsImZ1bmMiLCJhY2MiLCJjb2xOYW1lIiwidGFibGVzIiwibG9jYWxlVGFibGVOYW1lIiwiX2xvY2FsZSIsImVudW1zIiwiZW51bV9fbG9jYWxlcyIsIl9wYXJlbnRJRCIsInBhcmVudElEQ29sdW1uTWFwIiwicmVmZXJlbmNlcyIsIm9uRGVsZXRlIiwiX2xvY2FsZVBhcmVudCIsInVuaXF1ZSIsIm9uIiwibG9jYWxlc1RhYmxlUmVsYXRpb25zIiwicmVsYXRpb25zIiwib25lIiwibnVtYmVyc1RhYmxlTmFtZSIsIm51bWJlciIsIm9yZGVyIiwiaW50ZWdlciIsInBhcmVudCIsInBhdGgiLCJsb2NhbGUiLCJvcmRlclBhcmVudElkeCIsImluZGV4IiwibnVtYmVySWR4IiwibG9jYWxlUGFyZW50IiwibnVtYmVyc1RhYmxlUmVsYXRpb25zIiwic2l6ZSIsInJlbGF0aW9uc2hpcENvbHVtbnMiLCJmb3JFYWNoIiwicmVsYXRpb25UbyIsImZvcm1hdHRlZFJlbGF0aW9uVG8iLCJ0b1NuYWtlQ2FzZSIsImNvbFR5cGUiLCJyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEIiwicGF5bG9hZCIsImNvbGxlY3Rpb25zIiwicmVsYXRpb25zaGlwc1RhYmxlTmFtZSIsInJlc3VsdCIsImxvY2FsZUlkeCIsInBhcmVudFBhdGhPcmRlckxvY2FsZSIsInBhcmVudFBhdGhPcmRlciIsInJlbGF0aW9uc2hpcHNUYWJsZVJlbGF0aW9ucyIsInJlbGF0aW9uTmFtZSIsInJlbGF0ZWRUYWJsZU5hbWUiLCJpZENvbHVtbk5hbWUiLCJ0YWJsZVJlbGF0aW9ucyIsIm1hbnkiLCJ2YWwiLCJfbG9jYWxlcyIsIl9udW1iZXJzIiwiX3JlbHMiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkEyQ3ZCQTs7O2VBQUFBOzs7NEJBdENhO3dCQVVuQjt1QkFDMEI7b0VBQ1Q7bUNBSVU7Z0NBQ0g7Ozs7OztBQXFCeEIsTUFBTUEsYUFBYSxDQUFDLEVBQ3pCQyxPQUFPLEVBQ1BDLGNBQWMsQ0FBQyxDQUFDLEVBQ2hCQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQ3BCQyxrQkFBa0IsRUFDbEJDLG9CQUFvQixFQUFFLEVBQ3RCQyxnQkFBZ0IsS0FBSyxFQUNyQkMsTUFBTSxFQUNOQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixFQUNsQkMsYUFBYSxFQUNiQyxTQUFTLEVBQ1RDLFVBQVUsRUFDTDtJQUNMLE1BQU1DLFVBQTJDWDtJQUNqRCxNQUFNWSxVQUFrRSxDQUFDO0lBRXpFLElBQUlDLG9CQUFvQjtJQUN4QixJQUFJQyxnQ0FBZ0M7SUFDcEMsSUFBSUMscUJBQXdDO0lBQzVDLElBQUlDLDhCQUE4QjtJQUVsQyxNQUFNQyxpQkFBa0QsQ0FBQztJQUN6RCxNQUFNQyxpQkFBeUUsQ0FBQztJQUNoRixJQUFJQztJQUNKLElBQUlDO0lBRUosTUFBTUMsZ0JBQTZCLElBQUlDO0lBQ3ZDLElBQUlDO0lBRUosTUFBTUMsbUJBQXdDLElBQUlDO0lBRWxELE1BQU1DLFVBQVVyQixPQUFPc0IsSUFBSSxDQUFDLENBQUNDLFFBQVVDLElBQUFBLHVCQUFnQixFQUFDRCxVQUFVQSxNQUFNRSxJQUFJLEtBQUs7SUFDakYsSUFBSUMsWUFBWTtJQUVoQixJQUFJTCxTQUFTO1FBQ1gsSUFBSUEsUUFBUU0sSUFBSSxLQUFLLFVBQVU7WUFDN0JELFlBQVk7WUFDWnBCLFFBQVFzQixFQUFFLEdBQUdDLElBQUFBLGVBQU8sRUFBQyxNQUFNQyxVQUFVO1FBQ3ZDO1FBRUEsSUFBSVQsUUFB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
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/schema/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAA2B,MAAM,qBAAqB,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAqBjF,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAQ/D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,iBAAiB,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAA;IACvD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,2BAA2B,EAAE,OAAO,CAAA;IACpC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,cAAc,qSAoBxB,IAAI,KAAG,MAsgBT,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/schema/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAA2B,MAAM,qBAAqB,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAqBjF,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAQ/D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,iBAAiB,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAA;IACvD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,2BAA2B,EAAE,OAAO,CAAA;IACpC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,cAAc,qSAoBxB,IAAI,KAAG,MA0fT,CAAA"}
@@ -143,7 +143,7 @@ const traverseFields = ({ adapter, buildRelationships, collectionIndexes, column
143
143
  const baseExtraConfig = {};
144
144
  if (field.localized) {
145
145
  baseColumns.locale = adapter.enums.enum__locales('locale').notNull();
146
- baseExtraConfig.parentOrderLocale = (cols)=>(0, _pgcore.unique)(`${selectTableName}_parent_id_order_locale_unique`).on(cols.parent, cols.order, cols.locale);
146
+ baseExtraConfig.parentOrderLocale = (cols)=>(0, _pgcore.unique)(`${selectTableName}_unique`).on(cols.parent, cols.order, cols.locale);
147
147
  } else {
148
148
  baseExtraConfig.parent = (cols)=>(0, _pgcore.index)('parent_idx').on(cols.parent);
149
149
  baseExtraConfig.order = (cols)=>(0, _pgcore.index)('order_idx').on(cols.order);
@@ -196,9 +196,9 @@ const traverseFields = ({ adapter, buildRelationships, collectionIndexes, column
196
196
  const baseExtraConfig = {};
197
197
  if (field.localized && adapter.payload.config.localization) {
198
198
  baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
199
- baseExtraConfig._parentOrderLocale = (cols)=>(0, _pgcore.unique)(`${arrayTableName}_parent_id_order_locale_unique`).on(cols._parentID, cols._order, cols._locale);
199
+ baseExtraConfig._parentOrderLocale = (cols)=>(0, _pgcore.unique)(`${arrayTableName}_unique`).on(cols._parentID, cols._order, cols._locale);
200
200
  } else {
201
- baseExtraConfig._parentOrder = (cols)=>(0, _pgcore.unique)(`${arrayTableName}_parent_id_order_unique`).on(cols._parentID, cols._order);
201
+ baseExtraConfig._parentOrder = (cols)=>(0, _pgcore.unique)(`${arrayTableName}_unique`).on(cols._parentID, cols._order);
202
202
  }
203
203
  const { relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
204
204
  adapter,
@@ -249,9 +249,9 @@ const traverseFields = ({ adapter, buildRelationships, collectionIndexes, column
249
249
  const baseExtraConfig = {};
250
250
  if (field.localized && adapter.payload.config.localization) {
251
251
  baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
252
- baseExtraConfig._parentPathOrderLocale = (cols)=>(0, _pgcore.unique)(`${blockTableName}_parent_id_path_order_locale_unique`).on(cols._parentID, cols._path, cols._order, cols._locale);
252
+ baseExtraConfig._parentPathOrderLocale = (cols)=>(0, _pgcore.unique)(`${blockTableName}_unique`).on(cols._parentID, cols._path, cols._order, cols._locale);
253
253
  } else {
254
- baseExtraConfig._parentPathOrder = (cols)=>(0, _pgcore.unique)(`${blockTableName}_parent_id_path_order_unique`).on(cols._parentID, cols._path, cols._order);
254
+ baseExtraConfig._parentPathOrder = (cols)=>(0, _pgcore.unique)(`${blockTableName}_unique`).on(cols._parentID, cols._path, cols._order);
255
255
  }
256
256
  const { relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
257
257
  adapter,
@@ -443,4 +443,4 @@ const traverseFields = ({ adapter, buildRelationships, collectionIndexes, column
443
443
  };
444
444
  };
445
445
 
446
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFNhbml0aXplZENvbGxlY3Rpb25Db25maWcsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIFBnTnVtZXJpY0J1aWxkZXIsXG4gIFBnVmFyY2hhckJ1aWxkZXIsXG4gIGJvb2xlYW4sXG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBqc29uYixcbiAgbnVtZXJpYyxcbiAgcGdFbnVtLFxuICB0ZXh0LFxuICB0aW1lc3RhbXAsXG4gIHVuaXF1ZSxcbiAgdmFyY2hhcixcbn0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEludmFsaWRDb25maWd1cmF0aW9uIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCBvcHRpb25Jc09iamVjdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IGhhc0xvY2FsZXNUYWJsZSB9IGZyb20gJy4uL3V0aWxpdGllcy9oYXNMb2NhbGVzVGFibGUnXG5pbXBvcnQgeyBidWlsZFRhYmxlIH0gZnJvbSAnLi9idWlsZCdcbmltcG9ydCB7IGNyZWF0ZUluZGV4IH0gZnJvbSAnLi9jcmVhdGVJbmRleCdcbmltcG9ydCB7IHBhcmVudElEQ29sdW1uTWFwIH0gZnJvbSAnLi9wYXJlbnRJRENvbHVtbk1hcCdcbmltcG9ydCB7IHZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsIH0gZnJvbSAnLi92YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCdcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYnVpbGRSZWxhdGlvbnNoaXBzOiBib29sZWFuXG4gIGNvbGxlY3Rpb25JbmRleGVzOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnWydpbmRleGVzJ11cbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj5cbiAgZGlzYWJsZVVuaXF1ZT86IGJvb2xlYW5cbiAgZmllbGRQcmVmaXg/OiBzdHJpbmdcbiAgZmllbGRzOiAoRmllbGQgfCBUYWJBc0ZpZWxkKVtdXG4gIGZvcmNlTG9jYWxpemVkPzogYm9vbGVhblxuICBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlcj5cbiAgbG9jYWxlc0NvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj5cbiAgbG9jYWxlc0luZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPlxuICBuZXdUYWJsZU5hbWU6IHN0cmluZ1xuICBwYXJlbnRUYWJsZU5hbWU6IHN0cmluZ1xuICByZWxhdGlvbnNUb0J1aWxkOiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJlbGF0aW9uc2hpcHM6IFNldDxzdHJpbmc+XG4gIHJvb3RSZWxhdGlvbnNUb0J1aWxkPzogTWFwPHN0cmluZywgc3RyaW5nPlxuICByb290VGFibGVJRENvbFR5cGU6IHN0cmluZ1xuICByb290VGFibGVOYW1lOiBzdHJpbmdcbn1cblxudHlwZSBSZXN1bHQgPSB7XG4gIGhhc0xvY2FsaXplZEZpZWxkOiBib29sZWFuXG4gIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogYm9vbGVhblxuICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogYm9vbGVhblxuICBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCB0cmF2ZXJzZUZpZWxkcyA9ICh7XG4gIGFkYXB0ZXIsXG4gIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgY29sbGVjdGlvbkluZGV4ZXMsXG4gIGNvbHVtblByZWZpeCxcbiAgY29sdW1ucyxcbiAgZGlzYWJsZVVuaXF1ZSA9IGZhbHNlLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZUxvY2FsaXplZCxcbiAgaW5kZXhlcyxcbiAgbG9jYWxlc0NvbHVtbnMsXG4gIGxvY2FsZXNJbmRleGVzLFxuICBuZXdUYWJsZU5hbWUsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcmVsYXRpb25zVG9CdWlsZCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbn06IEFyZ3MpOiBSZXN1bHQgPT4ge1xuICBsZXQgaGFzTG9jYWxpemVkRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhbiA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSBmYWxzZVxuXG4gIGxldCBwYXJlbnRJRENvbFR5cGUgPSAnaW50ZWdlcidcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ051bWVyaWNCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAnbnVtZXJpYydcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ1ZhcmNoYXJCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAndmFyY2hhcidcblxuICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICBpZiAoJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpIHJldHVyblxuICAgIGxldCBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgICBsZXQgZmllbGROYW1lOiBzdHJpbmdcblxuICAgIGxldCB0YXJnZXRUYWJsZSA9IGNvbHVtbnNcbiAgICBsZXQgdGFyZ2V0SW5kZXhlcyA9IGluZGV4ZXNcblxuICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgY29sdW1uTmFtZSA9IGAke2NvbHVtblByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWVbMF0gPT09ICdfJyA/ICdfJyA6ICcnfSR7dG9TbmFrZUNhc2UoXG4gICAgICAgIGZpZWxkLm5hbWUsXG4gICAgICApfWBcbiAgICAgIGZpZWxkTmFtZSA9IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1gXG5cbiAgICAgIC8vIElmIGZpZWxkIGlzIGxvY2FsaXplZCxcbiAgICAgIC8vIGFkZCB0aGUgY29sdW1uIHRvIHRoZSBsb2NhbGUgdGFibGUgaW5zdGVhZCBvZiBtYWluIHRhYmxlXG4gICAgICBpZiAoYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24gJiYgKGZpZWxkLmxvY2FsaXplZCB8fCBmb3JjZUxvY2FsaXplZCkpIHtcbiAgICAgICAgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIHRhcmdldFRhYmxlID0gbG9jYWxlc0NvbHVtbnNcbiAgICAgICAgdGFyZ2V0SW5kZXhlcyA9IGxvY2FsZXNJbmRleGVzXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbGxlY3Rpb25JbmRleCA9IGNvbGxlY3Rpb25JbmRleGVzXG4gICAgICAgID8gY29sbGVjdGlvbkluZGV4ZXMuZmluZEluZGV4KChpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGluZGV4LmZpZWxkcykuc29tZSgoaW5kZXhGaWVsZCkgPT4gaW5kZXhGaWVsZCA9PT0gZmllbGROYW1lKVxuICAgICAgICAgIH0pXG4gICAgICAgIDogLTFcblxuICAgICAgaWYgKGNvbGxlY3Rpb25JbmRleCA+IC0xKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0b1NuYWtlQ2FzZShcbiAgICAgICAgICBgJHtPYmplY3Qua2V5cyhjb2xsZWN0aW9uSW5kZXhlc1tjb2xsZWN0aW9uSW5kZXhdLmZpZWxkcykuam9pbignXycpfWAsXG4gICAgICAgIClcbiAgICAgICAgdGFyZ2V0SW5kZXhlc1tgJHtuYW1lfUlkeGBdID0gY3JlYXRlSW5kZXgoe1xuICAgICAgICAgIG5hbWU6IE9iamVjdC5rZXlzKGNvbGxlY3Rpb25JbmRleGVzW2NvbGxlY3Rpb25JbmRleF0uZmllbGRzKSxcbiAgICAgICAgICBjb2x1bW5OYW1lOiBuYW1lLFxuICAgICAgICAgIHVuaXF1ZTogY29sbGVjdGlvbkluZGV4ZXNbY29sbGVjdGlvbkluZGV4XS5vcHRpb25zLnVuaXF1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgY29sbGVjdGlvbkluZGV4ZXMuc3BsaWNlKGNvbGxlY3Rpb25JbmRleClcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAoZmllbGQudW5pcXVlIHx8IGZpZWxkLmluZGV4KSAmJlxuICAgICAgICAhWydhcnJheScsICdibG9ja3MnLCAnZ3JvdXAnLCAncG9pbnQnLCAncmVsYXRpb25zaGlwJywgJ3VwbG9hZCddLmluY2x1ZGVzKGZpZWxkLnR5cGUpICYmXG4gICAgICAgICEoZmllbGQudHlwZSA9PT0gJ251bWJlcicgJiYgZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSlcbiAgICAgICkge1xuICAgICAgICB0YXJnZXRJbmRleGVzW2Ake2ZpZWxkLm5hbWV9SWR4YF0gPSBjcmVhdGVJbmRleCh7XG4gICAgICAgICAgbmFtZTogZmllbGROYW1lLFxuICAgICAgICAgIGNvbHVtbk5hbWUsXG4gICAgICAgICAgdW5pcXVlOiBkaXNhYmxlVW5pcXVlICE9PSB0cnVlICYmIGZpZWxkLnVuaXF1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgY2FzZSAnY29kZSc6XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6IHtcbiAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IHZhcmNoYXIoY29sdW1uTmFtZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQuaW5kZXgpIHtcbiAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9ICdpbmRleCdcbiAgICAgICAgICB9IGVsc2UgaWYgKCFoYXNNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQudW5pcXVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ3VyYXRpb24oXG4gICAgICAgICAgICAgICdVbmlxdWUgaXMgbm90IHN1cHBvcnRlZCBpbiBQb3N0Z3JlcyBmb3IgaGFzTWFueSBudW1iZXIgZmllbGRzLicsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBudW1lcmljKGNvbHVtbk5hbWUpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmljaFRleHQnOlxuICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IGpzb25iKGNvbHVtbk5hbWUpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2RhdGUnOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSB0aW1lc3RhbXAoY29sdW1uTmFtZSwge1xuICAgICAgICAgIG1vZGU6ICdzdHJpbmcnLFxuICAgICAgICAgIHByZWNpc2lvbjogMyxcbiAgICAgICAgICB3aXRoVGltZXpvbmU6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyYWRpbyc6XG4gICAgICBjYXNlICdzZWxlY3QnOiB7XG4gICAgICAgIGNvbnN0IGVudW1OYW1lID0gYGVudW1fJHtuZXdUYWJsZU5hbWV9XyR7Y29sdW1uUHJlZml4IHx8ICcnfSR7dG9TbmFrZUNhc2UoZmllbGQubmFtZSl9YFxuXG4gICAgICAgIGFkYXB0ZXIuZW51bXNbZW51bU5hbWVdID0gcGdFbnVtKFxuICAgICAgICAgIGVudW1OYW1lLFxuICAgICAgICAgIGZpZWxkLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25Jc09iamVjdChvcHRpb24pKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHRpb24udmFsdWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvblxuICAgICAgICAgIH0pIGFzIFtzdHJpbmcsIC4uLnN0cmluZ1tdXSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnc2VsZWN0JyAmJiBmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0VGFibGVOYW1lID0gYCR7bmV3VGFibGVOYW1lfV8ke3RvU25ha2VDYXNlKGZpZWxkTmFtZSl9YFxuICAgICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtwYXJlbnRJRENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgICAgIHZhbHVlOiBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSgndmFsdWUnKSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICA+ID0ge31cblxuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIGJhc2VDb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcucGFyZW50T3JkZXJMb2NhbGUgPSAoY29scykgPT5cbiAgICAgICAgICAgICAgdW5pcXVlKGAke3NlbGVjdFRhYmxlTmFtZX1fcGFyZW50X2lkX29yZGVyX2xvY2FsZV91bmlxdWVgKS5vbihcbiAgICAgICAgICAgICAgICBjb2xzLnBhcmVudCxcbiAgICAgICAgICAgICAgICBjb2xzLm9yZGVyLFxuICAgICAgICAgICAgICAgIGNvbHMubG9jYWxlLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5wYXJlbnQgPSAoY29scykgPT4gaW5kZXgoJ3BhcmVudF9pZHgnKS5vbihjb2xzLnBhcmVudClcbiAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5vcmRlciA9IChjb2xzKSA9PiBpbmRleCgnb3JkZXJfaWR4Jykub24oY29scy5vcmRlcilcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQuaW5kZXgpIHtcbiAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy52YWx1ZSA9IChjb2xzKSA9PiBpbmRleCgndmFsdWVfaWR4Jykub24oY29scy52YWx1ZSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBidWlsZFRhYmxlKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBiYXNlQ29sdW1ucyxcbiAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgICBmaWVsZHM6IFtdLFxuICAgICAgICAgICAgdGFibGVOYW1lOiBzZWxlY3RUYWJsZU5hbWUsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQuc2V0KGZpZWxkTmFtZSwgc2VsZWN0VGFibGVOYW1lKVxuXG4gICAgICAgICAgY29uc3Qgc2VsZWN0VGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMoYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXSwgKHsgb25lIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVsYXRpb248c3RyaW5nPj4gPSB7XG4gICAgICAgICAgICAgIHBhcmVudDogb25lKGFkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0sIHtcbiAgICAgICAgICAgICAgICBmaWVsZHM6IFthZGFwdGVyLnRhYmxlc1tzZWxlY3RUYWJsZU5hbWVdLnBhcmVudF0sXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25fJHtzZWxlY3RUYWJsZU5hbWV9YF0gPSBzZWxlY3RUYWJsZVJlbGF0aW9uc1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBhZGFwdGVyLmVudW1zW2VudW1OYW1lXShmaWVsZE5hbWUpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnY2hlY2tib3gnOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBib29sZWFuKGNvbHVtbk5hbWUpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICBjb25zdCBhcnJheVRhYmxlTmFtZSA9IGAke25ld1RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG4gICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgIF9wYXJlbnRJRDogcGFyZW50SURDb2x1bW5NYXBbcGFyZW50SURDb2xUeXBlXSgnX3BhcmVudF9pZCcpXG4gICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgIC5ub3ROdWxsKCksXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXIgfCBVbmlxdWVDb25zdHJhaW50QnVpbGRlclxuICAgICAgICA+ID0ge31cblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgYmFzZUNvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5fcGFyZW50T3JkZXJMb2NhbGUgPSAoY29scykgPT5cbiAgICAgICAgICAgIHVuaXF1ZShgJHthcnJheVRhYmxlTmFtZX1fcGFyZW50X2lkX29yZGVyX2xvY2FsZV91bmlxdWVgKS5vbihcbiAgICAgICAgICAgICAgY29scy5fcGFyZW50SUQsXG4gICAgICAgICAgICAgIGNvbHMuX29yZGVyLFxuICAgICAgICAgICAgICBjb2xzLl9sb2NhbGUsXG4gICAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9wYXJlbnRPcmRlciA9IChjb2xzKSA9PlxuICAgICAgICAgICAgdW5pcXVlKGAke2FycmF5VGFibGVOYW1lfV9wYXJlbnRfaWRfb3JkZXJfdW5pcXVlYCkub24oY29scy5fcGFyZW50SUQsIGNvbHMuX29yZGVyKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyByZWxhdGlvbnNUb0J1aWxkOiBzdWJSZWxhdGlvbnNUb0J1aWxkIH0gPSBidWlsZFRhYmxlKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZTogYXJyYXlUYWJsZU5hbWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmVsYXRpb25zVG9CdWlsZC5zZXQoZmllbGROYW1lLCBhcnJheVRhYmxlTmFtZSlcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW2FycmF5VGFibGVOYW1lXSwgKHsgbWFueSwgb25lIH0pID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgX3BhcmVudElEOiBvbmUoYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXSwge1xuICAgICAgICAgICAgICBmaWVsZHM6IFthZGFwdGVyLnRhYmxlc1thcnJheVRhYmxlTmFtZV0uX3BhcmVudElEXSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShmaWVsZC5maWVsZHMpKSB7XG4gICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2FycmF5VGFibGVOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3ViUmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfSlcblxuICAgICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7YXJyYXlUYWJsZU5hbWV9YF0gPSBhcnJheVRhYmxlUmVsYXRpb25zXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgICBmaWVsZC5ibG9ja3MuZm9yRWFjaCgoYmxvY2spID0+IHtcbiAgICAgICAgICBjb25zdCBibG9ja1RhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICBpZiAoIWFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSkge1xuICAgICAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3Jvb3RUYWJsZUlEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGF0aDogdGV4dCgnX3BhdGgnKS5ub3ROdWxsKCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJhc2VFeHRyYUNvbmZpZzogUmVjb3JkPFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICAgID4gPSB7fVxuXG4gICAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9wYXJlbnRQYXRoT3JkZXJMb2NhbGUgPSAoY29scykgPT5cbiAgICAgICAgICAgICAgICB1bmlxdWUoYCR7YmxvY2tUYWJsZU5hbWV9X3BhcmVudF9pZF9wYXRoX29yZGVyX2xvY2FsZV91bmlxdWVgKS5vbihcbiAgICAgICAgICAgICAgICAgIGNvbHMuX3BhcmVudElELFxuICAgICAgICAgICAgICAgICAgY29scy5fcGF0aCxcbiAgICAgICAgICAgICAgICAgIGNvbHMuX29yZGVyLFxuICAgICAgICAgICAgICAgICAgY29scy5fbG9jYWxlLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5fcGFyZW50UGF0aE9yZGVyID0gKGNvbHMpID0+XG4gICAgICAgICAgICAgICAgdW5pcXVlKGAke2Jsb2NrVGFibGVOYW1lfV9wYXJlbnRfaWRfcGF0aF9vcmRlcl91bmlxdWVgKS5vbihcbiAgICAgICAgICAgICAgICAgIGNvbHMuX3BhcmVudElELFxuICAgICAgICAgICAgICAgICAgY29scy5fcGF0aCxcbiAgICAgICAgICAgICAgICAgIGNvbHMuX29yZGVyLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgeyByZWxhdGlvbnNUb0J1aWxkOiBzdWJSZWxhdGlvbnNUb0J1aWxkIH0gPSBidWlsZFRhYmxlKHtcbiAgICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgICAgYmFzZUNvbHVtbnMsXG4gICAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHRhYmxlTmFtZTogYmxvY2tUYWJsZU5hbWUsXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBjb25zdCBibG9ja1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICh7IG1hbnksIG9uZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICAgICAgICAgIF9wYXJlbnRJRDogb25lKGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkczogW2FkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXS5fcGFyZW50SURdLFxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShibG9jay5maWVsZHMpKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2Jsb2NrVGFibGVOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3ViUmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2Jsb2NrVGFibGVOYW1lfWBdID0gYmxvY2tUYWJsZVJlbGF0aW9uc1xuICAgICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwoe1xuICAgICAgICAgICAgICBibG9jayxcbiAgICAgICAgICAgICAgbG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLnNldChgX2Jsb2Nrc18ke2Jsb2NrLnNsdWd9YCwgYmxvY2tUYWJsZU5hbWUpXG4gICAgICAgIH0pXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAndGFiJzpcbiAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICBpZiAoISgnbmFtZScgaW4gZmllbGQpKSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgY29sbGVjdGlvbkluZGV4ZXMsXG4gICAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgICAgbmV3VGFibGVOYW1lOiBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiBncm91cEhhc0xvY2FsaXplZEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBncm91cEhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBjb2xsZWN0aW9uSW5kZXhlcyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtbk5hbWV9X2AsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4OiBgJHtmaWVsZE5hbWV9X2AsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQ6IGZpZWxkLmxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZTogYCR7cGFyZW50VGFibGVOYW1lfV8ke2NvbHVtbk5hbWV9YCxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogdGFiSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IHRhYkhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZDogdGFiSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIGNvbGxlY3Rpb25JbmRleGVzLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC50YWJzLm1hcCgodGFiKSA9PiAoeyAuLi50YWIsIHR5cGU6ICd0YWInIH0pKSxcbiAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICBjYXNlICdjb2xsYXBzaWJsZSc6IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogcm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiByb3dIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgY29sbGVjdGlvbkluZGV4ZXMsXG4gICAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZTogcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6XG4gICAgICBjYXNlICd1cGxvYWQnOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgIGZpZWxkLnJlbGF0aW9uVG8uZm9yRWFjaCgocmVsYXRpb24pID0+IHJlbGF0aW9uc2hpcHMuYWRkKHJlbGF0aW9uKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLmFkZChmaWVsZC5yZWxhdGlvblRvKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY29uc3QgY29uZGl0aW9uID0gZmllbGQuYWRtaW4gJiYgZmllbGQuYWRtaW4uY29uZGl0aW9uXG5cbiAgICBpZiAodGFyZ2V0VGFibGVbZmllbGROYW1lXSAmJiAncmVxdWlyZWQnIGluIGZpZWxkICYmIGZpZWxkLnJlcXVpcmVkICYmICFjb25kaXRpb24pIHtcbiAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0ubm90TnVsbCgpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgaGFzTG9jYWxpemVkRmllbGQsXG4gICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgIGhhc01hbnlOdW1iZXJGaWVsZCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInRyYXZlcnNlRmllbGRzIiwiYWRhcHRlciIsImJ1aWxkUmVsYXRpb25zaGlwcyIsImNvbGxlY3Rpb25JbmRleGVzIiwiY29sdW1uUHJlZml4IiwiY29sdW1ucyIsImRpc2FibGVVbmlxdWUiLCJmaWVsZFByZWZpeCIsImZpZWxkcyIsImZvcmNlTG9jYWxpemVkIiwiaW5kZXhlcyIsImxvY2FsZXNDb2x1bW5zIiwibG9jYWxlc0luZGV4ZXMiLCJuZXdUYWJsZU5hbWUiLCJwYXJlbnRUYWJsZU5hbWUiLCJyZWxhdGlvbnNUb0J1aWxkIiwicmVsYXRpb25zaGlwcyIsInJvb3RSZWxhdGlvbnNUb0J1aWxkIiwicm9vdFRhYmxlSURDb2xUeXBlIiwicm9vdFRhYmxlTmFtZSIsImhhc0xvY2FsaXplZEZpZWxkIiwiaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJoYXNNYW55TnVtYmVyRmllbGQiLCJoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJwYXJlbnRJRENvbFR5cGUiLCJpZCIsIlBnTnVtZXJpY0J1aWxkZXIiLCJQZ1ZhcmNoYXJCdWlsZGVyIiwiZm9yRWFjaCIsImZpZWxkIiwibmFtZSIsImNvbHVtbk5hbWUiLCJmaWVsZE5hbWUiLCJ0YXJnZXRUYWJsZSIsInRhcmdldEluZGV4ZXMiLCJmaWVsZEFmZmVjdHNEYXRhIiwidG9TbmFrZUNhc2UiLCJwYXlsb2FkIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwibG9jYWxpemVkIiwiY29sbGVjdGlvbkluZGV4IiwiZmluZEluZGV4IiwiaW5kZXgiLCJPYmplY3QiLCJrZXlzIiwic29tZSIsImluZGV4RmllbGQiLCJqb2luIiwiY3JlYXRlSW5kZXgiLCJ1bmlxdWUiLCJvcHRpb25zIiwic3BsaWNlIiwiaW5jbHVkZXMiLCJ0eXBlIiwiaGFzTWFueSIsInZhcmNoYXIiLCJJbnZhbGlkQ29uZmlndXJhdGlvbiIsIm51bWVyaWMiLCJqc29uYiIsInRpbWVzdGFtcCIsIm1vZGUiLCJwcmVjaXNpb24iLCJ3aXRoVGltZXpvbmUiLCJlbnVtTmFtZSIsImVudW1zIiwicGdFbnVtIiwibWFwIiwib3B0aW9uIiwib3B0aW9uSXNPYmplY3QiLCJ2YWx1ZSIsInNlbGVjdFRhYmxlTmFtZSIsImJhc2VDb2x1bW5zIiwib3JkZXIiLCJpbnRlZ2VyIiwibm90TnVsbCIsInBhcmVudCIsInBhcmVudElEQ29sdW1uTWFwIiwicmVmZXJlbmNlcyIsInRhYmxlcyIsIm9uRGVsZXRlIiwiYmFzZUV4dHJhQ29uZmlnIiwibG9jYWxlIiwiZW51bV9fbG9jYWxlcyIsInBhcmVudE9yZGVyTG9jYWxlIiwiY29scyIsIm9uIiwiYnVpbGRUYWJsZSIsInRhYmxlTmFtZSIsInNldCIsInNlbGVjdFRhYmxlUmVsYXRpb25zIiwicmVsYXRpb25zIiwib25lIiwicmVzdWx0IiwiYm9vbGVhbiIsImFycmF5VGFibGVOYW1lIiwiX29yZGVyIiwiX3BhcmVudElEIiwiX2xvY2FsZSIsIl9wYXJlbnRPcmRlckxvY2FsZSIsIl9wYXJlbnRPcmRlciIsInN1YlJlbGF0aW9uc1RvQnVpbGQiLCJhcnJheVRhYmxlUmVsYXRpb25zIiwibWFueSIsImhhc0xvY2FsZXNUYWJsZSIsIl9sb2NhbGVzIiwidmFsIiwia2V5IiwiYmxvY2tzIiwiYmxvY2siLCJibG9ja1RhYmxlTmFtZSIsInNsdWciLCJfcGF0aCIsInRleHQiLCJfcGFyZW50UGF0aE9yZGVyTG9jYWxlIiwiX3BhcmVudFBhdGhPcmRlciIsImJsb2NrVGFibGVSZWxhdGlvbnMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJ2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCIsInRhYmxlIiwiZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCIsImdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsImdyb3VwSGFzTWFueU51bWJlckZpZWxkIiwidGFiSGFzTG9jYWxpemVkRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsInRhYkhhc01hbnlOdW1iZXJGaWVsZCIsInRhYnMiLCJ0YWIiLCJyb3dIYXNMb2NhbGl6ZWRGaWVsZCIsInJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsInJvd0hhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwicm93SGFzTWFueU51bWJlckZpZWxkIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsInJlbGF0aW9uIiwiYWRkIiwiY29uZGl0aW9uIiwiYWRtaW4iLCJyZXF1aXJlZCJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQTZEdkJBOzs7ZUFBQUE7Ozs0QkF4RGE7d0JBY25CO3dCQUM4Qjt1QkFDWTtvRUFDekI7aUNBSVE7dUJBQ0w7NkJBQ0M7bUNBQ007a0RBQ2U7Ozs7OztBQStCMUMsTUFBTUEsaUJBQWlCLENBQUMsRUFDN0JDLE9BQU8sRUFDUEMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLFlBQVksRUFDWkMsT0FBTyxFQUNQQyxnQkFBZ0IsS0FBSyxFQUNyQkMsV0FBVyxFQUNYQyxNQUFNLEVBQ05DLGNBQWMsRUFDZEMsT0FBTyxFQUNQQyxjQUFjLEVBQ2RDLGNBQWMsRUFDZEMsWUFBWSxFQUNaQyxlQUFlLEVBQ2ZDLGdCQUFnQixFQUNoQkMsYUFBYSxFQUNiQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixFQUNsQkMsYUFBYSxFQUNSO0lBQ0wsSUFBSUMsb0JBQW9CO0lBQ3hCLElBQUlDLGdDQUFnQztJQUNwQyxJQUFJQyxxQkFBd0M7SUFDNUMsSUFBSUMsOEJBQThCO0lBRWxDLElBQUlDLGtCQUFrQjtJQUN0QixJQUFJbkIsUUFBUW9CLEVBQUUsWUFB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
446
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFNhbml0aXplZENvbGxlY3Rpb25Db25maWcsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIFBnTnVtZXJpY0J1aWxkZXIsXG4gIFBnVmFyY2hhckJ1aWxkZXIsXG4gIGJvb2xlYW4sXG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBqc29uYixcbiAgbnVtZXJpYyxcbiAgcGdFbnVtLFxuICB0ZXh0LFxuICB0aW1lc3RhbXAsXG4gIHVuaXF1ZSxcbiAgdmFyY2hhcixcbn0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEludmFsaWRDb25maWd1cmF0aW9uIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCBvcHRpb25Jc09iamVjdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IGhhc0xvY2FsZXNUYWJsZSB9IGZyb20gJy4uL3V0aWxpdGllcy9oYXNMb2NhbGVzVGFibGUnXG5pbXBvcnQgeyBidWlsZFRhYmxlIH0gZnJvbSAnLi9idWlsZCdcbmltcG9ydCB7IGNyZWF0ZUluZGV4IH0gZnJvbSAnLi9jcmVhdGVJbmRleCdcbmltcG9ydCB7IHBhcmVudElEQ29sdW1uTWFwIH0gZnJvbSAnLi9wYXJlbnRJRENvbHVtbk1hcCdcbmltcG9ydCB7IHZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsIH0gZnJvbSAnLi92YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCdcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYnVpbGRSZWxhdGlvbnNoaXBzOiBib29sZWFuXG4gIGNvbGxlY3Rpb25JbmRleGVzOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnWydpbmRleGVzJ11cbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj5cbiAgZGlzYWJsZVVuaXF1ZT86IGJvb2xlYW5cbiAgZmllbGRQcmVmaXg/OiBzdHJpbmdcbiAgZmllbGRzOiAoRmllbGQgfCBUYWJBc0ZpZWxkKVtdXG4gIGZvcmNlTG9jYWxpemVkPzogYm9vbGVhblxuICBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlcj5cbiAgbG9jYWxlc0NvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj5cbiAgbG9jYWxlc0luZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPlxuICBuZXdUYWJsZU5hbWU6IHN0cmluZ1xuICBwYXJlbnRUYWJsZU5hbWU6IHN0cmluZ1xuICByZWxhdGlvbnNUb0J1aWxkOiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJlbGF0aW9uc2hpcHM6IFNldDxzdHJpbmc+XG4gIHJvb3RSZWxhdGlvbnNUb0J1aWxkPzogTWFwPHN0cmluZywgc3RyaW5nPlxuICByb290VGFibGVJRENvbFR5cGU6IHN0cmluZ1xuICByb290VGFibGVOYW1lOiBzdHJpbmdcbn1cblxudHlwZSBSZXN1bHQgPSB7XG4gIGhhc0xvY2FsaXplZEZpZWxkOiBib29sZWFuXG4gIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogYm9vbGVhblxuICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogYm9vbGVhblxuICBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCB0cmF2ZXJzZUZpZWxkcyA9ICh7XG4gIGFkYXB0ZXIsXG4gIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgY29sbGVjdGlvbkluZGV4ZXMsXG4gIGNvbHVtblByZWZpeCxcbiAgY29sdW1ucyxcbiAgZGlzYWJsZVVuaXF1ZSA9IGZhbHNlLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZUxvY2FsaXplZCxcbiAgaW5kZXhlcyxcbiAgbG9jYWxlc0NvbHVtbnMsXG4gIGxvY2FsZXNJbmRleGVzLFxuICBuZXdUYWJsZU5hbWUsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcmVsYXRpb25zVG9CdWlsZCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbn06IEFyZ3MpOiBSZXN1bHQgPT4ge1xuICBsZXQgaGFzTG9jYWxpemVkRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhbiA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSBmYWxzZVxuXG4gIGxldCBwYXJlbnRJRENvbFR5cGUgPSAnaW50ZWdlcidcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ051bWVyaWNCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAnbnVtZXJpYydcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ1ZhcmNoYXJCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAndmFyY2hhcidcblxuICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICBpZiAoJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpIHJldHVyblxuICAgIGxldCBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgICBsZXQgZmllbGROYW1lOiBzdHJpbmdcblxuICAgIGxldCB0YXJnZXRUYWJsZSA9IGNvbHVtbnNcbiAgICBsZXQgdGFyZ2V0SW5kZXhlcyA9IGluZGV4ZXNcblxuICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgY29sdW1uTmFtZSA9IGAke2NvbHVtblByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWVbMF0gPT09ICdfJyA/ICdfJyA6ICcnfSR7dG9TbmFrZUNhc2UoXG4gICAgICAgIGZpZWxkLm5hbWUsXG4gICAgICApfWBcbiAgICAgIGZpZWxkTmFtZSA9IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1gXG5cbiAgICAgIC8vIElmIGZpZWxkIGlzIGxvY2FsaXplZCxcbiAgICAgIC8vIGFkZCB0aGUgY29sdW1uIHRvIHRoZSBsb2NhbGUgdGFibGUgaW5zdGVhZCBvZiBtYWluIHRhYmxlXG4gICAgICBpZiAoYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24gJiYgKGZpZWxkLmxvY2FsaXplZCB8fCBmb3JjZUxvY2FsaXplZCkpIHtcbiAgICAgICAgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIHRhcmdldFRhYmxlID0gbG9jYWxlc0NvbHVtbnNcbiAgICAgICAgdGFyZ2V0SW5kZXhlcyA9IGxvY2FsZXNJbmRleGVzXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbGxlY3Rpb25JbmRleCA9IGNvbGxlY3Rpb25JbmRleGVzXG4gICAgICAgID8gY29sbGVjdGlvbkluZGV4ZXMuZmluZEluZGV4KChpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGluZGV4LmZpZWxkcykuc29tZSgoaW5kZXhGaWVsZCkgPT4gaW5kZXhGaWVsZCA9PT0gZmllbGROYW1lKVxuICAgICAgICAgIH0pXG4gICAgICAgIDogLTFcblxuICAgICAgaWYgKGNvbGxlY3Rpb25JbmRleCA+IC0xKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0b1NuYWtlQ2FzZShcbiAgICAgICAgICBgJHtPYmplY3Qua2V5cyhjb2xsZWN0aW9uSW5kZXhlc1tjb2xsZWN0aW9uSW5kZXhdLmZpZWxkcykuam9pbignXycpfWAsXG4gICAgICAgIClcbiAgICAgICAgdGFyZ2V0SW5kZXhlc1tgJHtuYW1lfUlkeGBdID0gY3JlYXRlSW5kZXgoe1xuICAgICAgICAgIG5hbWU6IE9iamVjdC5rZXlzKGNvbGxlY3Rpb25JbmRleGVzW2NvbGxlY3Rpb25JbmRleF0uZmllbGRzKSxcbiAgICAgICAgICBjb2x1bW5OYW1lOiBuYW1lLFxuICAgICAgICAgIHVuaXF1ZTogY29sbGVjdGlvbkluZGV4ZXNbY29sbGVjdGlvbkluZGV4XS5vcHRpb25zLnVuaXF1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgY29sbGVjdGlvbkluZGV4ZXMuc3BsaWNlKGNvbGxlY3Rpb25JbmRleClcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAoZmllbGQudW5pcXVlIHx8IGZpZWxkLmluZGV4KSAmJlxuICAgICAgICAhWydhcnJheScsICdibG9ja3MnLCAnZ3JvdXAnLCAncG9pbnQnLCAncmVsYXRpb25zaGlwJywgJ3VwbG9hZCddLmluY2x1ZGVzKGZpZWxkLnR5cGUpICYmXG4gICAgICAgICEoZmllbGQudHlwZSA9PT0gJ251bWJlcicgJiYgZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSlcbiAgICAgICkge1xuICAgICAgICB0YXJnZXRJbmRleGVzW2Ake2ZpZWxkLm5hbWV9SWR4YF0gPSBjcmVhdGVJbmRleCh7XG4gICAgICAgICAgbmFtZTogZmllbGROYW1lLFxuICAgICAgICAgIGNvbHVtbk5hbWUsXG4gICAgICAgICAgdW5pcXVlOiBkaXNhYmxlVW5pcXVlICE9PSB0cnVlICYmIGZpZWxkLnVuaXF1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgY2FzZSAnY29kZSc6XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6IHtcbiAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IHZhcmNoYXIoY29sdW1uTmFtZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQuaW5kZXgpIHtcbiAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9ICdpbmRleCdcbiAgICAgICAgICB9IGVsc2UgaWYgKCFoYXNNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQudW5pcXVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ3VyYXRpb24oXG4gICAgICAgICAgICAgICdVbmlxdWUgaXMgbm90IHN1cHBvcnRlZCBpbiBQb3N0Z3JlcyBmb3IgaGFzTWFueSBudW1iZXIgZmllbGRzLicsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBudW1lcmljKGNvbHVtbk5hbWUpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmljaFRleHQnOlxuICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IGpzb25iKGNvbHVtbk5hbWUpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2RhdGUnOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSB0aW1lc3RhbXAoY29sdW1uTmFtZSwge1xuICAgICAgICAgIG1vZGU6ICdzdHJpbmcnLFxuICAgICAgICAgIHByZWNpc2lvbjogMyxcbiAgICAgICAgICB3aXRoVGltZXpvbmU6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyYWRpbyc6XG4gICAgICBjYXNlICdzZWxlY3QnOiB7XG4gICAgICAgIGNvbnN0IGVudW1OYW1lID0gYGVudW1fJHtuZXdUYWJsZU5hbWV9XyR7Y29sdW1uUHJlZml4IHx8ICcnfSR7dG9TbmFrZUNhc2UoZmllbGQubmFtZSl9YFxuXG4gICAgICAgIGFkYXB0ZXIuZW51bXNbZW51bU5hbWVdID0gcGdFbnVtKFxuICAgICAgICAgIGVudW1OYW1lLFxuICAgICAgICAgIGZpZWxkLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25Jc09iamVjdChvcHRpb24pKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHRpb24udmFsdWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvblxuICAgICAgICAgIH0pIGFzIFtzdHJpbmcsIC4uLnN0cmluZ1tdXSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnc2VsZWN0JyAmJiBmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0VGFibGVOYW1lID0gYCR7bmV3VGFibGVOYW1lfV8ke3RvU25ha2VDYXNlKGZpZWxkTmFtZSl9YFxuICAgICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtwYXJlbnRJRENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgICAgIHZhbHVlOiBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSgndmFsdWUnKSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICA+ID0ge31cblxuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIGJhc2VDb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcucGFyZW50T3JkZXJMb2NhbGUgPSAoY29scykgPT5cbiAgICAgICAgICAgICAgdW5pcXVlKGAke3NlbGVjdFRhYmxlTmFtZX1fdW5pcXVlYCkub24oY29scy5wYXJlbnQsIGNvbHMub3JkZXIsIGNvbHMubG9jYWxlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcucGFyZW50ID0gKGNvbHMpID0+IGluZGV4KCdwYXJlbnRfaWR4Jykub24oY29scy5wYXJlbnQpXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcub3JkZXIgPSAoY29scykgPT4gaW5kZXgoJ29yZGVyX2lkeCcpLm9uKGNvbHMub3JkZXIpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcudmFsdWUgPSAoY29scykgPT4gaW5kZXgoJ3ZhbHVlX2lkeCcpLm9uKGNvbHMudmFsdWUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnVpbGRUYWJsZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYmFzZUNvbHVtbnMsXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogc2VsZWN0VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIHNlbGVjdFRhYmxlTmFtZSlcblxuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW3NlbGVjdFRhYmxlTmFtZV0sICh7IG9uZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXS5wYXJlbnRdLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uXyR7c2VsZWN0VGFibGVOYW1lfWBdID0gc2VsZWN0VGFibGVSZWxhdGlvbnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oZmllbGROYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYm9vbGVhbihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgY29uc3QgYXJyYXlUYWJsZU5hbWUgPSBgJHtuZXdUYWJsZU5hbWV9XyR7dG9TbmFrZUNhc2UoZmllbGQubmFtZSl9YFxuICAgICAgICBjb25zdCBiYXNlQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgICAgICBfb3JkZXI6IGludGVnZXIoJ19vcmRlcicpLm5vdE51bGwoKSxcbiAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3BhcmVudElEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pXG4gICAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFzZUV4dHJhQ29uZmlnOiBSZWNvcmQ8XG4gICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgPiA9IHt9XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGJhc2VDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICBiYXNlRXh0cmFDb25maWcuX3BhcmVudE9yZGVyTG9jYWxlID0gKGNvbHMpID0+XG4gICAgICAgICAgICB1bmlxdWUoYCR7YXJyYXlUYWJsZU5hbWV9X3VuaXF1ZWApLm9uKGNvbHMuX3BhcmVudElELCBjb2xzLl9vcmRlciwgY29scy5fbG9jYWxlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5fcGFyZW50T3JkZXIgPSAoY29scykgPT5cbiAgICAgICAgICAgIHVuaXF1ZShgJHthcnJheVRhYmxlTmFtZX1fdW5pcXVlYCkub24oY29scy5fcGFyZW50SUQsIGNvbHMuX29yZGVyKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyByZWxhdGlvbnNUb0J1aWxkOiBzdWJSZWxhdGlvbnNUb0J1aWxkIH0gPSBidWlsZFRhYmxlKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZTogYXJyYXlUYWJsZU5hbWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmVsYXRpb25zVG9CdWlsZC5zZXQoZmllbGROYW1lLCBhcnJheVRhYmxlTmFtZSlcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW2FycmF5VGFibGVOYW1lXSwgKHsgbWFueSwgb25lIH0pID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgX3BhcmVudElEOiBvbmUoYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXSwge1xuICAgICAgICAgICAgICBmaWVsZHM6IFthZGFwdGVyLnRhYmxlc1thcnJheVRhYmxlTmFtZV0uX3BhcmVudElEXSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShmaWVsZC5maWVsZHMpKSB7XG4gICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2FycmF5VGFibGVOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3ViUmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfSlcblxuICAgICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7YXJyYXlUYWJsZU5hbWV9YF0gPSBhcnJheVRhYmxlUmVsYXRpb25zXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgICBmaWVsZC5ibG9ja3MuZm9yRWFjaCgoYmxvY2spID0+IHtcbiAgICAgICAgICBjb25zdCBibG9ja1RhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICBpZiAoIWFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSkge1xuICAgICAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3Jvb3RUYWJsZUlEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGF0aDogdGV4dCgnX3BhdGgnKS5ub3ROdWxsKCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJhc2VFeHRyYUNvbmZpZzogUmVjb3JkPFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICAgID4gPSB7fVxuXG4gICAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9wYXJlbnRQYXRoT3JkZXJMb2NhbGUgPSAoY29scykgPT5cbiAgICAgICAgICAgICAgICB1bmlxdWUoYCR7YmxvY2tUYWJsZU5hbWV9X3VuaXF1ZWApLm9uKFxuICAgICAgICAgICAgICAgICAgY29scy5fcGFyZW50SUQsXG4gICAgICAgICAgICAgICAgICBjb2xzLl9wYXRoLFxuICAgICAgICAgICAgICAgICAgY29scy5fb3JkZXIsXG4gICAgICAgICAgICAgICAgICBjb2xzLl9sb2NhbGUsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9wYXJlbnRQYXRoT3JkZXIgPSAoY29scykgPT5cbiAgICAgICAgICAgICAgICB1bmlxdWUoYCR7YmxvY2tUYWJsZU5hbWV9X3VuaXF1ZWApLm9uKGNvbHMuX3BhcmVudElELCBjb2xzLl9wYXRoLCBjb2xzLl9vcmRlcilcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgeyByZWxhdGlvbnNUb0J1aWxkOiBzdWJSZWxhdGlvbnNUb0J1aWxkIH0gPSBidWlsZFRhYmxlKHtcbiAgICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgICAgYmFzZUNvbHVtbnMsXG4gICAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHRhYmxlTmFtZTogYmxvY2tUYWJsZU5hbWUsXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBjb25zdCBibG9ja1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICh7IG1hbnksIG9uZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICAgICAgICAgIF9wYXJlbnRJRDogb25lKGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkczogW2FkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXS5fcGFyZW50SURdLFxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShibG9jay5maWVsZHMpKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2Jsb2NrVGFibGVOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3ViUmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2Jsb2NrVGFibGVOYW1lfWBdID0gYmxvY2tUYWJsZVJlbGF0aW9uc1xuICAgICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwoe1xuICAgICAgICAgICAgICBibG9jayxcbiAgICAgICAgICAgICAgbG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLnNldChgX2Jsb2Nrc18ke2Jsb2NrLnNsdWd9YCwgYmxvY2tUYWJsZU5hbWUpXG4gICAgICAgIH0pXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAndGFiJzpcbiAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICBpZiAoISgnbmFtZScgaW4gZmllbGQpKSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgY29sbGVjdGlvbkluZGV4ZXMsXG4gICAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgICAgbmV3VGFibGVOYW1lOiBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiBncm91cEhhc0xvY2FsaXplZEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBncm91cEhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBjb2xsZWN0aW9uSW5kZXhlcyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtbk5hbWV9X2AsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4OiBgJHtmaWVsZE5hbWV9X2AsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQ6IGZpZWxkLmxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZTogYCR7cGFyZW50VGFibGVOYW1lfV8ke2NvbHVtbk5hbWV9YCxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogdGFiSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IHRhYkhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZDogdGFiSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIGNvbGxlY3Rpb25JbmRleGVzLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC50YWJzLm1hcCgodGFiKSA9PiAoeyAuLi50YWIsIHR5cGU6ICd0YWInIH0pKSxcbiAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICBjYXNlICdjb2xsYXBzaWJsZSc6IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogcm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiByb3dIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgY29sbGVjdGlvbkluZGV4ZXMsXG4gICAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZTogcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6XG4gICAgICBjYXNlICd1cGxvYWQnOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgIGZpZWxkLnJlbGF0aW9uVG8uZm9yRWFjaCgocmVsYXRpb24pID0+IHJlbGF0aW9uc2hpcHMuYWRkKHJlbGF0aW9uKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLmFkZChmaWVsZC5yZWxhdGlvblRvKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY29uc3QgY29uZGl0aW9uID0gZmllbGQuYWRtaW4gJiYgZmllbGQuYWRtaW4uY29uZGl0aW9uXG5cbiAgICBpZiAodGFyZ2V0VGFibGVbZmllbGROYW1lXSAmJiAncmVxdWlyZWQnIGluIGZpZWxkICYmIGZpZWxkLnJlcXVpcmVkICYmICFjb25kaXRpb24pIHtcbiAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0ubm90TnVsbCgpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgaGFzTG9jYWxpemVkRmllbGQsXG4gICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgIGhhc01hbnlOdW1iZXJGaWVsZCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInRyYXZlcnNlRmllbGRzIiwiYWRhcHRlciIsImJ1aWxkUmVsYXRpb25zaGlwcyIsImNvbGxlY3Rpb25JbmRleGVzIiwiY29sdW1uUHJlZml4IiwiY29sdW1ucyIsImRpc2FibGVVbmlxdWUiLCJmaWVsZFByZWZpeCIsImZpZWxkcyIsImZvcmNlTG9jYWxpemVkIiwiaW5kZXhlcyIsImxvY2FsZXNDb2x1bW5zIiwibG9jYWxlc0luZGV4ZXMiLCJuZXdUYWJsZU5hbWUiLCJwYXJlbnRUYWJsZU5hbWUiLCJyZWxhdGlvbnNUb0J1aWxkIiwicmVsYXRpb25zaGlwcyIsInJvb3RSZWxhdGlvbnNUb0J1aWxkIiwicm9vdFRhYmxlSURDb2xUeXBlIiwicm9vdFRhYmxlTmFtZSIsImhhc0xvY2FsaXplZEZpZWxkIiwiaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJoYXNNYW55TnVtYmVyRmllbGQiLCJoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJwYXJlbnRJRENvbFR5cGUiLCJpZCIsIlBnTnVtZXJpY0J1aWxkZXIiLCJQZ1ZhcmNoYXJCdWlsZGVyIiwiZm9yRWFjaCIsImZpZWxkIiwibmFtZSIsImNvbHVtbk5hbWUiLCJmaWVsZE5hbWUiLCJ0YXJnZXRUYWJsZSIsInRhcmdldEluZGV4ZXMiLCJmaWVsZEFmZmVjdHNEYXRhIiwidG9TbmFrZUNhc2UiLCJwYXlsb2FkIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwibG9jYWxpemVkIiwiY29sbGVjdGlvbkluZGV4IiwiZmluZEluZGV4IiwiaW5kZXgiLCJPYmplY3QiLCJrZXlzIiwic29tZSIsImluZGV4RmllbGQiLCJqb2luIiwiY3JlYXRlSW5kZXgiLCJ1bmlxdWUiLCJvcHRpb25zIiwic3BsaWNlIiwiaW5jbHVkZXMiLCJ0eXBlIiwiaGFzTWFueSIsInZhcmNoYXIiLCJJbnZhbGlkQ29uZmlndXJhdGlvbiIsIm51bWVyaWMiLCJqc29uYiIsInRpbWVzdGFtcCIsIm1vZGUiLCJwcmVjaXNpb24iLCJ3aXRoVGltZXpvbmUiLCJlbnVtTmFtZSIsImVudW1zIiwicGdFbnVtIiwibWFwIiwib3B0aW9uIiwib3B0aW9uSXNPYmplY3QiLCJ2YWx1ZSIsInNlbGVjdFRhYmxlTmFtZSIsImJhc2VDb2x1bW5zIiwib3JkZXIiLCJpbnRlZ2VyIiwibm90TnVsbCIsInBhcmVudCIsInBhcmVudElEQ29sdW1uTWFwIiwicmVmZXJlbmNlcyIsInRhYmxlcyIsIm9uRGVsZXRlIiwiYmFzZUV4dHJhQ29uZmlnIiwibG9jYWxlIiwiZW51bV9fbG9jYWxlcyIsInBhcmVudE9yZGVyTG9jYWxlIiwiY29scyIsIm9uIiwiYnVpbGRUYWJsZSIsInRhYmxlTmFtZSIsInNldCIsInNlbGVjdFRhYmxlUmVsYXRpb25zIiwicmVsYXRpb25zIiwib25lIiwicmVzdWx0IiwiYm9vbGVhbiIsImFycmF5VGFibGVOYW1lIiwiX29yZGVyIiwiX3BhcmVudElEIiwiX2xvY2FsZSIsIl9wYXJlbnRPcmRlckxvY2FsZSIsIl9wYXJlbnRPcmRlciIsInN1YlJlbGF0aW9uc1RvQnVpbGQiLCJhcnJheVRhYmxlUmVsYXRpb25zIiwibWFueSIsImhhc0xvY2FsZXNUYWJsZSIsIl9sb2NhbGVzIiwidmFsIiwia2V5IiwiYmxvY2tzIiwiYmxvY2siLCJibG9ja1RhYmxlTmFtZSIsInNsdWciLCJfcGF0aCIsInRleHQiLCJfcGFyZW50UGF0aE9yZGVyTG9jYWxlIiwiX3BhcmVudFBhdGhPcmRlciIsImJsb2NrVGFibGVSZWxhdGlvbnMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJ2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCIsInRhYmxlIiwiZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCIsImdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsImdyb3VwSGFzTWFueU51bWJlckZpZWxkIiwidGFiSGFzTG9jYWxpemVkRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsInRhYkhhc01hbnlOdW1iZXJGaWVsZCIsInRhYnMiLCJ0YWIiLCJyb3dIYXNMb2NhbGl6ZWRGaWVsZCIsInJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsInJvd0hhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwicm93SGFzTWFueU51bWJlckZpZWxkIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsInJlbGF0aW9uIiwiYWRkIiwiY29uZGl0aW9uIiwiYWRtaW4iLCJyZXF1aXJlZCJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQTZEdkJBOzs7ZUFBQUE7Ozs0QkF4RGE7d0JBY25CO3dCQUM4Qjt1QkFDWTtvRUFDekI7aUNBSVE7dUJBQ0w7NkJBQ0M7bUNBQ007a0RBQ2U7Ozs7OztBQStCMUMsTUFBTUEsaUJBQWlCLENBQUMsRUFDN0JDLE9BQU8sRUFDUEMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLFlBQVksRUFDWkMsT0FBTyxFQUNQQyxnQkFBZ0IsS0FBSyxFQUNyQkMsV0FBVyxFQUNYQyxNQUFNLEVBQ05DLGNBQWMsRUFDZEMsT0FBTyxFQUNQQyxjQUFjLEVBQ2RDLGNBQWMsRUFDZEMsWUFBWSxFQUNaQyxlQUFlLEVBQ2ZDLGdCQUFnQixFQUNoQkMsYUFBYSxFQUNiQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixFQUNsQkMsYUFBYSxFQUNSO0lBQ0wsSUFBSUMsb0JBQW9CO0lBQ3hCLElBQUlDLGdDQUFnQztJQUNwQyxJQUFJQyxxQkFBd0M7SUFDNUMsSUFBSUMsOEJBQThCO0lBRWxDLElBQUlDLGtCQUFrQjtJQUN0QixJQUFJbkIsUUFBUW9CLEVBQUUsWUFBWUMsd0JBQWdCLEVBQUVGLGtCQUFrQjtJQUM5RCxJQUFJbkIsUUFBUW9CLEVBQUUsWUFBWUUsd0JBQWdCLEVBQUVILGtCQUFrQjtJQUU5RGhCLE9BQU9vQixPQUFPLENBQUMsQ0FBQ0M7UUFDZCxJQUFJLFVBQVVBLFNBQVNBLE1BQU1DLElBQUksS0FBSyxNQUFNO1FBQzVDLElBQUlDO1FBQ0osSUFBSUM7UUFFSixJQUFJQyxjQUFjNUI7UUFDbEIsSUFBSTZCLGdCQUFnQnhCO1FBRXBCLElBQUl5QixJQUFBQSx1QkFBZ0IsRUFBQ04sUUFBUTtZQUMzQkUsYUFBYSxDQUFDLEVBQUUzQixnQkFBZ0IsR0FBRyxFQUFFeUIsTUFBTUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxN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
@@ -14,9 +14,9 @@ const _traverseFields = require("./traverseFields");
14
14
  const transform = ({ config, data, fields })=>{
15
15
  let relationships = {};
16
16
  let numbers = {};
17
- if ('_relationships' in data) {
18
- relationships = (0, _createRelationshipMap.createPathMap)(data._relationships);
19
- delete data._relationships;
17
+ if ('_rels' in data) {
18
+ relationships = (0, _createRelationshipMap.createPathMap)(data._rels);
19
+ delete data._rels;
20
20
  }
21
21
  if ('_numbers' in data) {
22
22
  numbers = (0, _createRelationshipMap.createPathMap)(data._numbers);
@@ -39,4 +39,4 @@ const transform = ({ config, data, fields })=>{
39
39
  return result;
40
40
  };
41
41
 
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICdwYXlsb2FkL2NvbmZpZydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFR5cGVXaXRoSUQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBjcmVhdGVCbG9ja3NNYXAgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3JlYXRlQmxvY2tzTWFwJ1xuaW1wb3J0IHsgY3JlYXRlUGF0aE1hcCB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jcmVhdGVSZWxhdGlvbnNoaXBNYXAnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgVHJhbnNmb3JtQXJncyA9IHtcbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgZmFsbGJhY2tMb2NhbGU/OiBmYWxzZSB8IHN0cmluZ1xuICBmaWVsZHM6IEZpZWxkW11cbiAgbG9jYWxlPzogc3RyaW5nXG59XG5cbi8vIFRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IHRvIHRyYW5zZm9ybSBEcml6emxlIG91dHB1dCBkYXRhXG4vLyBpbnRvIHRoZSBzaGFwZSBQYXlsb2FkIGV4cGVjdHMgYmFzZWQgb24gZmllbGQgc2NoZW1hXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtID0gPFQgZXh0ZW5kcyBUeXBlV2l0aElEPih7IGNvbmZpZywgZGF0YSwgZmllbGRzIH06IFRyYW5zZm9ybUFyZ3MpOiBUID0+IHtcbiAgbGV0IHJlbGF0aW9uc2hpcHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cbiAgbGV0IG51bWJlcnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cblxuICBpZiAoJ19yZWxhdGlvbnNoaXBzJyBpbiBkYXRhKSB7XG4gICAgcmVsYXRpb25zaGlwcyA9IGNyZWF0ZVBhdGhNYXAoZGF0YS5fcmVsYXRpb25zaGlwcylcbiAgICBkZWxldGUgZGF0YS5fcmVsYXRpb25zaGlwc1xuICB9XG5cbiAgaWYgKCdfbnVtYmVycycgaW4gZGF0YSkge1xuICAgIG51bWJlcnMgPSBjcmVhdGVQYXRoTWFwKGRhdGEuX251bWJlcnMpXG4gICAgZGVsZXRlIGRhdGEuX251bWJlcnNcbiAgfVxuXG4gIGNvbnN0IGJsb2NrcyA9IGNyZWF0ZUJsb2Nrc01hcChkYXRhKVxuXG4gIGNvbnN0IHJlc3VsdCA9IHRyYXZlcnNlRmllbGRzPFQ+KHtcbiAgICBibG9ja3MsXG4gICAgY29uZmlnLFxuICAgIGRhdGFSZWY6IHtcbiAgICAgIGlkOiBkYXRhLmlkLFxuICAgIH0sXG4gICAgZmllbGRQcmVmaXg6ICcnLFxuICAgIGZpZWxkcyxcbiAgICBudW1iZXJzLFxuICAgIHBhdGg6ICcnLFxuICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgdGFibGU6IGRhdGEsXG4gIH0pXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm5hbWVzIjpbInRyYW5zZm9ybSIsImNvbmZpZyIsImRhdGEiLCJmaWVsZHMiLCJyZWxhdGlvbnNoaXBzIiwibnVtYmVycyIsImNyZWF0ZVBhdGhNYXAiLCJfcmVsYXRpb25zaGlwcyIsIl9udW1iZXJzIiwiYmxvY2tzIiwiY3JlYXRlQmxvY2tzTWFwIiwicmVzdWx0IiwidHJhdmVyc2VGaWVsZHMiLCJkYXRhUmVmIiwiaWQiLCJmaWVsZFByZWZpeCIsInBhdGgiLCJ0YWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQWtCdkJBOzs7ZUFBQUE7OztpQ0FkbUI7dUNBQ0Y7Z0NBQ0M7QUFZeEIsTUFBTUEsWUFBWSxDQUF1QixFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFpQjtJQUNyRixJQUFJQyxnQkFBMkQsQ0FBQztJQUNoRSxJQUFJQyxVQUFxRCxDQUFDO0lBRTFELElBQUksb0JBQW9CSCxNQUFNO1FBQzVCRSxnQkFBZ0JFLElBQUFBLG9DQUFhLEVBQUNKLEtBQUtLLGNBQWM7UUFDakQsT0FBT0wsS0FBS0ssY0FBYztJQUM1QjtJQUVBLElBQUksY0FBY0wsTUFBTTtRQUN0QkcsVUFBVUMsSUFBQUEsb0NBQWEsRUFBQ0osS0FBS00sUUFBUTtRQUNyQyxPQUFPTixLQUFLTSxRQUFRO0lBQ3RCO0lBRUEsTUFBTUMsU0FBU0MsSUFBQUEsZ0NBQWUsRUFBQ1I7SUFFL0IsTUFBTVMsU0FBU0MsSUFBQUEsOEJBQWMsRUFBSTtRQUMvQkg7UUFDQVI7UUFDQVksU0FBUztZQUNQQyxJQUFJWixLQUFLWSxFQUFFO1FBQ2I7UUFDQUMsYUFBYTtRQUNiWjtRQUNBRTtRQUNBVyxNQUFNO1FBQ05aO1FBQ0FhLE9BQU9mO0lBQ1Q7SUFFQSxPQUFPUztBQUNUIn0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICdwYXlsb2FkL2NvbmZpZydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFR5cGVXaXRoSUQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBjcmVhdGVCbG9ja3NNYXAgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3JlYXRlQmxvY2tzTWFwJ1xuaW1wb3J0IHsgY3JlYXRlUGF0aE1hcCB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jcmVhdGVSZWxhdGlvbnNoaXBNYXAnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgVHJhbnNmb3JtQXJncyA9IHtcbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgZmFsbGJhY2tMb2NhbGU/OiBmYWxzZSB8IHN0cmluZ1xuICBmaWVsZHM6IEZpZWxkW11cbiAgbG9jYWxlPzogc3RyaW5nXG59XG5cbi8vIFRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IHRvIHRyYW5zZm9ybSBEcml6emxlIG91dHB1dCBkYXRhXG4vLyBpbnRvIHRoZSBzaGFwZSBQYXlsb2FkIGV4cGVjdHMgYmFzZWQgb24gZmllbGQgc2NoZW1hXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtID0gPFQgZXh0ZW5kcyBUeXBlV2l0aElEPih7IGNvbmZpZywgZGF0YSwgZmllbGRzIH06IFRyYW5zZm9ybUFyZ3MpOiBUID0+IHtcbiAgbGV0IHJlbGF0aW9uc2hpcHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cbiAgbGV0IG51bWJlcnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cblxuICBpZiAoJ19yZWxzJyBpbiBkYXRhKSB7XG4gICAgcmVsYXRpb25zaGlwcyA9IGNyZWF0ZVBhdGhNYXAoZGF0YS5fcmVscylcbiAgICBkZWxldGUgZGF0YS5fcmVsc1xuICB9XG5cbiAgaWYgKCdfbnVtYmVycycgaW4gZGF0YSkge1xuICAgIG51bWJlcnMgPSBjcmVhdGVQYXRoTWFwKGRhdGEuX251bWJlcnMpXG4gICAgZGVsZXRlIGRhdGEuX251bWJlcnNcbiAgfVxuXG4gIGNvbnN0IGJsb2NrcyA9IGNyZWF0ZUJsb2Nrc01hcChkYXRhKVxuXG4gIGNvbnN0IHJlc3VsdCA9IHRyYXZlcnNlRmllbGRzPFQ+KHtcbiAgICBibG9ja3MsXG4gICAgY29uZmlnLFxuICAgIGRhdGFSZWY6IHtcbiAgICAgIGlkOiBkYXRhLmlkLFxuICAgIH0sXG4gICAgZmllbGRQcmVmaXg6ICcnLFxuICAgIGZpZWxkcyxcbiAgICBudW1iZXJzLFxuICAgIHBhdGg6ICcnLFxuICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgdGFibGU6IGRhdGEsXG4gIH0pXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm5hbWVzIjpbInRyYW5zZm9ybSIsImNvbmZpZyIsImRhdGEiLCJmaWVsZHMiLCJyZWxhdGlvbnNoaXBzIiwibnVtYmVycyIsImNyZWF0ZVBhdGhNYXAiLCJfcmVscyIsIl9udW1iZXJzIiwiYmxvY2tzIiwiY3JlYXRlQmxvY2tzTWFwIiwicmVzdWx0IiwidHJhdmVyc2VGaWVsZHMiLCJkYXRhUmVmIiwiaWQiLCJmaWVsZFByZWZpeCIsInBhdGgiLCJ0YWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQWtCdkJBOzs7ZUFBQUE7OztpQ0FkbUI7dUNBQ0Y7Z0NBQ0M7QUFZeEIsTUFBTUEsWUFBWSxDQUF1QixFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFpQjtJQUNyRixJQUFJQyxnQkFBMkQsQ0FBQztJQUNoRSxJQUFJQyxVQUFxRCxDQUFDO0lBRTFELElBQUksV0FBV0gsTUFBTTtRQUNuQkUsZ0JBQWdCRSxJQUFBQSxvQ0FBYSxFQUFDSixLQUFLSyxLQUFLO1FBQ3hDLE9BQU9MLEtBQUtLLEtBQUs7SUFDbkI7SUFFQSxJQUFJLGNBQWNMLE1BQU07UUFDdEJHLFVBQVVDLElBQUFBLG9DQUFhLEVBQUNKLEtBQUtNLFFBQVE7UUFDckMsT0FBT04sS0FBS00sUUFBUTtJQUN0QjtJQUVBLE1BQU1DLFNBQVNDLElBQUFBLGdDQUFlLEVBQUNSO0lBRS9CLE1BQU1TLFNBQVNDLElBQUFBLDhCQUFjLEVBQUk7UUFDL0JIO1FBQ0FSO1FBQ0FZLFNBQVM7WUFDUEMsSUFBSVosS0FBS1ksRUFBRTtRQUNiO1FBQ0FDLGFBQWE7UUFDYlo7UUFDQUU7UUFDQVcsTUFBTTtRQUNOWjtRQUNBYSxPQUFPZjtJQUNUO0lBRUEsT0FBT1M7QUFDVCJ9