@pie-element/inline-dropdown 8.0.2-esm.0 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/configure/CHANGELOG.md +8 -0
- package/configure/package.json +5 -5
- package/controller/CHANGELOG.md +8 -0
- package/controller/package.json +2 -2
- package/package.json +7 -24
- package/esm/configure.js +0 -1552
- package/esm/configure.js.map +0 -1
- package/esm/controller.js +0 -304
- package/esm/controller.js.map +0 -1
- package/esm/element.js +0 -278
- package/esm/element.js.map +0 -1
package/esm/configure.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configure.js","sources":["../configure/src/utils.js","../configure/src/inline-dropdown-toolbar.jsx","../configure/src/response-area.jsx","../configure/src/main.jsx","../configure/src/defaults.js","../configure/src/markupUtils.js","../configure/src/index.js"],"sourcesContent":["export const generateValidationMessage = (config) => {\n const { maxResponseAreas, maxResponseAreaChoices } = config;\n\n const responseAreasMessage =\n '\\nThere should be at least 1 ' +\n (maxResponseAreas ? `and at most ${maxResponseAreas} ` : '') +\n 'response area' +\n (maxResponseAreas ? 's' : '') +\n ' defined.' +\n (maxResponseAreaChoices\n ? `\\nThere should be at most ${maxResponseAreaChoices} choices defined per response area.`\n : '');\n\n const message = 'Validation requirements:' + responseAreasMessage;\n\n return message;\n};\n\nexport const getPluginProps = (props = {}, baseInputConfiguration = {}) => ({\n ...baseInputConfiguration,\n ...props,\n});\n","import { getPluginProps } from './utils';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport classnames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\n\nimport AddIcon from '@material-ui/icons/Add';\nimport CheckIcon from '@material-ui/icons/Check';\nimport CloseIcon from '@material-ui/icons/Close';\nimport EditIcon from '@material-ui/icons/Edit';\nimport IconButton from '@material-ui/core/IconButton';\n\nclass MenuItemComp extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correct: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n onEditChoice: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n };\n\n onRemoveClick = (e) => {\n const { onRemoveChoice } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n onRemoveChoice();\n };\n\n onEditClick = (e) => {\n const { onEditChoice } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n onEditChoice();\n };\n\n render() {\n const { classes, correct, onClick, value } = this.props;\n\n return (\n <div className={classes.wrapper}>\n {correct && (\n <div className={classes.selectedIcon} onClick={onClick}>\n <CheckIcon fontSize=\"inherit\" />\n </div>\n )}\n <div\n className={classnames(classes.valueHolder, { [classes.correct]: correct })}\n onClick={onClick}\n dangerouslySetInnerHTML={{\n __html: value,\n }}\n />\n <div className={classes.actionButtons}>\n <IconButton className={classes.iconButton} onClick={this.onEditClick} size=\"small\" aria-label=\"Edit\">\n <EditIcon fontSize=\"inherit\" />\n </IconButton>\n <IconButton className={classes.iconButton} onClick={this.onRemoveClick} size=\"small\" aria-label=\"Remove\">\n <CloseIcon fontSize=\"inherit\" />\n </IconButton>\n </div>\n </div>\n );\n }\n}\n\nconst MenuItem = withStyles((theme) => ({\n wrapper: {\n display: 'flex',\n alignItems: 'flex-start',\n position: 'relative',\n background: theme.palette.common.white,\n borderBottom: `1px solid ${theme.palette.grey[400]}`,\n\n '&:last-child': {\n borderRadius: '0 0 4px 4px',\n },\n },\n correct: {\n background: color.correctSecondary(),\n },\n actionButtons: {\n margin: theme.spacing.unit / 2,\n display: 'flex',\n },\n iconButton: {\n fontSize: theme.typography.fontSize,\n padding: theme.spacing.unit / 2,\n color: theme.palette.common.black,\n },\n selectedIcon: {\n display: 'flex',\n justifyContent: 'center',\n color: theme.palette.common.white,\n fontSize: theme.typography.fontSize,\n fontStyle: 'normal',\n position: 'absolute',\n transform: 'translate(0, -50%)',\n backgroundColor: color.correct(),\n borderRadius: '50%',\n top: theme.spacing.unit * 2,\n left: theme.spacing.unit,\n zIndex: 3,\n },\n valueHolder: {\n flex: 1,\n padding: theme.spacing.unit * 0.75,\n paddingLeft: theme.spacing.unit * 3.5,\n },\n}))(MenuItemComp);\n\nconst findSlateNode = (key) => {\n return window.document.querySelector('[data-key=\"' + key + '\"]');\n};\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nexport class RespAreaToolbar extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n node: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n onDone: PropTypes.func,\n choices: PropTypes.array,\n onAddChoice: PropTypes.func.isRequired,\n onCheck: PropTypes.func,\n onRemoveChoice: PropTypes.func.isRequired,\n onSelectChoice: PropTypes.func.isRequired,\n onToolbarDone: PropTypes.func.isRequired,\n value: PropTypes.shape({\n change: PropTypes.func.isRequired,\n document: PropTypes.shape({\n getNextText: PropTypes.func.isRequired,\n }),\n }),\n spellCheck: PropTypes.bool,\n };\n clickedInside = false;\n preventDone = false;\n\n state = {\n respAreaMarkup: '',\n editedChoiceIndex: -1,\n };\n\n componentDidMount() {\n const { node } = this.props;\n\n const domNode = findSlateNode(node.key);\n\n if (domNode) {\n //eslint-disable-next-line\n const domNodeRect = domNode.getBoundingClientRect();\n const editor = domNode.closest('[data-slate-editor]');\n const editorRect = editor.getBoundingClientRect();\n const top = domNodeRect.top - editorRect.top;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 60}px`,\n left: `${left + 25}px`,\n },\n });\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onRespAreaChange = (respAreaMarkup) => {\n this.setState({ respAreaMarkup });\n };\n\n onAddChoice = () => {\n if (this.editorRef) {\n this.editorRef.finishEditing();\n }\n };\n\n onDone = (val) => {\n const { choices, node, value, onAddChoice, onToolbarDone } = this.props;\n const { editedChoiceIndex } = this.state;\n const onlyText = createElementFromHTML(val).textContent.trim();\n\n if (editedChoiceIndex >= 0 && choices?.[editedChoiceIndex]?.correct) {\n const update = { ...node.data.toJSON(), value: val };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n onToolbarDone(change, false);\n }\n\n if (!isEmpty(onlyText)) {\n onAddChoice(node.data.get('index'), val, editedChoiceIndex);\n }\n\n this.setState({ editedChoiceIndex: -1 });\n };\n\n onSelectChoice = (newValue, index) => {\n const { node, value, onToolbarDone, onSelectChoice } = this.props;\n const update = { ...node.data.toJSON(), value: newValue };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n const nextText = value.document.getNextText(node.key);\n\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n\n onToolbarDone(change, false);\n\n onSelectChoice(index);\n };\n\n onRemoveChoice = (val, index) => {\n const { node, value, onToolbarDone, onRemoveChoice } = this.props;\n\n if (isEqual(val, node.data.get('value'))) {\n const update = { ...node.data.toJSON(), value: null };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n onToolbarDone(change, false);\n }\n\n onRemoveChoice(index);\n };\n\n onEditChoice = (val, index) => {\n this.onRespAreaChange(val);\n this.setState({ editedChoiceIndex: index });\n };\n\n onKeyDown = (event) => {\n if (event.key === 'Enter') {\n this.preventDone = false;\n this.onAddChoice();\n // Cancelling event\n return false;\n }\n };\n\n onBlur = () => {\n if (this.clickedInside) {\n this.clickedInside = false;\n return;\n }\n\n const { node, choices, onCheck, onToolbarDone, value } = this.props;\n const correctResponse = (choices || []).find((choice) => choice.correct);\n\n this.onAddChoice();\n if (!choices || (choices && choices.length < 2) || !correctResponse) {\n onCheck(() => {\n const change = value.change();\n\n change.removeNodeByKey(node.get('key'));\n onToolbarDone(change, false);\n });\n }\n };\n\n onClickInside = () => {\n this.clickedInside = true;\n };\n\n focusInput = () => {\n // we need to focus the input so that math is saved even without pressing the green checkmark\n const slateEditorRef = this.editorRef && this.editorRef.rootRef && this.editorRef.rootRef.slateEditor;\n const inputRef = slateEditorRef && slateEditorRef.editorRef && slateEditorRef.editorRef.element;\n\n if (inputRef) {\n inputRef.focus();\n }\n };\n\n render() {\n const {\n classes,\n choices,\n spellCheck,\n uploadSoundSupport,\n mathMlOptions = {},\n baseInputConfiguration = {},\n responseAreaInputConfiguration = {},\n } = this.props;\n const { respAreaMarkup, toolbarStyle } = this.state;\n\n if (!toolbarStyle) {\n return null;\n }\n\n return (\n <div\n className={classes.responseContainer}\n style={{\n ...toolbarStyle,\n backgroundColor: '#E0E1E6',\n }}\n onMouseDown={this.onClickInside}\n >\n <div className={classes.itemBuilder}>\n <EditableHtml\n ref={(ref) => {\n if (ref) {\n this.editorRef = ref;\n }\n }}\n autoFocus={true}\n autoSave\n className={classes.respArea}\n toolbarOpts={{\n position: 'top',\n alwaysVisible: false,\n showDone: false,\n doneOn: 'blur',\n }}\n markup={respAreaMarkup}\n onKeyDown={this.onKeyDown}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n onChange={(respAreaMarkup) => {\n if (this.preventDone) {\n return;\n }\n\n this.onRespAreaChange(respAreaMarkup);\n }}\n onDone={(val) => {\n if (this.preventDone) {\n return;\n }\n\n this.onDone(val);\n }}\n onBlur={(e) => {\n if (!e.relatedTarget) {\n return;\n }\n\n const isInInsertCharacter = !!(e.relatedTarget && e.relatedTarget.closest('.insert-character-dialog'));\n const isInDoneButton = !!(e.relatedTarget && e.relatedTarget.closest('[aria-label=\"Done\"]'));\n\n this.preventDone = isInInsertCharacter || isInDoneButton;\n if (isInInsertCharacter || isInDoneButton) {\n this.clickedInside = true;\n }\n this.onBlur(e);\n }}\n placeholder=\"Add Choice\"\n pluginProps={getPluginProps(responseAreaInputConfiguration?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheck}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n />\n <IconButton\n className={classes.addButton}\n onMouseDown={() => this.focusInput()}\n onClick={() => this.onAddChoice()}\n size=\"small\"\n aria-label=\"Add\"\n >\n <AddIcon fontSize=\"inherit\" />\n </IconButton>\n </div>\n\n {choices && (\n <div className={classes.choicesHolder}>\n {choices.map(({ label, correct }, index) => (\n <MenuItem\n key={index}\n onClick={() => this.onSelectChoice(label, index)}\n onRemoveChoice={() => this.onRemoveChoice(label, index)}\n onEditChoice={() => this.onEditChoice(label, index)}\n value={label}\n correct={correct}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n}\n\nconst StyledRespAreaToolbar = withStyles((theme) => ({\n responseContainer: {\n boxShadow: theme.shadows[2],\n borderRadius: '4px',\n width: '400px',\n },\n respArea: {\n borderRadius: '4px',\n backgroundColor: theme.palette.common.white,\n '& [data-slate-editor=\"true\"]': {\n minHeight: 'initial !important',\n },\n },\n addButton: {\n fontSize: theme.typography.fontSize + 2,\n padding: theme.spacing.unit / 2,\n color: theme.palette.common.black,\n position: 'absolute',\n top: '50%',\n right: theme.spacing.unit * 2,\n transform: 'translate(0, -50%)',\n },\n choicesHolder: {\n display: 'flex',\n flexDirection: 'column',\n '& > div:last-child': {\n border: 'none',\n },\n },\n itemBuilder: {\n padding: theme.spacing.unit / 2,\n position: 'relative',\n },\n}))(RespAreaToolbar);\n\nexport default StyledRespAreaToolbar;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nconst styles = (theme) => ({\n responseArea: {\n paddingBottom: theme.spacing.unit * 2.5,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nclass ResponseAreaComponent extends React.Component {\n static propTypes = {\n editableHtmlProps: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n responseAreasError: PropTypes.string,\n responseAreaChoicesError: PropTypes.string,\n };\n\n componentDidMount() {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n render() {\n const { editableHtmlProps, responseAreasError, responseAreaChoicesError, classes } = this.props;\n\n return (\n <div className={classes.responseArea}>\n <EditableHtml {...editableHtmlProps} />\n {responseAreasError && <div className={classes.errorText}>{responseAreasError}</div>}\n {responseAreaChoicesError && <div className={classes.errorText}>{responseAreaChoicesError}</div>}\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(ResponseAreaComponent);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\nimport { AlertDialog, InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { color } from '@pie-lib/render-ui';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport isUndefined from 'lodash/isUndefined';\nimport isEmpty from 'lodash/isEmpty';\nimport reduce from 'lodash/reduce';\nimport max from 'lodash/max';\nimport { withStyles } from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Info from '@material-ui/icons/Info';\n\nimport InlineDropdownToolbar from './inline-dropdown-toolbar';\nimport { generateValidationMessage } from './utils';\nimport ResponseAreaComponent from './response-area';\n\nconst { toggle, Panel, dropdown } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n choiceRationaleHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit / 2,\n marginBottom: theme.spacing.unit * 2,\n },\n markup: {\n minHeight: '100px',\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px',\n },\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n text: {\n fontSize: theme.typography.fontSize + 2,\n marginRight: theme.spacing.unit,\n },\n rationaleLabel: {\n display: 'flex',\n alignItems: 'center',\n whiteSpace: 'break-spaces',\n color: color.disabled(),\n padding: 0,\n fontSize: theme.typography.fontSize - 2,\n lineHeight: 1,\n },\n rationaleChoices: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n panelDetails: {\n display: 'block',\n paddingTop: 0,\n paddingBottom: 0,\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing.unit,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n state = {\n warning: { open: false },\n };\n\n componentDidMount() {\n const {\n model: { choices },\n } = this.props;\n\n this.setState({ respAreaChoices: cloneDeep(choices) });\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const newState = {};\n\n if (\n !isEqual(nProps.model.choices, this.props.model.choices) ||\n !isEqual(nProps.model.choices, this.state.respAreaChoices)\n ) {\n newState.respAreaChoices = cloneDeep(nProps.model.choices);\n }\n\n if (!isEmpty(newState)) {\n this.setState(newState);\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onModelChange = (newVal) => {\n this.props.onModelChanged({ ...this.props.model, ...newVal });\n };\n\n onPromptChanged = (prompt) => {\n this.onModelChange({ prompt });\n };\n\n onRationaleChanged = (rationale) => {\n this.onModelChange({ rationale });\n };\n\n onChoiceRationaleChanged = (index, choice) => {\n const { model } = this.props;\n const indexOfChoice =\n model.choices &&\n model.choices[index] &&\n model.choices[index].findIndex((elem) => elem.label === choice.label && elem.value === choice.value);\n\n model.choices[index] && model.choices[index].splice(indexOfChoice, 1, choice);\n\n this.onModelChange(model);\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.onModelChange({ teacherInstructions });\n };\n\n onMarkupChanged = (slateMarkup) => {\n this.onModelChange({ slateMarkup });\n };\n\n onCheck = (callback) => {\n this.setState({\n warning: {\n open: true,\n text: 'Response areas with under 2 options or with no correct answers will be discarded.',\n onClose: () => {\n this.setState({ warning: { open: false } });\n },\n onConfirm: () => {\n this.setState({ warning: { open: false } }, callback);\n },\n },\n });\n };\n\n onChange = (markup) => {\n const { respAreaChoices } = this.state;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll('[data-type=\"inline_dropdown\"]');\n const allChoices = {};\n\n allRespAreas.forEach((el) => {\n allChoices[el.dataset.index] = el.dataset.value || '';\n });\n\n const existingRespAreaChoices = reduce(\n respAreaChoices,\n (obj, choices, key) => {\n if (!isUndefined(allChoices[key])) {\n obj[key] = respAreaChoices[key];\n }\n\n return obj;\n },\n {},\n );\n\n const newRespAreaChoices = {};\n let shouldWarn = false;\n\n allRespAreas.forEach((el, index) => {\n const newChoices = existingRespAreaChoices[el.dataset.index] || [];\n\n if (newChoices.length < 2 || !newChoices.find((c) => c.correct)) {\n el.remove();\n shouldWarn = true;\n } else {\n newRespAreaChoices[index] = existingRespAreaChoices[el.dataset.index] || [];\n el.dataset.index = index;\n }\n });\n\n if (shouldWarn) {\n this.setState({\n warning: {\n open: true,\n text: 'Response areas with under 2 options or with no correct answers will be discarded.',\n onClose: () => {\n this.setState({ warning: { open: false } });\n },\n onConfirm: () => {\n this.setState({ warning: { open: false } }, () =>\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML,\n }),\n );\n },\n },\n });\n } else {\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML,\n });\n }\n };\n\n onAddChoice = (index, label, choiceIndex) => {\n const { respAreaChoices } = this.state;\n const { maxResponseAreaChoices } = this.props.configuration;\n\n if (respAreaChoices[index] && respAreaChoices[index].length >= maxResponseAreaChoices) {\n this.setState({\n warning: {\n open: true,\n text: `There are only ${maxResponseAreaChoices} answers allowed per choice.`,\n onClose: undefined,\n onConfirm: () => {\n this.setState({ warning: { open: false } });\n },\n },\n });\n\n return;\n }\n\n if (!respAreaChoices[index]) {\n respAreaChoices[index] = [];\n }\n\n // check for duplicate answer, but exclude the one that is currently edited\n if ((respAreaChoices[index] || []).find((r, idx) => r.label === label && idx !== choiceIndex)) {\n // show warning for duplicated answers\n this.setState({\n warning: {\n open: true,\n text: 'Duplicate answers are not allowed.',\n onClose: undefined,\n onConfirm: () => {\n this.setState({ warning: { open: false } });\n },\n },\n });\n\n return;\n }\n\n if (choiceIndex >= 0 && respAreaChoices[index]?.[choiceIndex]) {\n // we need to update the choice label with the new value\n respAreaChoices[index][choiceIndex].label = label;\n } else {\n // add a new choice\n const value =\n (respAreaChoices[index] &&\n max(respAreaChoices[index].map((c) => parseInt(c.value)).filter((val) => !isNaN(val)))) ||\n 0;\n\n respAreaChoices[index].push({\n label,\n value: `${value + 1}`,\n correct: false,\n });\n }\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onRemoveChoice = (respIndex, index) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex].splice(index, 1);\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onSelectChoice = (respIndex, selectedIndex) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex] = respAreaChoices[respIndex].map((choice, index) => ({\n ...choice,\n correct: index === selectedIndex,\n }));\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n render() {\n const { warning } = this.state;\n const { classes, model, configuration, onConfigurationChanged, imageSupport, uploadSoundSupport } = this.props;\n const {\n baseInputConfiguration = {},\n choiceRationale = {},\n contentDimensions = {},\n lockChoiceOrder = {},\n maxResponseAreas,\n maxImageWidth = {},\n maxImageHeight = {},\n partialScoring = {},\n prompt = {},\n rationale = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n template = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n responseAreaInputConfiguration = {},\n } = configuration || {};\n\n const {\n choiceRationaleEnabled,\n choices,\n errors,\n extraCSSRules,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n responseAreasError,\n responseAreaChoicesError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const renderChoiceRationale = () =>\n (Object.keys(choices) || []).map((key, index) => (\n <div key={key} className={classes.rationaleChoices}>\n <ExpansionPanel>\n <ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}>\n <Typography className={classes.text}>{`Rationale for response area #${index + 1}`}</Typography>\n </ExpansionPanelSummary>\n\n <ExpansionPanelDetails className={classes.panelDetails}>\n {(choices[key] || []).map((choice) => (\n <React.Fragment key={choice.label}>\n <span\n className={classes.rationaleLabel}\n dangerouslySetInnerHTML={{\n __html: `${rationale.label} for ${choice.label} (${choice.correct ? 'correct' : 'incorrect'})`,\n }}\n />\n <InputContainer className={classes.choiceRationaleHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={choice.rationale || ''}\n spellCheck={spellCheckEnabled}\n onChange={(c) => this.onChoiceRationaleChanged(key, { ...choice, rationale: c })}\n imageSupport={imageSupport}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n />\n </InputContainer>\n </React.Fragment>\n ))}\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n ));\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const validationMessage = generateValidationMessage(configuration);\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n choiceRationaleEnabled: choiceRationale.settings && toggle(choiceRationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => this.onModelChange(model)}\n onChangeConfiguration={(configuration) => onConfigurationChanged(configuration, true)}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.text} component={'div'}>\n Define Template, Choices, and Correct Responses\n </Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} />\n </Tooltip>\n </div>\n\n <ResponseAreaComponent\n responseAreasError={responseAreasError}\n responseAreaChoicesError={responseAreaChoicesError}\n editableHtmlProps={{\n pluginProps: getPluginProps(template?.inputConfiguration),\n activePlugins: ALL_PLUGINS,\n toolbarOpts: { position: 'top' },\n responseAreaProps: {\n type: 'inline-dropdown',\n options: {\n duplicates: true,\n },\n maxResponseAreas: maxResponseAreas,\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { respAreaChoices } = this.state;\n\n return () => (\n <InlineDropdownToolbar\n onAddChoice={this.onAddChoice}\n onCheck={this.onCheck}\n onRemoveChoice={(index) => this.onRemoveChoice(node.data.get('index'), index)}\n onSelectChoice={(index) => this.onSelectChoice(node.data.get('index'), index)}\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n choices={respAreaChoices[node.data.get('index')]}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n baseInputConfiguration={baseInputConfiguration}\n responseAreaInputConfiguration={responseAreaInputConfiguration}\n />\n );\n },\n },\n spellCheck: spellCheckEnabled,\n className: classes.markup,\n markup: model.slateMarkup || '',\n onChange: this.onChange,\n imageSupport: imageSupport,\n disableImageAlignmentButtons: true,\n disabled: false,\n highlightShape: false,\n error: responseAreasError,\n uploadSoundSupport: uploadSoundSupport,\n languageCharactersProps: [{ language: 'spanish' }, { language: 'special' }],\n mathMlOptions: mathMlOptions,\n }}\n />\n\n {choiceRationaleEnabled && renderChoiceRationale()}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n\n <AlertDialog\n open={warning.open}\n title=\"Warning\"\n text={warning.text}\n onClose={warning.onClose}\n onConfirm={warning.onConfirm}\n />\n </layout.ConfigLayout>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n","export default {\n model: {\n alternateResponse: {},\n choiceRationaleEnabled: true,\n choices: {},\n disabled: false,\n displayType: 'block',\n markup: '',\n mode: 'gather',\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n shuffle: true,\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n },\n configuration: {\n baseInputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n h3: { disabled: true },\n blockquote: { disabled: true },\n textAlign: { disabled: true },\n showParagraphs: { disabled: false },\n separateParagraphs: { disabled: true },\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n required: false,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n responseAreaInputConfiguration: {\n inputConfiguration: {\n audio: { disabled: true },\n video: { disabled: true },\n image: { disabled: true },\n table: { disabled: true },\n ul_list: { disabled: true },\n ol_list: { disabled: true },\n },\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order',\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n required: false,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n required: false,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n template: {\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n choiceRationale: {\n settings: true,\n label: 'Choice Rationale',\n },\n toolbarEditorPosition: {\n settings: false,\n label: 'Toolbar Editor Position',\n },\n maxResponseAreas: 10,\n maxResponseAreaChoices: 10,\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n },\n};\n","import escape from 'lodash/escape';\n\n// do not remove \\t from \\times, \\triangle, \\tan, \\theta or \\therefore\nconst tSymbols = 'imes|riangle|an|heta|herefore';\n// do not remove \\n from \\nthroot, \\nparallel, \\ncong, \\napprox, \\neq, \\ne or \\nsim\nconst nSymbols = 'throot|parallel|cong|approx|eq|e|sim';\n// match all \\t and \\n that are not part of math symbols that starts with \\t or \\n\nconst matchTabAndNewLine = new RegExp(\n `(\\\\t(?!${tSymbols}))|(\\\\n(?!${nSymbols}))|(\\\\\\\\t(?!${tSymbols}))|(\\\\\\\\n(?!${nSymbols}))`,\n 'g',\n);\n\nexport const removeUnwantedCharacters = (markup) =>\n markup.replace(matchTabAndNewLine, '').replace(/\\\\\"/g, '\"').replace(/\\\\\\//g, '/');\n\nexport const createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nexport const processMarkup = (markup) => {\n const newMarkup = removeUnwantedCharacters(markup);\n const slateMarkup = createElementFromHTML(newMarkup);\n\n slateMarkup.querySelectorAll('[data-type=\"inline_dropdown\"]').forEach((s) => {\n s.replaceWith(`{{${s.dataset.index}}}`);\n });\n\n return slateMarkup.innerHTML;\n};\n\nconst REGEX = /\\{\\{(\\d+)\\}\\}/g;\n\nexport const createSlateMarkup = (markup, choices) => {\n const newMarkup = removeUnwantedCharacters(markup);\n const createSelect = (index) => {\n let correctChoice = choices[index] && choices[index].find((c) => c.correct);\n\n if (!correctChoice || !correctChoice.value) {\n correctChoice = {\n id: '',\n value: '',\n label: '',\n };\n }\n\n return `<span data-type=\"inline_dropdown\" data-index=\"${index}\" data-value=\"${escape(\n correctChoice.label,\n )}\"></span>`;\n };\n\n return newMarkup.replace(REGEX, (match, g) => {\n return createSelect(g);\n });\n};\n","import {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport Main from './main';\nimport debug from 'debug';\nimport defaults from 'lodash/defaults';\n\nimport sensibleDefaults from './defaults';\nimport { processMarkup, createSlateMarkup } from './markupUtils';\n\nconst log = debug('multiple-choice:configure');\n\nexport default class InlineDropdown extends HTMLElement {\n static prepareModel = (model = {}) => {\n const currModal = {\n ...sensibleDefaults.model,\n ...model,\n };\n const slateMarkup = model.slateMarkup || createSlateMarkup(currModal.markup, currModal.choices);\n const markup = processMarkup(slateMarkup);\n\n return {\n ...currModal,\n slateMarkup,\n markup,\n /*...processedMarkup,*/\n };\n };\n\n constructor() {\n super();\n this._model = InlineDropdown.prepareModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(s) {\n this._model = InlineDropdown.prepareModel(s);\n this._render();\n }\n\n set configuration(c) {\n this._configuration = defaults(c, sensibleDefaults.configuration);\n\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n if (c.language?.enabled) {\n if (c.languageChoices?.options?.length) {\n this._model.language = c.languageChoices.options[0].value;\n }\n } else if (c.language.settings && this._model.language) {\n this._configuration.language.enabled = true;\n\n if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {\n this._configuration.languageChoices.options = [];\n }\n\n // check if the language is already included in the languageChoices.options array\n // and if not, then add it.\n if (!this._configuration.languageChoices.options.find(option => option.value === this._model.language)) {\n this._configuration.languageChoices.options.push({\n value: this._model.language,\n label: this._model.language,\n });\n }\n } else {\n delete this._model.language;\n }\n\n this._render();\n }\n\n set disableSidePanel(s) {\n this._disableSidePanel = s;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = InlineDropdown.prepareModel(m);\n this._render();\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = c;\n this._render();\n }\n\n /** @param {done, progress, file} handler */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n log('_render');\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n disableSidePanel: this._disableSidePanel,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n ReactDOM.render(element, this);\n }\n}\n"],"names":["generateValidationMessage","config","maxResponseAreas","maxResponseAreaChoices","responseAreasMessage","message","getPluginProps","props","baseInputConfiguration","MenuItemComp","React","Component","onRemoveClick","e","onRemoveChoice","preventDefault","stopPropagation","onEditClick","onEditChoice","render","classes","correct","onClick","value","wrapper","selectedIcon","classnames","valueHolder","__html","actionButtons","iconButton","propTypes","PropTypes","object","isRequired","bool","func","string","MenuItem","withStyles","theme","display","alignItems","position","background","palette","common","white","borderBottom","grey","borderRadius","color","correctSecondary","margin","spacing","unit","fontSize","typography","padding","black","justifyContent","fontStyle","transform","backgroundColor","top","left","zIndex","flex","paddingLeft","findSlateNode","key","window","document","querySelector","createElementFromHTML","htmlString","div","createElement","innerHTML","trim","RespAreaToolbar","clickedInside","preventDone","state","respAreaMarkup","editedChoiceIndex","onRespAreaChange","setState","onAddChoice","editorRef","finishEditing","onDone","val","choices","node","onToolbarDone","onlyText","textContent","update","data","toJSON","change","setNodeByKey","isEmpty","get","onSelectChoice","newValue","index","nextText","getNextText","moveFocusTo","moveAnchorTo","isEqual","onKeyDown","event","onBlur","onCheck","correctResponse","find","choice","length","removeNodeByKey","onClickInside","focusInput","slateEditorRef","rootRef","slateEditor","inputRef","element","focus","componentDidMount","domNode","domNodeRect","getBoundingClientRect","editor","closest","editorRect","toolbarStyle","height","componentDidUpdate","ReactDOM","findDOMNode","renderMath","spellCheck","uploadSoundSupport","mathMlOptions","responseAreaInputConfiguration","responseContainer","itemBuilder","ref","respArea","alwaysVisible","showDone","doneOn","language","relatedTarget","isInInsertCharacter","isInDoneButton","inputConfiguration","addButton","choicesHolder","map","label","array","shape","StyledRespAreaToolbar","boxShadow","shadows","width","minHeight","right","flexDirection","border","styles","responseArea","paddingBottom","errorText","error","main","paddingTop","ResponseAreaComponent","editableHtmlProps","responseAreasError","responseAreaChoicesError","toggle","Panel","dropdown","settings","promptHolder","marginBottom","choiceRationaleHolder","markup","choiceConfiguration","text","marginRight","rationaleLabel","whiteSpace","disabled","lineHeight","rationaleChoices","panelDetails","flexContainer","tooltip","maxWidth","Main","warning","open","onModelChange","newVal","onModelChanged","model","onPromptChanged","prompt","onRationaleChanged","rationale","onChoiceRationaleChanged","indexOfChoice","findIndex","elem","splice","onTeacherInstructionsChanged","teacherInstructions","onMarkupChanged","slateMarkup","callback","onClose","onConfirm","onChange","respAreaChoices","domMarkup","allRespAreas","querySelectorAll","allChoices","forEach","el","dataset","existingRespAreaChoices","reduce","obj","isUndefined","newRespAreaChoices","shouldWarn","newChoices","c","remove","cloneDeep","choiceIndex","configuration","undefined","r","idx","max","parseInt","filter","isNaN","push","respIndex","selectedIndex","UNSAFE_componentWillReceiveProps","nProps","newState","onConfigurationChanged","imageSupport","choiceRationale","contentDimensions","lockChoiceOrder","maxImageWidth","maxImageHeight","partialScoring","settingsPanelDisabled","template","withRubric","languageChoices","choiceRationaleEnabled","errors","extraCSSRules","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","rationaleError","teacherInstructionsError","defaultImageMaxWidth","defaultImageMaxHeight","renderChoiceRationale","Object","keys","toolbarOpts","validationMessage","panelSettings","enabled","options","panelProperties","rubricEnabled","Settings","Properties","pluginProps","activePlugins","ALL_PLUGINS","responseAreaProps","type","duplicates","respAreaToolbar","InlineDropdownToolbar","className","disableImageAlignmentButtons","highlightShape","languageCharactersProps","disableSidePanel","add","delete","Styled","alternateResponse","displayType","mode","shuffle","studentInstructionsEnabled","audio","video","image","h3","blockquote","textAlign","showParagraphs","separateParagraphs","required","table","ul_list","ol_list","mmlOutput","mmlEditing","tSymbols","nSymbols","matchTabAndNewLine","RegExp","removeUnwantedCharacters","replace","processMarkup","newMarkup","s","replaceWith","REGEX","createSlateMarkup","createSelect","correctChoice","id","escape","match","g","log","debug","InlineDropdown","HTMLElement","constructor","_model","prepareModel","_configuration","sensibleDefaults","bind","_render","defaults","option","_disableSidePanel","dispatchModelUpdated","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","insertImage","handler","InsertImageEvent","onDeleteImage","src","done","DeleteImageEvent","insertSound","InsertSoundEvent","onDeleteSound","DeleteSoundEvent","currModal"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAMA,yBAAyB,GAAIC,MAAD,IAAY;AACnD,EAAM,MAAA;AAAEC,IAAAA,gBAAF;AAAoBC,IAAAA,sBAAAA;AAApB,GAAA,GAA+CF,MAArD,CAAA;AAEA,EAAA,MAAMG,oBAAoB,GACxB,+BACCF,IAAAA,gBAAgB,GAAI,CAAA,YAAA,EAAcA,gBAAiB,CAAA,CAAA,CAAnC,GAAwC,EADzD,CAEA,GAAA,eAFA,IAGCA,gBAAgB,GAAG,GAAH,GAAS,EAH1B,CAIA,GAAA,WAJA,IAKCC,sBAAsB,GAClB,CAAA,0BAAA,EAA4BA,sBAAuB,CAAA,mCAAA,CADjC,GAEnB,EAPJ,CADF,CAAA;AAUA,EAAME,MAAAA,OAAO,GAAG,0BAAA,GAA6BD,oBAA7C,CAAA;AAEA,EAAA,OAAOC,OAAP,CAAA;AACD,CAhBM,CAAA;AAkBA,MAAMC,cAAc,GAAG,CAACC,KAAK,GAAG,EAAT,EAAaC,sBAAsB,GAAG,EAAtC,KAAA,QAAA,CAAA,EAAA,EACzBA,sBADyB,EAEzBD,KAFyB,CAAvB;;ACAP,MAAME,YAAN,SAA2BC,KAAK,CAACC,SAAjC,CAA2C;AAAA,EAAA,WAAA,CAAA,GAAA,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAA,IAAA,CAAA,CAAA;;AAAA,IAUzCC,IAAAA,CAAAA,aAVyC,GAUxBC,CAAD,IAAO;AACrB,MAAM,MAAA;AAAEC,QAAAA,cAAAA;AAAF,OAAA,GAAqB,KAAKP,KAAhC,CAAA;AAEAM,MAAAA,CAAC,CAACE,cAAF,EAAA,CAAA;AACAF,MAAAA,CAAC,CAACG,eAAF,EAAA,CAAA;AAEAF,MAAAA,cAAc,EAAA,CAAA;AACf,KAjBwC,CAAA;;AAAA,IAmBzCG,IAAAA,CAAAA,WAnByC,GAmB1BJ,CAAD,IAAO;AACnB,MAAM,MAAA;AAAEK,QAAAA,YAAAA;AAAF,OAAA,GAAmB,KAAKX,KAA9B,CAAA;AAEAM,MAAAA,CAAC,CAACE,cAAF,EAAA,CAAA;AACAF,MAAAA,CAAC,CAACG,eAAF,EAAA,CAAA;AAEAE,MAAAA,YAAY,EAAA,CAAA;AACb,KA1BwC,CAAA;AAAA,GAAA;;AA4BzCC,EAAAA,MAAM,GAAG;AACP,IAAM,MAAA;AAAEC,MAAAA,OAAF;AAAWC,MAAAA,OAAX;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA,KAAAA;AAA7B,KAAA,GAAuC,KAAKhB,KAAlD,CAAA;AAEA,IACE,oBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,SAAS,EAAEa,OAAO,CAACI,OAAAA;AAAxB,KAAA,EACGH,OAAO,iBACN,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,SAAS,EAAED,OAAO,CAACK,YAAxB;AAAsC,MAAA,OAAO,EAAEH,OAAAA;AAA/C,KAAA,eACE,oBAAC,SAAD,EAAA;AAAW,MAAA,QAAQ,EAAC,SAAA;AAApB,KAAA,CADF,CAFJ,eAME,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AACE,MAAA,SAAS,EAAEI,UAAU,CAACN,OAAO,CAACO,WAAT,EAAsB;AAAE,QAACP,CAAAA,OAAO,CAACC,OAAT,GAAmBA,OAAAA;AAArB,OAAtB,CADvB;AAEE,MAAA,OAAO,EAAEC,OAFX;AAGE,MAAA,uBAAuB,EAAE;AACvBM,QAAAA,MAAM,EAAEL,KAAAA;AADe,OAAA;AAH3B,KAAA,CANF,eAaE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,SAAS,EAAEH,OAAO,CAACS,aAAAA;AAAxB,KAAA,eACE,oBAAC,UAAD,EAAA;AAAY,MAAA,SAAS,EAAET,OAAO,CAACU,UAA/B;AAA2C,MAAA,OAAO,EAAE,IAAA,CAAKb,WAAzD;AAAsE,MAAA,IAAI,EAAC,OAA3E;AAAmF,MAAW,YAAA,EAAA,MAAA;AAA9F,KAAA,eACE,oBAAC,QAAD,EAAA;AAAU,MAAA,QAAQ,EAAC,SAAA;AAAnB,KADF,CAAA,CADF,eAIE,KAAA,CAAA,aAAA,CAAC,UAAD,EAAA;AAAY,MAAA,SAAS,EAAEG,OAAO,CAACU,UAA/B;AAA2C,MAAA,OAAO,EAAE,IAAA,CAAKlB,aAAzD;AAAwE,MAAA,IAAI,EAAC,OAA7E;AAAqF,MAAW,YAAA,EAAA,QAAA;AAAhG,KAAA,eACE,oBAAC,SAAD,EAAA;AAAW,MAAA,QAAQ,EAAC,SAAA;AAApB,KADF,CAAA,CAJF,CAbF,CADF,CAAA;AAwBD,GAAA;;AAvDwC,CAAA;;AAArCH,aACGsB,YAAY;AACjBX,EAAAA,OAAO,EAAEY,SAAS,CAACC,MAAV,CAAiBC,UADT;AAEjBb,EAAAA,OAAO,EAAEW,SAAS,CAACG,IAAV,CAAeD,UAFP;AAGjBZ,EAAAA,OAAO,EAAEU,SAAS,CAACI,IAAV,CAAeF,UAHP;AAIjBpB,EAAAA,cAAc,EAAEkB,SAAS,CAACI,IAAV,CAAeF,UAJd;AAKjBhB,EAAAA,YAAY,EAAEc,SAAS,CAACI,IAAV,CAAeF,UALZ;AAMjBX,EAAAA,KAAK,EAAES,SAAS,CAACK,MAAV,CAAiBH,UAAAA;AANP;AAyDrB,MAAMI,QAAQ,GAAGC,UAAU,CAAEC,KAAD,KAAY;AACtChB,EAAAA,OAAO,EAAE;AACPiB,IAAAA,OAAO,EAAE,MADF;AAEPC,IAAAA,UAAU,EAAE,YAFL;AAGPC,IAAAA,QAAQ,EAAE,UAHH;AAIPC,IAAAA,UAAU,EAAEJ,KAAK,CAACK,OAAN,CAAcC,MAAd,CAAqBC,KAJ1B;AAKPC,IAAAA,YAAY,EAAG,CAAA,UAAA,EAAYR,KAAK,CAACK,OAAN,CAAcI,IAAd,CAAmB,GAAnB,CAAwB,CAL5C,CAAA;AAOP,IAAgB,cAAA,EAAA;AACdC,MAAAA,YAAY,EAAE,aAAA;AADA,KAAA;AAPT,GAD6B;AAYtC7B,EAAAA,OAAO,EAAE;AACPuB,IAAAA,UAAU,EAAEO,KAAK,CAACC,gBAAN,EAAA;AADL,GAZ6B;AAetCvB,EAAAA,aAAa,EAAE;AACbwB,IAAAA,MAAM,EAAEb,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,CADhB;AAEbd,IAAAA,OAAO,EAAE,MAAA;AAFI,GAfuB;AAmBtCX,EAAAA,UAAU,EAAE;AACV0B,IAAAA,QAAQ,EAAEhB,KAAK,CAACiB,UAAN,CAAiBD,QADjB;AAEVE,IAAAA,OAAO,EAAElB,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,CAFpB;AAGVJ,IAAAA,KAAK,EAAEX,KAAK,CAACK,OAAN,CAAcC,MAAd,CAAqBa,KAAAA;AAHlB,GAnB0B;AAwBtClC,EAAAA,YAAY,EAAE;AACZgB,IAAAA,OAAO,EAAE,MADG;AAEZmB,IAAAA,cAAc,EAAE,QAFJ;AAGZT,IAAAA,KAAK,EAAEX,KAAK,CAACK,OAAN,CAAcC,MAAd,CAAqBC,KAHhB;AAIZS,IAAAA,QAAQ,EAAEhB,KAAK,CAACiB,UAAN,CAAiBD,QAJf;AAKZK,IAAAA,SAAS,EAAE,QALC;AAMZlB,IAAAA,QAAQ,EAAE,UANE;AAOZmB,IAAAA,SAAS,EAAE,oBAPC;AAQZC,IAAAA,eAAe,EAAEZ,KAAK,CAAC9B,OAAN,EARL;AASZ6B,IAAAA,YAAY,EAAE,KATF;AAUZc,IAAAA,GAAG,EAAExB,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,CAVd;AAWZU,IAAAA,IAAI,EAAEzB,KAAK,CAACc,OAAN,CAAcC,IAXR;AAYZW,IAAAA,MAAM,EAAE,CAAA;AAZI,GAxBwB;AAsCtCvC,EAAAA,WAAW,EAAE;AACXwC,IAAAA,IAAI,EAAE,CADK;AAEXT,IAAAA,OAAO,EAAElB,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,IAFnB;AAGXa,IAAAA,WAAW,EAAE5B,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,GAAA;AAHvB,GAAA;AAtCyB,CAAZ,CAAD,CAAV,CA2Cb9C,YA3Ca,CAAjB,CAAA;;AA6CA,MAAM4D,aAAa,GAAIC,GAAD,IAAS;AAC7B,EAAOC,OAAAA,MAAM,CAACC,QAAP,CAAgBC,aAAhB,CAA8B,aAAgBH,GAAAA,GAAhB,GAAsB,IAApD,CAAP,CAAA;AACD,CAFD,CAAA;;AAIA,MAAMI,uBAAqB,GAAIC,UAAD,IAAgB;AAC5C,EAAA,MAAMC,GAAG,GAAGJ,QAAQ,CAACK,aAAT,CAAuB,KAAvB,CAAZ,CAAA;AAEAD,EAAAA,GAAG,CAACE,SAAJ,GAAgB,CAACH,UAAU,IAAI,EAAf,EAAmBI,IAAnB,EAAhB,CAAA;AAEA,EAAA,OAAOH,GAAP,CAAA;AACD,CAND,CAAA;;AAQO,MAAMI,eAAN,SAA8BtE,KAAK,CAACC,SAApC,CAA8C;AAAA,EAAA,WAAA,CAAA,GAAA,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,IAoBnDsE,IAAAA,CAAAA,aApBmD,GAoBnC,KApBmC,CAAA;AAAA,IAqBnDC,IAAAA,CAAAA,WArBmD,GAqBrC,KArBqC,CAAA;AAAA,IAAA,IAAA,CAuBnDC,KAvBmD,GAuB3C;AACNC,MAAAA,cAAc,EAAE,EADV;AAENC,MAAAA,iBAAiB,EAAE,CAAC,CAAA;AAFd,KAvB2C,CAAA;;AAAA,IA0DnDC,IAAAA,CAAAA,gBA1DmD,GA0D/BF,cAAD,IAAoB;AACrC,MAAA,IAAA,CAAKG,QAAL,CAAc;AAAEH,QAAAA,cAAAA;AAAF,OAAd,CAAA,CAAA;AACD,KA5DkD,CAAA;;AAAA,IA8DnDI,IAAAA,CAAAA,WA9DmD,GA8DrC,MAAM;AAClB,MAAI,IAAA,IAAA,CAAKC,SAAT,EAAoB;AAClB,QAAKA,IAAAA,CAAAA,SAAL,CAAeC,aAAf,EAAA,CAAA;AACD,OAAA;AACF,KAlEkD,CAAA;;AAAA,IAoEnDC,IAAAA,CAAAA,MApEmD,GAoEzCC,GAAD,IAAS;AAAA,MAAA,IAAA,qBAAA,CAAA;;AAChB,MAAM,MAAA;AAAEC,QAAAA,OAAF;AAAWC,QAAAA,IAAX;AAAiBvE,QAAAA,KAAjB;AAAwBiE,QAAAA,WAAxB;AAAqCO,QAAAA,aAAAA;AAArC,OAAA,GAAuD,KAAKxF,KAAlE,CAAA;AACA,MAAM,MAAA;AAAE8E,QAAAA,iBAAAA;AAAF,OAAA,GAAwB,KAAKF,KAAnC,CAAA;AACA,MAAMa,MAAAA,QAAQ,GAAGtB,uBAAqB,CAACkB,GAAD,CAArB,CAA2BK,WAA3B,CAAuClB,IAAvC,EAAjB,CAAA;;AAEA,MAAA,IAAIM,iBAAiB,IAAI,CAArB,IAA0BQ,OAA1B,IAAA,IAAA,IAAA,CAAA,qBAAA,GAA0BA,OAAO,CAAGR,iBAAH,CAAjC,KAA0B,IAAA,IAAA,qBAAA,CAA8BhE,OAA5D,EAAqE;AACnE,QAAA,MAAM6E,MAAM,GAAQJ,QAAAA,CAAAA,EAAAA,EAAAA,IAAI,CAACK,IAAL,CAAUC,MAAV,EAAR,EAAA;AAA4B7E,UAAAA,KAAK,EAAEqE,GAAAA;AAAnC,SAAZ,CAAA,CAAA;;AACA,QAAMS,MAAAA,MAAM,GAAG9E,KAAK,CAAC8E,MAAN,EAAeC,CAAAA,YAAf,CAA4BR,IAAI,CAACxB,GAAjC,EAAsC;AAAE6B,UAAAA,IAAI,EAAED,MAAAA;AAAR,SAAtC,CAAf,CAAA;AAEAH,QAAAA,aAAa,CAACM,MAAD,EAAS,KAAT,CAAb,CAAA;AACD,OAAA;;AAED,MAAA,IAAI,CAACE,OAAO,CAACP,QAAD,CAAZ,EAAwB;AACtBR,QAAAA,WAAW,CAACM,IAAI,CAACK,IAAL,CAAUK,GAAV,CAAc,OAAd,CAAD,EAAyBZ,GAAzB,EAA8BP,iBAA9B,CAAX,CAAA;AACD,OAAA;;AAED,MAAA,IAAA,CAAKE,QAAL,CAAc;AAAEF,QAAAA,iBAAiB,EAAE,CAAC,CAAA;AAAtB,OAAd,CAAA,CAAA;AACD,KArFkD,CAAA;;AAAA,IAAA,IAAA,CAuFnDoB,cAvFmD,GAuFlC,CAACC,QAAD,EAAWC,KAAX,KAAqB;AACpC,MAAM,MAAA;AAAEb,QAAAA,IAAF;AAAQvE,QAAAA,KAAR;AAAewE,QAAAA,aAAf;AAA8BU,QAAAA,cAAAA;AAA9B,OAAA,GAAiD,KAAKlG,KAA5D,CAAA;;AACA,MAAA,MAAM2F,MAAM,GAAQJ,QAAAA,CAAAA,EAAAA,EAAAA,IAAI,CAACK,IAAL,CAAUC,MAAV,EAAR,EAAA;AAA4B7E,QAAAA,KAAK,EAAEmF,QAAAA;AAAnC,OAAZ,CAAA,CAAA;;AACA,MAAML,MAAAA,MAAM,GAAG9E,KAAK,CAAC8E,MAAN,EAAeC,CAAAA,YAAf,CAA4BR,IAAI,CAACxB,GAAjC,EAAsC;AAAE6B,QAAAA,IAAI,EAAED,MAAAA;AAAR,OAAtC,CAAf,CAAA;AAEA,MAAMU,MAAAA,QAAQ,GAAGrF,KAAK,CAACiD,QAAN,CAAeqC,WAAf,CAA2Bf,IAAI,CAACxB,GAAhC,CAAjB,CAAA;AAEA+B,MAAAA,MAAM,CAACS,WAAP,CAAmBF,QAAQ,CAACtC,GAA5B,EAAiC,CAAjC,CAAA,CAAoCyC,YAApC,CAAiDH,QAAQ,CAACtC,GAA1D,EAA+D,CAA/D,CAAA,CAAA;AAEAyB,MAAAA,aAAa,CAACM,MAAD,EAAS,KAAT,CAAb,CAAA;AAEAI,MAAAA,cAAc,CAACE,KAAD,CAAd,CAAA;AACD,KAnGkD,CAAA;;AAAA,IAAA,IAAA,CAqGnD7F,cArGmD,GAqGlC,CAAC8E,GAAD,EAAMe,KAAN,KAAgB;AAC/B,MAAM,MAAA;AAAEb,QAAAA,IAAF;AAAQvE,QAAAA,KAAR;AAAewE,QAAAA,aAAf;AAA8BjF,QAAAA,cAAAA;AAA9B,OAAA,GAAiD,KAAKP,KAA5D,CAAA;;AAEA,MAAA,IAAIyG,OAAO,CAACpB,GAAD,EAAME,IAAI,CAACK,IAAL,CAAUK,GAAV,CAAc,OAAd,CAAN,CAAX,EAA0C;AACxC,QAAA,MAAMN,MAAM,GAAQJ,QAAAA,CAAAA,EAAAA,EAAAA,IAAI,CAACK,IAAL,CAAUC,MAAV,EAAR,EAAA;AAA4B7E,UAAAA,KAAK,EAAE,IAAA;AAAnC,SAAZ,CAAA,CAAA;;AACA,QAAM8E,MAAAA,MAAM,GAAG9E,KAAK,CAAC8E,MAAN,EAAeC,CAAAA,YAAf,CAA4BR,IAAI,CAACxB,GAAjC,EAAsC;AAAE6B,UAAAA,IAAI,EAAED,MAAAA;AAAR,SAAtC,CAAf,CAAA;AAEAH,QAAAA,aAAa,CAACM,MAAD,EAAS,KAAT,CAAb,CAAA;AACD,OAAA;;AAEDvF,MAAAA,cAAc,CAAC6F,KAAD,CAAd,CAAA;AACD,KAhHkD,CAAA;;AAAA,IAAA,IAAA,CAkHnDzF,YAlHmD,GAkHpC,CAAC0E,GAAD,EAAMe,KAAN,KAAgB;AAC7B,MAAKrB,IAAAA,CAAAA,gBAAL,CAAsBM,GAAtB,CAAA,CAAA;AACA,MAAA,IAAA,CAAKL,QAAL,CAAc;AAAEF,QAAAA,iBAAiB,EAAEsB,KAAAA;AAArB,OAAd,CAAA,CAAA;AACD,KArHkD,CAAA;;AAAA,IAuHnDM,IAAAA,CAAAA,SAvHmD,GAuHtCC,KAAD,IAAW;AACrB,MAAA,IAAIA,KAAK,CAAC5C,GAAN,KAAc,OAAlB,EAA2B;AACzB,QAAKY,IAAAA,CAAAA,WAAL,GAAmB,KAAnB,CAAA;AACA,QAAKM,IAAAA,CAAAA,WAAL,GAFyB;;AAIzB,QAAA,OAAO,KAAP,CAAA;AACD,OAAA;AACF,KA9HkD,CAAA;;AAAA,IAgInD2B,IAAAA,CAAAA,MAhImD,GAgI1C,MAAM;AACb,MAAI,IAAA,IAAA,CAAKlC,aAAT,EAAwB;AACtB,QAAKA,IAAAA,CAAAA,aAAL,GAAqB,KAArB,CAAA;AACA,QAAA,OAAA;AACD,OAAA;;AAED,MAAM,MAAA;AAAEa,QAAAA,IAAF;AAAQD,QAAAA,OAAR;AAAiBuB,QAAAA,OAAjB;AAA0BrB,QAAAA,aAA1B;AAAyCxE,QAAAA,KAAAA;AAAzC,OAAA,GAAmD,KAAKhB,KAA9D,CAAA;AACA,MAAA,MAAM8G,eAAe,GAAG,CAACxB,OAAO,IAAI,EAAZ,EAAgByB,IAAhB,CAAsBC,MAAD,IAAYA,MAAM,CAAClG,OAAxC,CAAxB,CAAA;AAEA,MAAA,IAAA,CAAKmE,WAAL,EAAA,CAAA;;AACA,MAAA,IAAI,CAACK,OAAD,IAAaA,OAAO,IAAIA,OAAO,CAAC2B,MAAR,GAAiB,CAAzC,IAA+C,CAACH,eAApD,EAAqE;AACnED,QAAAA,OAAO,CAAC,MAAM;AACZ,UAAA,MAAMf,MAAM,GAAG9E,KAAK,CAAC8E,MAAN,EAAf,CAAA;AAEAA,UAAAA,MAAM,CAACoB,eAAP,CAAuB3B,IAAI,CAACU,GAAL,CAAS,KAAT,CAAvB,CAAA,CAAA;AACAT,UAAAA,aAAa,CAACM,MAAD,EAAS,KAAT,CAAb,CAAA;AACD,SALM,CAAP,CAAA;AAMD,OAAA;AACF,KAlJkD,CAAA;;AAAA,IAoJnDqB,IAAAA,CAAAA,aApJmD,GAoJnC,MAAM;AACpB,MAAKzC,IAAAA,CAAAA,aAAL,GAAqB,IAArB,CAAA;AACD,KAtJkD,CAAA;;AAAA,IAwJnD0C,IAAAA,CAAAA,UAxJmD,GAwJtC,MAAM;AACjB;AACA,MAAA,MAAMC,cAAc,GAAG,IAAKnC,CAAAA,SAAL,IAAkB,IAAKA,CAAAA,SAAL,CAAeoC,OAAjC,IAA4C,IAAKpC,CAAAA,SAAL,CAAeoC,OAAf,CAAuBC,WAA1F,CAAA;AACA,MAAA,MAAMC,QAAQ,GAAGH,cAAc,IAAIA,cAAc,CAACnC,SAAjC,IAA8CmC,cAAc,CAACnC,SAAf,CAAyBuC,OAAxF,CAAA;;AAEA,MAAA,IAAID,QAAJ,EAAc;AACZA,QAAAA,QAAQ,CAACE,KAAT,EAAA,CAAA;AACD,OAAA;AACF,KAhKkD,CAAA;AAAA,GAAA;;AA4BnDC,EAAAA,iBAAiB,GAAG;AAClB,IAAM,MAAA;AAAEpC,MAAAA,IAAAA;AAAF,KAAA,GAAW,KAAKvF,KAAtB,CAAA;AAEA,IAAA,MAAM4H,OAAO,GAAG9D,aAAa,CAACyB,IAAI,CAACxB,GAAN,CAA7B,CAAA;;AAEA,IAAA,IAAI6D,OAAJ,EAAa;AACX;AACA,MAAA,MAAMC,WAAW,GAAGD,OAAO,CAACE,qBAAR,EAApB,CAAA;AACA,MAAA,MAAMC,MAAM,GAAGH,OAAO,CAACI,OAAR,CAAgB,qBAAhB,CAAf,CAAA;AACA,MAAA,MAAMC,UAAU,GAAGF,MAAM,CAACD,qBAAP,EAAnB,CAAA;AACA,MAAMrE,MAAAA,GAAG,GAAGoE,WAAW,CAACpE,GAAZ,GAAkBwE,UAAU,CAACxE,GAAzC,CAAA;AACA,MAAMC,MAAAA,IAAI,GAAGmE,WAAW,CAACnE,IAAZ,GAAmBuE,UAAU,CAACvE,IAA3C,CAAA;AAEA,MAAA,IAAA,CAAKsB,QAAL,CAAc;AACZkD,QAAAA,YAAY,EAAE;AACZ9F,UAAAA,QAAQ,EAAE,UADE;AAEZqB,UAAAA,GAAG,EAAG,CAAA,EAAEA,GAAG,GAAGoE,WAAW,CAACM,MAAlB,GAA2B,EAAG,CAF1B,EAAA,CAAA;AAGZzE,UAAAA,IAAI,EAAG,CAAEA,EAAAA,IAAI,GAAG,EAAG,CAAA,EAAA,CAAA;AAHP,SAAA;AADF,OAAd,CAAA,CAAA;AAOD,KAAA;AACF,GAAA;;AAED0E,EAAAA,kBAAkB,GAAG;AACnB;AACA,IAAA,MAAMR,OAAO,GAAGS,QAAQ,CAACC,WAAT,CAAqB,IAArB,CAAhB,CAAA;AAEAC,IAAAA,UAAU,CAACX,OAAD,CAAV,CAAA;AACD,GAAA;;AA0GDhH,EAAAA,MAAM,GAAG;AACP,IAAM,MAAA;AACJC,MAAAA,OADI;AAEJyE,MAAAA,OAFI;AAGJkD,MAAAA,UAHI;AAIJC,MAAAA,kBAJI;AAKJC,MAAAA,aAAa,GAAG,EALZ;AAMJzI,MAAAA,sBAAsB,GAAG,EANrB;AAOJ0I,MAAAA,8BAA8B,GAAG,EAAA;AAP7B,KAAA,GAQF,KAAK3I,KART,CAAA;AASA,IAAM,MAAA;AAAE6E,MAAAA,cAAF;AAAkBqD,MAAAA,YAAAA;AAAlB,KAAA,GAAmC,KAAKtD,KAA9C,CAAA;;AAEA,IAAI,IAAA,CAACsD,YAAL,EAAmB;AACjB,MAAA,OAAO,IAAP,CAAA;AACD,KAAA;;AAED,IACE,oBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AACE,MAAA,SAAS,EAAErH,OAAO,CAAC+H,iBADrB;AAEE,MAAA,KAAK,eACAV,YADA,EAAA;AAEH1E,QAAAA,eAAe,EAAE,SAAA;AAFd,OAFP,CAAA;AAME,MAAA,WAAW,EAAE,IAAK2D,CAAAA,aAAAA;AANpB,KAQE,eAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,SAAS,EAAEtG,OAAO,CAACgI,WAAAA;AAAxB,KAAA,eACE,oBAAC,YAAD,EAAA;AACE,MAAA,GAAG,EAAGC,GAAD,IAAS;AACZ,QAAA,IAAIA,GAAJ,EAAS;AACP,UAAK5D,IAAAA,CAAAA,SAAL,GAAiB4D,GAAjB,CAAA;AACD,SAAA;AACF,OALH;AAME,MAAA,SAAS,EAAE,IANb;AAOE,MAAA,QAAQ,EAPV,IAAA;AAQE,MAAA,SAAS,EAAEjI,OAAO,CAACkI,QARrB;AASE,MAAA,WAAW,EAAE;AACX3G,QAAAA,QAAQ,EAAE,KADC;AAEX4G,QAAAA,aAAa,EAAE,KAFJ;AAGXC,QAAAA,QAAQ,EAAE,KAHC;AAIXC,QAAAA,MAAM,EAAE,MAAA;AAJG,OATf;AAeE,MAAA,MAAM,EAAErE,cAfV;AAgBE,MAAA,SAAS,EAAE,IAAA,CAAK6B,SAhBlB;AAiBE,MAAA,uBAAuB,EAAE,CAAC;AAAEyC,QAAAA,QAAQ,EAAE,SAAA;AAAZ,OAAD,EAA0B;AAAEA,QAAAA,QAAQ,EAAE,SAAA;AAAZ,OAA1B,CAjB3B;AAkBE,MAAA,QAAQ,EAAGtE,cAAD,IAAoB;AAC5B,QAAI,IAAA,IAAA,CAAKF,WAAT,EAAsB;AACpB,UAAA,OAAA;AACD,SAAA;;AAED,QAAKI,IAAAA,CAAAA,gBAAL,CAAsBF,cAAtB,CAAA,CAAA;AACD,OAxBH;AAyBE,MAAA,MAAM,EAAGQ,GAAD,IAAS;AACf,QAAI,IAAA,IAAA,CAAKV,WAAT,EAAsB;AACpB,UAAA,OAAA;AACD,SAAA;;AAED,QAAKS,IAAAA,CAAAA,MAAL,CAAYC,GAAZ,CAAA,CAAA;AACD,OA/BH;AAgCE,MAAA,MAAM,EAAG/E,CAAD,IAAO;AACb,QAAA,IAAI,CAACA,CAAC,CAAC8I,aAAP,EAAsB;AACpB,UAAA,OAAA;AACD,SAAA;;AAED,QAAA,MAAMC,mBAAmB,GAAG,CAAC,EAAE/I,CAAC,CAAC8I,aAAF,IAAmB9I,CAAC,CAAC8I,aAAF,CAAgBpB,OAAhB,CAAwB,0BAAxB,CAArB,CAA7B,CAAA;AACA,QAAA,MAAMsB,cAAc,GAAG,CAAC,EAAEhJ,CAAC,CAAC8I,aAAF,IAAmB9I,CAAC,CAAC8I,aAAF,CAAgBpB,OAAhB,CAAwB,qBAAxB,CAArB,CAAxB,CAAA;AAEA,QAAA,IAAA,CAAKrD,WAAL,GAAmB0E,mBAAmB,IAAIC,cAA1C,CAAA;;AACA,QAAID,IAAAA,mBAAmB,IAAIC,cAA3B,EAA2C;AACzC,UAAK5E,IAAAA,CAAAA,aAAL,GAAqB,IAArB,CAAA;AACD,SAAA;;AACD,QAAKkC,IAAAA,CAAAA,MAAL,CAAYtG,CAAZ,CAAA,CAAA;AACD,OA7CH;AA8CE,MAAA,WAAW,EAAC,YA9Cd;AA+CE,MAAA,WAAW,EAAEP,cAAc,CAAC4I,8BAAD,IAACA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,8BAA8B,CAAEY,kBAAjC,EAAqDtJ,sBAArD,CA/C7B;AAgDE,MAAA,UAAU,EAAEuI,UAhDd;AAiDE,MAAA,kBAAkB,EAAEC,kBAjDtB;AAkDE,MAAA,aAAa,EAAEC,aAAAA;AAlDjB,KADF,CAAA,eAqDE,oBAAC,UAAD,EAAA;AACE,MAAA,SAAS,EAAE7H,OAAO,CAAC2I,SADrB;AAEE,MAAA,WAAW,EAAE,MAAM,IAAA,CAAKpC,UAAL,EAFrB;AAGE,MAAA,OAAO,EAAE,MAAM,IAAA,CAAKnC,WAAL,EAHjB;AAIE,MAAA,IAAI,EAAC,OAJP;AAKE,MAAW,YAAA,EAAA,KAAA;AALb,KAAA,eAOE,oBAAC,OAAD,EAAA;AAAS,MAAA,QAAQ,EAAC,SAAA;AAAlB,KAAA,CAPF,CArDF,CARF,EAwEGK,OAAO,iBACN,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,SAAS,EAAEzE,OAAO,CAAC4I,aAAAA;AAAxB,KAAA,EACGnE,OAAO,CAACoE,GAAR,CAAY,CAAC;AAAEC,MAAAA,KAAF;AAAS7I,MAAAA,OAAAA;AAAT,KAAD,EAAqBsF,KAArB,kBACX,KAAA,CAAA,aAAA,CAAC,QAAD,EAAA;AACE,MAAA,GAAG,EAAEA,KADP;AAEE,MAAA,OAAO,EAAE,MAAM,IAAA,CAAKF,cAAL,CAAoByD,KAApB,EAA2BvD,KAA3B,CAFjB;AAGE,MAAA,cAAc,EAAE,MAAM,IAAA,CAAK7F,cAAL,CAAoBoJ,KAApB,EAA2BvD,KAA3B,CAHxB;AAIE,MAAA,YAAY,EAAE,MAAM,IAAA,CAAKzF,YAAL,CAAkBgJ,KAAlB,EAAyBvD,KAAzB,CAJtB;AAKE,MAAA,KAAK,EAAEuD,KALT;AAME,MAAA,OAAO,EAAE7I,OAAAA;AANX,KADD,CAAA,CADH,CAzEJ,CADF,CAAA;AAyFD,GAAA;;AA3QkD,CAAA;AAAxC2D,gBACJjD,YAAY;AACjBX,EAAAA,OAAO,EAAEY,SAAS,CAACC,MADF;AAEjB6D,EAAAA,IAAI,EAAE9D,SAAS,CAACC,MAFC;AAGjB+G,EAAAA,kBAAkB,EAAEhH,SAAS,CAACC,MAHb;AAIjB0D,EAAAA,MAAM,EAAE3D,SAAS,CAACI,IAJD;AAKjByD,EAAAA,OAAO,EAAE7D,SAAS,CAACmI,KALF;AAMjB3E,EAAAA,WAAW,EAAExD,SAAS,CAACI,IAAV,CAAeF,UANX;AAOjBkF,EAAAA,OAAO,EAAEpF,SAAS,CAACI,IAPF;AAQjBtB,EAAAA,cAAc,EAAEkB,SAAS,CAACI,IAAV,CAAeF,UARd;AASjBuE,EAAAA,cAAc,EAAEzE,SAAS,CAACI,IAAV,CAAeF,UATd;AAUjB6D,EAAAA,aAAa,EAAE/D,SAAS,CAACI,IAAV,CAAeF,UAVb;AAWjBX,EAAAA,KAAK,EAAES,SAAS,CAACoI,KAAV,CAAgB;AACrB/D,IAAAA,MAAM,EAAErE,SAAS,CAACI,IAAV,CAAeF,UADF;AAErBsC,IAAAA,QAAQ,EAAExC,SAAS,CAACoI,KAAV,CAAgB;AACxBvD,MAAAA,WAAW,EAAE7E,SAAS,CAACI,IAAV,CAAeF,UAAAA;AADJ,KAAhB,CAAA;AAFW,GAAhB,CAXU;AAiBjB6G,EAAAA,UAAU,EAAE/G,SAAS,CAACG,IAAAA;AAjBL;AA6QrB,MAAMkI,qBAAqB,GAAG9H,UAAU,CAAEC,KAAD,KAAY;AACnD2G,EAAAA,iBAAiB,EAAE;AACjBmB,IAAAA,SAAS,EAAE9H,KAAK,CAAC+H,OAAN,CAAc,CAAd,CADM;AAEjBrH,IAAAA,YAAY,EAAE,KAFG;AAGjBsH,IAAAA,KAAK,EAAE,OAAA;AAHU,GADgC;AAMnDlB,EAAAA,QAAQ,EAAE;AACRpG,IAAAA,YAAY,EAAE,KADN;AAERa,IAAAA,eAAe,EAAEvB,KAAK,CAACK,OAAN,CAAcC,MAAd,CAAqBC,KAF9B;AAGR,IAAgC,8BAAA,EAAA;AAC9B0H,MAAAA,SAAS,EAAE,oBAAA;AADmB,KAAA;AAHxB,GANyC;AAanDV,EAAAA,SAAS,EAAE;AACTvG,IAAAA,QAAQ,EAAEhB,KAAK,CAACiB,UAAN,CAAiBD,QAAjB,GAA4B,CAD7B;AAETE,IAAAA,OAAO,EAAElB,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,CAFrB;AAGTJ,IAAAA,KAAK,EAAEX,KAAK,CAACK,OAAN,CAAcC,MAAd,CAAqBa,KAHnB;AAIThB,IAAAA,QAAQ,EAAE,UAJD;AAKTqB,IAAAA,GAAG,EAAE,KALI;AAMT0G,IAAAA,KAAK,EAAElI,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,CANnB;AAOTO,IAAAA,SAAS,EAAE,oBAAA;AAPF,GAbwC;AAsBnDkG,EAAAA,aAAa,EAAE;AACbvH,IAAAA,OAAO,EAAE,MADI;AAEbkI,IAAAA,aAAa,EAAE,QAFF;AAGb,IAAsB,oBAAA,EAAA;AACpBC,MAAAA,MAAM,EAAE,MAAA;AADY,KAAA;AAHT,GAtBoC;AA6BnDxB,EAAAA,WAAW,EAAE;AACX1F,IAAAA,OAAO,EAAElB,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,CADnB;AAEXZ,IAAAA,QAAQ,EAAE,UAAA;AAFC,GAAA;AA7BsC,CAAZ,CAAD,CAAV,CAiC1BqC,eAjC0B,CAA9B;;AC5YA,MAAM6F,QAAM,GAAIrI,KAAD,KAAY;AACzBsI,EAAAA,YAAY,EAAE;AACZC,IAAAA,aAAa,EAAEvI,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,GAAA;AADxB,GADW;AAIzByH,EAAAA,SAAS,EAAE;AACTxH,IAAAA,QAAQ,EAAEhB,KAAK,CAACiB,UAAN,CAAiBD,QAAjB,GAA4B,CAD7B;AAETL,IAAAA,KAAK,EAAEX,KAAK,CAACK,OAAN,CAAcoI,KAAd,CAAoBC,IAFlB;AAGTC,IAAAA,UAAU,EAAE3I,KAAK,CAACc,OAAN,CAAcC,IAAAA;AAHjB,GAAA;AAJc,CAAZ,CAAf,CAAA;;AAWA,MAAM6H,qBAAN,SAAoC1K,KAAK,CAACC,SAA1C,CAAoD;AAQlDuH,EAAAA,iBAAiB,GAAG;AAClB;AACA,IAAA,MAAMC,OAAO,GAAGS,QAAQ,CAACC,WAAT,CAAqB,IAArB,CAAhB,CAAA;AAEAC,IAAAA,UAAU,CAACX,OAAD,CAAV,CAAA;AACD,GAAA;;AAEDhH,EAAAA,MAAM,GAAG;AACP,IAAM,MAAA;AAAEkK,MAAAA,iBAAF;AAAqBC,MAAAA,kBAArB;AAAyCC,MAAAA,wBAAzC;AAAmEnK,MAAAA,OAAAA;AAAnE,KAAA,GAA+E,KAAKb,KAA1F,CAAA;AAEA,IACE,oBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,SAAS,EAAEa,OAAO,CAAC0J,YAAAA;AAAxB,KAAA,eACE,oBAAC,YAAD,EAAkBO,iBAAlB,CADF,EAEGC,kBAAkB,iBAAI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,SAAS,EAAElK,OAAO,CAAC4J,SAAAA;AAAxB,KAAA,EAAoCM,kBAApC,CAFzB,EAGGC,wBAAwB,iBAAI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,SAAS,EAAEnK,OAAO,CAAC4J,SAAAA;AAAxB,KAAoCO,EAAAA,wBAApC,CAH/B,CADF,CAAA;AAOD,GAAA;;AAzBiD,CAAA;;AAA9CH,sBACGrJ,YAAY;AACjBsJ,EAAAA,iBAAiB,EAAErJ,SAAS,CAACC,MAAV,CAAiBC,UADnB;AAEjBd,EAAAA,OAAO,EAAEY,SAAS,CAACC,MAAV,CAAiBC,UAFT;AAGjBoJ,EAAAA,kBAAkB,EAAEtJ,SAAS,CAACK,MAHb;AAIjBkJ,EAAAA,wBAAwB,EAAEvJ,SAAS,CAACK,MAAAA;AAJnB;AA2BrB,8BAAeE,UAAU,CAACsI,QAAD,CAAV,CAAmBO,qBAAnB,CAAf;;ACpBA,MAAM;AAAEI,EAAAA,MAAF;AAAUC,EAAAA,KAAV;AAAiBC,EAAAA,QAAAA;AAAjB,CAAA,GAA8BC,QAApC,CAAA;;AAEA,MAAMd,MAAM,GAAIrI,KAAD,KAAY;AACzBoJ,EAAAA,YAAY,EAAE;AACZpB,IAAAA,KAAK,EAAE,MADK;AAEZW,IAAAA,UAAU,EAAE3I,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,CAFrB;AAGZsI,IAAAA,YAAY,EAAErJ,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,CAAA;AAHvB,GADW;AAMzBuI,EAAAA,qBAAqB,EAAE;AACrBtB,IAAAA,KAAK,EAAE,MADc;AAErBW,IAAAA,UAAU,EAAE3I,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,CAFZ;AAGrBsI,IAAAA,YAAY,EAAErJ,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,CAAA;AAHd,GANE;AAWzBwI,EAAAA,MAAM,EAAE;AACNtB,IAAAA,SAAS,EAAE,OADL;AAEND,IAAAA,KAAK,EAAE,MAFD;AAGN,IAAgC,8BAAA,EAAA;AAC9BC,MAAAA,SAAS,EAAE,OAAA;AADmB,KAAA;AAH1B,GAXiB;AAkBzBuB,EAAAA,mBAAmB,EAAE;AACnBb,IAAAA,UAAU,EAAE3I,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,CADd;AAEnBwH,IAAAA,aAAa,EAAEvI,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,CAAA;AAFjB,GAlBI;AAsBzB0I,EAAAA,IAAI,EAAE;AACJzI,IAAAA,QAAQ,EAAEhB,KAAK,CAACiB,UAAN,CAAiBD,QAAjB,GAA4B,CADlC;AAEJ0I,IAAAA,WAAW,EAAE1J,KAAK,CAACc,OAAN,CAAcC,IAAAA;AAFvB,GAtBmB;AA0BzB4I,EAAAA,cAAc,EAAE;AACd1J,IAAAA,OAAO,EAAE,MADK;AAEdC,IAAAA,UAAU,EAAE,QAFE;AAGd0J,IAAAA,UAAU,EAAE,cAHE;AAIdjJ,IAAAA,KAAK,EAAEA,KAAK,CAACkJ,QAAN,EAJO;AAKd3I,IAAAA,OAAO,EAAE,CALK;AAMdF,IAAAA,QAAQ,EAAEhB,KAAK,CAACiB,UAAN,CAAiBD,QAAjB,GAA4B,CANxB;AAOd8I,IAAAA,UAAU,EAAE,CAAA;AAPE,GA1BS;AAmCzBC,EAAAA,gBAAgB,EAAE;AAChBV,IAAAA,YAAY,EAAErJ,KAAK,CAACc,OAAN,CAAcC,IAAd,GAAqB,GAAA;AADnB,GAnCO;AAsCzBiJ,EAAAA,YAAY,EAAE;AACZ/J,IAAAA,OAAO,EAAE,OADG;AAEZ0I,IAAAA,UAAU,EAAE,CAFA;AAGZJ,IAAAA,aAAa,EAAE,CAAA;AAHH,GAtCW;AA2CzB0B,EAAAA,aAAa,EAAE;AACbhK,IAAAA,OAAO,EAAE,MADI;AAEbC,IAAAA,UAAU,EAAE,QAFC;AAGbmJ,IAAAA,YAAY,EAAErJ,KAAK,CAACc,OAAN,CAAcC,IAAAA;AAHf,GA3CU;AAgDzBmJ,EAAAA,OAAO,EAAE;AACPlJ,IAAAA,QAAQ,EAAEhB,KAAK,CAACiB,UAAN,CAAiBD,QAAjB,GAA4B,CAD/B;AAEP4I,IAAAA,UAAU,EAAE,KAFL;AAGPO,IAAAA,QAAQ,EAAE,OAAA;AAHH,GAhDgB;AAqDzB3B,EAAAA,SAAS,EAAE;AACTxH,IAAAA,QAAQ,EAAEhB,KAAK,CAACiB,UAAN,CAAiBD,QAAjB,GAA4B,CAD7B;AAETL,IAAAA,KAAK,EAAEX,KAAK,CAACK,OAAN,CAAcoI,KAAd,CAAoBC,IAFlB;AAGTC,IAAAA,UAAU,EAAE3I,KAAK,CAACc,OAAN,CAAcC,IAAAA;AAHjB,GAAA;AArDc,CAAZ,CAAf,CAAA;;AA4DA,MAAMmB,uBAAqB,GAAIC,UAAD,IAAgB;AAC5C,EAAA,MAAMC,GAAG,GAAGJ,QAAQ,CAACK,aAAT,CAAuB,KAAvB,CAAZ,CAAA;AAEAD,EAAAA,GAAG,CAACE,SAAJ,GAAgB,CAACH,UAAU,IAAI,EAAf,EAAmBI,IAAnB,EAAhB,CAAA;AAEA,EAAA,OAAOH,GAAP,CAAA;AACD,CAND,CAAA;;AAQO,MAAMgI,IAAN,SAAmBlM,KAAK,CAACC,SAAzB,CAAmC;AAAA,EAAA,WAAA,CAAA,GAAA,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CAkBxCwE,KAlBwC,GAkBhC;AACN0H,MAAAA,OAAO,EAAE;AAAEC,QAAAA,IAAI,EAAE,KAAA;AAAR,OAAA;AADH,KAlBgC,CAAA;;AAAA,IAoDxCC,IAAAA,CAAAA,aApDwC,GAoDvBC,MAAD,IAAY;AAC1B,MAAKzM,IAAAA,CAAAA,KAAL,CAAW0M,cAAX,CAAA,QAAA,CAAA,EAAA,EAA+B,KAAK1M,KAAL,CAAW2M,KAA1C,EAAoDF,MAApD,CAAA,CAAA,CAAA;AACD,KAtDuC,CAAA;;AAAA,IAwDxCG,IAAAA,CAAAA,eAxDwC,GAwDrBC,MAAD,IAAY;AAC5B,MAAA,IAAA,CAAKL,aAAL,CAAmB;AAAEK,QAAAA,MAAAA;AAAF,OAAnB,CAAA,CAAA;AACD,KA1DuC,CAAA;;AAAA,IA4DxCC,IAAAA,CAAAA,kBA5DwC,GA4DlBC,SAAD,IAAe;AAClC,MAAA,IAAA,CAAKP,aAAL,CAAmB;AAAEO,QAAAA,SAAAA;AAAF,OAAnB,CAAA,CAAA;AACD,KA9DuC,CAAA;;AAAA,IAAA,IAAA,CAgExCC,wBAhEwC,GAgEb,CAAC5G,KAAD,EAAQY,MAAR,KAAmB;AAC5C,MAAM,MAAA;AAAE2F,QAAAA,KAAAA;AAAF,OAAA,GAAY,KAAK3M,KAAvB,CAAA;AACA,MAAA,MAAMiN,aAAa,GACjBN,KAAK,CAACrH,OAAN,IACAqH,KAAK,CAACrH,OAAN,CAAcc,KAAd,CADA,IAEAuG,KAAK,CAACrH,OAAN,CAAcc,KAAd,CAAA,CAAqB8G,SAArB,CAAgCC,IAAD,IAAUA,IAAI,CAACxD,KAAL,KAAe3C,MAAM,CAAC2C,KAAtB,IAA+BwD,IAAI,CAACnM,KAAL,KAAegG,MAAM,CAAChG,KAA9F,CAHF,CAAA;AAKA2L,MAAAA,KAAK,CAACrH,OAAN,CAAcc,KAAd,CAAA,IAAwBuG,KAAK,CAACrH,OAAN,CAAcc,KAAd,CAAA,CAAqBgH,MAArB,CAA4BH,aAA5B,EAA2C,CAA3C,EAA8CjG,MAA9C,CAAxB,CAAA;AAEA,MAAKwF,IAAAA,CAAAA,aAAL,CAAmBG,KAAnB,CAAA,CAAA;AACD,KA1EuC,CAAA;;AAAA,IA4ExCU,IAAAA,CAAAA,4BA5EwC,GA4ERC,mBAAD,IAAyB;AACtD,MAAA,IAAA,CAAKd,aAAL,CAAmB;AAAEc,QAAAA,mBAAAA;AAAF,OAAnB,CAAA,CAAA;AACD,KA9EuC,CAAA;;AAAA,IAgFxCC,IAAAA,CAAAA,eAhFwC,GAgFrBC,WAAD,IAAiB;AACjC,MAAA,IAAA,CAAKhB,aAAL,CAAmB;AAAEgB,QAAAA,WAAAA;AAAF,OAAnB,CAAA,CAAA;AACD,KAlFuC,CAAA;;AAAA,IAoFxC3G,IAAAA,CAAAA,OApFwC,GAoF7B4G,QAAD,IAAc;AACtB,MAAA,IAAA,CAAKzI,QAAL,CAAc;AACZsH,QAAAA,OAAO,EAAE;AACPC,UAAAA,IAAI,EAAE,IADC;AAEPb,UAAAA,IAAI,EAAE,mFAFC;AAGPgC,UAAAA,OAAO,EAAE,MAAM;AACb,YAAA,IAAA,CAAK1I,QAAL,CAAc;AAAEsH,cAAAA,OAAO,EAAE;AAAEC,gBAAAA,IAAI,EAAE,KAAA;AAAR,eAAA;AAAX,aAAd,CAAA,CAAA;AACD,WALM;AAMPoB,UAAAA,SAAS,EAAE,MAAM;AACf,YAAA,IAAA,CAAK3I,QAAL,CAAc;AAAEsH,cAAAA,OAAO,EAAE;AAAEC,gBAAAA,IAAI,EAAE,KAAA;AAAR,eAAA;AAAX,aAAd,EAA4CkB,QAA5C,CAAA,CAAA;AACD,WAAA;AARM,SAAA;AADG,OAAd,CAAA,CAAA;AAYD,KAjGuC,CAAA;;AAAA,IAmGxCG,IAAAA,CAAAA,QAnGwC,GAmG5BpC,MAAD,IAAY;AACrB,MAAM,MAAA;AAAEqC,QAAAA,eAAAA;AAAF,OAAA,GAAsB,KAAKjJ,KAAjC,CAAA;AACA,MAAA,MAAMkJ,SAAS,GAAG3J,uBAAqB,CAACqH,MAAD,CAAvC,CAAA;AACA,MAAA,MAAMuC,YAAY,GAAGD,SAAS,CAACE,gBAAV,CAA2B,+BAA3B,CAArB,CAAA;AACA,MAAMC,MAAAA,UAAU,GAAG,EAAnB,CAAA;AAEAF,MAAAA,YAAY,CAACG,OAAb,CAAsBC,EAAD,IAAQ;AAC3BF,QAAAA,UAAU,CAACE,EAAE,CAACC,OAAH,CAAWhI,KAAZ,CAAV,GAA+B+H,EAAE,CAACC,OAAH,CAAWpN,KAAX,IAAoB,EAAnD,CAAA;AACD,OAFD,CAAA,CAAA;AAIA,MAAA,MAAMqN,uBAAuB,GAAGC,MAAM,CACpCT,eADoC,EAEpC,CAACU,GAAD,EAAMjJ,OAAN,EAAevB,GAAf,KAAuB;AACrB,QAAI,IAAA,CAACyK,WAAW,CAACP,UAAU,CAAClK,GAAD,CAAX,CAAhB,EAAmC;AACjCwK,UAAAA,GAAG,CAACxK,GAAD,CAAH,GAAW8J,eAAe,CAAC9J,GAAD,CAA1B,CAAA;AACD,SAAA;;AAED,QAAA,OAAOwK,GAAP,CAAA;AACD,OARmC,EASpC,EAToC,CAAtC,CAAA;AAYA,MAAME,MAAAA,kBAAkB,GAAG,EAA3B,CAAA;AACA,MAAIC,IAAAA,UAAU,GAAG,KAAjB,CAAA;AAEAX,MAAAA,YAAY,CAACG,OAAb,CAAqB,CAACC,EAAD,EAAK/H,KAAL,KAAe;AAClC,QAAMuI,MAAAA,UAAU,GAAGN,uBAAuB,CAACF,EAAE,CAACC,OAAH,CAAWhI,KAAZ,CAAvB,IAA6C,EAAhE,CAAA;;AAEA,QAAA,IAAIuI,UAAU,CAAC1H,MAAX,GAAoB,CAApB,IAAyB,CAAC0H,UAAU,CAAC5H,IAAX,CAAiB6H,CAAD,IAAOA,CAAC,CAAC9N,OAAzB,CAA9B,EAAiE;AAC/DqN,UAAAA,EAAE,CAACU,MAAH,EAAA,CAAA;AACAH,UAAAA,UAAU,GAAG,IAAb,CAAA;AACD,SAHD,MAGO;AACLD,UAAAA,kBAAkB,CAACrI,KAAD,CAAlB,GAA4BiI,uBAAuB,CAACF,EAAE,CAACC,OAAH,CAAWhI,KAAZ,CAAvB,IAA6C,EAAzE,CAAA;AACA+H,UAAAA,EAAE,CAACC,OAAH,CAAWhI,KAAX,GAAmBA,KAAnB,CAAA;AACD,SAAA;AACF,OAVD,CAAA,CAAA;;AAYA,MAAA,IAAIsI,UAAJ,EAAgB;AACd,QAAA,IAAA,CAAK1J,QAAL,CAAc;AACZsH,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,IADC;AAEPb,YAAAA,IAAI,EAAE,mFAFC;AAGPgC,YAAAA,OAAO,EAAE,MAAM;AACb,cAAA,IAAA,CAAK1I,QAAL,CAAc;AAAEsH,gBAAAA,OAAO,EAAE;AAAEC,kBAAAA,IAAI,EAAE,KAAA;AAAR,iBAAA;AAAX,eAAd,CAAA,CAAA;AACD,aALM;AAMPoB,YAAAA,SAAS,EAAE,MAAM;AACf,cAAA,IAAA,CAAK3I,QAAL,CAAc;AAAEsH,gBAAAA,OAAO,EAAE;AAAEC,kBAAAA,IAAI,EAAE,KAAA;AAAR,iBAAA;AAAX,eAAd,EAA4C,MAC1C,IAAKC,CAAAA,aAAL,CAAmB;AACjBlH,gBAAAA,OAAO,EAAEwJ,SAAS,CAACL,kBAAD,CADD;AAEjBjB,gBAAAA,WAAW,EAAEM,SAAS,CAACvJ,SAAAA;AAFN,eAAnB,CADF,CAAA,CAAA;AAMD,aAAA;AAbM,WAAA;AADG,SAAd,CAAA,CAAA;AAiBD,OAlBD,MAkBO;AACL,QAAA,IAAA,CAAKiI,aAAL,CAAmB;AACjBlH,UAAAA,OAAO,EAAEwJ,SAAS,CAACL,kBAAD,CADD;AAEjBjB,UAAAA,WAAW,EAAEM,SAAS,CAACvJ,SAAAA;AAFN,SAAnB,CAAA,CAAA;AAID,OAAA;AACF,KAhKuC,CAAA;;AAAA,IAkKxCU,IAAAA,CAAAA,WAlKwC,GAkK1B,CAACmB,KAAD,EAAQuD,KAAR,EAAeoF,WAAf,KAA+B;AAAA,MAAA,IAAA,qBAAA,CAAA;;AAC3C,MAAM,MAAA;AAAElB,QAAAA,eAAAA;AAAF,OAAA,GAAsB,KAAKjJ,KAAjC,CAAA;AACA,MAAM,MAAA;AAAEhF,QAAAA,sBAAAA;AAAF,OAA6B,GAAA,IAAA,CAAKI,KAAL,CAAWgP,aAA9C,CAAA;;AAEA,MAAA,IAAInB,eAAe,CAACzH,KAAD,CAAf,IAA0ByH,eAAe,CAACzH,KAAD,CAAf,CAAuBa,MAAvB,IAAiCrH,sBAA/D,EAAuF;AACrF,QAAA,IAAA,CAAKoF,QAAL,CAAc;AACZsH,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,IADC;AAEPb,YAAAA,IAAI,EAAG,CAAiB9L,eAAAA,EAAAA,sBAAuB,CAFxC,4BAAA,CAAA;AAGP8N,YAAAA,OAAO,EAAEuB,SAHF;AAIPtB,YAAAA,SAAS,EAAE,MAAM;AACf,cAAA,IAAA,CAAK3I,QAAL,CAAc;AAAEsH,gBAAAA,OAAO,EAAE;AAAEC,kBAAAA,IAAI,EAAE,KAAA;AAAR,iBAAA;AAAX,eAAd,CAAA,CAAA;AACD,aAAA;AANM,WAAA;AADG,SAAd,CAAA,CAAA;AAWA,QAAA,OAAA;AACD,OAAA;;AAED,MAAA,IAAI,CAACsB,eAAe,CAACzH,KAAD,CAApB,EAA6B;AAC3ByH,QAAAA,eAAe,CAACzH,KAAD,CAAf,GAAyB,EAAzB,CAAA;AACD,OArB0C;;;AAwB3C,MAAI,IAAA,CAACyH,eAAe,CAACzH,KAAD,CAAf,IAA0B,EAA3B,EAA+BW,IAA/B,CAAoC,CAACmI,CAAD,EAAIC,GAAJ,KAAYD,CAAC,CAACvF,KAAF,KAAYA,KAAZ,IAAqBwF,GAAG,KAAKJ,WAA7E,CAAJ,EAA+F;AAC7F;AACA,QAAA,IAAA,CAAK/J,QAAL,CAAc;AACZsH,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,IADC;AAEPb,YAAAA,IAAI,EAAE,oCAFC;AAGPgC,YAAAA,OAAO,EAAEuB,SAHF;AAIPtB,YAAAA,SAAS,EAAE,MAAM;AACf,cAAA,IAAA,CAAK3I,QAAL,CAAc;AAAEsH,gBAAAA,OAAO,EAAE;AAAEC,kBAAAA,IAAI,EAAE,KAAA;AAAR,iBAAA;AAAX,eAAd,CAAA,CAAA;AACD,aAAA;AANM,WAAA;AADG,SAAd,CAAA,CAAA;AAWA,QAAA,OAAA;AACD,OAAA;;AAED,MAAA,IAAIwC,WAAW,IAAI,CAAf,IAAA,CAAA,qBAAA,GAAoBlB,eAAe,CAACzH,KAAD,CAAnC,KAAoB,IAAA,IAAA,qBAAA,CAAyB2I,WAAzB,CAAxB,EAA+D;AAC7D;AACAlB,QAAAA,eAAe,CAACzH,KAAD,CAAf,CAAuB2I,WAAvB,CAAA,CAAoCpF,KAApC,GAA4CA,KAA5C,CAAA;AACD,OAHD,MAGO;AACL;AACA,QAAA,MAAM3I,KAAK,GACR6M,eAAe,CAACzH,KAAD,CAAf,IACCgJ,GAAG,CAACvB,eAAe,CAACzH,KAAD,CAAf,CAAuBsD,GAAvB,CAA4BkF,CAAD,IAAOS,QAAQ,CAACT,CAAC,CAAC5N,KAAH,CAA1C,CAAA,CAAqDsO,MAArD,CAA6DjK,GAAD,IAAS,CAACkK,KAAK,CAAClK,GAAD,CAA3E,CAAD,CADL,IAEA,CAHF,CAAA;AAKAwI,QAAAA,eAAe,CAACzH,KAAD,CAAf,CAAuBoJ,IAAvB,CAA4B;AAC1B7F,UAAAA,KAD0B;AAE1B3I,UAAAA,KAAK,EAAG,CAAA,EAAEA,KAAK,GAAG,CAAE,CAFM,CAAA;AAG1BF,UAAAA,OAAO,EAAE,KAAA;AAHiB,SAA5B,CAAA,CAAA;AAKD,OAAA;;AAED,MAAA,IAAA,CAAK0L,aAAL,CAAmB;AAAElH,QAAAA,OAAO,EAAEwJ,SAAS,CAACjB,eAAD,CAAA;AAApB,OAAnB,CAAA,CAAA;AACD,KA5NuC,CAAA;;AAAA,IAAA,IAAA,CA8NxCtN,cA9NwC,GA8NvB,CAACkP,SAAD,EAAYrJ,KAAZ,KAAsB;AACrC,MAAM,MAAA;AAAEyH,QAAAA,eAAAA;AAAF,OAAA,GAAsB,KAAKjJ,KAAjC,CAAA;AAEAiJ,MAAAA,eAAe,CAAC4B,SAAD,CAAf,CAA2BrC,MAA3B,CAAkChH,KAAlC,EAAyC,CAAzC,CAAA,CAAA;AAEA,MAAA,IAAA,CAAKoG,aAAL,CAAmB;AAAElH,QAAAA,OAAO,EAAEwJ,SAAS,CAACjB,eAAD,CAAA;AAApB,OAAnB,CAAA,CAAA;AACD,KApOuC,CAAA;;AAAA,IAAA,IAAA,CAsOxC3H,cAtOwC,GAsOvB,CAACuJ,SAAD,EAAYC,aAAZ,KAA8B;AAC7C,MAAM,MAAA;AAAE7B,QAAAA,eAAAA;AAAF,OAAA,GAAsB,KAAKjJ,KAAjC,CAAA;AAEAiJ,MAAAA,eAAe,CAAC4B,SAAD,CAAf,GAA6B5B,eAAe,CAAC4B,SAAD,CAAf,CAA2B/F,GAA3B,CAA+B,CAAC1C,MAAD,EAASZ,KAAT,kBACvDY,MADuD,EAAA;AAE1DlG,QAAAA,OAAO,EAAEsF,KAAK,KAAKsJ,aAAAA;AAFuC,OAAA,CAA/B,CAA7B,CAAA;AAKA,MAAA,IAAA,CAAKlD,aAAL,CAAmB;AAAElH,QAAAA,OAAO,EAAEwJ,SAAS,CAACjB,eAAD,CAAA;AAApB,OAAnB,CAAA,CAAA;AACD,KA/OuC,CAAA;AAAA,GAAA;;AAsBxClG,EAAAA,iBAAiB,GAAG;AAClB,IAAM,MAAA;AACJgF,MAAAA,KAAK,EAAE;AAAErH,QAAAA,OAAAA;AAAF,OAAA;AADH,KAAA,GAEF,KAAKtF,KAFT,CAAA;AAIA,IAAA,IAAA,CAAKgF,QAAL,CAAc;AAAE6I,MAAAA,eAAe,EAAEiB,SAAS,CAACxJ,OAAD,CAAA;AAA5B,KAAd,CAAA,CAAA;AACD,GAAA;;AAEDqK,EAAAA,gCAAgC,CAACC,MAAD,EAAS;AACvC,IAAMC,MAAAA,QAAQ,GAAG,EAAjB,CAAA;;AAEA,IAAA,IACE,CAACpJ,OAAO,CAACmJ,MAAM,CAACjD,KAAP,CAAarH,OAAd,EAAuB,IAAA,CAAKtF,KAAL,CAAW2M,KAAX,CAAiBrH,OAAxC,CAAR,IACA,CAACmB,OAAO,CAACmJ,MAAM,CAACjD,KAAP,CAAarH,OAAd,EAAuB,IAAKV,CAAAA,KAAL,CAAWiJ,eAAlC,CAFV,EAGE;AACAgC,MAAAA,QAAQ,CAAChC,eAAT,GAA2BiB,SAAS,CAACc,MAAM,CAACjD,KAAP,CAAarH,OAAd,CAApC,CAAA;AACD,KAAA;;AAED,IAAA,IAAI,CAACU,OAAO,CAAC6J,QAAD,CAAZ,EAAwB;AACtB,MAAK7K,IAAAA,CAAAA,QAAL,CAAc6K,QAAd,CAAA,CAAA;AACD,KAAA;AACF,GAAA;;AAEDzH,EAAAA,kBAAkB,GAAG;AACnB;AACA,IAAA,MAAMR,OAAO,GAAGS,QAAQ,CAACC,WAAT,CAAqB,IAArB,CAAhB,CAAA;AAEAC,IAAAA,UAAU,CAACX,OAAD,CAAV,CAAA;AACD,GAAA;;AA+LDhH,EAAAA,MAAM,GAAG;AACP,IAAM,MAAA;AAAE0L,MAAAA,OAAAA;AAAF,KAAA,GAAc,KAAK1H,KAAzB,CAAA;AACA,IAAM,MAAA;AAAE/D,MAAAA,OAAF;AAAW8L,MAAAA,KAAX;AAAkBqC,MAAAA,aAAlB;AAAiCc,MAAAA,sBAAjC;AAAyDC,MAAAA,YAAzD;AAAuEtH,MAAAA,kBAAAA;AAAvE,KAAA,GAA8F,KAAKzI,KAAzG,CAAA;AACA,IAAM,MAAA;AACJC,MAAAA,sBAAsB,GAAG,EADrB;AAEJ+P,MAAAA,eAAe,GAAG,EAFd;AAGJC,MAAAA,iBAAiB,GAAG,EAHhB;AAIJC,MAAAA,eAAe,GAAG,EAJd;AAKJvQ,MAAAA,gBALI;AAMJwQ,MAAAA,aAAa,GAAG,EANZ;AAOJC,MAAAA,cAAc,GAAG,EAPb;AAQJC,MAAAA,cAAc,GAAG,EARb;AASJxD,MAAAA,MAAM,GAAG,EATL;AAUJE,MAAAA,SAAS,GAAG,EAVR;AAWJuD,MAAAA,qBAXI;AAYJ9H,MAAAA,UAAU,GAAG,EAZT;AAaJ8E,MAAAA,mBAAmB,GAAG,EAblB;AAcJiD,MAAAA,QAAQ,GAAG,EAdP;AAeJC,MAAAA,UAAU,GAAG,EAfT;AAgBJ9H,MAAAA,aAAa,GAAG,EAhBZ;AAiBJS,MAAAA,QAAQ,GAAG,EAjBP;AAkBJsH,MAAAA,eAAe,GAAG,EAlBd;AAmBJ9H,MAAAA,8BAA8B,GAAG,EAAA;AAnB7B,KAoBFqG,GAAAA,aAAa,IAAI,EApBrB,CAAA;AAsBA,IAAM,MAAA;AACJ0B,MAAAA,sBADI;AAEJpL,MAAAA,OAFI;AAGJqL,MAAAA,MAHI;AAIJC,MAAAA,aAJI;AAKJC,MAAAA,aALI;AAMJC,MAAAA,gBANI;AAOJC,MAAAA,iBAPI;AAQJC,MAAAA,0BARI;AASJC,MAAAA,qBAAAA;AATI,KAUFtE,GAAAA,KAAK,IAAI,EAVb,CAAA;AAWA,IAAM,MAAA;AACJE,MAAAA,MAAM,EAAEqE,WADJ;AAEJnE,MAAAA,SAAS,EAAEoE,cAFP;AAGJpG,MAAAA,kBAHI;AAIJC,MAAAA,wBAJI;AAKJsC,MAAAA,mBAAmB,EAAE8D,wBAAAA;AALjB,KAMFT,GAAAA,MAAM,IAAI,EANd,CAAA;AAQA,IAAA,MAAMU,oBAAoB,GAAGlB,aAAa,IAAIA,aAAa,CAACtD,MAA5D,CAAA;AACA,IAAA,MAAMyE,qBAAqB,GAAGlB,cAAc,IAAIA,cAAc,CAACvD,MAA/D,CAAA;;AAEA,IAAA,MAAM0E,qBAAqB,GAAG,MAC5B,CAACC,MAAM,CAACC,IAAP,CAAYnM,OAAZ,CAAwB,IAAA,EAAzB,EAA6BoE,GAA7B,CAAiC,CAAC3F,GAAD,EAAMqC,KAAN,kBAC/B,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,GAAG,EAAErC,GAAV;AAAe,MAAA,SAAS,EAAElD,OAAO,CAACmL,gBAAAA;AAAlC,KAAA,eACE,KAAC,CAAA,aAAA,CAAA,cAAD,EACE,IAAA,eAAA,KAAA,CAAA,aAAA,CAAC,qBAAD,EAAA;AAAuB,MAAA,UAAU,eAAE,KAAA,CAAA,aAAA,CAAC,cAAD,EAAA,IAAA,CAAA;AAAnC,KAAA,eACE,oBAAC,UAAD,EAAA;AAAY,MAAA,SAAS,EAAEnL,OAAO,CAAC6K,IAAAA;AAA/B,KAAuC,EAAA,CAAA,6BAAA,EAA+BtF,KAAK,GAAG,CAAE,EAAhF,CADF,CADF,eAKE,KAAA,CAAA,aAAA,CAAC,qBAAD,EAAA;AAAuB,MAAA,SAAS,EAAEvF,OAAO,CAACoL,YAAAA;AAA1C,KAAA,EACG,CAAC3G,OAAO,CAACvB,GAAD,CAAP,IAAgB,EAAjB,EAAqB2F,GAArB,CAA0B1C,MAAD,iBACxB,KAAC,CAAA,aAAA,CAAA,KAAD,CAAO,QAAP,EAAA;AAAgB,MAAA,GAAG,EAAEA,MAAM,CAAC2C,KAAAA;AAA5B,KACE,eAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA;AACE,MAAA,SAAS,EAAE9I,OAAO,CAAC+K,cADrB;AAEE,MAAA,uBAAuB,EAAE;AACvBvK,QAAAA,MAAM,EAAG,CAAA,EAAE0L,SAAS,CAACpD,KAAM,CAAO3C,KAAAA,EAAAA,MAAM,CAAC2C,KAAM,KAAI3C,MAAM,CAAClG,OAAP,GAAiB,SAAjB,GAA6B,WAAY,CAAA,CAAA,CAAA;AADrE,OAAA;AAF3B,KADF,CAAA,eAOE,oBAAC,cAAD,EAAA;AAAgB,MAAA,SAAS,EAAED,OAAO,CAAC0K,qBAAAA;AAAnC,KAAA,eACE,oBAAC,YAAD,EAAA;AACE,MAAA,SAAS,EAAE1K,OAAO,CAACgM,MADrB;AAEE,MAAA,MAAM,EAAE7F,MAAM,CAAC+F,SAAP,IAAoB,EAF9B;AAGE,MAAA,UAAU,EAAEgE,iBAHd;AAIE,MAAA,QAAQ,EAAGnC,CAAD,IAAO,KAAK5B,wBAAL,CAA8BjJ,GAA9B,EAAA,QAAA,CAAA,EAAA,EAAwCiD,MAAxC,EAAA;AAAgD+F,QAAAA,SAAS,EAAE6B,CAAAA;AAA3D,OAJnB,CAAA,CAAA;AAKE,MAAA,YAAY,EAAEmB,YALhB;AAME,MAAA,aAAa,EAAGI,aAAa,IAAIA,aAAa,CAACpD,SAAhC,IAA8CsE,oBAN/D;AAOE,MAAA,cAAc,EAAGjB,cAAc,IAAIA,cAAc,CAACrD,SAAlC,IAAgDuE,qBAPlE;AAQE,MAAA,kBAAkB,EAAE7I,kBARtB;AASE,MAAA,aAAa,EAAEC,aAAAA;AATjB,KAAA,CADF,CAPF,CADD,CADH,CALF,CADF,CADF,CADF,CAAA;;AAqCA,IAAA,MAAMgJ,WAAW,GAAG;AAClBtP,MAAAA,QAAQ,EAAE6O,qBAAqB,KAAK,KAA1B,GAAkC,KAAlC,GAA0C,QAAA;AADlC,KAApB,CAAA;AAIA,IAAA,MAAMU,iBAAiB,GAAGlS,yBAAyB,CAACuP,aAAD,CAAnD,CAAA;AAEA,IAAA,MAAM4C,aAAa,GAAG;AACpBvB,MAAAA,cAAc,EAAEA,cAAc,CAACjF,QAAf,IAA2BH,MAAM,CAACoF,cAAc,CAAC1G,KAAhB,CAD7B;AAEpBuG,MAAAA,eAAe,EAAEA,eAAe,CAAC9E,QAAhB,IAA4BH,MAAM,CAACiF,eAAe,CAACvG,KAAjB,CAF/B;AAGpB,MAAoBR,kBAAAA,EAAAA,QAAQ,CAACiC,QAAT,IAAqBH,MAAM,CAAC9B,QAAQ,CAACQ,KAAV,EAAiB,IAAjB,CAH3B;AAIpBR,MAAAA,QAAQ,EAAEA,QAAQ,CAACiC,QAAT,IAAqBjC,QAAQ,CAAC0I,OAA9B,IAAyC1G,QAAQ,CAACsF,eAAe,CAAC9G,KAAjB,EAAwB8G,eAAe,CAACqB,OAAxC,CAAA;AAJvC,KAAtB,CAAA;AAMA,IAAA,MAAMC,eAAe,GAAG;AACtBf,MAAAA,0BAA0B,EAAE1D,mBAAmB,CAAClC,QAApB,IAAgCH,MAAM,CAACqC,mBAAmB,CAAC3D,KAArB,CAD5C;AAEtBmH,MAAAA,gBAAgB,EAAE/D,SAAS,CAAC3B,QAAV,IAAsBH,MAAM,CAAC8B,SAAS,CAACpD,KAAX,CAFxB;AAGtB+G,MAAAA,sBAAsB,EAAEV,eAAe,CAAC5E,QAAhB,IAA4BH,MAAM,CAAC+E,eAAe,CAACrG,KAAjB,CAHpC;AAItBkH,MAAAA,aAAa,EAAEhE,MAAM,CAACzB,QAAP,IAAmBH,MAAM,CAAC4B,MAAM,CAAClD,KAAR,CAJlB;AAKtBoH,MAAAA,iBAAiB,EAAEvI,UAAU,CAAC4C,QAAX,IAAuBH,MAAM,CAACzC,UAAU,CAACmB,KAAZ,CAL1B;AAMtBqI,MAAAA,aAAa,EAAE,CAAAxB,UAAU,IAAA,IAAV,YAAAA,UAAU,CAAEpF,QAAZ,KAAwBH,MAAM,CAACuF,UAAD,IAACA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAU,CAAE7G,KAAb,CAAA;AANvB,KAAxB,CAAA;;AASA,IAAM5J,MAAAA,cAAc,GAAG,CAACC,KAAK,GAAG,EAAT,KAClBC,QAAAA,CAAAA,EAAAA,EAAAA,sBADkB,EAElBD,KAFkB,CAAvB,CAAA;;AAKA,IACE,oBAAA,KAAA,CAAA,aAAA,CAAC,MAAD,CAAQ,YAAR,EAAA;AACE,MAAA,aAAa,EAAE4Q,aADjB;AAEE,MAAA,UAAU,EAAEX,iBAFd;AAGE,MAAA,YAAY,EAAEK,qBAHhB;AAIE,MAAA,QAAQ,eACN,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AACE,QAAA,KAAK,EAAE3D,KADT;AAEE,QAAA,aAAa,EAAEqC,aAFjB;AAGE,QAAA,aAAa,EAAGrC,KAAD,IAAW,KAAKH,aAAL,CAAmBG,KAAnB,CAH5B;AAIE,QAAA,qBAAqB,EAAGqC,aAAD,IAAmBc,sBAAsB,CAACd,aAAD,EAAgB,IAAhB,CAJlE;AAKE,QAAA,MAAM,EAAE;AACNiD,UAAAA,QAAQ,EAAEL,aADJ;AAENM,UAAAA,UAAU,EAAEH,eAAAA;AAFN,SAAA;AALV,OAAA,CAAA;AALJ,KAiBGf,EAAAA,0BAA0B,iBACzB,KAAA,CAAA,aAAA,CAAC,cAAD,EAAA;AAAgB,MAAA,KAAK,EAAE1D,mBAAmB,CAAC3D,KAA3C;AAAkD,MAAA,SAAS,EAAE9I,OAAO,CAACwK,YAAAA;AAArE,KAAA,eACE,oBAAC,YAAD,EAAA;AACE,MAAA,SAAS,EAAExK,OAAO,CAACgM,MADrB;AAEE,MAAA,MAAM,EAAEF,KAAK,CAACW,mBAAN,IAA6B,EAFvC;AAGE,MAAA,QAAQ,EAAE,IAAA,CAAKD,4BAHjB;AAIE,MAAA,YAAY,EAAE0C,YAJhB;AAKE,MAAA,QAAQ,EAAE,KALZ;AAME,MAAA,KAAK,EAAEqB,wBANT;AAOE,MAAA,WAAW,EAAEM,WAPf;AAQE,MAAA,WAAW,EAAE3R,cAAc,CAACuN,mBAAD,IAACA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,CAAE/D,kBAAtB,CAR7B;AASE,MAAA,UAAU,EAAEwH,iBATd;AAUE,MAAA,aAAa,EAAGZ,aAAa,IAAIA,aAAa,CAAC7C,mBAAhC,IAAwD+D,oBAVzE;AAWE,MAAA,cAAc,EAAGjB,cAAc,IAAIA,cAAc,CAAC9C,mBAAlC,IAA0DgE,qBAX5E;AAYE,MAAA,kBAAkB,EAAE7I,kBAZtB;AAaE,MAAA,uBAAuB,EAAE,CAAC;AAAEU,QAAAA,QAAQ,EAAE,SAAA;AAAZ,OAAD,EAA0B;AAAEA,QAAAA,QAAQ,EAAE,SAAA;AAAZ,OAA1B,CAb3B;AAcE,MAAA,aAAa,EAAET,aAAAA;AAdjB,KADF,CAAA,EAiBG0I,wBAAwB,iBAAI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,SAAS,EAAEvQ,OAAO,CAAC4J,SAAAA;AAAxB,KAAA,EAAoC2G,wBAApC,CAjB/B,CAlBJ,EAuCGP,aAAa,iBACZ,oBAAC,cAAD,EAAA;AAAgB,MAAA,KAAK,EAAEhE,MAAM,CAAClD,KAA9B;AAAqC,MAAA,SAAS,EAAE9I,OAAO,CAACwK,YAAAA;AAAxD,KAAA,eACE,oBAAC,YAAD,EAAA;AACE,MAAA,SAAS,EAAExK,OAAO,CAACgM,MADrB;AAEE,MAAA,MAAM,EAAEF,KAAK,CAACE,MAFhB;AAGE,MAAA,QAAQ,EAAE,IAAA,CAAKD,eAHjB;AAIE,MAAA,YAAY,EAAEmD,YAJhB;AAKE,MAAA,QAAQ,EAAE,KALZ;AAME,MAAA,gBAAgB,EANlB,IAAA;AAOE,MAAA,KAAK,EAAEmB,WAPT;AAQE,MAAA,WAAW,EAAEQ,WARf;AASE,MAAA,WAAW,EAAE3R,cAAc,CAAC8M,MAAD,IAACA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAM,CAAEtD,kBAAT,CAT7B;AAUE,MAAA,UAAU,EAAEwH,iBAVd;AAWE,MAAA,aAAa,EAAEM,oBAXjB;AAYE,MAAA,cAAc,EAAEC,qBAZlB;AAaE,MAAA,kBAAkB,EAAE7I,kBAbtB;AAcE,MAAA,uBAAuB,EAAE,CAAC;AAAEU,QAAAA,QAAQ,EAAE,SAAA;AAAZ,OAAD,EAA0B;AAAEA,QAAAA,QAAQ,EAAE,SAAA;AAAZ,OAA1B,CAd3B;AAeE,MAAA,aAAa,EAAET,aAAAA;AAfjB,KADF,CAAA,EAkBGwI,WAAW,iBAAI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,SAAS,EAAErQ,OAAO,CAAC4J,SAAAA;AAAxB,KAAoCyG,EAAAA,WAApC,CAlBlB,CAxCJ,eA8DE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,SAAS,EAAErQ,OAAO,CAACqL,aAAAA;AAAxB,KAAA,eACE,oBAAC,UAAD,EAAA;AAAY,MAAA,SAAS,EAAErL,OAAO,CAAC6K,IAA/B;AAAqC,MAAA,SAAS,EAAE,KAAA;AAAhD,KADF,EAAA,iDAAA,CAAA,eAIE,oBAAC,OAAD,EAAA;AACE,MAAA,OAAO,EAAE;AAAES,QAAAA,OAAO,EAAEtL,OAAO,CAACsL,OAAAA;AAAnB,OADX;AAEE,MAAA,oBAAoB,EAFtB,IAAA;AAGE,MAAA,oBAAoB,EAHtB,IAAA;AAIE,MAAA,SAAS,EAAE,OAJb;AAKE,MAAA,KAAK,EAAEwF,iBAAAA;AALT,KAAA,eAOE,oBAAC,IAAD,EAAA;AAAM,MAAA,QAAQ,EAAE,OAAhB;AAAyB,MAAA,KAAK,EAAE,SAAA;AAAhC,KAAA,CAPF,CAJF,CA9DF,eA6EE,KAAA,CAAA,aAAA,CAAC9G,uBAAD,EAAA;AACE,MAAA,kBAAkB,EAAEE,kBADtB;AAEE,MAAA,wBAAwB,EAAEC,wBAF5B;AAGE,MAAA,iBAAiB,EAAE;AACjBmH,QAAAA,WAAW,EAAEpS,cAAc,CAACwQ,QAAD,IAACA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAEhH,kBAAX,CADV;AAEjB6I,QAAAA,aAAa,EAAEC,WAFE;AAGjBX,QAAAA,WAAW,EAAE;AAAEtP,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SAHI;AAIjBkQ,QAAAA,iBAAiB,EAAE;AACjBC,UAAAA,IAAI,EAAE,iBADW;AAEjBT,UAAAA,OAAO,EAAE;AACPU,YAAAA,UAAU,EAAE,IAAA;AADL,WAFQ;AAKjB7S,UAAAA,gBAAgB,EAAEA,gBALD;AAMjB8S,UAAAA,eAAe,EAAE,CAAClN,IAAD,EAAOvE,KAAP,EAAcwE,aAAd,KAAgC;AAC/C,YAAM,MAAA;AAAEqI,cAAAA,eAAAA;AAAF,aAAA,GAAsB,KAAKjJ,KAAjC,CAAA;AAEA,YAAO,OAAA,mBACL,oBAAC8N,qBAAD,EAAA;AACE,cAAA,WAAW,EAAE,IAAA,CAAKzN,WADpB;AAEE,cAAA,OAAO,EAAE,IAAA,CAAK4B,OAFhB;AAGE,cAAA,cAAc,EAAGT,KAAD,IAAW,IAAA,CAAK7F,cAAL,CAAoBgF,IAAI,CAACK,IAAL,CAAUK,GAAV,CAAc,OAAd,CAApB,EAA4CG,KAA5C,CAH7B;AAIE,cAAA,cAAc,EAAGA,KAAD,IAAW,IAAA,CAAKF,cAAL,CAAoBX,IAAI,CAACK,IAAL,CAAUK,GAAV,CAAc,OAAd,CAApB,EAA4CG,KAA5C,CAJ7B;AAKE,cAAA,IAAI,EAAEb,IALR;AAME,cAAA,KAAK,EAAEvE,KANT;AAOE,cAAA,aAAa,EAAEwE,aAPjB;AAQE,cAAA,OAAO,EAAEqI,eAAe,CAACtI,IAAI,CAACK,IAAL,CAAUK,GAAV,CAAc,OAAd,CAAD,CAR1B;AASE,cAAA,UAAU,EAAE8K,iBATd;AAUE,cAAA,kBAAkB,EAAEtI,kBAVtB;AAWE,cAAA,aAAa,EAAEC,aAXjB;AAYE,cAAA,sBAAsB,EAAEzI,sBAZ1B;AAaE,cAAA,8BAA8B,EAAE0I,8BAAAA;AAblC,aADF,CAAA,CAAA;AAiBD,WAAA;AA1BgB,SAJF;AAgCjBH,QAAAA,UAAU,EAAEuI,iBAhCK;AAiCjB4B,QAAAA,SAAS,EAAE9R,OAAO,CAAC2K,MAjCF;AAkCjBA,QAAAA,MAAM,EAAEmB,KAAK,CAACa,WAAN,IAAqB,EAlCZ;AAmCjBI,QAAAA,QAAQ,EAAE,IAAA,CAAKA,QAnCE;AAoCjBmC,QAAAA,YAAY,EAAEA,YApCG;AAqCjB6C,QAAAA,4BAA4B,EAAE,IArCb;AAsCjB9G,QAAAA,QAAQ,EAAE,KAtCO;AAuCjB+G,QAAAA,cAAc,EAAE,KAvCC;AAwCjBnI,QAAAA,KAAK,EAAEK,kBAxCU;AAyCjBtC,QAAAA,kBAAkB,EAAEA,kBAzCH;AA0CjBqK,QAAAA,uBAAuB,EAAE,CAAC;AAAE3J,UAAAA,QAAQ,EAAE,SAAA;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE,SAAA;AAAZ,SAA1B,CA1CR;AA2CjBT,QAAAA,aAAa,EAAEA,aAAAA;AA3CE,OAAA;AAHrB,KA7EF,CAAA,EA+HGgI,sBAAsB,IAAIa,qBAAqB,EA/HlD,EAiIGT,gBAAgB,iBACf,KAAA,CAAA,aAAA,CAAC,cAAD,EAAA;AAAgB,MAAA,KAAK,EAAE/D,SAAS,CAACpD,KAAjC;AAAwC,MAAA,SAAS,EAAE9I,OAAO,CAACwK,YAAAA;AAA3D,KAAA,eACE,oBAAC,YAAD,EAAA;AACE,MAAA,SAAS,EAAExK,OAAO,CAACgM,MADrB;AAEE,MAAA,MAAM,EAAEF,KAAK,CAACI,SAAN,IAAmB,EAF7B;AAGE,MAAA,QAAQ,EAAE,IAAA,CAAKD,kBAHjB;AAIE,MAAA,YAAY,EAAEiD,YAJhB;AAKE,MAAA,KAAK,EAAEoB,cALT;AAME,MAAA,WAAW,EAAEO,WANf;AAOE,MAAA,WAAW,EAAE3R,cAAc,CAACgN,SAAD,IAACA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAS,CAAExD,kBAAZ,CAP7B;AAQE,MAAA,UAAU,EAAEwH,iBARd;AASE,MAAA,aAAa,EAAGZ,aAAa,IAAIA,aAAa,CAACpD,SAAhC,IAA8CsE,oBAT/D;AAUE,MAAA,cAAc,EAAGjB,cAAc,IAAIA,cAAc,CAACrD,SAAlC,IAAgDuE,qBAVlE;AAWE,MAAA,kBAAkB,EAAE7I,kBAXtB;AAYE,MAAA,uBAAuB,EAAE,CAAC;AAAEU,QAAAA,QAAQ,EAAE,SAAA;AAAZ,OAAD,EAA0B;AAAEA,QAAAA,QAAQ,EAAE,SAAA;AAAZ,OAA1B,CAZ3B;AAaE,MAAA,aAAa,EAAET,aAAAA;AAbjB,KADF,CAAA,EAgBGyI,cAAc,iBAAI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,MAAA,SAAS,EAAEtQ,OAAO,CAAC4J,SAAAA;AAAxB,KAAA,EAAoC0G,cAApC,CAhBrB,CAlIJ,eAsJE,oBAAC,WAAD,EAAA;AACE,MAAA,IAAI,EAAE7E,OAAO,CAACC,IADhB;AAEE,MAAA,KAAK,EAAC,SAFR;AAGE,MAAA,IAAI,EAAED,OAAO,CAACZ,IAHhB;AAIE,MAAA,OAAO,EAAEY,OAAO,CAACoB,OAJnB;AAKE,MAAA,SAAS,EAAEpB,OAAO,CAACqB,SAAAA;AALrB,KAAA,CAtJF,CADF,CAAA;AAgKD,GAAA;;AA/fuC,CAAA;AAA7BtB,KACJ7K,YAAY;AACjBwN,EAAAA,aAAa,EAAEvN,SAAS,CAACC,MAAV,CAAiBC,UADf;AAEjBgL,EAAAA,KAAK,EAAElL,SAAS,CAACC,MAAV,CAAiBC,UAFP;AAGjBoR,EAAAA,gBAAgB,EAAEtR,SAAS,CAACG,IAHX;AAIjB8K,EAAAA,cAAc,EAAEjL,SAAS,CAACI,IAAV,CAAeF,UAJd;AAKjBmO,EAAAA,sBAAsB,EAAErO,SAAS,CAACI,IAAV,CAAeF,UALtB;AAMjBd,EAAAA,OAAO,EAAEY,SAAS,CAACC,MAAV,CAAiBC,UANT;AAOjBoO,EAAAA,YAAY,EAAEtO,SAAS,CAACoI,KAAV,CAAgB;AAC5BmJ,IAAAA,GAAG,EAAEvR,SAAS,CAACI,IAAV,CAAeF,UADQ;AAE5BsR,IAAAA,MAAM,EAAExR,SAAS,CAACI,IAAV,CAAeF,UAAAA;AAFK,GAAhB,CAPG;AAWjB8G,EAAAA,kBAAkB,EAAEhH,SAAS,CAACoI,KAAV,CAAgB;AAClCmJ,IAAAA,GAAG,EAAEvR,SAAS,CAACI,IAAV,CAAeF,UADc;AAElCsR,IAAAA,MAAM,EAAExR,SAAS,CAACI,IAAV,CAAeF,UAAAA;AAFW,GAAhB,CAAA;AAXH;AAigBrB,MAAMuR,MAAM,GAAGlR,UAAU,CAACsI,MAAD,CAAV,CAAmB+B,IAAnB,CAAf;;AClmBA,uBAAe;AACbM,EAAAA,KAAK,EAAE;AACLwG,IAAAA,iBAAiB,EAAE,EADd;AAELzC,IAAAA,sBAAsB,EAAE,IAFnB;AAGLpL,IAAAA,OAAO,EAAE,EAHJ;AAILwG,IAAAA,QAAQ,EAAE,KAJL;AAKLsH,IAAAA,WAAW,EAAE,OALR;AAML5H,IAAAA,MAAM,EAAE,EANH;AAOL6H,IAAAA,IAAI,EAAE,QAPD;AAQLxG,IAAAA,MAAM,EAAE,EARH;AASLgE,IAAAA,aAAa,EAAE,IATV;AAUL9D,IAAAA,SAAS,EAAE,EAVN;AAWL+D,IAAAA,gBAAgB,EAAE,IAXb;AAYLwC,IAAAA,OAAO,EAAE,IAZJ;AAaLC,IAAAA,0BAA0B,EAAE,IAbvB;AAcLjG,IAAAA,mBAAmB,EAAE,EAdhB;AAeL0D,IAAAA,0BAA0B,EAAE,IAfvB;AAgBLC,IAAAA,qBAAqB,EAAE,QAAA;AAhBlB,GADM;AAmBbjC,EAAAA,aAAa,EAAE;AACb/O,IAAAA,sBAAsB,EAAE;AACtBuT,MAAAA,KAAK,EAAE;AAAE1H,QAAAA,QAAQ,EAAE,KAAA;AAAZ,OADe;AAEtB2H,MAAAA,KAAK,EAAE;AAAE3H,QAAAA,QAAQ,EAAE,KAAA;AAAZ,OAFe;AAGtB4H,MAAAA,KAAK,EAAE;AAAE5H,QAAAA,QAAQ,EAAE,KAAA;AAAZ,OAHe;AAItB6H,MAAAA,EAAE,EAAE;AAAE7H,QAAAA,QAAQ,EAAE,IAAA;AAAZ,OAJkB;AAKtB8H,MAAAA,UAAU,EAAE;AAAE9H,QAAAA,QAAQ,EAAE,IAAA;AAAZ,OALU;AAMtB+H,MAAAA,SAAS,EAAE;AAAE/H,QAAAA,QAAQ,EAAE,IAAA;AAAZ,OANW;AAOtBgI,MAAAA,cAAc,EAAE;AAAEhI,QAAAA,QAAQ,EAAE,KAAA;AAAZ,OAPM;AAQtBiI,MAAAA,kBAAkB,EAAE;AAAEjI,QAAAA,QAAQ,EAAE,IAAA;AAAZ,OAAA;AARE,KADX;AAWbe,IAAAA,MAAM,EAAE;AACNzB,MAAAA,QAAQ,EAAE,IADJ;AAENzB,MAAAA,KAAK,EAAE,QAFD;AAGNqK,MAAAA,QAAQ,EAAE,KAHJ;AAINzK,MAAAA,kBAAkB,EAAE;AAClBiK,QAAAA,KAAK,EAAE;AAAE1H,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SADW;AAElB2H,QAAAA,KAAK,EAAE;AAAE3H,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SAFW;AAGlB4H,QAAAA,KAAK,EAAE;AAAE5H,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SAAA;AAHW,OAAA;AAJd,KAXK;AAqBbnD,IAAAA,8BAA8B,EAAE;AAC9BY,MAAAA,kBAAkB,EAAE;AAClBiK,QAAAA,KAAK,EAAE;AAAE1H,UAAAA,QAAQ,EAAE,IAAA;AAAZ,SADW;AAElB2H,QAAAA,KAAK,EAAE;AAAE3H,UAAAA,QAAQ,EAAE,IAAA;AAAZ,SAFW;AAGlB4H,QAAAA,KAAK,EAAE;AAAE5H,UAAAA,QAAQ,EAAE,IAAA;AAAZ,SAHW;AAIlBmI,QAAAA,KAAK,EAAE;AAAEnI,UAAAA,QAAQ,EAAE,IAAA;AAAZ,SAJW;AAKlBoI,QAAAA,OAAO,EAAE;AAAEpI,UAAAA,QAAQ,EAAE,IAAA;AAAZ,SALS;AAMlBqI,QAAAA,OAAO,EAAE;AAAErI,UAAAA,QAAQ,EAAE,IAAA;AAAZ,SAAA;AANS,OAAA;AADU,KArBnB;AA+BbwE,IAAAA,qBAAqB,EAAE,KA/BV;AAgCb9H,IAAAA,UAAU,EAAE;AACVmB,MAAAA,KAAK,EAAE,YADG;AAEVyB,MAAAA,QAAQ,EAAE,KAFA;AAGVyG,MAAAA,OAAO,EAAE,IAAA;AAHC,KAhCC;AAqCb3B,IAAAA,eAAe,EAAE;AACf9E,MAAAA,QAAQ,EAAE,IADK;AAEfzB,MAAAA,KAAK,EAAE,mBAAA;AAFQ,KArCJ;AAyCb0G,IAAAA,cAAc,EAAE;AACdjF,MAAAA,QAAQ,EAAE,KADI;AAEdzB,MAAAA,KAAK,EAAE,uBAAA;AAFO,KAzCH;AA6CboD,IAAAA,SAAS,EAAE;AACT3B,MAAAA,QAAQ,EAAE,IADD;AAETzB,MAAAA,KAAK,EAAE,WAFE;AAGTqK,MAAAA,QAAQ,EAAE,KAHD;AAITzK,MAAAA,kBAAkB,EAAE;AAClBiK,QAAAA,KAAK,EAAE;AAAE1H,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SADW;AAElB2H,QAAAA,KAAK,EAAE;AAAE3H,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SAFW;AAGlB4H,QAAAA,KAAK,EAAE;AAAE5H,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SAAA;AAHW,OAAA;AAJX,KA7CE;AAuDbwB,IAAAA,mBAAmB,EAAE;AACnBlC,MAAAA,QAAQ,EAAE,IADS;AAEnBzB,MAAAA,KAAK,EAAE,sBAFY;AAGnBqK,MAAAA,QAAQ,EAAE,KAHS;AAInBzK,MAAAA,kBAAkB,EAAE;AAClBiK,QAAAA,KAAK,EAAE;AAAE1H,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SADW;AAElB2H,QAAAA,KAAK,EAAE;AAAE3H,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SAFW;AAGlB4H,QAAAA,KAAK,EAAE;AAAE5H,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SAAA;AAHW,OAAA;AAJD,KAvDR;AAiEbyE,IAAAA,QAAQ,EAAE;AACRhH,MAAAA,kBAAkB,EAAE;AAClBiK,QAAAA,KAAK,EAAE;AAAE1H,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SADW;AAElB2H,QAAAA,KAAK,EAAE;AAAE3H,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SAFW;AAGlB4H,QAAAA,KAAK,EAAE;AAAE5H,UAAAA,QAAQ,EAAE,KAAA;AAAZ,SAAA;AAHW,OAAA;AADZ,KAjEG;AAwEbkE,IAAAA,eAAe,EAAE;AACf5E,MAAAA,QAAQ,EAAE,IADK;AAEfzB,MAAAA,KAAK,EAAE,kBAAA;AAFQ,KAxEJ;AA4EbsH,IAAAA,qBAAqB,EAAE;AACrB7F,MAAAA,QAAQ,EAAE,KADW;AAErBzB,MAAAA,KAAK,EAAE,yBAAA;AAFc,KA5EV;AAgFbhK,IAAAA,gBAAgB,EAAE,EAhFL;AAiFbC,IAAAA,sBAAsB,EAAE,EAjFX;AAkFbuQ,IAAAA,aAAa,EAAE;AACb7C,MAAAA,mBAAmB,EAAE,GADR;AAEbT,MAAAA,MAAM,EAAE,GAFK;AAGbE,MAAAA,SAAS,EAAE,GAAA;AAHE,KAlFF;AAuFbqD,IAAAA,cAAc,EAAE;AACd9C,MAAAA,mBAAmB,EAAE,GADP;AAEdT,MAAAA,MAAM,EAAE,GAFM;AAGdE,MAAAA,SAAS,EAAE,GAAA;AAHG,KAvFH;AA4FbyD,IAAAA,UAAU,EAAE;AACVpF,MAAAA,QAAQ,EAAE,KADA;AAEVzB,MAAAA,KAAK,EAAE,YAAA;AAFG,KA5FC;AAgGbjB,IAAAA,aAAa,EAAE;AACb0L,MAAAA,SAAS,EAAE,KADE;AAEbC,MAAAA,UAAU,EAAE,KAAA;AAFC,KAhGF;AAoGblL,IAAAA,QAAQ,EAAE;AACRiC,MAAAA,QAAQ,EAAE,KADF;AAERzB,MAAAA,KAAK,EAAE,kBAFC;AAGRkI,MAAAA,OAAO,EAAE,KAAA;AAHD,KApGG;AAyGbpB,IAAAA,eAAe,EAAE;AACf9G,MAAAA,KAAK,EAAE,kBADQ;AAEfmI,MAAAA,OAAO,EAAE,EAAA;AAFM,KAAA;AAzGJ,GAAA;AAnBF,CAAf;;ACGA,MAAMwC,QAAQ,GAAG,+BAAjB;;AAEA,MAAMC,QAAQ,GAAG,sCAAjB;;AAEA,MAAMC,kBAAkB,GAAG,IAAIC,MAAJ,CACxB,UAASH,QAAS,CAAA,UAAA,EAAYC,QAAS,CAAA,YAAA,EAAcD,QAAS,CAAcC,YAAAA,EAAAA,QAAS,CAD7D,EAAA,CAAA,EAEzB,GAFyB,CAA3B,CAAA;AAKO,MAAMG,wBAAwB,GAAIlJ,MAAD,IACtCA,MAAM,CAACmJ,OAAP,CAAeH,kBAAf,EAAmC,EAAnC,EAAuCG,OAAvC,CAA+C,MAA/C,EAAuD,GAAvD,CAAA,CAA4DA,OAA5D,CAAoE,OAApE,EAA6E,GAA7E,CADK,CAAA;AAGA,MAAMxQ,qBAAqB,GAAIC,UAAD,IAAgB;AACnD,EAAA,MAAMC,GAAG,GAAGJ,QAAQ,CAACK,aAAT,CAAuB,KAAvB,CAAZ,CAAA;AAEAD,EAAAA,GAAG,CAACE,SAAJ,GAAgBH,UAAU,CAACI,IAAX,EAAhB,CAAA;AAEA,EAAA,OAAOH,GAAP,CAAA;AACD,CANM,CAAA;AAQA,MAAMuQ,aAAa,GAAIpJ,MAAD,IAAY;AACvC,EAAA,MAAMqJ,SAAS,GAAGH,wBAAwB,CAAClJ,MAAD,CAA1C,CAAA;AACA,EAAA,MAAMgC,WAAW,GAAGrJ,qBAAqB,CAAC0Q,SAAD,CAAzC,CAAA;AAEArH,EAAAA,WAAW,CAACQ,gBAAZ,CAA6B,+BAA7B,CAA8DE,CAAAA,OAA9D,CAAuE4G,CAAD,IAAO;AAC3EA,IAAAA,CAAC,CAACC,WAAF,CAAe,CAAA,EAAA,EAAID,CAAC,CAAC1G,OAAF,CAAUhI,KAAM,CAAnC,EAAA,CAAA,CAAA,CAAA;AACD,GAFD,CAAA,CAAA;AAIA,EAAOoH,OAAAA,WAAW,CAACjJ,SAAnB,CAAA;AACD,CATM,CAAA;AAWP,MAAMyQ,KAAK,GAAG,gBAAd,CAAA;AAEO,MAAMC,iBAAiB,GAAG,CAACzJ,MAAD,EAASlG,OAAT,KAAqB;AACpD,EAAA,MAAMuP,SAAS,GAAGH,wBAAwB,CAAClJ,MAAD,CAA1C,CAAA;;AACA,EAAM0J,MAAAA,YAAY,GAAI9O,KAAD,IAAW;AAC9B,IAAA,IAAI+O,aAAa,GAAG7P,OAAO,CAACc,KAAD,CAAP,IAAkBd,OAAO,CAACc,KAAD,CAAP,CAAeW,IAAf,CAAqB6H,CAAD,IAAOA,CAAC,CAAC9N,OAA7B,CAAtC,CAAA;;AAEA,IAAA,IAAI,CAACqU,aAAD,IAAkB,CAACA,aAAa,CAACnU,KAArC,EAA4C;AAC1CmU,MAAAA,aAAa,GAAG;AACdC,QAAAA,EAAE,EAAE,EADU;AAEdpU,QAAAA,KAAK,EAAE,EAFO;AAGd2I,QAAAA,KAAK,EAAE,EAAA;AAHO,OAAhB,CAAA;AAKD,KAAA;;AAED,IAAQ,OAAA,CAAA,8CAAA,EAAgDvD,KAAM,CAAgBiP,cAAAA,EAAAA,MAAM,CAClFF,aAAa,CAACxL,KADoE,CAElF,CAFF,SAAA,CAAA,CAAA;AAGD,GAdD,CAAA;;AAgBA,EAAOkL,OAAAA,SAAS,CAACF,OAAV,CAAkBK,KAAlB,EAAyB,CAACM,KAAD,EAAQC,CAAR,KAAc;AAC5C,IAAOL,OAAAA,YAAY,CAACK,CAAD,CAAnB,CAAA;AACD,GAFM,CAAP,CAAA;AAGD,CArBM;;ACnBP,MAAMC,GAAG,GAAGC,KAAK,CAAC,2BAAD,CAAjB,CAAA;AAEe,MAAMC,cAAN,SAA6BC,WAA7B,CAAyC;AAiBtDC,EAAAA,WAAW,GAAG;AACZ,IAAA,KAAA,EAAA,CAAA;AACA,IAAA,IAAA,CAAKC,MAAL,GAAcH,cAAc,CAACI,YAAf,EAAd,CAAA;AACA,IAAA,IAAA,CAAKC,cAAL,GAAsBC,gBAAgB,CAAChH,aAAvC,CAAA;AACA,IAAKtC,IAAAA,CAAAA,cAAL,GAAsB,IAAKA,CAAAA,cAAL,CAAoBuJ,IAApB,CAAyB,IAAzB,CAAtB,CAAA;AACA,IAAKnG,IAAAA,CAAAA,sBAAL,GAA8B,IAAKA,CAAAA,sBAAL,CAA4BmG,IAA5B,CAAiC,IAAjC,CAA9B,CAAA;AACD,GAAA;;AAEQ,EAALtJ,IAAAA,KAAK,CAACmI,CAAD,EAAI;AACX,IAAA,IAAA,CAAKe,MAAL,GAAcH,cAAc,CAACI,YAAf,CAA4BhB,CAA5B,CAAd,CAAA;;AACA,IAAA,IAAA,CAAKoB,OAAL,EAAA,CAAA;AACD,GAAA;;AAEgB,EAAblH,IAAAA,aAAa,CAACJ,CAAD,EAAI;AAAA,IAAA,IAAA,WAAA,CAAA;;AACnB,IAAKmH,IAAAA,CAAAA,cAAL,GAAsBI,QAAQ,CAACvH,CAAD,EAAIoH,gBAAgB,CAAChH,aAArB,CAA9B,CADmB;AAInB;AACA;AACA;;AACA,IAAA,IAAA,CAAA,WAAA,GAAIJ,CAAC,CAACzF,QAAN,KAAI,IAAA,IAAA,WAAA,CAAY0I,OAAhB,EAAyB;AAAA,MAAA,IAAA,kBAAA,EAAA,qBAAA,CAAA;;AACvB,MAAIjD,IAAAA,CAAAA,kBAAAA,GAAAA,CAAC,CAAC6B,eAAN,KAAA,IAAA,IAAA,CAAA,qBAAA,GAAI,mBAAmBqB,OAAvB,KAAA,IAAA,IAAI,qBAA4B7K,CAAAA,MAAhC,EAAwC;AACtC,QAAA,IAAA,CAAK4O,MAAL,CAAY1M,QAAZ,GAAuByF,CAAC,CAAC6B,eAAF,CAAkBqB,OAAlB,CAA0B,CAA1B,CAAA,CAA6B9Q,KAApD,CAAA;AACD,OAAA;AACF,KAJD,MAIO,IAAI4N,CAAC,CAACzF,QAAF,CAAWiC,QAAX,IAAuB,IAAKyK,CAAAA,MAAL,CAAY1M,QAAvC,EAAiD;AACtD,MAAA,IAAA,CAAK4M,cAAL,CAAoB5M,QAApB,CAA6B0I,OAA7B,GAAuC,IAAvC,CAAA;;AAEA,MAAA,IAAI,CAAC,IAAKkE,CAAAA,cAAL,CAAoBtF,eAApB,CAAoCqB,OAArC,IAAgD,CAAC,IAAA,CAAKiE,cAAL,CAAoBtF,eAApB,CAAoCqB,OAApC,CAA4C7K,MAAjG,EAAyG;AACvG,QAAA,IAAA,CAAK8O,cAAL,CAAoBtF,eAApB,CAAoCqB,OAApC,GAA8C,EAA9C,CAAA;AACD,OALqD;AAQtD;;;AACA,MAAI,IAAA,CAAC,KAAKiE,cAAL,CAAoBtF,eAApB,CAAoCqB,OAApC,CAA4C/K,IAA5C,CAAiDqP,MAAM,IAAIA,MAAM,CAACpV,KAAP,KAAiB,KAAK6U,MAAL,CAAY1M,QAAxF,CAAL,EAAwG;AACtG,QAAA,IAAA,CAAK4M,cAAL,CAAoBtF,eAApB,CAAoCqB,OAApC,CAA4CtC,IAA5C,CAAiD;AAC/CxO,UAAAA,KAAK,EAAE,IAAK6U,CAAAA,MAAL,CAAY1M,QAD4B;AAE/CQ,UAAAA,KAAK,EAAE,IAAKkM,CAAAA,MAAL,CAAY1M,QAAAA;AAF4B,SAAjD,CAAA,CAAA;AAID,OAAA;AACF,KAfM,MAeA;AACL,MAAO,OAAA,IAAA,CAAK0M,MAAL,CAAY1M,QAAnB,CAAA;AACD,KAAA;;AAED,IAAA,IAAA,CAAK+M,OAAL,EAAA,CAAA;AACD,GAAA;;AAEmB,EAAhBnD,IAAAA,gBAAgB,CAAC+B,CAAD,EAAI;AACtB,IAAKuB,IAAAA,CAAAA,iBAAL,GAAyBvB,CAAzB,CAAA;;AACA,IAAA,IAAA,CAAKoB,OAAL,EAAA,CAAA;AACD,GAAA;;AAEDI,EAAAA,oBAAoB,CAACC,KAAD,EAAQ;AAC1B,IAAA,MAAMC,UAAU,GAAG,CAAC,CAACD,KAArB,CAAA;AAEA,IAAKE,IAAAA,CAAAA,aAAL,CAAmB,IAAIC,iBAAJ,CAAsB,IAAKb,CAAAA,MAA3B,EAAmCW,UAAnC,CAAnB,CAAA,CAAA;AACD,GAAA;;AAED9J,EAAAA,cAAc,CAACiK,CAAD,EAAIJ,KAAJ,EAAW;AACvB,IAAA,IAAA,CAAKV,MAAL,GAAcH,cAAc,CAACI,YAAf,CAA4Ba,CAA5B,CAAd,CAAA;;AACA,IAAA,IAAA,CAAKT,OAAL,EAAA,CAAA;;AACA,IAAKI,IAAAA,CAAAA,oBAAL,CAA0BC,KAA1B,CAAA,CAAA;AACD,GAAA;;AAEDzG,EAAAA,sBAAsB,CAAClB,CAAD,EAAI;AACxB,IAAKmH,IAAAA,CAAAA,cAAL,GAAsBnH,CAAtB,CAAA;;AACA,IAAA,IAAA,CAAKsH,OAAL,EAAA,CAAA;AACD,GAAA;AAED;;;AACAU,EAAAA,WAAW,CAACC,OAAD,EAAU;AACnB,IAAA,IAAA,CAAKJ,aAAL,CAAmB,IAAIK,gBAAJ,CAAqBD,OAArB,CAAnB,CAAA,CAAA;AACD,GAAA;;AAEDE,EAAAA,aAAa,CAACC,GAAD,EAAMC,IAAN,EAAY;AACvB,IAAKR,IAAAA,CAAAA,aAAL,CAAmB,IAAIS,gBAAJ,CAAqBF,GAArB,EAA0BC,IAA1B,CAAnB,CAAA,CAAA;AACD,GAAA;;AAEDE,EAAAA,WAAW,CAACN,OAAD,EAAU;AACnB,IAAA,IAAA,CAAKJ,aAAL,CAAmB,IAAIW,gBAAJ,CAAqBP,OAArB,CAAnB,CAAA,CAAA;AACD,GAAA;;AAEDQ,EAAAA,aAAa,CAACL,GAAD,EAAMC,IAAN,EAAY;AACvB,IAAKR,IAAAA,CAAAA,aAAL,CAAmB,IAAIa,gBAAJ,CAAqBN,GAArB,EAA0BC,IAA1B,CAAnB,CAAA,CAAA;AACD,GAAA;;AAEDf,EAAAA,OAAO,GAAG;AACRV,IAAAA,GAAG,CAAC,SAAD,CAAH,CAAA;AACA,IAAA,IAAI/N,OAAO,gBAAGtH,KAAK,CAACmE,aAAN,CAAoB+H,MAApB,EAA0B;AACtCM,MAAAA,KAAK,EAAE,IAAA,CAAKkJ,MAD0B;AAEtC7G,MAAAA,aAAa,EAAE,IAAA,CAAK+G,cAFkB;AAGtCrJ,MAAAA,cAAc,EAAE,IAAA,CAAKA,cAHiB;AAItCoD,MAAAA,sBAAsB,EAAE,IAAA,CAAKA,sBAJS;AAKtCiD,MAAAA,gBAAgB,EAAE,IAAA,CAAKsD,iBALe;AAMtCtG,MAAAA,YAAY,EAAE;AACZiD,QAAAA,GAAG,EAAE,IAAK4D,CAAAA,WAAL,CAAiBX,IAAjB,CAAsB,IAAtB,CADO;AAEZhD,QAAAA,MAAM,EAAE,IAAA,CAAK8D,aAAL,CAAmBd,IAAnB,CAAwB,IAAxB,CAAA;AAFI,OANwB;AAUtCxN,MAAAA,kBAAkB,EAAE;AAClBuK,QAAAA,GAAG,EAAE,IAAKmE,CAAAA,WAAL,CAAiBlB,IAAjB,CAAsB,IAAtB,CADa;AAElBhD,QAAAA,MAAM,EAAE,IAAA,CAAKoE,aAAL,CAAmBpB,IAAnB,CAAwB,IAAxB,CAAA;AAFU,OAAA;AAVkB,KAA1B,CAAd,CAAA;AAeA5N,IAAAA,QAAQ,CAACzH,MAAT,CAAgB6G,OAAhB,EAAyB,IAAzB,CAAA,CAAA;AACD,GAAA;;AAxHqD,CAAA;;AAAnCiO,eACZI,eAAe,CAACnJ,KAAK,GAAG,EAAT,KAAgB;AACpC,EAAA,MAAM4K,SAAS,GACVvB,QAAAA,CAAAA,EAAAA,EAAAA,gBAAgB,CAACrJ,KADP,EAEVA,KAFU,CAAf,CAAA;;AAIA,EAAA,MAAMa,WAAW,GAAGb,KAAK,CAACa,WAAN,IAAqByH,iBAAiB,CAACsC,SAAS,CAAC/L,MAAX,EAAmB+L,SAAS,CAACjS,OAA7B,CAA1D,CAAA;AACA,EAAA,MAAMkG,MAAM,GAAGoJ,aAAa,CAACpH,WAAD,CAA5B,CAAA;AAEA,EAAA,OAAA,QAAA,CAAA,EAAA,EACK+J,SADL,EAAA;AAEE/J,IAAAA,WAFF;AAGEhC,IAAAA,MAAAA;AACA;;AAJF,GAAA,CAAA,CAAA;AAMD;;;;"}
|
package/esm/controller.js
DELETED
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
import map from 'lodash/map';
|
|
2
|
-
import reduce from 'lodash/reduce';
|
|
3
|
-
import isEmpty from 'lodash/isEmpty';
|
|
4
|
-
import { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';
|
|
5
|
-
import forEach from 'lodash/forEach';
|
|
6
|
-
|
|
7
|
-
function _extends() {
|
|
8
|
-
_extends = Object.assign || function (target) {
|
|
9
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
10
|
-
var source = arguments[i];
|
|
11
|
-
|
|
12
|
-
for (var key in source) {
|
|
13
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
14
|
-
target[key] = source[key];
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return target;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
return _extends.apply(this, arguments);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
var defaults = {
|
|
26
|
-
alternateResponse: {},
|
|
27
|
-
choiceRationaleEnabled: true,
|
|
28
|
-
choices: {},
|
|
29
|
-
disabled: false,
|
|
30
|
-
displayType: 'block',
|
|
31
|
-
markup: '',
|
|
32
|
-
mode: 'gather',
|
|
33
|
-
prompt: '',
|
|
34
|
-
promptEnabled: true,
|
|
35
|
-
rationale: '',
|
|
36
|
-
rationaleEnabled: true,
|
|
37
|
-
shuffle: true,
|
|
38
|
-
studentInstructionsEnabled: true,
|
|
39
|
-
teacherInstructions: '',
|
|
40
|
-
teacherInstructionsEnabled: true,
|
|
41
|
-
toolbarEditorPosition: 'bottom'
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const getAllCorrectResponses = ({
|
|
45
|
-
choices,
|
|
46
|
-
alternateResponse
|
|
47
|
-
}) => {
|
|
48
|
-
alternateResponse = alternateResponse || {};
|
|
49
|
-
const correctAnswers = {};
|
|
50
|
-
forEach(choices, (respArea, key) => {
|
|
51
|
-
if (!correctAnswers[key]) {
|
|
52
|
-
correctAnswers[key] = [];
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (respArea) {
|
|
56
|
-
respArea.forEach(choice => {
|
|
57
|
-
if (choice.correct) {
|
|
58
|
-
correctAnswers[key].push(choice.value);
|
|
59
|
-
|
|
60
|
-
if (alternateResponse[key]) {
|
|
61
|
-
correctAnswers[key] = [...correctAnswers[key], ...alternateResponse[key]];
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
return correctAnswers;
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
const getFeedback = correct => {
|
|
71
|
-
if (correct) {
|
|
72
|
-
return 'correct';
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return 'incorrect';
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
const normalize = question => _extends({}, defaults, question);
|
|
79
|
-
/**
|
|
80
|
-
*
|
|
81
|
-
* @param {*} question
|
|
82
|
-
* @param {*} session
|
|
83
|
-
* @param {*} env
|
|
84
|
-
* @param {*} updateSession - optional - a function that will set the properties passed into it on the session.
|
|
85
|
-
*/
|
|
86
|
-
|
|
87
|
-
function model(question, session, env, updateSession) {
|
|
88
|
-
return new Promise(async resolve => {
|
|
89
|
-
const normalizedQuestion = normalize(question);
|
|
90
|
-
const {
|
|
91
|
-
value = {}
|
|
92
|
-
} = session || {};
|
|
93
|
-
let choices = reduce(normalizedQuestion.choices, (obj, area, key) => {
|
|
94
|
-
obj[key] = map(area, choice => choice);
|
|
95
|
-
return obj;
|
|
96
|
-
}, {});
|
|
97
|
-
let feedback = {};
|
|
98
|
-
|
|
99
|
-
if (env.mode === 'evaluate') {
|
|
100
|
-
const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);
|
|
101
|
-
const respAreaLength = Object.keys(allCorrectResponses).length;
|
|
102
|
-
let correctResponses = 0;
|
|
103
|
-
|
|
104
|
-
for (let i = 0; i < respAreaLength; i++) {
|
|
105
|
-
const result = reduce(allCorrectResponses, (obj, choices, key) => {
|
|
106
|
-
const answer = value && value[key] || '';
|
|
107
|
-
const correctChoice = choices[i] || '';
|
|
108
|
-
const isCorrect = answer && correctChoice && correctChoice === answer;
|
|
109
|
-
obj.feedback[key] = getFeedback(isCorrect);
|
|
110
|
-
|
|
111
|
-
if (isCorrect) {
|
|
112
|
-
obj.correctResponses += 1;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return obj;
|
|
116
|
-
}, {
|
|
117
|
-
correctResponses: 0,
|
|
118
|
-
feedback: {}
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
if (result.correctResponses >= correctResponses) {
|
|
122
|
-
correctResponses = result.correctResponses;
|
|
123
|
-
feedback = result.feedback;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
if (result.correctResponses === respAreaLength) {
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);
|
|
133
|
-
|
|
134
|
-
if (!lockChoiceOrder) {
|
|
135
|
-
const keys = Object.keys(choices);
|
|
136
|
-
let i;
|
|
137
|
-
|
|
138
|
-
for (i = 0; i < keys.length; i++) {
|
|
139
|
-
const key = keys[i];
|
|
140
|
-
choices[key] = await getShuffledChoices(choices[key], session, updateSession, 'value');
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
let teacherInstructions = null;
|
|
145
|
-
let rationale = null;
|
|
146
|
-
const choicesWillNullRationales = (Object.keys(choices) || []).reduce((acc, currentValue) => {
|
|
147
|
-
acc[currentValue] = (choices[currentValue] || []).map(choice => _extends({}, choice, {
|
|
148
|
-
rationale: null
|
|
149
|
-
}));
|
|
150
|
-
return acc;
|
|
151
|
-
}, {});
|
|
152
|
-
|
|
153
|
-
if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
|
|
154
|
-
rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
|
|
155
|
-
teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
|
|
156
|
-
choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;
|
|
157
|
-
} else {
|
|
158
|
-
rationale = null;
|
|
159
|
-
teacherInstructions = null;
|
|
160
|
-
choices = choicesWillNullRationales;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
const out = {
|
|
164
|
-
disabled: env.mode !== 'gather',
|
|
165
|
-
mode: env.mode,
|
|
166
|
-
prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,
|
|
167
|
-
displayType: normalizedQuestion.displayType,
|
|
168
|
-
markup: normalizedQuestion.markup,
|
|
169
|
-
choices,
|
|
170
|
-
feedback,
|
|
171
|
-
responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,
|
|
172
|
-
rationale,
|
|
173
|
-
teacherInstructions,
|
|
174
|
-
language: normalizedQuestion.language,
|
|
175
|
-
extraCSSRules: normalizedQuestion.extraCSSRules
|
|
176
|
-
};
|
|
177
|
-
resolve(out);
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
const getScore = (config, session) => {
|
|
181
|
-
const {
|
|
182
|
-
value = {}
|
|
183
|
-
} = session || {};
|
|
184
|
-
const maxScore = config && config.choices ? Object.keys(config.choices).length : 0;
|
|
185
|
-
const allCorrectResponses = getAllCorrectResponses(config);
|
|
186
|
-
let correctCount = 0;
|
|
187
|
-
|
|
188
|
-
for (let i = 0; i < maxScore; i++) {
|
|
189
|
-
const result = reduce(allCorrectResponses, (total, choices, key) => {
|
|
190
|
-
const answer = value && value[key] || '';
|
|
191
|
-
const correctChoice = choices[i] || '';
|
|
192
|
-
|
|
193
|
-
if (correctChoice && answer && correctChoice === answer) {
|
|
194
|
-
return total;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
return total - 1;
|
|
198
|
-
}, maxScore);
|
|
199
|
-
|
|
200
|
-
if (result > correctCount) {
|
|
201
|
-
correctCount = result;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
if (result === maxScore) {
|
|
205
|
-
break;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
const str = (correctCount / maxScore).toFixed(2);
|
|
210
|
-
return parseFloat(str);
|
|
211
|
-
};
|
|
212
|
-
/**
|
|
213
|
-
*
|
|
214
|
-
* The score is partial by default for checkbox mode, allOrNothing for radio mode.
|
|
215
|
-
* To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =
|
|
216
|
-
* false. the value in `env` will override the value in `model`.
|
|
217
|
-
* @param {Object} model - the main model
|
|
218
|
-
* @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)
|
|
219
|
-
* @param {*} session
|
|
220
|
-
* @param {Object} env
|
|
221
|
-
* @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides
|
|
222
|
-
* `model.partialScoring`.
|
|
223
|
-
*/
|
|
224
|
-
|
|
225
|
-
function outcome(model, session, env = {}) {
|
|
226
|
-
return new Promise(resolve => {
|
|
227
|
-
if (!session || isEmpty(session)) {
|
|
228
|
-
resolve({
|
|
229
|
-
score: 0,
|
|
230
|
-
empty: true
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
const partialScoringEnabled = partialScoring.enabled(model, env);
|
|
235
|
-
const score = getScore(model, session);
|
|
236
|
-
resolve({
|
|
237
|
-
score: partialScoringEnabled ? score : Math.floor(score),
|
|
238
|
-
empty: false
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
const createCorrectResponseSession = (question, env) => {
|
|
243
|
-
return new Promise(resolve => {
|
|
244
|
-
if (env.mode !== 'evaluate' && env.role === 'instructor') {
|
|
245
|
-
const {
|
|
246
|
-
choices
|
|
247
|
-
} = question;
|
|
248
|
-
const value = {};
|
|
249
|
-
|
|
250
|
-
if (choices) {
|
|
251
|
-
Object.keys(choices).forEach((key, i) => {
|
|
252
|
-
const correctChoices = choices[key] && choices[key].filter(c => c.correct);
|
|
253
|
-
value[i] = correctChoices && correctChoices[0].value;
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
resolve({
|
|
258
|
-
id: '1',
|
|
259
|
-
value
|
|
260
|
-
});
|
|
261
|
-
} else {
|
|
262
|
-
resolve(null);
|
|
263
|
-
}
|
|
264
|
-
});
|
|
265
|
-
}; // remove all html tags
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
const getContent = html => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
|
|
269
|
-
|
|
270
|
-
const validate = (model = {}, config = {}) => {
|
|
271
|
-
const {
|
|
272
|
-
markup,
|
|
273
|
-
choices
|
|
274
|
-
} = model;
|
|
275
|
-
const {
|
|
276
|
-
maxResponseAreas,
|
|
277
|
-
maxResponseAreaChoices
|
|
278
|
-
} = config;
|
|
279
|
-
const errors = {};
|
|
280
|
-
['teacherInstructions', 'prompt', 'rationale'].forEach(field => {
|
|
281
|
-
var _config$field;
|
|
282
|
-
|
|
283
|
-
if ((_config$field = config[field]) != null && _config$field.required && !getContent(model[field])) {
|
|
284
|
-
errors[field] = 'This field is required.';
|
|
285
|
-
}
|
|
286
|
-
});
|
|
287
|
-
const nbOfResponseAreas = ((markup || '').match(/\{\{(\d+)\}\}/g) || []).length;
|
|
288
|
-
|
|
289
|
-
if (nbOfResponseAreas > maxResponseAreas) {
|
|
290
|
-
errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;
|
|
291
|
-
} else if (nbOfResponseAreas < 1) {
|
|
292
|
-
errors.responseAreasError = 'There should be defined at least 1 response area.';
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
(Object.keys(choices) || []).forEach(choiceKey => {
|
|
296
|
-
if (choices[choiceKey] && choices[choiceKey].length > maxResponseAreaChoices) {
|
|
297
|
-
errors.responseAreaChoicesError = `No more than ${maxResponseAreaChoices} choices per response area should be defined.`;
|
|
298
|
-
}
|
|
299
|
-
});
|
|
300
|
-
return errors;
|
|
301
|
-
};
|
|
302
|
-
|
|
303
|
-
export { createCorrectResponseSession, getScore, model, normalize, outcome, validate };
|
|
304
|
-
//# sourceMappingURL=controller.js.map
|
package/esm/controller.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sources":["../controller/src/defaults.js","../controller/src/utils.js","../controller/src/index.js"],"sourcesContent":["export default {\n alternateResponse: {},\n choiceRationaleEnabled: true,\n choices: {},\n disabled: false,\n displayType: 'block',\n markup: '',\n mode: 'gather',\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n shuffle: true,\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n};\n","import forEach from 'lodash/forEach';\n\nexport const getAllCorrectResponses = ({ choices, alternateResponse }) => {\n alternateResponse = alternateResponse || {};\n const correctAnswers = {};\n\n forEach(choices, (respArea, key) => {\n if (!correctAnswers[key]) {\n correctAnswers[key] = [];\n }\n\n if (respArea) {\n respArea.forEach((choice) => {\n if (choice.correct) {\n correctAnswers[key].push(choice.value);\n\n if (alternateResponse[key]) {\n correctAnswers[key] = [...correctAnswers[key], ...alternateResponse[key]];\n }\n }\n });\n }\n });\n\n return correctAnswers;\n};\n","import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport isEmpty from 'lodash/isEmpty';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport defaults from './defaults';\n\nimport { getAllCorrectResponses } from './utils';\n\nconst getFeedback = (correct) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const { value = {} } = session || {};\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {},\n );\n\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect = answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} },\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n const keys = Object.keys(choices);\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n choices[key] = await getShuffledChoices(choices[key], session, updateSession, 'value');\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce((acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n }, {});\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;\n } else {\n rationale = null;\n teacherInstructions = null;\n choices = choicesWillNullRationales;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n rationale,\n teacherInstructions,\n language: normalizedQuestion.language,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n resolve(out);\n });\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore = config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === answer) {\n return total;\n }\n\n return total - 1;\n },\n maxScore,\n );\n\n if (result > correctCount) {\n correctCount = result;\n }\n\n if (result === maxScore) {\n break;\n }\n }\n\n const str = (correctCount / maxScore).toFixed(2);\n\n return parseFloat(str);\n};\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices = choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { markup, choices } = model;\n const { maxResponseAreas, maxResponseAreaChoices } = config;\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n const nbOfResponseAreas = ((markup || '').match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be defined at least 1 response area.';\n }\n\n (Object.keys(choices) || []).forEach((choiceKey) => {\n if (choices[choiceKey] && choices[choiceKey].length > maxResponseAreaChoices) {\n errors.responseAreaChoicesError = `No more than ${maxResponseAreaChoices} choices per response area should be defined.`;\n }\n });\n\n return errors;\n};\n"],"names":["alternateResponse","choiceRationaleEnabled","choices","disabled","displayType","markup","mode","prompt","promptEnabled","rationale","rationaleEnabled","shuffle","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","getAllCorrectResponses","correctAnswers","forEach","respArea","key","choice","correct","push","value","getFeedback","normalize","question","defaults","model","session","env","updateSession","Promise","resolve","normalizedQuestion","reduce","obj","area","map","feedback","allCorrectResponses","respAreaLength","Object","keys","length","correctResponses","i","result","answer","correctChoice","isCorrect","lockChoiceOrder","lockChoices","getShuffledChoices","choicesWillNullRationales","acc","currentValue","role","out","responseCorrect","getScore","undefined","language","extraCSSRules","config","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","isEmpty","score","empty","partialScoringEnabled","partialScoring","enabled","Math","floor","createCorrectResponseSession","correctChoices","filter","c","id","getContent","html","replace","validate","maxResponseAreas","maxResponseAreaChoices","errors","field","required","nbOfResponseAreas","match","responseAreasError","choiceKey","responseAreaChoicesError"],"mappings":"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"}
|