UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

198 lines (197 loc) • 20.2 kB
/* eslint-disable no-param-reassign */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "promise", { enumerable: true, get: function() { return promise; } }); const _types = require("../../config/types"); const _traverseFields = require("./traverseFields"); const promise = async ({ collection, context, data, doc, field, global, operation, previousDoc, previousSiblingDoc, req, siblingData, siblingDoc })=>{ if ((0, _types.fieldAffectsData)(field)) { // Execute hooks if (field.hooks?.afterChange) { await field.hooks.afterChange.reduce(async (priorHook, currentHook)=>{ await priorHook; const hookedValue = await currentHook({ collection, context, data, field, global, operation, originalDoc: doc, previousDoc, previousSiblingDoc, previousValue: previousDoc[field.name], req, siblingData, value: siblingData[field.name] }); if (hookedValue !== undefined) { siblingDoc[field.name] = hookedValue; } }, Promise.resolve()); } } // Traverse subfields switch(field.type){ case 'group': { await (0, _traverseFields.traverseFields)({ collection, context, data, doc, fields: field.fields, global, operation, previousDoc, previousSiblingDoc: previousDoc[field.name], req, siblingData: siblingData?.[field.name] || {}, siblingDoc: siblingDoc[field.name] }); break; } case 'array': { const rows = siblingDoc[field.name]; if (Array.isArray(rows)) { const promises = []; rows.forEach((row, i)=>{ promises.push((0, _traverseFields.traverseFields)({ collection, context, data, doc, fields: field.fields, global, operation, previousDoc, previousSiblingDoc: previousDoc?.[field.name]?.[i] || {}, req, siblingData: siblingData?.[field.name]?.[i] || {}, siblingDoc: { ...row } || {} })); }); await Promise.all(promises); } break; } case 'blocks': { const rows = siblingDoc[field.name]; if (Array.isArray(rows)) { const promises = []; rows.forEach((row, i)=>{ const block = field.blocks.find((blockType)=>blockType.slug === row.blockType); if (block) { promises.push((0, _traverseFields.traverseFields)({ collection, context, data, doc, fields: block.fields, global, operation, previousDoc, previousSiblingDoc: previousDoc?.[field.name]?.[i] || {}, req, siblingData: siblingData?.[field.name]?.[i] || {}, siblingDoc: { ...row } || {} })); } }); await Promise.all(promises); } break; } case 'row': case 'collapsible': { await (0, _traverseFields.traverseFields)({ collection, context, data, doc, fields: field.fields, global, operation, previousDoc, previousSiblingDoc: { ...previousSiblingDoc }, req, siblingData: siblingData || {}, siblingDoc: { ...siblingDoc } }); break; } case 'tab': { let tabSiblingData = siblingData; let tabSiblingDoc = siblingDoc; let tabPreviousSiblingDoc = siblingDoc; if ((0, _types.tabHasName)(field)) { tabSiblingData = siblingData[field.name]; tabSiblingDoc = siblingDoc[field.name]; tabPreviousSiblingDoc = previousDoc[field.name]; } await (0, _traverseFields.traverseFields)({ collection, context, data, doc, fields: field.fields, global, operation, previousDoc, previousSiblingDoc: tabPreviousSiblingDoc, req, siblingData: tabSiblingData, siblingDoc: tabSiblingDoc }); break; } case 'tabs': { await (0, _traverseFields.traverseFields)({ collection, context, data, doc, fields: field.tabs.map((tab)=>({ ...tab, type: 'tab' })), global, operation, previousDoc, previousSiblingDoc: { ...previousSiblingDoc }, req, siblingData: siblingData || {}, siblingDoc: { ...siblingDoc } }); break; } default: { break; } } }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYWZ0ZXJDaGFuZ2UvcHJvbWlzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCwgUmVxdWVzdENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9leHByZXNzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMnXG5cbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEsIHRhYkhhc05hbWUgfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgQXJncyA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgZG9jOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBmaWVsZDogRmllbGQgfCBUYWJBc0ZpZWxkXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgcHJldmlvdXNEb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIHByZXZpb3VzU2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaWJsaW5nRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gRXhlY3V0ZSBmaWVsZCBob29rc1xuXG5leHBvcnQgY29uc3QgcHJvbWlzZSA9IGFzeW5jICh7XG4gIGNvbGxlY3Rpb24sXG4gIGNvbnRleHQsXG4gIGRhdGEsXG4gIGRvYyxcbiAgZmllbGQsXG4gIGdsb2JhbCxcbiAgb3BlcmF0aW9uLFxuICBwcmV2aW91c0RvYyxcbiAgcHJldmlvdXNTaWJsaW5nRG9jLFxuICByZXEsXG4gIHNpYmxpbmdEYXRhLFxuICBzaWJsaW5nRG9jLFxufTogQXJncyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAvLyBFeGVjdXRlIGhvb2tzXG4gICAgaWYgKGZpZWxkLmhvb2tzPy5hZnRlckNoYW5nZSkge1xuICAgICAgYXdhaXQgZmllbGQuaG9va3MuYWZ0ZXJDaGFuZ2UucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGN1cnJlbnRIb29rKSA9PiB7XG4gICAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICAgIGNvbnN0IGhvb2tlZFZhbHVlID0gYXdhaXQgY3VycmVudEhvb2soe1xuICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgb3JpZ2luYWxEb2M6IGRvYyxcbiAgICAgICAgICBwcmV2aW91c0RvYyxcbiAgICAgICAgICBwcmV2aW91c1NpYmxpbmdEb2MsXG4gICAgICAgICAgcHJldmlvdXNWYWx1ZTogcHJldmlvdXNEb2NbZmllbGQubmFtZV0sXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICAgIHZhbHVlOiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoaG9va2VkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPSBob29rZWRWYWx1ZVxuICAgICAgICB9XG4gICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcbiAgICB9XG4gIH1cblxuICAvLyBUcmF2ZXJzZSBzdWJmaWVsZHNcbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBwcmV2aW91c0RvYyxcbiAgICAgICAgcHJldmlvdXNTaWJsaW5nRG9jOiBwcmV2aW91c0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogKHNpYmxpbmdEYXRhPy5bZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHx8IHt9LFxuICAgICAgICBzaWJsaW5nRG9jOiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW11cbiAgICAgICAgcm93cy5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICAgICAgcHJldmlvdXNEb2MsXG4gICAgICAgICAgICAgIHByZXZpb3VzU2libGluZ0RvYzogcHJldmlvdXNEb2M/LltmaWVsZC5uYW1lXT8uW2ldIHx8ICh7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiksXG4gICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgc2libGluZ0RhdGE6IHNpYmxpbmdEYXRhPy5bZmllbGQubmFtZV0/LltpXSB8fCB7fSxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogeyAuLi5yb3cgfSB8fCB7fSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW11cbiAgICAgICAgcm93cy5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKChibG9ja1R5cGUpID0+IGJsb2NrVHlwZS5zbHVnID09PSByb3cuYmxvY2tUeXBlKVxuXG4gICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgICAgcHJldmlvdXNEb2MsXG4gICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nRG9jOlxuICAgICAgICAgICAgICAgICAgcHJldmlvdXNEb2M/LltmaWVsZC5uYW1lXT8uW2ldIHx8ICh7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiksXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiBzaWJsaW5nRGF0YT8uW2ZpZWxkLm5hbWVdPy5baV0gfHwge30sXG4gICAgICAgICAgICAgICAgc2libGluZ0RvYzogeyAuLi5yb3cgfSB8fCB7fSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdyb3cnOlxuICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgcHJldmlvdXNEb2MsXG4gICAgICAgIHByZXZpb3VzU2libGluZ0RvYzogeyAuLi5wcmV2aW91c1NpYmxpbmdEb2MgfSxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogc2libGluZ0RhdGEgfHwge30sXG4gICAgICAgIHNpYmxpbmdEb2M6IHsgLi4uc2libGluZ0RvYyB9LFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWInOiB7XG4gICAgICBsZXQgdGFiU2libGluZ0RhdGEgPSBzaWJsaW5nRGF0YVxuICAgICAgbGV0IHRhYlNpYmxpbmdEb2MgPSBzaWJsaW5nRG9jXG4gICAgICBsZXQgdGFiUHJldmlvdXNTaWJsaW5nRG9jID0gc2libGluZ0RvY1xuXG4gICAgICBpZiAodGFiSGFzTmFtZShmaWVsZCkpIHtcbiAgICAgICAgdGFiU2libGluZ0RhdGEgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICB0YWJTaWJsaW5nRG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICB0YWJQcmV2aW91c1NpYmxpbmdEb2MgPSBwcmV2aW91c0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfVxuXG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBwcmV2aW91c0RvYyxcbiAgICAgICAgcHJldmlvdXNTaWJsaW5nRG9jOiB0YWJQcmV2aW91c1NpYmxpbmdEb2MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGE6IHRhYlNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jOiB0YWJTaWJsaW5nRG9jLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWJzJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQudGFicy5tYXAoKHRhYikgPT4gKHsgLi4udGFiLCB0eXBlOiAndGFiJyB9KSksXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBwcmV2aW91c0RvYyxcbiAgICAgICAgcHJldmlvdXNTaWJsaW5nRG9jOiB7IC4uLnByZXZpb3VzU2libGluZ0RvYyB9LFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhOiBzaWJsaW5nRGF0YSB8fCB7fSxcbiAgICAgICAgc2libGluZ0RvYzogeyAuLi5zaWJsaW5nRG9jIH0sXG4gICAgICB9KVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBkZWZhdWx0OiB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbInByb21pc2UiLCJjb2xsZWN0aW9uIiwiY29udGV4dCIsImRhdGEiLCJkb2MiLCJmaWVsZCIsImdsb2JhbCIsIm9wZXJhdGlvbiIsInByZXZpb3VzRG9jIiwicHJldmlvdXNTaWJsaW5nRG9jIiwicmVxIiwic2libGluZ0RhdGEiLCJzaWJsaW5nRG9jIiwiZmllbGRBZmZlY3RzRGF0YSIsImhvb2tzIiwiYWZ0ZXJDaGFuZ2UiLCJyZWR1Y2UiLCJwcmlvckhvb2siLCJjdXJyZW50SG9vayIsImhvb2tlZFZhbHVlIiwib3JpZ2luYWxEb2MiLCJwcmV2aW91c1ZhbHVlIiwibmFtZSIsInZhbHVlIiwidW5kZWZpbmVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0eXBlIiwidHJhdmVyc2VGaWVsZHMiLCJmaWVsZHMiLCJyb3dzIiwiQXJyYXkiLCJpc0FycmF5IiwicHJvbWlzZXMiLCJmb3JFYWNoIiwicm93IiwiaSIsInB1c2giLCJhbGwiLCJibG9jayIsImJsb2NrcyIsImZpbmQiLCJibG9ja1R5cGUiLCJzbHVnIiwidGFiU2libGluZ0RhdGEiLCJ0YWJTaWJsaW5nRG9jIiwidGFiUHJldmlvdXNTaWJsaW5nRG9jIiwidGFiSGFzTmFtZSIsInRhYnMiLCJtYXAiLCJ0YWIiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkEyQnZCQTs7O2VBQUFBOzs7dUJBckJnQztnQ0FDZDtBQW9CeEIsTUFBTUEsVUFBVSxPQUFPLEVBQzVCQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxHQUFHLEVBQ0hDLEtBQUssRUFDTEMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLFdBQVcsRUFDWEMsa0JBQWtCLEVBQ2xCQyxHQUFHLEVBQ0hDLFdBQVcsRUFDWEMsVUFBVSxFQUNMO0lBQ0wsSUFBSUMsSUFBQUEsdUJBQWdCLEVBQUNSLFFBQVE7UUFDM0IsZ0JBQWdCO1FBQ2hCLElBQUlBLE1BQU1TLEtBQUssRUFBRUMsYUFBYTtZQUM1QixNQUFNVixNQUFNUyxLQUFLLENBQUNDLFdBQVcsQ0FBQ0MsTUFBTSxDQUFDLE9BQU9DLFdBQVdDO2dCQUNyRCxNQUFNRDtnQkFFTixNQUFNRSxjQUFjLE1BQU1ELFlBQVk7b0JBQ3BDakI7b0JBQ0FDO29CQUNBQztvQkFDQUU7b0JBQ0FDO29CQUNBQztvQkFDQWEsYUFBYWhCO29CQUNiSTtvQkFDQUM7b0JBQ0FZLGVBQWViLFdBQVcsQ0FBQ0gsTUFBTWlCLElBQUksQ0FBQztvQkFDdENaO29CQUNBQztvQkFDQVksT0FBT1osV0FBVyxDQUFDTixNQUFNaUIsSUFBSSxDQUFDO2dCQUNoQztnQkFFQSxJQUFJSCxnQkFBZ0JLLFdBQVc7b0JBQzdCWixVQUFVLENB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