payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
166 lines (165 loc) • 28.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "DocumentControls", {
enumerable: true,
get: function() {
return DocumentControls;
}
});
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
const _reacti18next = require("react-i18next");
const _formatDate = require("../../../utilities/formatDate");
const _Config = require("../../utilities/Config");
const _DocumentInfo = require("../../utilities/DocumentInfo");
const _Autosave = /*#__PURE__*/ _interop_require_default(require("../Autosave"));
const _DeleteDocument = /*#__PURE__*/ _interop_require_default(require("../DeleteDocument"));
const _DuplicateDocument = /*#__PURE__*/ _interop_require_default(require("../DuplicateDocument"));
const _Gutter = require("../Gutter");
const _Popup = /*#__PURE__*/ _interop_require_default(require("../Popup"));
const _PopupButtonList = /*#__PURE__*/ _interop_require_wildcard(require("../Popup/PopupButtonList"));
const _PreviewButton = /*#__PURE__*/ _interop_require_default(require("../PreviewButton"));
const _Publish = require("../Publish");
const _Save = require("../Save");
const _SaveDraft = require("../SaveDraft");
const _Status = /*#__PURE__*/ _interop_require_default(require("../Status"));
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 = 'doc-controls';
const DocumentControls = (props)=>{
const { id, collection, data, disableActions, global, hasSavePermission, isAccountView, isEditing, permissions } = props;
const { publishedDoc } = (0, _DocumentInfo.useDocumentInfo)();
const { admin: { dateFormat }, routes: { admin: adminRoute } } = (0, _Config.useConfig)();
const { i18n, t } = (0, _reacti18next.useTranslation)('general');
const hasCreatePermission = 'create' in permissions && permissions.create?.permission;
const hasDeletePermission = 'delete' in permissions && permissions.delete?.permission;
const showDotMenu = Boolean(collection && id && !disableActions && (hasCreatePermission || hasDeletePermission));
return /*#__PURE__*/ _react.default.createElement(_Gutter.Gutter, {
className: baseClass
}, /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__wrapper`
}, /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__content`
}, /*#__PURE__*/ _react.default.createElement("ul", {
className: `${baseClass}__meta`
}, collection && !isEditing && !isAccountView && /*#__PURE__*/ _react.default.createElement("li", {
className: `${baseClass}__list-item`
}, /*#__PURE__*/ _react.default.createElement("p", {
className: `${baseClass}__value`
}, t('creatingNewLabel', {
label: typeof collection?.labels?.singular === 'string' ? collection.labels.singular : 'document'
}))), (collection?.versions?.drafts || global?.versions?.drafts) && /*#__PURE__*/ _react.default.createElement(_react.Fragment, null, (global || collection && isEditing) && /*#__PURE__*/ _react.default.createElement("li", {
className: [
`${baseClass}__status`,
`${baseClass}__list-item`
].filter(Boolean).join(' ')
}, /*#__PURE__*/ _react.default.createElement(_Status.default, null)), (collection?.versions?.drafts && collection?.versions?.drafts?.autosave || global?.versions?.drafts && global?.versions?.drafts?.autosave) && hasSavePermission && /*#__PURE__*/ _react.default.createElement("li", {
className: `${baseClass}__list-item`
}, /*#__PURE__*/ _react.default.createElement(_Autosave.default, {
collection: collection,
global: global,
id: id,
publishedDocUpdatedAt: publishedDoc?.updatedAt || data?.createdAt
}))), collection?.timestamps && (isEditing || isAccountView) && /*#__PURE__*/ _react.default.createElement(_react.Fragment, null, /*#__PURE__*/ _react.default.createElement("li", {
className: [
`${baseClass}__list-item`,
`${baseClass}__value-wrap`
].filter(Boolean).join(' '),
title: data?.updatedAt ? (0, _formatDate.formatDate)(data?.updatedAt, dateFormat, i18n?.language) : ''
}, /*#__PURE__*/ _react.default.createElement("p", {
className: `${baseClass}__label`
}, t('lastModified'), ": "), data?.updatedAt && /*#__PURE__*/ _react.default.createElement("p", {
className: `${baseClass}__value`
}, (0, _formatDate.formatDate)(data.updatedAt, dateFormat, i18n?.language))), /*#__PURE__*/ _react.default.createElement("li", {
className: [
`${baseClass}__list-item`,
`${baseClass}__value-wrap`
].filter(Boolean).join(' '),
title: publishedDoc?.createdAt || data?.createdAt ? (0, _formatDate.formatDate)(publishedDoc?.createdAt || data?.createdAt, dateFormat, i18n?.language) : ''
}, /*#__PURE__*/ _react.default.createElement("p", {
className: `${baseClass}__label`
}, t('created'), ": "), (publishedDoc?.createdAt || data?.createdAt) && /*#__PURE__*/ _react.default.createElement("p", {
className: `${baseClass}__value`
}, (0, _formatDate.formatDate)(publishedDoc?.createdAt || data?.createdAt, dateFormat, i18n?.language)))))), /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__controls-wrapper`
}, /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__controls`
}, (collection?.admin?.preview || global?.admin?.preview) && /*#__PURE__*/ _react.default.createElement(_PreviewButton.default, {
CustomComponent: collection?.admin?.components?.edit?.PreviewButton || global?.admin?.components?.elements?.PreviewButton,
generatePreviewURL: collection?.admin?.preview || global?.admin?.preview
}), hasSavePermission && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, collection?.versions?.drafts || global?.versions?.drafts ? /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, (collection?.versions?.drafts && !collection?.versions?.drafts?.autosave || global?.versions?.drafts && !global?.versions?.drafts?.autosave) && /*#__PURE__*/ _react.default.createElement(_SaveDraft.SaveDraft, {
CustomComponent: collection?.admin?.components?.edit?.SaveDraftButton || global?.admin?.components?.elements?.SaveDraftButton
}), /*#__PURE__*/ _react.default.createElement(_Publish.Publish, {
CustomComponent: collection?.admin?.components?.edit?.PublishButton || global?.admin?.components?.elements?.PublishButton
})) : /*#__PURE__*/ _react.default.createElement(_Save.Save, {
CustomComponent: collection?.admin?.components?.edit?.SaveButton || global?.admin?.components?.elements?.SaveButton
}))), showDotMenu && /*#__PURE__*/ _react.default.createElement(_Popup.default, {
button: /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__dots`
}, /*#__PURE__*/ _react.default.createElement("div", null), /*#__PURE__*/ _react.default.createElement("div", null), /*#__PURE__*/ _react.default.createElement("div", null)),
className: `${baseClass}__popup`,
horizontalAlign: "right",
size: "large",
verticalAlign: "bottom"
}, /*#__PURE__*/ _react.default.createElement(_PopupButtonList.ButtonGroup, null, hasCreatePermission && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_PopupButtonList.Button, {
id: "action-create",
to: `${adminRoute}/collections/${collection?.slug}/create`
}, t('createNew')), !collection?.admin?.disableDuplicate && isEditing && /*#__PURE__*/ _react.default.createElement(_DuplicateDocument.default, {
collection: collection,
id: id,
slug: collection?.slug
})), hasDeletePermission && /*#__PURE__*/ _react.default.createElement(_DeleteDocument.default, {
buttonId: "action-delete",
collection: collection,
id: id
}))))), /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__divider`
}));
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL0RvY3VtZW50Q29udHJvbHMvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBGcmFnbWVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuXG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb25QZXJtaXNzaW9uLCBHbG9iYWxQZXJtaXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXV0aCdcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vZ2xvYmFscy9jb25maWcvdHlwZXMnXG5cbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvZm9ybWF0RGF0ZSdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Db25maWcnXG5pbXBvcnQgeyB1c2VEb2N1bWVudEluZm8gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvRG9jdW1lbnRJbmZvJ1xuaW1wb3J0IEF1dG9zYXZlIGZyb20gJy4uL0F1dG9zYXZlJ1xuaW1wb3J0IERlbGV0ZURvY3VtZW50IGZyb20gJy4uL0RlbGV0ZURvY3VtZW50J1xuaW1wb3J0IER1cGxpY2F0ZURvY3VtZW50IGZyb20gJy4uL0R1cGxpY2F0ZURvY3VtZW50J1xuaW1wb3J0IHsgR3V0dGVyIH0gZnJvbSAnLi4vR3V0dGVyJ1xuaW1wb3J0IFBvcHVwIGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0ICogYXMgUG9wdXBMaXN0IGZyb20gJy4uL1BvcHVwL1BvcHVwQnV0dG9uTGlzdCdcbmltcG9ydCBQcmV2aWV3QnV0dG9uIGZyb20gJy4uL1ByZXZpZXdCdXR0b24nXG5pbXBvcnQgeyBQdWJsaXNoIH0gZnJvbSAnLi4vUHVibGlzaCdcbmltcG9ydCB7IFNhdmUgfSBmcm9tICcuLi9TYXZlJ1xuaW1wb3J0IHsgU2F2ZURyYWZ0IH0gZnJvbSAnLi4vU2F2ZURyYWZ0J1xuaW1wb3J0IFN0YXR1cyBmcm9tICcuLi9TdGF0dXMnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2RvYy1jb250cm9scydcblxuZXhwb3J0IGNvbnN0IERvY3VtZW50Q29udHJvbHM6IFJlYWN0LkZDPHtcbiAgYXBpVVJMOiBzdHJpbmdcbiAgY29sbGVjdGlvbj86IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdcbiAgZGF0YT86IGFueVxuICBkaXNhYmxlQWN0aW9ucz86IGJvb2xlYW5cbiAgZ2xvYmFsPzogU2FuaXRpemVkR2xvYmFsQ29uZmlnXG4gIGhhc1NhdmVQZXJtaXNzaW9uPzogYm9vbGVhblxuICBpZD86IHN0cmluZ1xuICBpc0FjY291bnRWaWV3PzogYm9vbGVhblxuICBpc0VkaXRpbmc/OiBib29sZWFuXG4gIHBlcm1pc3Npb25zPzogQ29sbGVjdGlvblBlcm1pc3Npb24gfCBHbG9iYWxQZXJtaXNzaW9uXG59PiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgY29sbGVjdGlvbixcbiAgICBkYXRhLFxuICAgIGRpc2FibGVBY3Rpb25zLFxuICAgIGdsb2JhbCxcbiAgICBoYXNTYXZlUGVybWlzc2lvbixcbiAgICBpc0FjY291bnRWaWV3LFxuICAgIGlzRWRpdGluZyxcbiAgICBwZXJtaXNzaW9ucyxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgeyBwdWJsaXNoZWREb2MgfSA9IHVzZURvY3VtZW50SW5mbygpXG5cbiAgY29uc3Qge1xuICAgIGFkbWluOiB7IGRhdGVGb3JtYXQgfSxcbiAgICByb3V0ZXM6IHsgYWRtaW46IGFkbWluUm91dGUgfSxcbiAgfSA9IHVzZUNvbmZpZygpXG5cbiAgY29uc3QgeyBpMThuLCB0IH0gPSB1c2VUcmFuc2xhdGlvbignZ2VuZXJhbCcpXG5cbiAgY29uc3QgaGFzQ3JlYXRlUGVybWlzc2lvbiA9ICdjcmVhdGUnIGluIHBlcm1pc3Npb25zICYmIHBlcm1pc3Npb25zLmNyZWF0ZT8ucGVybWlzc2lvblxuICBjb25zdCBoYXNEZWxldGVQZXJtaXNzaW9uID0gJ2RlbGV0ZScgaW4gcGVybWlzc2lvbnMgJiYgcGVybWlzc2lvbnMuZGVsZXRlPy5wZXJtaXNzaW9uXG5cbiAgY29uc3Qgc2hvd0RvdE1lbnUgPSBCb29sZWFuKFxuICAgIGNvbGxlY3Rpb24gJiYgaWQgJiYgIWRpc2FibGVBY3Rpb25zICYmIChoYXNDcmVhdGVQZXJtaXNzaW9uIHx8IGhhc0RlbGV0ZVBlcm1pc3Npb24pLFxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8R3V0dGVyIGNsYXNzTmFtZT17YmFzZUNsYXNzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X193cmFwcGVyYH0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jb250ZW50YH0+XG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fbWV0YWB9PlxuICAgICAgICAgICAge2NvbGxlY3Rpb24gJiYgIWlzRWRpdGluZyAmJiAhaXNBY2NvdW50VmlldyAmJiAoXG4gICAgICAgICAgICAgIDxsaSBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2xpc3QtaXRlbWB9PlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdmFsdWVgfT5cbiAgICAgICAgICAgICAgICAgIHt0KCdjcmVhdGluZ05ld0xhYmVsJywge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDpcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgY29sbGVjdGlvbj8ubGFiZWxzPy5zaW5ndWxhciA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gY29sbGVjdGlvbi5sYWJlbHMuc2luZ3VsYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2RvY3VtZW50JyxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7KGNvbGxlY3Rpb24/LnZlcnNpb25zPy5kcmFmdHMgfHwgZ2xvYmFsPy52ZXJzaW9ucz8uZHJhZnRzKSAmJiAoXG4gICAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICB7KGdsb2JhbCB8fCAoY29sbGVjdGlvbiAmJiBpc0VkaXRpbmcpKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtbYCR7YmFzZUNsYXNzfV9fc3RhdHVzYCwgYCR7YmFzZUNsYXNzfV9fbGlzdC1pdGVtYF1cbiAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJyAnKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFN0YXR1cyAvPlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHsoKGNvbGxlY3Rpb24/LnZlcnNpb25zPy5kcmFmdHMgJiYgY29sbGVjdGlvbj8udmVyc2lvbnM/LmRyYWZ0cz8uYXV0b3NhdmUpIHx8XG4gICAgICAgICAgICAgICAgICAoZ2xvYmFsPy52ZXJzaW9ucz8uZHJhZnRzICYmIGdsb2JhbD8udmVyc2lvbnM/LmRyYWZ0cz8uYXV0b3NhdmUpKSAmJlxuICAgICAgICAgICAgICAgICAgaGFzU2F2ZVBlcm1pc3Npb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19saXN0LWl0ZW1gfT5cbiAgICAgICAgICAgICAgICAgICAgICA8QXV0b3NhdmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb249e2NvbGxlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWw9e2dsb2JhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlZERvY1VwZGF0ZWRBdD17cHVibGlzaGVkRG9jPy51cGRhdGVkQXQgfHwgZGF0YT8uY3JlYXRlZEF0fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtjb2xsZWN0aW9uPy50aW1lc3RhbXBzICYmIChpc0VkaXRpbmcgfHwgaXNBY2NvdW50VmlldykgJiYgKFxuICAgICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1tgJHtiYXNlQ2xhc3N9X19saXN0LWl0ZW1gLCBgJHtiYXNlQ2xhc3N9X192YWx1ZS13cmFwYF1cbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAuam9pbignICcpfVxuICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICBkYXRhPy51cGRhdGVkQXQgPyBmb3JtYXREYXRlKGRhdGE/LnVwZGF0ZWRBdCwgZGF0ZUZvcm1hdCwgaTE4bj8ubGFuZ3VhZ2UpIDogJydcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2xhYmVsYH0+e3QoJ2xhc3RNb2RpZmllZCcpfTombmJzcDs8L3A+XG4gICAgICAgICAgICAgICAgICB7ZGF0YT8udXBkYXRlZEF0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X192YWx1ZWB9PlxuICAgICAgICAgICAgICAgICAgICAgIHtmb3JtYXREYXRlKGRhdGEudXBkYXRlZEF0LCBkYXRlRm9ybWF0LCBpMThuPy5sYW5ndWFnZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17W2Ake2Jhc2VDbGFzc31fX2xpc3QtaXRlbWAsIGAke2Jhc2VDbGFzc31fX3ZhbHVlLXdyYXBgXVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCcgJyl9XG4gICAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlZERvYz8uY3JlYXRlZEF0IHx8IGRhdGE/LmNyZWF0ZWRBdFxuICAgICAgICAgICAgICAgICAgICAgID8gZm9ybWF0RGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVkRG9jPy5jcmVhdGVkQXQgfHwgZGF0YT8uY3JlYXRlZEF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuPy5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19sYWJlbGB9Pnt0KCdjcmVhdGVkJyl9OiZuYnNwOzwvcD5cbiAgICAgICAgICAgICAgICAgIHsocHVibGlzaGVkRG9jPy5jcmVhdGVkQXQgfHwgZGF0YT8uY3JlYXRlZEF0KSAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdmFsdWVgfT5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0RGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlZERvYz8uY3JlYXRlZEF0IHx8IGRhdGE/LmNyZWF0ZWRBdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpMThuPy5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fY29udHJvbHMtd3JhcHBlcmB9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jb250cm9sc2B9PlxuICAgICAgICAgICAgeyhjb2xsZWN0aW9uPy5hZG1pbj8ucHJldmlldyB8fCBnbG9iYWw/LmFkbWluPy5wcmV2aWV3KSAmJiAoXG4gICAgICAgICAgICAgIDxQcmV2aWV3QnV0dG9uXG4gICAgICAgICAgICAgICAgQ3VzdG9tQ29tcG9uZW50PXtcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24/LmFkbWluPy5jb21wb25lbnRzPy5lZGl0Py5QcmV2aWV3QnV0dG9uIHx8XG4gICAgICAgICAgICAgICAgICBnbG9iYWw/LmFkbWluPy5jb21wb25lbnRzPy5lbGVtZW50cz8uUHJldmlld0J1dHRvblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBnZW5lcmF0ZVByZXZpZXdVUkw9e2NvbGxlY3Rpb24/LmFkbWluPy5wcmV2aWV3IHx8IGdsb2JhbD8uYWRtaW4/LnByZXZpZXd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2hhc1NhdmVQZXJtaXNzaW9uICYmIChcbiAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgIHtjb2xsZWN0aW9uPy52ZXJzaW9ucz8uZHJhZnRzIHx8IGdsb2JhbD8udmVyc2lvbnM/LmRyYWZ0cyA/IChcbiAgICAgICAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgeygoY29sbGVjdGlvbj8udmVyc2lvbnM/LmRyYWZ0cyAmJiAhY29sbGVjdGlvbj8udmVyc2lvbnM/LmRyYWZ0cz8uYXV0b3NhdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKGdsb2JhbD8udmVyc2lvbnM/LmRyYWZ0cyAmJiAhZ2xvYmFsPy52ZXJzaW9ucz8uZHJhZnRzPy5hdXRvc2F2ZSkpICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8U2F2ZURyYWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21Db21wb25lbnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uPy5hZG1pbj8uY29tcG9uZW50cz8uZWRpdD8uU2F2ZURyYWZ0QnV0dG9uIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbD8uYWRtaW4/LmNvbXBvbmVudHM/LmVsZW1lbnRzPy5TYXZlRHJhZnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8UHVibGlzaFxuICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUNvbXBvbmVudD17XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uPy5hZG1pbj8uY29tcG9uZW50cz8uZWRpdD8uUHVibGlzaEJ1dHRvbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsPy5hZG1pbj8uY29tcG9uZW50cz8uZWxlbWVudHM/LlB1Ymxpc2hCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8U2F2ZVxuICAgICAgICAgICAgICAgICAgICBDdXN0b21Db21wb25lbnQ9e1xuICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24/LmFkbWluPy5jb21wb25lbnRzPy5lZGl0Py5TYXZlQnV0dG9uIHx8XG4gICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsPy5hZG1pbj8uY29tcG9uZW50cz8uZWxlbWVudHM/LlNhdmVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7c2hvd0RvdE1lbnUgJiYgKFxuICAgICAgICAgICAgPFBvcHVwXG4gICAgICAgICAgICAgIGJ1dHRvbj17XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2RvdHNgfT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3BvcHVwYH1cbiAgICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWduPVwicmlnaHRcIlxuICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWduPVwiYm90dG9tXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFBvcHVwTGlzdC5CdXR0b25Hcm91cD5cbiAgICAgICAgICAgICAgICB7aGFzQ3JlYXRlUGVybWlzc2lvbiAmJiAoXG4gICAgICAgICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxQb3B1cExpc3QuQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhY3Rpb24tY3JlYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0bz17YCR7YWRtaW5Sb3V0ZX0vY29sbGVjdGlvbnMvJHtjb2xsZWN0aW9uPy5zbHVnfS9jcmVhdGVgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3QoJ2NyZWF0ZU5ldycpfVxuICAgICAgICAgICAgICAgICAgICA8L1BvcHVwTGlzdC5CdXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgeyFjb2xsZWN0aW9uPy5hZG1pbj8uZGlzYWJsZUR1cGxpY2F0ZSAmJiBpc0VkaXRpbmcgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxEdXBsaWNhdGVEb2N1bWVudCBjb2xsZWN0aW9uPXtjb2xsZWN0aW9ufSBpZD17aWR9IHNsdWc9e2NvbGxlY3Rpb24/LnNsdWd9IC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge2hhc0RlbGV0ZVBlcm1pc3Npb24gJiYgKFxuICAgICAgICAgICAgICAgICAgPERlbGV0ZURvY3VtZW50IGJ1dHRvbklkPVwiYWN0aW9uLWRlbGV0ZVwiIGNvbGxlY3Rpb249e2NvbGxlY3Rpb259IGlkPXtpZH0gLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1BvcHVwTGlzdC5CdXR0b25Hcm91cD5cbiAgICAgICAgICAgIDwvUG9wdXA+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19kaXZpZGVyYH0gLz5cbiAgICA8L0d1dHRlcj5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIkRvY3VtZW50Q29udHJvbHMiLCJiYXNlQ2xhc3MiLCJwcm9wcyIsImlkIiwiY29sbGVjdGlvbiIsImRhdGEiLCJkaXNhYmxlQWN0aW9ucyIsImdsb2JhbCIsImhhc1NhdmVQZXJtaXNzaW9uIiwiaXNBY2NvdW50VmlldyIsImlzRWRpdGluZyIsInBlcm1pc3Npb25zIiwicHVibGlzaGVkRG9jIiwidXNlRG9jdW1lbnRJbmZvIiwiYWRtaW4iLCJkYXRlRm9ybWF0Iiwicm91dGVzIiwiYWRtaW5Sb3V0ZSIsInVzZUNvbmZpZyIsImkxOG4iLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJoYXNDcmVhdGVQZXJtaXNzaW9uIiwiY3JlYXRlIiwicGVybWlzc2lvbiIsImhhc0RlbGV0ZVBlcm1pc3Npb24iLCJkZWxldGUiLCJzaG93RG90TWVudSIsIkJvb2xlYW4iLCJHdXR0ZXIiLCJjbGFzc05hbWUiLCJkaXYiLCJ1bCIsImxpIiwicCIsImxhYmVsIiwibGFiZWxzIiwic2luZ3VsYXIiLCJ2ZXJzaW9ucyIsImRyYWZ0cyIsIkZyYWdtZW50IiwiZmlsdGVyIiwiam9pbiIsIlN0YXR1cyIsImF1dG9zYXZlIiwiQXV0b3NhdmUiLCJwdWJsaXNoZWREb2NVcGRhdGVkQXQiLCJ1cGRhdGVkQXQiLCJjcmVhdGVkQXQiLCJ0aW1lc3RhbXBzIiwidGl0bGUiLCJmb3JtYXREYXRlIiwibGFuZ3VhZ2UiLCJwcmV2aWV3IiwiUHJldmlld0J1dHRvbiIsIkN1c3RvbUNvbXBvbmVudCIsImNvbXBvbmVudHMiLCJlZGl0IiwiZWxlbWVudHMiLCJnZW5lcmF0ZVByZXZpZXdVUkwiLCJSZWFjdCIsIlNhdmVEcmFmdCIsIlNhdmVEcmFmdEJ1dHRvbiIsIlB1Ymxpc2giLCJQdWJsaXNoQnV0dG9uIiwiU2F2ZSIsIlNhdmVCdXR0b24iLCJQb3B1cCIsImJ1dHRvbiIsImhvcml6b250YWxBbGlnbiIsInNpemUiLCJ2ZXJ0aWNhbEFsaWduIiwiUG9wdXBMaXN0IiwiQnV0dG9uR3JvdXAiLCJCdXR0b24iLCJ0byIsInNsdWciLCJkaXNhYmxlRHVwbGljYXRlIiwiRHVwbGljYXRlRG9jdW1lbnQiLCJEZWxldGVEb2N1bWVudCIsImJ1dHRvbklkIl0sIm1hcHBpbmdzIjoiOzs7OytCQXlCYUE7OztlQUFBQTs7OytEQXpCbUI7OEJBQ0Q7NEJBTUo7d0JBQ0Q7OEJBQ007aUVBQ1g7dUVBQ007MEVBQ0c7d0JBQ1A7OERBQ0w7eUVBQ1M7c0VBQ0Q7eUJBQ0Y7c0JBQ0g7MkJBQ0s7K0RBQ1A7UUFDWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFUCxNQUFNQyxZQUFZO0FBRVgsTUFBTUQsbUJBV1IsQ0FBQ0U7SUFDSixNQUFNLEVBQ0pDLEVBQUUsRUFDRkMsVUFBVSxFQUNWQyxJQUFJLEVBQ0pDLGNBQWMsRUFDZEMsTUFBTSxFQUNOQyxpQkFBaUIsRUFDakJDLGFBQWEsRUFDYkMsU0FBUyxFQUNUQyxXQUFXLEVBQ1osR0FBR1Q7SUFFSixNQUFNLEVBQUVVLFlBQVksRUFBRSxHQUFHQyxJQUFBQSw2QkFBZTtJQUV4QyxNQUFNLEVBQ0pDLE9BQU8sRUFBRUMsVUFBVSxFQUFFLEVBQ3JCQyxRQUFRLEVBQUVGLE9BQU9HLFVBQVUsRUFBRSxFQUM5QixHQUFHQyxJQUFBQSxpQkFBUztJQUViLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxDQUFDLEVBQUUsR0FBR0MsSUFBQUEsNEJBQWMsRUFBQztJQUVuQyxNQUFNQyxzQkFBc0IsWUFBWVgsZUFBZUEsWUFBWVksTUFBTSxFQUFFQztJQUMzRSxNQUFNQyxzQkFBc0IsWUFBWWQsZUFBZUEsWUFBWWUsTUFB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