UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

224 lines (223 loc) • 20.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { TableColumnContext: function() { return TableColumnContext; }, TableColumnsProvider: function() { return TableColumnsProvider; }, useTableColumns: function() { return useTableColumns; } }); const _react = /*#__PURE__*/ _interop_require_wildcard(require("react")); const _Preferences = require("../../utilities/Preferences"); const _formatFields = /*#__PURE__*/ _interop_require_default(require("../../views/collections/List/formatFields")); const _buildColumns = /*#__PURE__*/ _interop_require_default(require("./buildColumns")); const _columnReducer = require("./columnReducer"); const _getInitialColumns = /*#__PURE__*/ _interop_require_default(require("./getInitialColumns")); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interop_require_wildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = { __proto__: null }; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const TableColumnContext = /*#__PURE__*/ (0, _react.createContext)({}); const useTableColumns = ()=>(0, _react.useContext)(TableColumnContext); const TableColumnsProvider = ({ cellProps, children, collection: { admin: { defaultColumns, useAsTitle } }, collection })=>{ const preferenceKey = `${collection.slug}-list`; const prevCollection = (0, _react.useRef)(); const hasInitialized = (0, _react.useRef)(false); const { getPreference, setPreference } = (0, _Preferences.usePreferences)(); const [formattedFields] = (0, _react.useState)(()=>(0, _formatFields.default)(collection)); const [tableColumns, dispatchTableColumns] = (0, _react.useReducer)(_columnReducer.columnReducer, {}, ()=>{ const initialColumns = (0, _getInitialColumns.default)(formattedFields, useAsTitle, defaultColumns); return (0, _buildColumns.default)({ cellProps, collection, columns: initialColumns.map((column)=>({ accessor: column, active: true })) }); }); // ///////////////////////////////////// // Sync preferences on collection change // ///////////////////////////////////// (0, _react.useEffect)(()=>{ const sync = async ()=>{ const collectionHasChanged = prevCollection.current !== collection.slug; if (collectionHasChanged) { hasInitialized.current = false; const currentPreferences = await getPreference(preferenceKey); prevCollection.current = collection.slug; const initialColumns = (0, _getInitialColumns.default)(formattedFields, useAsTitle, defaultColumns); const newCols = currentPreferences?.columns || initialColumns; dispatchTableColumns({ payload: { cellProps, collection: { ...collection, fields: (0, _formatFields.default)(collection) }, columns: newCols.map((column)=>{ // 'string' is for backwards compatibility // the preference used to be stored as an array of strings if (typeof column === 'string') { return { accessor: column, active: true }; } return column; }) }, type: 'set' }); hasInitialized.current = true; } }; sync(); }, [ preferenceKey, setPreference, tableColumns, getPreference, useAsTitle, defaultColumns, collection, cellProps, formattedFields ]); // ///////////////////////////////////// // Set preferences on column change // ///////////////////////////////////// (0, _react.useEffect)(()=>{ if (!hasInitialized.current) return; const columns = tableColumns.map((c)=>({ accessor: c.accessor, active: c.active })); void setPreference(preferenceKey, { columns }, true); }, [ tableColumns, preferenceKey, setPreference, getPreference ]); const setActiveColumns = (0, _react.useCallback)((columns)=>{ dispatchTableColumns({ payload: { // onSelect, cellProps, collection: { ...collection, fields: (0, _formatFields.default)(collection) }, columns: columns.map((column)=>({ accessor: column, active: true })) }, type: 'set' }); }, [ collection, cellProps ]); const moveColumn = (0, _react.useCallback)((args)=>{ const { fromIndex, toIndex } = args; dispatchTableColumns({ payload: { cellProps, collection: { ...collection, fields: (0, _formatFields.default)(collection) }, fromIndex, toIndex }, type: 'move' }); }, [ collection, cellProps ]); const toggleColumn = (0, _react.useCallback)((column)=>{ dispatchTableColumns({ payload: { cellProps, collection: { ...collection, fields: (0, _formatFields.default)(collection) }, column }, type: 'toggle' }); }, [ collection, cellProps ]); return /*#__PURE__*/ _react.default.createElement(TableColumnContext.Provider, { value: { columns: tableColumns, dispatchTableColumns, moveColumn, setActiveColumns, toggleColumn } }, children); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL1RhYmxlQ29sdW1ucy9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZVJlZHVjZXIsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9jb2xsZWN0aW9ucy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUHJvcHMgYXMgQ2VsbFByb3BzIH0gZnJvbSAnLi4vLi4vdmlld3MvY29sbGVjdGlvbnMvTGlzdC9DZWxsL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBMaXN0UHJlZmVyZW5jZXMgfSBmcm9tICcuLi8uLi92aWV3cy9jb2xsZWN0aW9ucy9MaXN0L3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tICcuLi9UYWJsZS90eXBlcydcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSAnLi9jb2x1bW5SZWR1Y2VyJ1xuXG5pbXBvcnQgeyB1c2VQcmVmZXJlbmNlcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9QcmVmZXJlbmNlcydcbmltcG9ydCBmb3JtYXRGaWVsZHMgZnJvbSAnLi4vLi4vdmlld3MvY29sbGVjdGlvbnMvTGlzdC9mb3JtYXRGaWVsZHMnXG5pbXBvcnQgYnVpbGRDb2x1bW5zIGZyb20gJy4vYnVpbGRDb2x1bW5zJ1xuaW1wb3J0IHsgY29sdW1uUmVkdWNlciB9IGZyb20gJy4vY29sdW1uUmVkdWNlcidcbmltcG9ydCBnZXRJbml0aWFsQ29sdW1uU3RhdGUgZnJvbSAnLi9nZXRJbml0aWFsQ29sdW1ucydcblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVDb2x1bW5zIHtcbiAgY29sdW1uczogQ29sdW1uW11cbiAgZGlzcGF0Y2hUYWJsZUNvbHVtbnM6IFJlYWN0LkRpc3BhdGNoPEFjdGlvbj5cbiAgbW92ZUNvbHVtbjogKGFyZ3M6IHsgZnJvbUluZGV4OiBudW1iZXI7IHRvSW5kZXg6IG51bWJlciB9KSA9PiB2b2lkXG4gIHNldEFjdGl2ZUNvbHVtbnM6IChjb2x1bW5zOiBzdHJpbmdbXSkgPT4gdm9pZFxuICB0b2dnbGVDb2x1bW46IChjb2x1bW46IHN0cmluZykgPT4gdm9pZFxufVxuXG5leHBvcnQgY29uc3QgVGFibGVDb2x1bW5Db250ZXh0ID0gY3JlYXRlQ29udGV4dDxJVGFibGVDb2x1bW5zPih7fSBhcyBJVGFibGVDb2x1bW5zKVxuXG5leHBvcnQgY29uc3QgdXNlVGFibGVDb2x1bW5zID0gKCk6IElUYWJsZUNvbHVtbnMgPT4gdXNlQ29udGV4dChUYWJsZUNvbHVtbkNvbnRleHQpXG5cbmV4cG9ydCBjb25zdCBUYWJsZUNvbHVtbnNQcm92aWRlcjogUmVhY3QuRkM8e1xuICBjZWxsUHJvcHM/OiBQYXJ0aWFsPENlbGxQcm9wcz5bXVxuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG4gIGNvbGxlY3Rpb246IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdcbn0+ID0gKHtcbiAgY2VsbFByb3BzLFxuICBjaGlsZHJlbixcbiAgY29sbGVjdGlvbjoge1xuICAgIGFkbWluOiB7IGRlZmF1bHRDb2x1bW5zLCB1c2VBc1RpdGxlIH0sXG4gIH0sXG4gIGNvbGxlY3Rpb24sXG59KSA9PiB7XG4gIGNvbnN0IHByZWZlcmVuY2VLZXkgPSBgJHtjb2xsZWN0aW9uLnNsdWd9LWxpc3RgXG4gIGNvbnN0IHByZXZDb2xsZWN0aW9uID0gdXNlUmVmPFNhbml0aXplZENvbGxlY3Rpb25Db25maWdbJ3NsdWcnXT4oKVxuICBjb25zdCBoYXNJbml0aWFsaXplZCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgeyBnZXRQcmVmZXJlbmNlLCBzZXRQcmVmZXJlbmNlIH0gPSB1c2VQcmVmZXJlbmNlcygpXG4gIGNvbnN0IFtmb3JtYXR0ZWRGaWVsZHNdID0gdXNlU3RhdGU8RmllbGRbXT4oKCkgPT4gZm9ybWF0RmllbGRzKGNvbGxlY3Rpb24pKVxuXG4gIGNvbnN0IFt0YWJsZUNvbHVtbnMsIGRpc3BhdGNoVGFibGVDb2x1bW5zXSA9IHVzZVJlZHVjZXIoY29sdW1uUmVkdWNlciwge30sICgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsQ29sdW1ucyA9IGdldEluaXRpYWxDb2x1bW5TdGF0ZShmb3JtYXR0ZWRGaWVsZHMsIHVzZUFzVGl0bGUsIGRlZmF1bHRDb2x1bW5zKVxuXG4gICAgcmV0dXJuIGJ1aWxkQ29sdW1ucyh7XG4gICAgICBjZWxsUHJvcHMsXG4gICAgICBjb2xsZWN0aW9uLFxuICAgICAgY29sdW1uczogaW5pdGlhbENvbHVtbnMubWFwKChjb2x1bW4pID0+ICh7XG4gICAgICAgIGFjY2Vzc29yOiBjb2x1bW4sXG4gICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgIH0pKSxcbiAgICB9KVxuICB9KVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gU3luYyBwcmVmZXJlbmNlcyBvbiBjb2xsZWN0aW9uIGNoYW5nZVxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzeW5jID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY29sbGVjdGlvbkhhc0NoYW5nZWQgPSBwcmV2Q29sbGVjdGlvbi5jdXJyZW50ICE9PSBjb2xsZWN0aW9uLnNsdWdcblxuICAgICAgaWYgKGNvbGxlY3Rpb25IYXNDaGFuZ2VkKSB7XG4gICAgICAgIGhhc0luaXRpYWxpemVkLmN1cnJlbnQgPSBmYWxzZVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQcmVmZXJlbmNlcyA9IGF3YWl0IGdldFByZWZlcmVuY2U8TGlzdFByZWZlcmVuY2VzPihwcmVmZXJlbmNlS2V5KVxuICAgICAgICBwcmV2Q29sbGVjdGlvbi5jdXJyZW50ID0gY29sbGVjdGlvbi5zbHVnXG4gICAgICAgIGNvbnN0IGluaXRpYWxDb2x1bW5zID0gZ2V0SW5pdGlhbENvbHVtblN0YXRlKGZvcm1hdHRlZEZpZWxkcywgdXNlQXNUaXRsZSwgZGVmYXVsdENvbHVtbnMpXG4gICAgICAgIGNvbnN0IG5ld0NvbHMgPSBjdXJyZW50UHJlZmVyZW5jZXM/LmNvbHVtbnMgfHwgaW5pdGlhbENvbHVtbnNcblxuICAgICAgICBkaXNwYXRjaFRhYmxlQ29sdW1ucyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgY2VsbFByb3BzLFxuICAgICAgICAgICAgY29sbGVjdGlvbjogeyAuLi5jb2xsZWN0aW9uLCBmaWVsZHM6IGZvcm1hdEZpZWxkcyhjb2xsZWN0aW9uKSB9LFxuICAgICAgICAgICAgY29sdW1uczogbmV3Q29scy5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAvLyAnc3RyaW5nJyBpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgLy8gdGhlIHByZWZlcmVuY2UgdXNlZCB0byBiZSBzdG9yZWQgYXMgYW4gYXJyYXkgb2Ygc3RyaW5nc1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbHVtbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgYWNjZXNzb3I6IGNvbHVtbixcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtblxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0eXBlOiAnc2V0JyxcbiAgICAgICAgfSlcblxuICAgICAgICBoYXNJbml0aWFsaXplZC5jdXJyZW50ID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHN5bmMoKVxuICB9LCBbXG4gICAgcHJlZmVyZW5jZUtleSxcbiAgICBzZXRQcmVmZXJlbmNlLFxuICAgIHRhYmxlQ29sdW1ucyxcbiAgICBnZXRQcmVmZXJlbmNlLFxuICAgIHVzZUFzVGl0bGUsXG4gICAgZGVmYXVsdENvbHVtbnMsXG4gICAgY29sbGVjdGlvbixcbiAgICBjZWxsUHJvcHMsXG4gICAgZm9ybWF0dGVkRmllbGRzLFxuICBdKVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gU2V0IHByZWZlcmVuY2VzIG9uIGNvbHVtbiBjaGFuZ2VcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFoYXNJbml0aWFsaXplZC5jdXJyZW50KSByZXR1cm5cbiAgICBjb25zdCBjb2x1bW5zID0gdGFibGVDb2x1bW5zLm1hcCgoYykgPT4gKHtcbiAgICAgIGFjY2Vzc29yOiBjLmFjY2Vzc29yLFxuICAgICAgYWN0aXZlOiBjLmFjdGl2ZSxcbiAgICB9KSlcblxuICAgIHZvaWQgc2V0UHJlZmVyZW5jZShwcmVmZXJlbmNlS2V5LCB7IGNvbHVtbnMgfSwgdHJ1ZSlcbiAgfSwgW3RhYmxlQ29sdW1ucywgcHJlZmVyZW5jZUtleSwgc2V0UHJlZmVyZW5jZSwgZ2V0UHJlZmVyZW5jZV0pXG5cbiAgY29uc3Qgc2V0QWN0aXZlQ29sdW1ucyA9IHVzZUNhbGxiYWNrKFxuICAgIChjb2x1bW5zOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgZGlzcGF0Y2hUYWJsZUNvbHVtbnMoe1xuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgLy8gb25TZWxlY3QsXG4gICAgICAgICAgY2VsbFByb3BzLFxuICAgICAgICAgIGNvbGxlY3Rpb246IHsgLi4uY29sbGVjdGlvbiwgZmllbGRzOiBmb3JtYXRGaWVsZHMoY29sbGVjdGlvbikgfSxcbiAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiAoe1xuICAgICAgICAgICAgYWNjZXNzb3I6IGNvbHVtbixcbiAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6ICdzZXQnLFxuICAgICAgfSlcbiAgICB9LFxuICAgIFtjb2xsZWN0aW9uLCBjZWxsUHJvcHNdLFxuICApXG5cbiAgY29uc3QgbW92ZUNvbHVtbiA9IHVzZUNhbGxiYWNrKFxuICAgIChhcmdzOiB7IGZyb21JbmRleDogbnVtYmVyOyB0b0luZGV4OiBudW1iZXIgfSkgPT4ge1xuICAgICAgY29uc3QgeyBmcm9tSW5kZXgsIHRvSW5kZXggfSA9IGFyZ3NcblxuICAgICAgZGlzcGF0Y2hUYWJsZUNvbHVtbnMoe1xuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgY2VsbFByb3BzLFxuICAgICAgICAgIGNvbGxlY3Rpb246IHsgLi4uY29sbGVjdGlvbiwgZmllbGRzOiBmb3JtYXRGaWVsZHMoY29sbGVjdGlvbikgfSxcbiAgICAgICAgICBmcm9tSW5kZXgsXG4gICAgICAgICAgdG9JbmRleCxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogJ21vdmUnLFxuICAgICAgfSlcbiAgICB9LFxuICAgIFtjb2xsZWN0aW9uLCBjZWxsUHJvcHNdLFxuICApXG5cbiAgY29uc3QgdG9nZ2xlQ29sdW1uID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbHVtbjogc3RyaW5nKSA9PiB7XG4gICAgICBkaXNwYXRjaFRhYmxlQ29sdW1ucyh7XG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICBjZWxsUHJvcHMsXG4gICAgICAgICAgY29sbGVjdGlvbjogeyAuLi5jb2xsZWN0aW9uLCBmaWVsZHM6IGZvcm1hdEZpZWxkcyhjb2xsZWN0aW9uKSB9LFxuICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogJ3RvZ2dsZScsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2NvbGxlY3Rpb24sIGNlbGxQcm9wc10sXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUNvbHVtbkNvbnRleHQuUHJvdmlkZXJcbiAgICAgIHZhbHVlPXt7XG4gICAgICAgIGNvbHVtbnM6IHRhYmxlQ29sdW1ucyxcbiAgICAgICAgZGlzcGF0Y2hUYWJsZUNvbHVtbnMsXG4gICAgICAgIG1vdmVDb2x1bW4sXG4gICAgICAgIHNldEFjdGl2ZUNvbHVtbnMsXG4gICAgICAgIHRvZ2dsZUNvbHVtbixcbiAgICAgIH19XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvVGFibGVDb2x1bW5Db250ZXh0LlByb3ZpZGVyPlxuICApXG59XG4iXSwibmFtZXMiOlsiVGFibGVDb2x1bW5Db250ZXh0IiwiVGFibGVDb2x1bW5zUHJvdmlkZXIiLCJ1c2VUYWJsZUNvbHVtbnMiLCJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsImNlbGxQcm9wcyIsImNoaWxkcmVuIiwiY29sbGVjdGlvbiIsImFkbWluIiwiZGVmYXVsdENvbHVtbnMiLCJ1c2VBc1RpdGxlIiwicHJlZmVyZW5jZUtleSIsInNsdWciLCJwcmV2Q29sbGVjdGlvbiIsInVzZVJlZiIsImhhc0luaXRpYWxpemVkIiwiZ2V0UHJlZmVyZW5jZSIsInNldFByZWZlcmVuY2UiLCJ1c2VQcmVmZXJlbmNlcyIsImZvcm1hdHRlZEZpZWxkcyIsInVzZVN0YXRlIiwiZm9ybWF0RmllbGRzIiwidGFibGVDb2x1bW5zIiwiZGlzcGF0Y2hUYWJsZUNvbHVtbnMiLCJ1c2VSZWR1Y2VyIiwiY29sdW1uUmVkdWNlciIsImluaXRpYWxDb2x1bW5zIiwiZ2V0SW5pdGlhbENvbHVtblN0YXRlIiwiYnVpbGRDb2x1bW5zIiwiY29sdW1ucyIsIm1hcCIsImNvbHVtbiIsImFjY2Vzc29yIiwiYWN0aXZlIiwidXNlRWZmZWN0Iiwic3luYyIsImNvbGxlY3Rpb25IYXNDaGFuZ2VkIiwiY3VycmVudCIsImN1cnJlbnRQcmVmZXJlbmNlcyIsIm5ld0NvbHMiLCJwYXlsb2FkIiwiZmllbGRzIiwidHlwZSIsImMiLCJzZXRBY3RpdmVDb2x1bW5zIiwidXNlQ2FsbGJhY2siLCJtb3ZlQ29sdW1uIiwiYXJncyIsImZyb21JbmRleCIsInRvSW5kZXgiLCJ0b2dnbGVDb2x1bW4iLCJQcm92aWRlciIsInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQStCYUEsa0JBQWtCO2VBQWxCQTs7SUFJQUMsb0JBQW9CO2VBQXBCQTs7SUFGQUMsZUFBZTtlQUFmQTs7OytEQXpCTjs2QkFTd0I7cUVBQ047cUVBQ0E7K0JBQ0s7MEVBQ0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVTNCLE1BQU1GLG1DQUFxQkcsSUFBQUEsb0JBQWEsRUFBZ0IsQ0FBQztBQUV6RCxNQUFNRCxrQkFBa0IsSUFBcUJFLElBQUFBLGlCQUFVLEVBQUNKO0FBRXhELE1BQU1DLHVCQUlSLENBQUMsRUFDSkksU0FBUyxFQUNUQyxRQUFRLEVBQ1JDLFlBQVksRUFDVkMsT0FBTyxFQUFFQyxjQUFjLEVBQUVDLFVBQVUsRUFBRSxFQUN0QyxFQUNESCxVQUFVLEVBQ1g7SUFDQyxNQUFNSSxnQkFBZ0IsQ0FBQyxFQUFFSixXQUFXSyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQy9DLE1BQU1DLGlCQUFpQkMsSUFBQUEsYUFBTTtJQUM3QixNQUFNQyxpQkFBaUJELElBQUFBLGFBQU0sRUFBQztJQUM5QixNQUFNLEVBQUVFLGFBQWEsRUFBRUMsYUFBYSxFQUFFLEdBQUdDLElBQUFBLDJCQUFjO0lBQ3ZELE1BQU0sQ0FBQ0MsZ0JBQWdCLEdBQUdDLElBQUFBLGVBQVEsRUFBVSxJQUFNQyxJQUFBQSxxQkFBWSxFQUFDZDtJQUUvRCxNQUFNLENBQUNlLGNBQWNDLHFCQUFxQixHQUFHQyxJQUFBQSxpQkFBVSxFQUFDQyw0QkFBYSxFQUFFLENBQUMsR0FBRztRQUN6RSxNQUFNQyxpQkFB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