import { __assign, __spreadArray } from "/_nuxt/node_modules/tslib/tslib.es6.js?v=e4f18c29"; import { visit } from "/_nuxt/node_modules/graphql/index.mjs?v=e4f18c29"; import { wrap } from "/_nuxt/node_modules/optimism/lib/index.js?v=e4f18c29"; import { cacheSizes, getFragmentDefinitions, } from "/_nuxt/node_modules/@apollo/client/utilities/index.js?v=e4f18c29"; import { WeakCache } from "/_nuxt/node_modules/@wry/caches/lib/index.js?v=e4f18c29"; // As long as createFragmentRegistry is not imported or used, the // FragmentRegistry example implementation provided below should not be bundled // (by tree-shaking bundlers like Rollup), because the implementation of // InMemoryCache refers only to the TypeScript interface FragmentRegistryAPI, // never the concrete implementation FragmentRegistry (which is deliberately not // exported from this module). export function createFragmentRegistry() { var fragments = []; for (var _i = 0; _i < arguments.length; _i++) { fragments[_i] = arguments[_i]; } return new (FragmentRegistry.bind.apply(FragmentRegistry, __spreadArray([void 0], fragments, false)))(); } var FragmentRegistry = /** @class */ (function () { // Call `createFragmentRegistry` instead of invoking the // FragmentRegistry constructor directly. This reserves the constructor for // future configuration of the FragmentRegistry. function FragmentRegistry() { var fragments = []; for (var _i = 0; _i < arguments.length; _i++) { fragments[_i] = arguments[_i]; } this.registry = Object.create(null); this.resetCaches(); if (fragments.length) { this.register.apply(this, fragments); } } FragmentRegistry.prototype.register = function () { var _this = this; var fragments = []; for (var _i = 0; _i < arguments.length; _i++) { fragments[_i] = arguments[_i]; } var definitions = new Map(); fragments.forEach(function (doc) { getFragmentDefinitions(doc).forEach(function (node) { definitions.set(node.name.value, node); }); }); definitions.forEach(function (node, name) { if (node !== _this.registry[name]) { _this.registry[name] = node; _this.invalidate(name); } }); return this; }; // Overridden in the resetCaches method below. FragmentRegistry.prototype.invalidate = function (name) { }; FragmentRegistry.prototype.resetCaches = function () { var proto = FragmentRegistry.prototype; this.invalidate = (this.lookup = wrap(proto.lookup.bind(this), { makeCacheKey: function (arg) { return arg; }, max: cacheSizes["fragmentRegistry.lookup"] || 1000 /* defaultCacheSizes["fragmentRegistry.lookup"] */, })).dirty; // This dirty function is bound to the wrapped lookup method. this.transform = wrap(proto.transform.bind(this), { cache: WeakCache, max: cacheSizes["fragmentRegistry.transform"] || 2000 /* defaultCacheSizes["fragmentRegistry.transform"] */, }); this.findFragmentSpreads = wrap(proto.findFragmentSpreads.bind(this), { cache: WeakCache, max: cacheSizes["fragmentRegistry.findFragmentSpreads"] || 4000 /* defaultCacheSizes["fragmentRegistry.findFragmentSpreads"] */, }); }; /* * Note: * This method is only memoized so it can serve as a dependency to `tranform`, * so calling `invalidate` will invalidate cache entries for `transform`. */ FragmentRegistry.prototype.lookup = function (fragmentName) { return this.registry[fragmentName] || null; }; FragmentRegistry.prototype.transform = function (document) { var _this = this; var defined = new Map(); getFragmentDefinitions(document).forEach(function (def) { defined.set(def.name.value, def); }); var unbound = new Set(); var enqueue = function (spreadName) { if (!defined.has(spreadName)) { unbound.add(spreadName); } }; var enqueueChildSpreads = function (node) { return Object.keys(_this.findFragmentSpreads(node)).forEach(enqueue); }; enqueueChildSpreads(document); var missing = []; var map = Object.create(null); // This Set forEach loop can be extended during iteration by adding // additional strings to the unbound set. unbound.forEach(function (fragmentName) { var knownFragmentDef = defined.get(fragmentName); if (knownFragmentDef) { enqueueChildSpreads((map[fragmentName] = knownFragmentDef)); } else { missing.push(fragmentName); var def = _this.lookup(fragmentName); if (def) { enqueueChildSpreads((map[fragmentName] = def)); } } }); if (missing.length) { var defsToAppend_1 = []; missing.forEach(function (name) { var def = map[name]; if (def) { defsToAppend_1.push(def); } }); if (defsToAppend_1.length) { document = __assign(__assign({}, document), { definitions: document.definitions.concat(defsToAppend_1) }); } } return document; }; FragmentRegistry.prototype.findFragmentSpreads = function (root) { var spreads = Object.create(null); visit(root, { FragmentSpread: function (node) { spreads[node.name.value] = node; }, }); return spreads; }; return FragmentRegistry; }()); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhZ21lbnRSZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYWNoZS9pbm1lbW9yeS9mcmFnbWVudFJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFNQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHaEMsT0FBTyxFQUNMLFVBQVUsRUFFVixzQkFBc0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBU3hDLGlFQUFpRTtBQUNqRSwrRUFBK0U7QUFDL0Usd0VBQXdFO0FBQ3hFLDZFQUE2RTtBQUM3RSxnRkFBZ0Y7QUFDaEYsOEJBQThCO0FBQzlCLE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsbUJBQTRCO1NBQTVCLFVBQTRCLEVBQTVCLHFCQUE0QixFQUE1QixJQUE0QjtRQUE1Qiw4QkFBNEI7O0lBRTVCLFlBQVcsZ0JBQWdCLFlBQWhCLGdCQUFnQiwwQkFBSSxTQUFTLGFBQUU7QUFDNUMsQ0FBQztBQUVEO0lBR0Usd0RBQXdEO0lBQ3hELDJFQUEyRTtJQUMzRSxnREFBZ0Q7SUFDaEQ7UUFBWSxtQkFBNEI7YUFBNUIsVUFBNEIsRUFBNUIscUJBQTRCLEVBQTVCLElBQTRCO1lBQTVCLDhCQUE0Qjs7UUFMaEMsYUFBUSxHQUFnQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBTWxELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxPQUFiLElBQUksRUFBYSxTQUFTLEVBQUU7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFTSxtQ0FBUSxHQUFmO1FBQUEsaUJBZ0JDO1FBaEJlLG1CQUE0QjthQUE1QixVQUE0QixFQUE1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LENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksY0FBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN4QixRQUFRLHlCQUNILFFBQVEsS0FDWCxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBWSxDQUFDLEdBQ3ZELENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFTSw4Q0FBbUIsR0FBMUIsVUFBMkIsSUFBYTtRQUN0QyxJQUFNLE9BQU8sR0FBc0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2RCxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ1YsY0FBYyxZQUFDLElBQUk7Z0JBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNsQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUNILHVCQUFDO0FBQUQsQ0FBQyxBQXBJRCxJQW9JQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRG9jdW1lbnROb2RlLFxuICBBU1ROb2RlLFxuICBGcmFnbWVudERlZmluaXRpb25Ob2RlLFxuICBGcmFnbWVudFNwcmVhZE5vZGUsXG59IGZyb20gXCJncmFwaHFsXCI7XG5pbXBvcnQgeyB2aXNpdCB9IGZyb20gXCJncmFwaHFsXCI7XG5cbmltcG9ydCB7IHdyYXAgfSBmcm9tIFwib3B0aW1pc21cIjtcblxuaW1wb3J0IHR5cGUgeyBGcmFnbWVudE1hcCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvaW5kZXguanNcIjtcbmltcG9ydCB7XG4gIGNhY2hlU2l6ZXMsXG4gIGRlZmF1bHRDYWNoZVNpemVzLFxuICBnZXRGcmFnbWVudERlZmluaXRpb25zLFxufSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBXZWFrQ2FjaGUgfSBmcm9tIFwiQHdyeS9jYWNoZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGcmFnbWVudFJlZ2lzdHJ5QVBJIHtcbiAgcmVnaXN0ZXIoLi4uZnJhZ21lbnRzOiBEb2N1bWVudE5vZGVbXSk6IHRoaXM7XG4gIGxvb2t1cChmcmFnbWVudE5hbWU6IHN0cmluZyk6IEZyYWdtZW50RGVmaW5pdGlvbk5vZGUgfCBudWxsO1xuICB0cmFuc2Zvcm08RCBleHRlbmRzIERvY3VtZW50Tm9kZT4oZG9jdW1lbnQ6IEQpOiBEO1xuICByZXNldENhY2hlcygpOiB2b2lkO1xufVxuXG4vLyBBcyBsb25nIGFzIGNyZWF0ZUZyYWdtZW50UmVnaXN0cnkgaXMgbm90IGltcG9ydGVkIG9yIHVzZWQsIHRoZVxuLy8gRnJhZ21lbnRSZWdpc3RyeSBleGFtcGxlIGltcGxlbWVudGF0aW9uIHByb3ZpZGVkIGJlbG93IHNob3VsZCBub3QgYmUgYnVuZGxlZFxuLy8gKGJ5IHRyZWUtc2hha2luZyBidW5kbGVycyBsaWtlIFJvbGx1cCksIGJlY2F1c2UgdGhlIGltcGxlbWVudGF0aW9uIG9mXG4vLyBJbk1lbW9yeUNhY2hlIHJlZmVycyBvbmx5IHRvIHRoZSBUeXBlU2NyaXB0IGludGVyZmFjZSBGcmFnbWVudFJlZ2lzdHJ5QVBJLFxuLy8gbmV2ZXIgdGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIEZyYWdtZW50UmVnaXN0cnkgKHdoaWNoIGlzIGRlbGliZXJhdGVseSBub3Rcbi8vIGV4cG9ydGVkIGZyb20gdGhpcyBtb2R1bGUpLlxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZyYWdtZW50UmVnaXN0cnkoXG4gIC4uLmZyYWdtZW50czogRG9jdW1lbnROb2RlW11cbik6IEZyYWdtZW50UmVnaXN0cnlBUEkge1xuICByZXR1cm4gbmV3IEZyYWdtZW50UmVnaXN0cnkoLi4uZnJhZ21lbnRzKTtcbn1cblxuY2xhc3MgRnJhZ21lbnRSZWdpc3RyeSBpbXBsZW1lbnRzIEZyYWdtZW50UmVnaXN0cnlBUEkge1xuICBwcml2YXRlIHJlZ2lzdHJ5OiBGcmFnbWVudE1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgLy8gQ2FsbCBgY3JlYXRlRnJhZ21lbnRSZWdpc3RyeWAgaW5zdGVhZCBvZiBpbnZva2luZyB0aGVcbiAgLy8gRnJhZ21lbnRSZWdpc3RyeSBjb25zdHJ1Y3RvciBkaXJlY3RseS4gVGhpcyByZXNlcnZlcyB0aGUgY29uc3RydWN0b3IgZm9yXG4gIC8vIGZ1dHVyZSBjb25maWd1cmF0aW9uIG9mIHRoZSBGcmFnbWVudFJlZ2lzdHJ5LlxuICBjb25zdHJ1Y3RvciguLi5mcmFnbWVudHM6IERvY3VtZW50Tm9kZVtdKSB7XG4gICAgdGhpcy5yZXNldENhY2hlcygpO1xuICAgIGlmIChmcmFnbWVudHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyKC4uLmZyYWdtZW50cyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyKC4uLmZyYWdtZW50czogRG9jdW1lbnROb2RlW10pOiB0aGlzIHtcbiAgICBjb25zdCBkZWZpbml0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBGcmFnbWVudERlZmluaXRpb25Ob2RlPigpO1xuICAgIGZyYWdtZW50cy5mb3JFYWNoKChkb2M6IERvY3VtZW50Tm9kZSkgPT4ge1xuICAgICAgZ2V0RnJhZ21lbnREZWZpbml0aW9ucyhkb2MpLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgZGVmaW5pdGlvbnMuc2V0KG5vZGUubmFtZS52YWx1ZSwgbm9kZSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlZmluaXRpb25zLmZvckVhY2goKG5vZGUsIG5hbWUpID0+IHtcbiAgICAgIGlmIChub2RlICE9PSB0aGlzLnJlZ2lzdHJ5W25hbWVdKSB7XG4gICAgICAgIHRoaXMucmVnaXN0cnlbbmFtZV0gPSBub2RlO1xuICAgICAgICB0aGlzLmludmFsaWRhdGUobmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIE92ZXJyaWRkZW4gaW4gdGhlIHJlc2V0Q2FjaGVzIG1ldGhvZCBiZWxvdy5cbiAgcHJpdmF0ZSBpbnZhbGlkYXRlKG5hbWU6IHN0cmluZykge31cblxuICBwdWJsaWMgcmVzZXRDYWNoZXMoKSB7XG4gICAgY29uc3QgcHJvdG8gPSBGcmFnbWVudFJlZ2lzdHJ5LnByb3RvdHlwZTtcbiAgICB0aGlzLmludmFsaWRhdGUgPSAodGhpcy5sb29rdXAgPSB3cmFwKHByb3RvLmxvb2t1cC5iaW5kKHRoaXMpLCB7XG4gICAgICBtYWtlQ2FjaGVLZXk6IChhcmcpID0+IGFyZyxcbiAgICAgIG1heDpcbiAgICAgICAgY2FjaGVTaXplc1tcImZyYWdtZW50UmVnaXN0cnkubG9va3VwXCJdIHx8XG4gICAgICAgIGRlZmF1bHRDYWNoZVNpemVzW1wiZnJhZ21lbnRSZWdpc3RyeS5sb29rdXBcIl0sXG4gICAgfSkpLmRpcnR5OyAvLyBUaGlzIGRpcnR5IGZ1bmN0aW9uIGlzIGJvdW5kIHRvIHRoZSB3cmFwcGVkIGxvb2t1cCBtZXRob2QuXG4gICAgdGhpcy50cmFuc2Zvcm0gPSB3cmFwKHByb3RvLnRyYW5zZm9ybS5iaW5kKHRoaXMpLCB7XG4gICAgICBjYWNoZTogV2Vha0NhY2hlLFxuICAgICAgbWF4OlxuICAgICAgICBjYWNoZVNpemVzW1wiZnJhZ21lbnRSZWdpc3RyeS50cmFuc2Zvcm1cIl0gfHxcbiAgICAgICAgZGVmYXVsdENhY2hlU2l6ZXNbXCJmcmFnbWVudFJlZ2lzdHJ5LnRyYW5zZm9ybVwiXSxcbiAgICB9KTtcbiAgICB0aGlzLmZpbmRGcmFnbWVudFNwcmVhZHMgPSB3cmFwKHByb3RvLmZpbmRGcmFnbWVudFNwcmVhZHMuYmluZCh0aGlzKSwge1xuICAgICAgY2FjaGU6IFdlYWtDYWNoZSxcbiAgICAgIG1heDpcbiAgICAgICAgY2FjaGVTaXplc1tcImZyYWdtZW50UmVnaXN0cnkuZmluZEZyYWdtZW50U3ByZWFkc1wiXSB8fFxuICAgICAgICBkZWZhdWx0Q2FjaGVTaXplc1tcImZyYWdtZW50UmVnaXN0cnkuZmluZEZyYWdtZW50U3ByZWFkc1wiXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qXG4gICAqIE5vdGU6XG4gICAqIFRoaXMgbWV0aG9kIGlzIG9ubHkgbWVtb2l6ZWQgc28gaXQgY2FuIHNlcnZlIGFzIGEgZGVwZW5kZW5jeSB0byBgdHJhbmZvcm1gLFxuICAgKiBzbyBjYWxsaW5nIGBpbnZhbGlkYXRlYCB3aWxsIGludmFsaWRhdGUgY2FjaGUgZW50cmllcyBmb3IgYHRyYW5zZm9ybWAuXG4gICAqL1xuICBwdWJsaWMgbG9va3VwKGZyYWdtZW50TmFtZTogc3RyaW5nKTogRnJhZ21lbnREZWZpbml0aW9uTm9kZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5W2ZyYWdtZW50TmFtZV0gfHwgbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2Zvcm08RCBleHRlbmRzIERvY3VtZW50Tm9kZT4oZG9jdW1lbnQ6IEQpOiBEIHtcbiAgICBjb25zdCBkZWZpbmVkID0gbmV3IE1hcDxzdHJpbmcsIEZyYWdtZW50RGVmaW5pdGlvbk5vZGU+KCk7XG4gICAgZ2V0RnJhZ21lbnREZWZpbml0aW9ucyhkb2N1bWVudCkuZm9yRWFjaCgoZGVmKSA9PiB7XG4gICAgICBkZWZpbmVkLnNldChkZWYubmFtZS52YWx1ZSwgZGVmKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHVuYm91bmQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBlbnF1ZXVlID0gKHNwcmVhZE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFkZWZpbmVkLmhhcyhzcHJlYWROYW1lKSkge1xuICAgICAgICB1bmJvdW5kLmFkZChzcHJlYWROYW1lKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgZW5xdWV1ZUNoaWxkU3ByZWFkcyA9IChub2RlOiBBU1ROb2RlKSA9PlxuICAgICAgT2JqZWN0LmtleXModGhpcy5maW5kRnJhZ21lbnRTcHJlYWRzKG5vZGUpKS5mb3JFYWNoKGVucXVldWUpO1xuXG4gICAgZW5xdWV1ZUNoaWxkU3ByZWFkcyhkb2N1bWVudCk7XG5cbiAgICBjb25zdCBtaXNzaW5nOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IG1hcDogRnJhZ21lbnRNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgLy8gVGhpcyBTZXQgZm9yRWFjaCBsb29wIGNhbiBiZSBleHRlbmRlZCBkdXJpbmcgaXRlcmF0aW9uIGJ5IGFkZGluZ1xuICAgIC8vIGFkZGl0aW9uYWwgc3RyaW5ncyB0byB0aGUgdW5ib3VuZCBzZXQuXG4gICAgdW5ib3VuZC5mb3JFYWNoKChmcmFnbWVudE5hbWUpID0+IHtcbiAgICAgIGNvbnN0IGtub3duRnJhZ21lbnREZWYgPSBkZWZpbmVkLmdldChmcmFnbWVudE5hbWUpO1xuICAgICAgaWYgKGtub3duRnJhZ21lbnREZWYpIHtcbiAgICAgICAgZW5xdWV1ZUNoaWxkU3ByZWFkcygobWFwW2ZyYWdtZW50TmFtZV0gPSBrbm93bkZyYWdtZW50RGVmKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtaXNzaW5nLnB1c2goZnJhZ21lbnROYW1lKTtcbiAgICAgICAgY29uc3QgZGVmID0gdGhpcy5sb29rdXAoZnJhZ21lbnROYW1lKTtcbiAgICAgICAgaWYgKGRlZikge1xuICAgICAgICAgIGVucXVldWVDaGlsZFNwcmVhZHMoKG1hcFtmcmFnbWVudE5hbWVdID0gZGVmKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChtaXNzaW5nLmxlbmd0aCkge1xuICAgICAgY29uc3QgZGVmc1RvQXBwZW5kOiBGcmFnbWVudERlZmluaXRpb25Ob2RlW10gPSBbXTtcbiAgICAgIG1pc3NpbmcuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBkZWYgPSBtYXBbbmFtZV07XG4gICAgICAgIGlmIChkZWYpIHtcbiAgICAgICAgICBkZWZzVG9BcHBlbmQucHVzaChkZWYpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGRlZnNUb0FwcGVuZC5sZW5ndGgpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB7XG4gICAgICAgICAgLi4uZG9jdW1lbnQsXG4gICAgICAgICAgZGVmaW5pdGlvbnM6IGRvY3VtZW50LmRlZmluaXRpb25zLmNvbmNhdChkZWZzVG9BcHBlbmQpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkb2N1bWVudDtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kRnJhZ21lbnRTcHJlYWRzKHJvb3Q6IEFTVE5vZGUpOiBGcmFnbWVudFNwcmVhZE1hcCB7XG4gICAgY29uc3Qgc3ByZWFkczogRnJhZ21lbnRTcHJlYWRNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgdmlzaXQocm9vdCwge1xuICAgICAgRnJhZ21lbnRTcHJlYWQobm9kZSkge1xuICAgICAgICBzcHJlYWRzW25vZGUubmFtZS52YWx1ZV0gPSBub2RlO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzcHJlYWRzO1xuICB9XG59XG5cbmludGVyZmFjZSBGcmFnbWVudFNwcmVhZE1hcCB7XG4gIFtmcmFnbWVudFNwcmVhZE5hbWU6IHN0cmluZ106IEZyYWdtZW50U3ByZWFkTm9kZTtcbn1cbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF19