payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
160 lines (159 loc) • 16.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return _default;
}
});
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
const _reacti18next = require("react-i18next");
const _reactrouterdom = require("react-router-dom");
const _getTranslation = require("../../../../../utilities/getTranslation");
const _DocumentHeader = require("../../../elements/DocumentHeader");
const _Loading = require("../../../elements/Loading");
const _Form = /*#__PURE__*/ _interop_require_default(require("../../../forms/Form"));
const _ActionsProvider = require("../../../utilities/ActionsProvider");
const _Auth = require("../../../utilities/Auth");
const _DocumentEvents = require("../../../utilities/DocumentEvents");
const _OperationProvider = require("../../../utilities/OperationProvider");
const _Routes = require("./Routes");
const _CustomComponent = require("./Routes/CustomComponent");
require("./index.scss");
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 baseClass = 'collection-edit';
const DefaultEditView = (props)=>{
const { i18n } = (0, _reacti18next.useTranslation)('general');
const { refreshCookieAsync, user } = (0, _Auth.useAuth)();
const { id, action, apiURL, collection, customHeader, data, disableRoutes, fieldTypes, hasSavePermission, internalState, isEditing, isLoading, onSave: onSaveFromProps } = props;
const { setViewActions } = (0, _ActionsProvider.useActions)();
const { reportUpdate } = (0, _DocumentEvents.useDocumentEvents)();
const { auth } = collection;
const classes = [
baseClass,
isEditing && `${baseClass}--is-editing`
].filter(Boolean).join(' ');
const location = (0, _reactrouterdom.useLocation)();
const onSave = (0, _react.useCallback)(async (json)=>{
reportUpdate({
id,
entitySlug: collection.slug,
updatedAt: json?.result?.updatedAt || new Date().toISOString()
});
if (auth && id === user.id) {
await refreshCookieAsync();
}
if (typeof onSaveFromProps === 'function') {
onSaveFromProps({
...json,
operation: id ? 'update' : 'create'
});
}
}, [
id,
onSaveFromProps,
auth,
user,
refreshCookieAsync,
collection,
reportUpdate
]);
const operation = isEditing ? 'update' : 'create';
(0, _react.useEffect)(()=>{
const path = location.pathname;
if (!(path.endsWith(id) || path.endsWith('/create'))) {
return;
}
const editConfig = collection?.admin?.components?.views?.Edit;
const defaultActions = editConfig && 'Default' in editConfig && 'actions' in editConfig.Default ? editConfig.Default.actions : [];
setViewActions(defaultActions);
return ()=>{
setViewActions([]);
};
}, [
id,
location.pathname,
collection?.admin?.components?.views?.Edit,
setViewActions
]);
return /*#__PURE__*/ _react.default.createElement("main", {
className: classes
}, /*#__PURE__*/ _react.default.createElement(_OperationProvider.OperationContext.Provider, {
value: operation
}, /*#__PURE__*/ _react.default.createElement(_Form.default, {
action: action,
className: `${baseClass}__form`,
disabled: !hasSavePermission,
initialState: internalState,
method: id ? 'patch' : 'post',
onSuccess: onSave
}, /*#__PURE__*/ _react.default.createElement(_Loading.FormLoadingOverlayToggle, {
action: isLoading ? 'loading' : operation,
formIsLoading: isLoading,
loadingSuffix: (0, _getTranslation.getTranslation)(collection.labels.singular, i18n),
name: `collection-edit--${typeof collection?.labels?.singular === 'string' ? collection.labels.singular : 'document'}`,
type: "withoutNav"
}), !isLoading && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_DocumentHeader.DocumentHeader, {
apiURL: apiURL,
collection: collection,
customHeader: customHeader,
data: data,
id: id,
isEditing: isEditing
}), disableRoutes ? /*#__PURE__*/ _react.default.createElement(_CustomComponent.CustomCollectionComponent, {
view: "Default",
...props
}) : /*#__PURE__*/ _react.default.createElement(_Routes.CollectionRoutes, {
...props,
fieldTypes: fieldTypes
})))));
};
const _default = DefaultEditView;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL2NvbGxlY3Rpb25zL0VkaXQvRGVmYXVsdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZUxvY2F0aW9uIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSdcblxuaW1wb3J0IHR5cGUgeyBGaWVsZFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vZm9ybXMvZmllbGQtdHlwZXMnXG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb25FZGl0Vmlld1Byb3BzIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5cbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbGl0aWVzL2dldFRyYW5zbGF0aW9uJ1xuaW1wb3J0IHsgRG9jdW1lbnRIZWFkZXIgfSBmcm9tICcuLi8uLi8uLi9lbGVtZW50cy9Eb2N1bWVudEhlYWRlcidcbmltcG9ydCB7IEZvcm1Mb2FkaW5nT3ZlcmxheVRvZ2dsZSB9IGZyb20gJy4uLy4uLy4uL2VsZW1lbnRzL0xvYWRpbmcnXG5pbXBvcnQgRm9ybSBmcm9tICcuLi8uLi8uLi9mb3Jtcy9Gb3JtJ1xuaW1wb3J0IHsgdXNlQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9BY3Rpb25zUHJvdmlkZXInXG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL0F1dGgnXG5pbXBvcnQgeyB1c2VEb2N1bWVudEV2ZW50cyB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9Eb2N1bWVudEV2ZW50cydcbmltcG9ydCB7IE9wZXJhdGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvT3BlcmF0aW9uUHJvdmlkZXInXG5pbXBvcnQgeyBDb2xsZWN0aW9uUm91dGVzIH0gZnJvbSAnLi9Sb3V0ZXMnXG5pbXBvcnQgeyBDdXN0b21Db2xsZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9Sb3V0ZXMvQ3VzdG9tQ29tcG9uZW50J1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdjb2xsZWN0aW9uLWVkaXQnXG5cbmV4cG9ydCB0eXBlIERlZmF1bHRFZGl0Vmlld1Byb3BzID0gQ29sbGVjdGlvbkVkaXRWaWV3UHJvcHMgJiB7XG4gIGN1c3RvbUhlYWRlcj86IFJlYWN0LlJlYWN0Tm9kZVxuICBkaXNhYmxlUm91dGVzPzogYm9vbGVhblxuICBmaWVsZFR5cGVzOiBGaWVsZFR5cGVzXG59XG5cbmNvbnN0IERlZmF1bHRFZGl0VmlldzogUmVhY3QuRkM8RGVmYXVsdEVkaXRWaWV3UHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oJ2dlbmVyYWwnKVxuICBjb25zdCB7IHJlZnJlc2hDb29raWVBc3luYywgdXNlciB9ID0gdXNlQXV0aCgpXG5cbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIGFjdGlvbixcbiAgICBhcGlVUkwsXG4gICAgY29sbGVjdGlvbixcbiAgICBjdXN0b21IZWFkZXIsXG4gICAgZGF0YSxcbiAgICBkaXNhYmxlUm91dGVzLFxuICAgIGZpZWxkVHlwZXMsXG4gICAgaGFzU2F2ZVBlcm1pc3Npb24sXG4gICAgaW50ZXJuYWxTdGF0ZSxcbiAgICBpc0VkaXRpbmcsXG4gICAgaXNMb2FkaW5nLFxuICAgIG9uU2F2ZTogb25TYXZlRnJvbVByb3BzLFxuICB9ID0gcHJvcHNcblxuICBjb25zdCB7IHNldFZpZXdBY3Rpb25zIH0gPSB1c2VBY3Rpb25zKClcblxuICBjb25zdCB7IHJlcG9ydFVwZGF0ZSB9ID0gdXNlRG9jdW1lbnRFdmVudHMoKVxuXG4gIGNvbnN0IHsgYXV0aCB9ID0gY29sbGVjdGlvblxuXG4gIGNvbnN0IGNsYXNzZXMgPSBbYmFzZUNsYXNzLCBpc0VkaXRpbmcgJiYgYCR7YmFzZUNsYXNzfS0taXMtZWRpdGluZ2BdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJylcblxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKClcblxuICBjb25zdCBvblNhdmUgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoanNvbikgPT4ge1xuICAgICAgcmVwb3J0VXBkYXRlKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGVudGl0eVNsdWc6IGNvbGxlY3Rpb24uc2x1ZyxcbiAgICAgICAgdXBkYXRlZEF0OiBqc29uPy5yZXN1bHQ/LnVwZGF0ZWRBdCB8fCBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9KVxuICAgICAgaWYgKGF1dGggJiYgaWQgPT09IHVzZXIuaWQpIHtcbiAgICAgICAgYXdhaXQgcmVmcmVzaENvb2tpZUFzeW5jKClcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBvblNhdmVGcm9tUHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25TYXZlRnJvbVByb3BzKHtcbiAgICAgICAgICAuLi5qc29uLFxuICAgICAgICAgIG9wZXJhdGlvbjogaWQgPyAndXBkYXRlJyA6ICdjcmVhdGUnLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2lkLCBvblNhdmVGcm9tUHJvcHMsIGF1dGgsIHVzZXIsIHJlZnJlc2hDb29raWVBc3luYywgY29sbGVjdGlvbiwgcmVwb3J0VXBkYXRlXSxcbiAgKVxuXG4gIGNvbnN0IG9wZXJhdGlvbiA9IGlzRWRpdGluZyA/ICd1cGRhdGUnIDogJ2NyZWF0ZSdcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBsb2NhdGlvbi5wYXRobmFtZVxuXG4gICAgaWYgKCEocGF0aC5lbmRzV2l0aChpZCkgfHwgcGF0aC5lbmRzV2l0aCgnL2NyZWF0ZScpKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGVkaXRDb25maWcgPSBjb2xsZWN0aW9uPy5hZG1pbj8uY29tcG9uZW50cz8udmlld3M/LkVkaXRcbiAgICBjb25zdCBkZWZhdWx0QWN0aW9ucyA9XG4gICAgICBlZGl0Q29uZmlnICYmICdEZWZhdWx0JyBpbiBlZGl0Q29uZmlnICYmICdhY3Rpb25zJyBpbiBlZGl0Q29uZmlnLkRlZmF1bHRcbiAgICAgICAgPyBlZGl0Q29uZmlnLkRlZmF1bHQuYWN0aW9uc1xuICAgICAgICA6IFtdXG5cbiAgICBzZXRWaWV3QWN0aW9ucyhkZWZhdWx0QWN0aW9ucylcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzZXRWaWV3QWN0aW9ucyhbXSlcbiAgICB9XG4gIH0sIFtpZCwgbG9jYXRpb24ucGF0aG5hbWUsIGNvbGxlY3Rpb24/LmFkbWluPy5jb21wb25lbnRzPy52aWV3cz8uRWRpdCwgc2V0Vmlld0FjdGlvbnNdKVxuXG4gIHJldHVybiAoXG4gICAgPG1haW4gY2xhc3NOYW1lPXtjbGFzc2VzfT5cbiAgICAgIDxPcGVyYXRpb25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtvcGVyYXRpb259PlxuICAgICAgICA8Rm9ybVxuICAgICAgICAgIGFjdGlvbj17YWN0aW9ufVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZm9ybWB9XG4gICAgICAgICAgZGlzYWJsZWQ9eyFoYXNTYXZlUGVybWlzc2lvbn1cbiAgICAgICAgICBpbml0aWFsU3RhdGU9e2ludGVybmFsU3RhdGV9XG4gICAgICAgICAgbWV0aG9kPXtpZCA/ICdwYXRjaCcgOiAncG9zdCd9XG4gICAgICAgICAgb25TdWNjZXNzPXtvblNhdmV9XG4gICAgICAgID5cbiAgICAgICAgICA8Rm9ybUxvYWRpbmdPdmVybGF5VG9nZ2xlXG4gICAgICAgICAgICBhY3Rpb249e2lzTG9hZGluZyA/ICdsb2FkaW5nJyA6IG9wZXJhdGlvbn1cbiAgICAgICAgICAgIGZvcm1Jc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgIGxvYWRpbmdTdWZmaXg9e2dldFRyYW5zbGF0aW9uKGNvbGxlY3Rpb24ubGFiZWxzLnNpbmd1bGFyLCBpMThuKX1cbiAgICAgICAgICAgIG5hbWU9e2Bjb2xsZWN0aW9uLWVkaXQtLSR7XG4gICAgICAgICAgICAgIHR5cGVvZiBjb2xsZWN0aW9uPy5sYWJlbHM/LnNpbmd1bGFyID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8gY29sbGVjdGlvbi5sYWJlbHMuc2luZ3VsYXJcbiAgICAgICAgICAgICAgICA6ICdkb2N1bWVudCdcbiAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgdHlwZT1cIndpdGhvdXROYXZcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgeyFpc0xvYWRpbmcgJiYgKFxuICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICA8RG9jdW1lbnRIZWFkZXJcbiAgICAgICAgICAgICAgICBhcGlVUkw9e2FwaVVSTH1cbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uPXtjb2xsZWN0aW9ufVxuICAgICAgICAgICAgICAgIGN1c3RvbUhlYWRlcj17Y3VzdG9tSGVhZGVyfVxuICAgICAgICAgICAgICAgIGRhdGE9e2RhdGF9XG4gICAgICAgICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgICAgICAgIGlzRWRpdGluZz17aXNFZGl0aW5nfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7ZGlzYWJsZVJvdXRlcyA/IChcbiAgICAgICAgICAgICAgICA8Q3VzdG9tQ29sbGVjdGlvbkNvbXBvbmVudCB2aWV3PVwiRGVmYXVsdFwiIHsuLi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8Q29sbGVjdGlvblJvdXRlcyB7Li4ucHJvcHN9IGZpZWxkVHlwZXM9e2ZpZWxkVHlwZXN9IC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvRm9ybT5cbiAgICAgIDwvT3BlcmF0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L21haW4+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGVmYXVsdEVkaXRWaWV3XG4iXSwibmFtZXMiOlsiYmFzZUNsYXNzIiwiRGVmYXVsdEVkaXRWaWV3IiwicHJvcHMiLCJpMThuIiwidXNlVHJhbnNsYXRpb24iLCJyZWZyZXNoQ29va2llQXN5bmMiLCJ1c2VyIiwidXNlQXV0aCIsImlkIiwiYWN0aW9uIiwiYXBpVVJMIiwiY29sbGVjdGlvbiIsImN1c3RvbUhlYWRlciIsImRhdGEiLCJkaXNhYmxlUm91dGVzIiwiZmllbGRUeXBlcyIsImhhc1NhdmVQZXJtaXNzaW9uIiwiaW50ZXJuYWxTdGF0ZSIsImlzRWRpdGluZyIsImlzTG9hZGluZyIsIm9uU2F2ZSIsIm9uU2F2ZUZyb21Qcm9wcyIsInNldFZpZXdBY3Rpb25zIiwidXNlQWN0aW9ucyIsInJlcG9ydFVwZGF0ZSIsInVzZURvY3VtZW50RXZlbnRzIiwiYXV0aCIsImNsYXNzZXMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsImxvY2F0aW9uIiwidXNlTG9jYXRpb24iLCJ1c2VDYWxsYmFjayIsImpzb24iLCJlbnRpdHlTbHVnIiwic2x1ZyIsInVwZGF0ZWRBdCIsInJlc3VsdCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsIm9wZXJhdGlvbiIsInVzZUVmZmVjdCIsInBhdGgiLCJwYXRobmFtZSIsImVuZHNXaXRoIiwiZWRpdENvbmZpZyIsImFkbWluIiwiY29tcG9uZW50cyIsInZpZXdzIiwiRWRpdCIsImRlZmF1bHRBY3Rpb25zIiwiRGVmYXVsdCIsImFjdGlvbnMiLCJtYWluIiwiY2xhc3NOYW1lIiwiT3BlcmF0aW9uQ29udGV4dCIsIlByb3ZpZGVyIiwidmFsdWUiLCJGb3JtIiwiZGlzYWJsZWQiLCJpbml0aWFsU3RhdGUiLCJtZXRob2QiLCJvblN1Y2Nlc3MiLCJGb3JtTG9hZGluZ092ZXJsYXlUb2dnbGUiLCJmb3JtSXNMb2FkaW5nIiwibG9hZGluZ1N1ZmZpeCIsImdldFRyYW5zbGF0aW9uIiwibGFiZWxzIiwic2luZ3VsYXIiLCJuYW1lIiwidHlwZSIsIlJlYWN0IiwiRnJhZ21lbnQiLCJEb2N1bWVudEhlYWRlciIsIkN1c3RvbUNvbGxlY3Rpb25Db21wb25lbnQiLCJ2aWV3IiwiQ29sbGVjdGlvblJvdXRlcyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFnSkE7OztlQUFBOzs7K0RBaEo4Qzs4QkFDZjtnQ0FDSDtnQ0FLRztnQ0FDQTt5QkFDVTs2REFDeEI7aUNBQ1U7c0JBQ0g7Z0NBQ1U7bUNBQ0Q7d0JBQ0E7aUNBQ1M7UUFDbkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVAsTUFBTUEsWUFBWTtBQVFsQixNQUFNQyxrQkFBa0QsQ0FBQ0M7SUFDdkQsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsSUFBQUEsNEJBQWMsRUFBQztJQUNoQyxNQUFNLEVBQUVDLGtCQUFrQixFQUFFQyxJQUFJLEVBQUUsR0FBR0MsSUFBQUEsYUFBTztJQUU1QyxNQUFNLEVBQ0pDLEVBQUUsRUFDRkMsTUFBTSxFQUNOQyxNQUFNLEVBQ05DLFVBQVUsRUFDVkMsWUFBWSxFQUNaQyxJQUFJLEVBQ0pDLGFBQWEsRUFDYkMsVUFBVSxFQUNWQyxpQkFBaUIsRUFDakJDLGFBQWEsRUFDYkMsU0FBUyxFQUNUQyxTQUFTLEVBQ1RDLFFBQVFDLGVBQWUsRUFDeEIsR0FBR25CO0lBRUosTUFBTSxFQUFFb0IsY0FBYyxFQUFFLEdBQUdDLElBQUFBLDJCQUFVO0lBRXJDLE1BQU0sRUFBRUMsWUFBWSxFQUFFLEdBQUdDLElBQUFBLGlDQUFpQjtJQUUxQyxNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHZjtJQUVqQixNQUFNZ0IsVUFBVTtRQUFDM0I7UUFBV2tCLGFBQWEsQ0FBQyxFQUFFbEIsVUFBVSxZQUFZLENBQUM7S0FBQyxDQUFDNEIsTUFBTSxDQUFDQyxTQUFTQyxJQUFJLENBQUM7SUFFMUYsTUFBTUMsV0FBV0MsSUFBQUEsMkJBQVc7SUFFNUIsTUFBTVosU0FBU2EsSUFBQUEsa0JBQVcsRUFDeEIsT0FBT0M7UUFDTFYsYUFBYTtZQUNYaEI7WUFDQTJCLFlBQVl4QixXQUFXeUIsSUFBSTtZQUMzQkMsV0FBV0gsTUFBTUksUUFBUUQsYUFBYSxJQUFJRSxPQUFPQyxXQUFXO1FBQzlEO1FBQ0EsSUFBSWQsUUFBUWxCLE9BQU9GLEtBQUtFLEVBQUUsRUFBRTtZQUMxQixNQUFNSDtRQUNSO1FBRUEsSUFBSSxPQUFPZ0Isb0JBQW9CLFlBQVk7WUFDekNBLGdCQUFnQjtnQkFDZCxHQUFHYSxJQUFJO2dCQUNQTyxXQUFXakMsS0FBSyxXQUFXO1lBQzdCO1FBQ0Y7SUFDRixHQUNBO1FBQUNBO1FBQUlhO1FBQWlCSztRQUFNcEI7UUFBTUQ7UUFBb0JNO1FBQVlhO0tBQWE7SUFHakYsTUFBTWlCLFlBQVl2QixZQUFZLFdBQVc7SUFFekN3QixJQUFBQSxnQkFBUyxFQUFDO1FBQ1IsTUFBTUMsT0FBT1osU0FBU2EsUUFBUTtRQUU5QixJQUFJLENBQUVELENBQUFBLEtBQUtFLFFBQVEsQ0FBQ3JDLE9BQU9tQyxLQUFLRSxRQUFRLENBQUMsVUFBUyxHQUFJO1lBQ3BEO1FBQ0Y7UUFDQSxNQUFNQyxhQUFhbkMsWUFBWW9DLE9BQU9DLFlBQVlDLE9BQU9DO1FBQ3pELE1BQU1DLGlCQUNKTCxjQUFjLGFBQWFBLGNBQWMsYUFBYUEsV0FBV00sT0FBTyxHQUNwRU4sV0FBV00sT0FBTyxDQUFDQyxPQUFPLEdBQzFCLEVBQUU7UUFFUi9CLGVBQWU2QjtRQUVmLE9BQU87WUFDTDdCLGVBQWUsRUFBRTtRQUNuQjtJQUNGLEdBQUc7UUFBQ2Q7UUFBSXVCLFNBQVNhLFFBQVE7UUFBRWpDLFlBQVlvQyxPQUFPQyxZQUFZQyxPQUFPQztRQUFNNUI7S0FBZTtJQUV0RixxQkFDRSw2QkFBQ2dDO1FBQUtDLFdBQVc1QjtxQkFDZiw2QkFBQzZCLG1DQUFnQixDQUFDQyxRQUFRO1FBQUNDLE9BQU9qQjtxQkFDaEMsNkJBQUNrQixhQUFJO1FBQ0hsRCxRQUFRQTtRQUNSOEMsV0FBVyxDQUFDLEVBQUV2RCxVQUFVLE1BQU0sQ0FBQztRQUMvQjRELFVBQVUsQ0FBQzVDO1FBQ1g2QyxjQUFjNUM7UUFDZDZDLFFBQVF0RCxLQUFLLFVBQVU7UUFDdkJ1RCxXQUFXM0M7cUJBRVgsNkJBQUM0QyxpQ0FBd0I7UUFDdkJ2RCxRQUFRVSxZQUFZLFlBQVlzQjtRQUNoQ3dCLGVBQWU5QztRQUNmK0MsZUFBZUMsSUFBQUEsOEJBQWMsRUFBQ3hELFdBQVd5RCxNQUFNLENBQUNDLFFBQVEsRUFBRWxFO1FBQzFEbUUsTUFBTSxDQUFDLGlCQUFpQixFQUN0QixPQUFPM0QsWUFBWXlELFFBQVFDLGFBQWEsV0FDcEMxRCxXQUFXeUQsTUFBTSxDQUFDQyxRQUFRLEdBQzFCLFdBQ0wsQ0FBQztRQUNGRSxNQUFLO1FBRU4sQ0FBQ3BELDJCQUNBLDZCQUFDcUQsY0FBSyxDQUFDQyxRQUFRLHNCQUNiLDZCQUFDQyw4QkFBYztRQUNiaEUsUUFBUUE7UUFDUkMsWUFBWUE7UUFDWkMsY0FBY0E7UUFDZEMsTUFBTUE7UUFDTkwsSUFBSUE7UUFDSlUsV0FBV0E7UUFFWkosOEJBQ0MsNkJBQUM2RCwwQ0FBeUI7UUFBQ0MsTUFBSztRQUFXLEdBQUcxRSxLQUFLO3VCQUVuRCw2QkFBQzJFLHdCQUFnQjtRQUFFLEdBQUczRSxLQUFLO1FBQUVhLFlBQVlBOztBQVF6RDtNQUVBLFdBQWVkIn0=