@digabi/exam-engine-core 18.3.2 → 19.0.4-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. package/dist/__tests__/results/ResultsContext.test.js +9 -9
  2. package/dist/__tests__/results/ResultsContext.test.js.map +1 -1
  3. package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
  4. package/dist/components/grading/AnnotationPopup.d.ts +11 -0
  5. package/dist/components/grading/AnnotationPopup.d.ts.map +1 -0
  6. package/dist/components/grading/AnnotationPopup.js +20 -0
  7. package/dist/components/grading/AnnotationPopup.js.map +1 -0
  8. package/dist/components/grading/AnswerWithAnnotations.d.ts +11 -0
  9. package/dist/components/grading/AnswerWithAnnotations.d.ts.map +1 -0
  10. package/dist/components/grading/AnswerWithAnnotations.js +15 -0
  11. package/dist/components/grading/AnswerWithAnnotations.js.map +1 -0
  12. package/dist/components/grading/ChoiceAnswer.d.ts +6 -0
  13. package/dist/components/grading/ChoiceAnswer.d.ts.map +1 -0
  14. package/dist/components/grading/ChoiceAnswer.js +57 -0
  15. package/dist/components/grading/ChoiceAnswer.js.map +1 -0
  16. package/dist/components/grading/DropdownAnswer.d.ts +6 -0
  17. package/dist/components/grading/DropdownAnswer.d.ts.map +1 -0
  18. package/dist/components/grading/DropdownAnswer.js +43 -0
  19. package/dist/components/grading/DropdownAnswer.js.map +1 -0
  20. package/dist/components/grading/Grading.d.ts +4 -0
  21. package/dist/components/grading/Grading.d.ts.map +1 -0
  22. package/dist/components/grading/Grading.js +79 -0
  23. package/dist/components/grading/Grading.js.map +1 -0
  24. package/dist/components/grading/GradingAnswer.d.ts +14 -0
  25. package/dist/components/grading/GradingAnswer.d.ts.map +1 -0
  26. package/dist/components/grading/GradingAnswer.js +169 -0
  27. package/dist/components/grading/GradingAnswer.js.map +1 -0
  28. package/dist/components/grading/MultiLineAnswer.d.ts +14 -0
  29. package/dist/components/grading/MultiLineAnswer.d.ts.map +1 -0
  30. package/dist/components/grading/MultiLineAnswer.js +61 -0
  31. package/dist/components/grading/MultiLineAnswer.js.map +1 -0
  32. package/dist/components/grading/Question.d.ts +5 -0
  33. package/dist/components/grading/Question.d.ts.map +1 -0
  34. package/dist/components/grading/Question.js +23 -0
  35. package/dist/components/grading/Question.js.map +1 -0
  36. package/dist/components/grading/QuestionTitle.d.ts +6 -0
  37. package/dist/components/grading/QuestionTitle.d.ts.map +1 -0
  38. package/dist/components/grading/QuestionTitle.js +21 -0
  39. package/dist/components/grading/QuestionTitle.js.map +1 -0
  40. package/dist/components/grading/Results.d.ts +15 -0
  41. package/dist/components/grading/Results.d.ts.map +1 -0
  42. package/dist/components/grading/Results.js +77 -0
  43. package/dist/components/grading/Results.js.map +1 -0
  44. package/dist/components/grading/ScoredTextAnswer.d.ts +6 -0
  45. package/dist/components/grading/ScoredTextAnswer.d.ts.map +1 -0
  46. package/dist/components/grading/ScoredTextAnswer.js +22 -0
  47. package/dist/components/grading/ScoredTextAnswer.js.map +1 -0
  48. package/dist/components/grading/Section.d.ts +5 -0
  49. package/dist/components/grading/Section.d.ts.map +1 -0
  50. package/dist/components/grading/Section.js +18 -0
  51. package/dist/components/grading/Section.js.map +1 -0
  52. package/dist/components/grading/SingleLineAnswer.d.ts +12 -0
  53. package/dist/components/grading/SingleLineAnswer.d.ts.map +1 -0
  54. package/dist/components/grading/SingleLineAnswer.js +23 -0
  55. package/dist/components/grading/SingleLineAnswer.js.map +1 -0
  56. package/dist/components/grading/TextAnswer.d.ts +7 -0
  57. package/dist/components/grading/TextAnswer.d.ts.map +1 -0
  58. package/dist/components/grading/TextAnswer.js +53 -0
  59. package/dist/components/grading/TextAnswer.js.map +1 -0
  60. package/dist/components/grading/editAnnotations.d.ts +27 -0
  61. package/dist/components/grading/editAnnotations.d.ts.map +1 -0
  62. package/dist/components/grading/editAnnotations.js +170 -0
  63. package/dist/components/grading/editAnnotations.js.map +1 -0
  64. package/dist/components/grading/internal/AnnotationList.d.ts +5 -0
  65. package/dist/components/grading/internal/AnnotationList.d.ts.map +1 -0
  66. package/dist/components/grading/internal/AnnotationList.js +43 -0
  67. package/dist/components/grading/internal/AnnotationList.js.map +1 -0
  68. package/dist/components/grading/internal/QuestionAutoScore.d.ts +10 -0
  69. package/dist/components/grading/internal/QuestionAutoScore.d.ts.map +1 -0
  70. package/dist/components/grading/internal/QuestionAutoScore.js +17 -0
  71. package/dist/components/grading/internal/QuestionAutoScore.js.map +1 -0
  72. package/dist/components/grading/internal/QuestionManualScore.d.ts +12 -0
  73. package/dist/components/grading/internal/QuestionManualScore.d.ts.map +1 -0
  74. package/dist/components/grading/internal/QuestionManualScore.js +61 -0
  75. package/dist/components/grading/internal/QuestionManualScore.js.map +1 -0
  76. package/dist/components/grading/internal/QuestionScoresContainer.d.ts +10 -0
  77. package/dist/components/grading/internal/QuestionScoresContainer.d.ts.map +1 -0
  78. package/dist/components/grading/internal/QuestionScoresContainer.js +12 -0
  79. package/dist/components/grading/internal/QuestionScoresContainer.js.map +1 -0
  80. package/dist/components/results/Results2.d.ts +15 -0
  81. package/dist/components/results/Results2.d.ts.map +1 -0
  82. package/dist/components/results/Results2.js +79 -0
  83. package/dist/components/results/Results2.js.map +1 -0
  84. package/dist/components/results/internal/AnnotationList.js +1 -1
  85. package/dist/components/results/internal/AnnotationList.js.map +1 -1
  86. package/dist/editAnnotations.d.ts +2 -0
  87. package/dist/editAnnotations.d.ts.map +1 -0
  88. package/dist/editAnnotations.js +8 -0
  89. package/dist/editAnnotations.js.map +1 -0
  90. package/dist/editAnnotationsOld.d.ts +3 -0
  91. package/dist/editAnnotationsOld.d.ts.map +1 -0
  92. package/dist/editAnnotationsOld.js +340 -0
  93. package/dist/editAnnotationsOld.js.map +1 -0
  94. package/dist/index.d.ts +3 -1
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +2 -1
  97. package/dist/index.js.map +1 -1
  98. package/dist/main-bundle.js +1 -1
  99. package/dist/main.css +1 -1
  100. package/dist/renderAnnotations.d.ts +5 -1
  101. package/dist/renderAnnotations.d.ts.map +1 -1
  102. package/dist/renderAnnotations.js +52 -36
  103. package/dist/renderAnnotations.js.map +1 -1
  104. package/dist/url.d.ts +1 -1
  105. package/dist/url.js +1 -1
  106. package/package.json +2 -2
@@ -0,0 +1,340 @@
1
+ import $ from 'jquery';
2
+ import * as _ from 'lodash-es';
3
+ import * as Bacon from 'baconjs';
4
+ import * as answerAnnotationsRendering from './annotations-rendering';
5
+ $.fn.asEventStream = Bacon.$.asEventStream;
6
+ const ESC = 27;
7
+ const ENTER = 13;
8
+ let isMouseDown = false;
9
+ export function setupAnnotationEditing($containerElement, saveAnnotation, localize, isCensor) {
10
+ setupAnnotationAddition($containerElement);
11
+ setupAnnotationRemoval($containerElement);
12
+ function setupAnnotationRemoval($answers) {
13
+ $answers.on('mousedown', '.remove-annotation-area', (event) => {
14
+ removeAnnotation($(event.target).closest('.answerAnnotation'));
15
+ return false;
16
+ });
17
+ function removeAnnotation($annotationElem) {
18
+ // eslint-disable-line no-shadow
19
+ const $answerText = $annotationElem.closest('.answerText');
20
+ const annotationIndex = Number($annotationElem.data('index'));
21
+ const annotations = answerAnnotationsRendering.get($answerText);
22
+ const updatedAnnotations = _.without(annotations, annotations[annotationIndex]);
23
+ saveAnnotation(getAnswerId($answerText), updatedAnnotations);
24
+ answerAnnotationsRendering.renderAnnotationsForElement($answerText, updatedAnnotations);
25
+ }
26
+ }
27
+ function setupAnnotationAddition($containerElement) {
28
+ preventDragSelectionFromOverlappingCensorAnswerText($containerElement);
29
+ $containerElement
30
+ .asEventStream('mouseup')
31
+ .filter(hasTextSelectedInAnswerText)
32
+ .map(() => {
33
+ $('.remove-annotation-popup').remove();
34
+ return getBrowserTextSelection().getRangeAt(0);
35
+ })
36
+ .filter((range) => {
37
+ if (selectionHasNothingToUnderline(range)) {
38
+ return false;
39
+ }
40
+ const $container = $(range.commonAncestorContainer);
41
+ return (!$container.hasClass('add-annotation-popup') &&
42
+ ($container.hasClass('answerText') || $container.parents('div.answerText').toArray().length > 0) &&
43
+ !$container.parents('.answer').hasClass('autograded'));
44
+ })
45
+ .flatMapLatest(openPopupFromRange)
46
+ .onValue(addAnnotation);
47
+ $containerElement
48
+ .asEventStream('mousedown')
49
+ .filter((e) => !$(e.target).closest('.add-annotation-text').length && !$(e.target).closest('.annotation-message').length)
50
+ .merge($containerElement.asEventStream('keyup').filter((e) => e.keyCode === ESC))
51
+ .onValue(() => {
52
+ getBrowserTextSelection().removeAllRanges();
53
+ // Render annotations for all answers that have popup open. This clears the popup and annotation that was merged for rendering before opening popup.
54
+ $('.add-annotation-popup').each((index, popup) => {
55
+ answerAnnotationsRendering.renderAnnotationsForElement($(popup).closest('.answerText'));
56
+ });
57
+ });
58
+ $containerElement
59
+ .asEventStream('mousedown', 'img, .attachmentWrapper')
60
+ .filter((e) => e.button === 0)
61
+ .doAction(() => {
62
+ isMouseDown = true;
63
+ return false;
64
+ })
65
+ .flatMapLatest((se) => {
66
+ const $target = $(se.currentTarget);
67
+ // We have attached `mousedown` to `.attachmentWrapper` as well, so
68
+ // the target isn't necessarily the image itself.
69
+ const $image = $target.is('img') ? $target : $target.find('img');
70
+ const $targetAnswerText = $image.on('dragstart', false).closest('.answerText');
71
+ const attachmentIndex = $targetAnswerText.find('img').index($image);
72
+ // The event will come from the topmost `.answerText`, which isn't
73
+ // necessarily the correct one. So we need to find the correct
74
+ // `.answerText` to add the annotation to.
75
+ const $answerText = $targetAnswerText
76
+ .parent()
77
+ .children('.answerText' + (isCensor ? '.is_censor' : '.is_pregrading'));
78
+ const $attachmentWrapper = answerAnnotationsRendering.wrapAttachment($answerText.find(`img:eq(${attachmentIndex})`));
79
+ let $shape;
80
+ const bbox = $attachmentWrapper[0].getBoundingClientRect();
81
+ const startX = clamp((se.clientX - bbox.left) / bbox.width);
82
+ const startY = clamp((se.clientY - bbox.top) / bbox.height);
83
+ const lineThresholdPx = 10;
84
+ const mouseUpE = $(window)
85
+ .asEventStream('mouseup')
86
+ .doAction(() => {
87
+ isMouseDown = false;
88
+ });
89
+ return $(window)
90
+ .asEventStream('mousemove')
91
+ .takeUntil(mouseUpE)
92
+ .flatMapLatest((e) => {
93
+ const currentX = clamp((e.clientX - bbox.left) / bbox.width);
94
+ const currentY = clamp((e.clientY - bbox.top) / bbox.height);
95
+ const isVerticalLine = Math.abs(se.clientX - e.clientX) <= lineThresholdPx;
96
+ const isHorizontalLine = Math.abs(se.clientY - e.clientY) <= lineThresholdPx;
97
+ const type = isVerticalLine || isHorizontalLine ? 'line' : 'rect';
98
+ switch (type) {
99
+ case 'rect': {
100
+ return {
101
+ type: 'rect',
102
+ attachmentIndex,
103
+ x: Math.min(startX, currentX),
104
+ y: Math.min(startY, currentY),
105
+ width: Math.abs(currentX - startX),
106
+ height: Math.abs(currentY - startY),
107
+ };
108
+ }
109
+ case 'line': {
110
+ return {
111
+ type: 'line',
112
+ attachmentIndex,
113
+ x1: isVerticalLine ? startX : Math.min(startX, currentX),
114
+ y1: isHorizontalLine ? startY : Math.min(startY, currentY),
115
+ x2: isVerticalLine ? startX : Math.max(startX, currentX),
116
+ y2: isHorizontalLine ? startY : Math.max(startY, currentY),
117
+ };
118
+ }
119
+ }
120
+ })
121
+ .doAction((shape) => {
122
+ const doAppend = $shape == null;
123
+ $shape = answerAnnotationsRendering.renderShape(shape, $shape);
124
+ if (doAppend) {
125
+ $attachmentWrapper.append($shape);
126
+ }
127
+ })
128
+ .last()
129
+ .flatMapLatest((shape) => {
130
+ const $answerText = $attachmentWrapper.closest('.answerText');
131
+ const attachmentWrapperPosition = $attachmentWrapper.position();
132
+ const shapePosition = $shape.position();
133
+ const popupCss = {
134
+ position: 'absolute',
135
+ top: attachmentWrapperPosition.top + shapePosition.top + $shape.height() + 4,
136
+ left: attachmentWrapperPosition.left + shapePosition.left,
137
+ };
138
+ return openPopup($answerText, shape, '', popupCss);
139
+ });
140
+ })
141
+ .onValue(addAnnotation);
142
+ function clamp(n) {
143
+ return _.clamp(n, 0, 1);
144
+ }
145
+ function selectionHasNothingToUnderline(range) {
146
+ const contents = range.cloneContents();
147
+ let hasImages = _.includes(_.toArray(contents.childNodes).map((x) => x.tagName), 'IMG');
148
+ return contents.textContent.length === 0 && !hasImages;
149
+ }
150
+ function preventDragSelectionFromOverlappingCensorAnswerText($containerElem) {
151
+ if (isCensor) {
152
+ $containerElem.on('mousedown mouseup', (e) => {
153
+ $('.answerText.is_censor .answerAnnotation').toggleClass('no-mouse', e.type === 'mousedown');
154
+ });
155
+ }
156
+ }
157
+ function getPopupCss(range) {
158
+ const container = $(range.startContainer).closest('.answer-text-container').get(0);
159
+ const boundingRect = range.getBoundingClientRect();
160
+ if (container) {
161
+ const containerRect = container.getBoundingClientRect();
162
+ return {
163
+ position: 'absolute',
164
+ top: boundingRect.bottom - containerRect.top + 10,
165
+ left: boundingRect.left - containerRect.left,
166
+ };
167
+ }
168
+ else {
169
+ return {
170
+ position: 'absolute',
171
+ top: 0,
172
+ left: 0,
173
+ };
174
+ }
175
+ }
176
+ function openPopupFromRange(range) {
177
+ const popupCss = getPopupCss(range);
178
+ let $answerText = $(range.startContainer).closest('.answerText');
179
+ const annotationPos = answerAnnotationsRendering.calculatePosition($answerText, range);
180
+ if (isCensor && !$answerText.hasClass('is_censor')) {
181
+ // render annotations to censor answer text element even if event cought via double click
182
+ $answerText = $(range.startContainer).closest('.answer').find('.answerText.is_censor');
183
+ }
184
+ const messages = answerAnnotationsRendering.getOverlappingMessages($answerText, annotationPos.startIndex, annotationPos.length);
185
+ const renderedMessages = messages.reduceRight((msg, str) => `${str} / ${msg}`, '');
186
+ getBrowserTextSelection().removeAllRanges();
187
+ // Merge and render annotation to show what range it will contain if annotation gets added
188
+ // Merged annotation not saved yet, so on cancel previous state is rendered
189
+ const mergedAnnotations = answerAnnotationsRendering.mergeAnnotation($answerText, annotationPos);
190
+ answerAnnotationsRendering.renderGivenAnnotations($answerText, mergedAnnotations);
191
+ return openPopup($answerText, annotationPos, renderedMessages, popupCss);
192
+ }
193
+ function openPopup($answerText, annotation, message, popupCss) {
194
+ const $popup = localize($('<div class="popup add-annotation-popup"><input class="add-annotation-text" type="text" value=""/><i class="fa fa-comment"></i><button data-i18n="arpa.annotate">Merkitse</button></div>'));
195
+ $popup.get(0).firstChild.value = message;
196
+ $answerText.append($popup);
197
+ $popup.css(popupCss);
198
+ $popup.find('input').focus();
199
+ return $popup
200
+ .find('button')
201
+ .asEventStream('mousedown')
202
+ .merge($popup.asEventStream('keyup').filter((e) => e.keyCode === ENTER))
203
+ .map(() => {
204
+ const message = $('.add-annotation-text').val().trim();
205
+ return {
206
+ $answerText,
207
+ annotation: _.assign({}, annotation, { message }),
208
+ };
209
+ });
210
+ }
211
+ function addAnnotation(annotationData) {
212
+ if (annotationData.annotation.length > 0 || annotationData.annotation.type != null) {
213
+ const data = answerAnnotationsRendering.get(annotationData.$answerText);
214
+ const annotations = data
215
+ ? answerAnnotationsRendering.mergeAnnotation(annotationData.$answerText, annotationData.annotation)
216
+ : [annotationData.annotation];
217
+ saveAnnotation(getAnswerId(annotationData.$answerText), annotations);
218
+ answerAnnotationsRendering.renderAnnotationsForElement(annotationData.$answerText, annotations);
219
+ }
220
+ }
221
+ }
222
+ }
223
+ export function setupAnnotationDisplaying($answers, isCensor) {
224
+ let fadeOutDelayTimeout = void 0;
225
+ $answers.on('mouseenter', '.answerAnnotation', (event) => {
226
+ const $annotation = $(event.target);
227
+ if (isMouseDown || addAnnotationPopupIsVisible() || hasTextSelectedInAnswerText()) {
228
+ return;
229
+ }
230
+ clearTimeout(fadeOutDelayTimeout);
231
+ if (popupAlreadyShownForCurrentAnnotation(event)) {
232
+ $annotation.find('.remove-annotation-popup').stop().show().css({ opacity: 1 });
233
+ }
234
+ else {
235
+ clearAllRemovePopups();
236
+ renderRemovePopup(event);
237
+ }
238
+ });
239
+ $answers.on('mouseleave', '.answerAnnotation', (event) => {
240
+ fadeOutDelayTimeout = setTimeout(() => {
241
+ removeRemovePopup(event);
242
+ }, 400);
243
+ });
244
+ function popupAlreadyShownForCurrentAnnotation(event) {
245
+ const mouseOverAnnotationElem = $(event.target).closest('.answerAnnotation')[0];
246
+ const popupsCurrentAnnotationElem = $('.remove-annotation-popup:visible').closest('.answerAnnotation')[0];
247
+ return (event &&
248
+ mouseOverAnnotationElem &&
249
+ popupsCurrentAnnotationElem &&
250
+ mouseOverAnnotationElem.isEqualNode(popupsCurrentAnnotationElem));
251
+ }
252
+ function addAnnotationPopupIsVisible() {
253
+ return $('.add-annotation-popup').is(':visible');
254
+ }
255
+ function clearAllRemovePopups() {
256
+ $('.remove-annotation-popup').remove();
257
+ }
258
+ function renderRemovePopup(event) {
259
+ const $annotation = $(event.currentTarget);
260
+ const $popup = popupWithMessage($annotation, $annotation.attr('data-message'));
261
+ $annotation.append($popup);
262
+ // Calculate limits for preventing overflow on either side
263
+ const left = inlineLeftOffset(event.currentTarget);
264
+ const pageMargin = 8;
265
+ const leftLimit = -left + pageMargin;
266
+ const rightLimit = $(window).width() - left - $popup.outerWidth() - pageMargin;
267
+ const css = {
268
+ left: Math.min(Math.max(mouseOffsetLeft(event) - $popup.outerWidth() / 2, leftLimit), rightLimit),
269
+ };
270
+ $popup.css(css);
271
+ $popup.fadeIn();
272
+ }
273
+ function removeRemovePopup(event) {
274
+ const $annotation = $(event.target).closest('.answerAnnotation');
275
+ const popup = $annotation.find('.remove-annotation-popup');
276
+ popup.fadeOut(100, () => {
277
+ popup.remove();
278
+ });
279
+ }
280
+ function popupWithMessage($annotation, message) {
281
+ const $messageContainer = $('<span class="popup remove-annotation-popup"><span class="annotation-message"></span></span>');
282
+ $messageContainer.find('.annotation-message').text(message || '-');
283
+ if (isAllowedToRemoveAnnotation($annotation)) {
284
+ $messageContainer.append('<i class="fa fa-times-circle remove-annotation-area"></i>');
285
+ }
286
+ return $messageContainer;
287
+ }
288
+ function isAllowedToRemoveAnnotation($annotation) {
289
+ return isPregradingAndScoringEnabled() || isCensorAndOwnAnnotation();
290
+ function isPregradingAndScoringEnabled() {
291
+ const $body = $('body');
292
+ return $body.hasClass('is_pregrading') && !$body.hasClass('preview');
293
+ }
294
+ function isCensorAndOwnAnnotation() {
295
+ return isCensor && $annotation.closest('.answerText').hasClass('is_censor');
296
+ }
297
+ }
298
+ function inlineLeftOffset(element) {
299
+ return $(element).offsetParent().offset().left + element.offsetLeft;
300
+ }
301
+ function mouseOffsetLeft(mousemove) {
302
+ const annotation = mousemove.target;
303
+ const annotationLeftOffsetFromPageEdge = inlineLeftOffset(annotation);
304
+ return mousemove.pageX - annotationLeftOffsetFromPageEdge;
305
+ }
306
+ }
307
+ function getAnswerId($answerText) {
308
+ return $answerText.closest('.answer').attr('data-answer-id');
309
+ }
310
+ function getBrowserTextSelection() {
311
+ return typeof window.getSelection !== 'undefined'
312
+ ? window.getSelection()
313
+ : typeof document.selection !== 'undefined' && document.selection.type === 'Text'
314
+ ? document.selection
315
+ : undefined;
316
+ }
317
+ function hasTextSelectedInAnswerText() {
318
+ const selection = getBrowserTextSelection();
319
+ return (selection && selectionInAnswerText(selection) && (isRangeSelection(selection) || textSelectedInRange(selection)));
320
+ function selectionInAnswerText(sel) {
321
+ if (sel.type === 'None' || sel.type === 'Caret' || sel.rangeCount === 0)
322
+ return false;
323
+ const $startContainer = $(sel.getRangeAt(0).startContainer);
324
+ return (sel.rangeCount &&
325
+ $startContainer.closest('.answerText').length === 1 &&
326
+ $startContainer.closest('.remove-annotation-popup').length === 0);
327
+ }
328
+ function isRangeSelection(sel) {
329
+ return _.get(sel, 'type', '') === 'Range';
330
+ }
331
+ function textSelectedInRange(sel) {
332
+ const range = sel.getRangeAt(0);
333
+ return (_.get(sel, 'rangeCount', 0) > 0 &&
334
+ (range.toString().length > 0 || isParentContainer(range.startContainer) || isParentContainer(range.endContainer)));
335
+ }
336
+ function isParentContainer(container) {
337
+ return container && container.classList && container.classList.contains('answerText');
338
+ }
339
+ }
340
+ //# sourceMappingURL=editAnnotationsOld.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editAnnotationsOld.js","sourceRoot":"","sources":["../src/editAnnotationsOld.js"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,KAAK,CAAC,MAAM,WAAW,CAAA;AAC9B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,0BAA0B,MAAM,yBAAyB,CAAA;AAErE,CAAC,CAAC,EAAE,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,aAAa,CAAA;AAC1C,MAAM,GAAG,GAAG,EAAE,CAAA;AACd,MAAM,KAAK,GAAG,EAAE,CAAA;AAChB,IAAI,WAAW,GAAG,KAAK,CAAA;AAEvB,MAAM,UAAU,sBAAsB,CAAC,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ;IAC1F,uBAAuB,CAAC,iBAAiB,CAAC,CAAA;IAC1C,sBAAsB,CAAC,iBAAiB,CAAC,CAAA;IAEzC,SAAS,sBAAsB,CAAC,QAAQ;QACtC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,yBAAyB,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5D,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAA;YAC9D,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;QAEF,SAAS,gBAAgB,CAAC,eAAe;YACvC,gCAAgC;YAChC,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;YAC1D,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;YAC7D,MAAM,WAAW,GAAG,0BAA0B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAC/D,MAAM,kBAAkB,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,CAAA;YAC/E,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,CAAA;YAC5D,0BAA0B,CAAC,2BAA2B,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;QACzF,CAAC;IACH,CAAC;IAED,SAAS,uBAAuB,CAAC,iBAAiB;QAChD,mDAAmD,CAAC,iBAAiB,CAAC,CAAA;QACtE,iBAAiB;aACd,aAAa,CAAC,SAAS,CAAC;aACxB,MAAM,CAAC,2BAA2B,CAAC;aACnC,GAAG,CAAC,GAAG,EAAE;YACR,CAAC,CAAC,0BAA0B,CAAC,CAAC,MAAM,EAAE,CAAA;YACtC,OAAO,uBAAuB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAChD,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YAChB,IAAI,8BAA8B,CAAC,KAAK,CAAC,EAAE;gBACzC,OAAO,KAAK,CAAA;aACb;YACD,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;YACnD,OAAO,CACL,CAAC,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBAC5C,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChG,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CACtD,CAAA;QACH,CAAC,CAAC;aACD,aAAa,CAAC,kBAAkB,CAAC;aACjC,OAAO,CAAC,aAAa,CAAC,CAAA;QAEzB,iBAAiB;aACd,aAAa,CAAC,WAAW,CAAC;aAC1B,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,MAAM,CACjH;aACA,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC;aAChF,OAAO,CAAC,GAAG,EAAE;YACZ,uBAAuB,EAAE,CAAC,eAAe,EAAE,CAAA;YAC3C,oJAAoJ;YACpJ,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC/C,0BAA0B,CAAC,2BAA2B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAA;YACzF,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEJ,iBAAiB;aACd,aAAa,CAAC,WAAW,EAAE,yBAAyB,CAAC;aACrD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;aAC7B,QAAQ,CAAC,GAAG,EAAE;YACb,WAAW,GAAG,IAAI,CAAA;YAClB,OAAO,KAAK,CAAA;QACd,CAAC,CAAC;aACD,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE;YACpB,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA;YACnC,mEAAmE;YACnE,iDAAiD;YACjD,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAChE,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;YAC9E,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACnE,kEAAkE;YAClE,8DAA8D;YAC9D,0CAA0C;YAC1C,MAAM,WAAW,GAAG,iBAAiB;iBAClC,MAAM,EAAE;iBACR,QAAQ,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAA;YACzE,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,cAAc,CAClE,WAAW,CAAC,IAAI,CAAC,UAAU,eAAe,GAAG,CAAC,CAC/C,CAAA;YACD,IAAI,MAAM,CAAA;YAEV,MAAM,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAA;YAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;YAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;YAE3D,MAAM,eAAe,GAAG,EAAE,CAAA;YAE1B,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;iBACvB,aAAa,CAAC,SAAS,CAAC;iBACxB,QAAQ,CAAC,GAAG,EAAE;gBACb,WAAW,GAAG,KAAK,CAAA;YACrB,CAAC,CAAC,CAAA;YAEJ,OAAO,CAAC,CAAC,MAAM,CAAC;iBACb,aAAa,CAAC,WAAW,CAAC;iBAC1B,SAAS,CAAC,QAAQ,CAAC;iBACnB,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,eAAe,CAAA;gBAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,eAAe,CAAA;gBAC5E,MAAM,IAAI,GAAG,cAAc,IAAI,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;gBAEjE,QAAQ,IAAI,EAAE;oBACZ,KAAK,MAAM,CAAC,CAAC;wBACX,OAAO;4BACL,IAAI,EAAE,MAAM;4BACZ,eAAe;4BACf,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;4BAC7B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;4BAC7B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC;4BAClC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC;yBACpC,CAAA;qBACF;oBACD,KAAK,MAAM,CAAC,CAAC;wBACX,OAAO;4BACL,IAAI,EAAE,MAAM;4BACZ,eAAe;4BACf,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;4BACxD,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;4BAC1D,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;4BACxD,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;yBAC3D,CAAA;qBACF;iBACF;YACH,CAAC,CAAC;iBACD,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;gBAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,IAAI,CAAA;gBAC/B,MAAM,GAAG,0BAA0B,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBAC9D,IAAI,QAAQ,EAAE;oBACZ,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;iBAClC;YACH,CAAC,CAAC;iBACD,IAAI,EAAE;iBACN,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvB,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;gBAC7D,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAA;gBAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;gBACvC,MAAM,QAAQ,GAAG;oBACf,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAC5E,IAAI,EAAE,yBAAyB,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;iBAC1D,CAAA;gBACD,OAAO,SAAS,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;YACpD,CAAC,CAAC,CAAA;QACN,CAAC,CAAC;aACD,OAAO,CAAC,aAAa,CAAC,CAAA;QAEzB,SAAS,KAAK,CAAC,CAAC;YACd,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACzB,CAAC;QAED,SAAS,8BAA8B,CAAC,KAAK;YAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,EAAE,CAAA;YACtC,IAAI,SAAS,GAAG,CAAC,CAAC,QAAQ,CACxB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EACpD,KAAK,CACN,CAAA;YACD,OAAO,QAAQ,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAA;QACxD,CAAC;QAED,SAAS,mDAAmD,CAAC,cAAc;YACzE,IAAI,QAAQ,EAAE;gBACZ,cAAc,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE;oBAC3C,CAAC,CAAC,yCAAyC,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;gBAC9F,CAAC,CAAC,CAAA;aACH;QACH,CAAC;QAED,SAAS,WAAW,CAAC,KAAK;YACxB,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAClF,MAAM,YAAY,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAA;YAClD,IAAI,SAAS,EAAE;gBACb,MAAM,aAAa,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAA;gBACvD,OAAO;oBACL,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,GAAG,EAAE;oBACjD,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;iBAC7C,CAAA;aACF;iBAAM;gBACL,OAAO;oBACL,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,CAAC;oBACN,IAAI,EAAE,CAAC;iBACR,CAAA;aACF;QACH,CAAC;QAED,SAAS,kBAAkB,CAAC,KAAK;YAC/B,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;YAEnC,IAAI,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;YAChE,MAAM,aAAa,GAAG,0BAA0B,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;YAEtF,IAAI,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gBAClD,yFAAyF;gBACzF,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;aACvF;YAED,MAAM,QAAQ,GAAG,0BAA0B,CAAC,sBAAsB,CAChE,WAAW,EACX,aAAa,CAAC,UAAU,EACxB,aAAa,CAAC,MAAM,CACrB,CAAA;YACD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;YAElF,uBAAuB,EAAE,CAAC,eAAe,EAAE,CAAA;YAE3C,0FAA0F;YAC1F,2EAA2E;YAC3E,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,eAAe,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;YAChG,0BAA0B,CAAC,sBAAsB,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAA;YAEjF,OAAO,SAAS,CAAC,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAA;QAC1E,CAAC;QAED,SAAS,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ;YAC3D,MAAM,MAAM,GAAG,QAAQ,CACrB,CAAC,CACC,yLAAyL,CAC1L,CACF,CAAA;YACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAA;YACxC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACpB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAA;YAE5B,OAAO,MAAM;iBACV,IAAI,CAAC,QAAQ,CAAC;iBACd,aAAa,CAAC,WAAW,CAAC;iBAC1B,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;iBACvE,GAAG,CAAC,GAAG,EAAE;gBACR,MAAM,OAAO,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;gBACtD,OAAO;oBACL,WAAW;oBACX,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC;iBAClD,CAAA;YACH,CAAC,CAAC,CAAA;QACN,CAAC;QAED,SAAS,aAAa,CAAC,cAAc;YACnC,IAAI,cAAc,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,EAAE;gBAClF,MAAM,IAAI,GAAG,0BAA0B,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;gBACvE,MAAM,WAAW,GAAG,IAAI;oBACtB,CAAC,CAAC,0BAA0B,CAAC,eAAe,CAAC,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC;oBACnG,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;gBAC/B,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAA;gBACpE,0BAA0B,CAAC,2BAA2B,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;aAChG;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAQ,EAAE,QAAQ;IAC1D,IAAI,mBAAmB,GAAG,KAAK,CAAC,CAAA;IAChC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;QACvD,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,WAAW,IAAI,2BAA2B,EAAE,IAAI,2BAA2B,EAAE,EAAE;YACjF,OAAM;SACP;QACD,YAAY,CAAC,mBAAmB,CAAC,CAAA;QACjC,IAAI,qCAAqC,CAAC,KAAK,CAAC,EAAE;YAChD,WAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;SAC/E;aAAM;YACL,oBAAoB,EAAE,CAAA;YACtB,iBAAiB,CAAC,KAAK,CAAC,CAAA;SACzB;IACH,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;QACvD,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC,EAAE,GAAG,CAAC,CAAA;IACT,CAAC,CAAC,CAAA;IAEF,SAAS,qCAAqC,CAAC,KAAK;QAClD,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/E,MAAM,2BAA2B,GAAG,CAAC,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAA;QACzG,OAAO,CACL,KAAK;YACL,uBAAuB;YACvB,2BAA2B;YAC3B,uBAAuB,CAAC,WAAW,CAAC,2BAA2B,CAAC,CACjE,CAAA;IACH,CAAC;IAED,SAAS,2BAA2B;QAClC,OAAO,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAClD,CAAC;IAED,SAAS,oBAAoB;QAC3B,CAAC,CAAC,0BAA0B,CAAC,CAAC,MAAM,EAAE,CAAA;IACxC,CAAC;IAED,SAAS,iBAAiB,CAAC,KAAK;QAC9B,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;QAC9E,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAE1B,0DAA0D;QAC1D,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAClD,MAAM,UAAU,GAAG,CAAC,CAAA;QACpB,MAAM,SAAS,GAAG,CAAC,IAAI,GAAG,UAAU,CAAA;QACpC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,UAAU,CAAA;QAE9E,MAAM,GAAG,GAAG;YACV,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC;SAClG,CAAA;QAED,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACf,MAAM,CAAC,MAAM,EAAE,CAAA;IACjB,CAAC;IAED,SAAS,iBAAiB,CAAC,KAAK;QAC9B,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;QAChE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QAC1D,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;YACtB,KAAK,CAAC,MAAM,EAAE,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,gBAAgB,CAAC,WAAW,EAAE,OAAO;QAC5C,MAAM,iBAAiB,GAAG,CAAC,CACzB,6FAA6F,CAC9F,CAAA;QACD,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,CAAA;QAClE,IAAI,2BAA2B,CAAC,WAAW,CAAC,EAAE;YAC5C,iBAAiB,CAAC,MAAM,CAAC,2DAA2D,CAAC,CAAA;SACtF;QACD,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED,SAAS,2BAA2B,CAAC,WAAW;QAC9C,OAAO,6BAA6B,EAAE,IAAI,wBAAwB,EAAE,CAAA;QAEpE,SAAS,6BAA6B;YACpC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;YACvB,OAAO,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACtE,CAAC;QAED,SAAS,wBAAwB;YAC/B,OAAO,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;IAED,SAAS,gBAAgB,CAAC,OAAO;QAC/B,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,UAAU,CAAA;IACrE,CAAC;IAED,SAAS,eAAe,CAAC,SAAS;QAChC,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAA;QACnC,MAAM,gCAAgC,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;QAErE,OAAO,SAAS,CAAC,KAAK,GAAG,gCAAgC,CAAA;IAC3D,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,WAAW;IAC9B,OAAO,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;AAC9D,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO,OAAO,MAAM,CAAC,YAAY,KAAK,WAAW;QAC/C,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE;QACvB,CAAC,CAAC,OAAO,QAAQ,CAAC,SAAS,KAAK,WAAW,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM;YACjF,CAAC,CAAC,QAAQ,CAAC,SAAS;YACpB,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED,SAAS,2BAA2B;IAClC,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAA;IAC3C,OAAO,CACL,SAAS,IAAI,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC,CACjH,CAAA;IAED,SAAS,qBAAqB,CAAC,GAAG;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QACrF,MAAM,eAAe,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;QAC3D,OAAO,CACL,GAAG,CAAC,UAAU;YACd,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC;YACnD,eAAe,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,MAAM,KAAK,CAAC,CACjE,CAAA;IACH,CAAC;IAED,SAAS,gBAAgB,CAAC,GAAG;QAC3B,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,OAAO,CAAA;IAC3C,CAAC;IAED,SAAS,mBAAmB,CAAC,GAAG;QAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC/B,OAAO,CACL,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC;YAC/B,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAClH,CAAA;IACH,CAAC;IAED,SAAS,iBAAiB,CAAC,SAAS;QAClC,OAAO,SAAS,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;IACvF,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,9 +2,10 @@ import '../src/css/main.less';
2
2
  import Attachments from './components/attachments/Attachments';
3
3
  import Exam from './components/exam/Exam';
4
4
  import GradingInstructions from './components/grading-instructions/GradingInstructions';
5
+ import Grading from './components/grading/Grading';
5
6
  import Results from './components/results/Results';
6
7
  import parseExam from './parser/parseExam';
7
- export { Attachments, Exam, GradingInstructions, Results, parseExam };
8
+ export { Attachments, Exam, Grading, GradingInstructions, Results, parseExam };
8
9
  export { ExamComponentProps } from './createRenderChildNodes';
9
10
  export * from './types/ExamAnswer';
10
11
  export * from './types/ExamServerAPI';
@@ -15,5 +16,6 @@ export interface ExamBundle {
15
16
  Exam: typeof Exam;
16
17
  parseExam: typeof parseExam;
17
18
  Results: typeof Results;
19
+ Grading: typeof Grading;
18
20
  }
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAA;AAC7B,OAAO,WAAW,MAAM,sCAAsC,CAAA;AAC9D,OAAO,IAAI,MAAM,wBAAwB,CAAA;AACzC,OAAO,mBAAmB,MAAM,uDAAuD,CAAA;AACvF,OAAO,OAAO,MAAM,8BAA8B,CAAA;AAClD,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,eAAe,CAAA;AAE7B,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,OAAO,WAAW,CAAA;IAC/B,IAAI,EAAE,OAAO,IAAI,CAAA;IACjB,SAAS,EAAE,OAAO,SAAS,CAAA;IAC3B,OAAO,EAAE,OAAO,OAAO,CAAA;CACxB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAA;AAC7B,OAAO,WAAW,MAAM,sCAAsC,CAAA;AAC9D,OAAO,IAAI,MAAM,wBAAwB,CAAA;AACzC,OAAO,mBAAmB,MAAM,uDAAuD,CAAA;AACvF,OAAO,OAAO,MAAM,8BAA8B,CAAA;AAClD,OAAO,OAAO,MAAM,8BAA8B,CAAA;AAClD,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,eAAe,CAAA;AAE7B,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,OAAO,WAAW,CAAA;IAC/B,IAAI,EAAE,OAAO,IAAI,CAAA;IACjB,SAAS,EAAE,OAAO,SAAS,CAAA;IAC3B,OAAO,EAAE,OAAO,OAAO,CAAA;IACvB,OAAO,EAAE,OAAO,OAAO,CAAA;CACxB"}
package/dist/index.js CHANGED
@@ -2,9 +2,10 @@ import '../src/css/main.less';
2
2
  import Attachments from './components/attachments/Attachments';
3
3
  import Exam from './components/exam/Exam';
4
4
  import GradingInstructions from './components/grading-instructions/GradingInstructions';
5
+ import Grading from './components/grading/Grading';
5
6
  import Results from './components/results/Results';
6
7
  import parseExam from './parser/parseExam';
7
- export { Attachments, Exam, GradingInstructions, Results, parseExam };
8
+ export { Attachments, Exam, Grading, GradingInstructions, Results, parseExam };
8
9
  export * from './types/ExamAnswer';
9
10
  export * from './types/ExamServerAPI';
10
11
  export * from './types/GradingStructure';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAA;AAC7B,OAAO,WAAW,MAAM,sCAAsC,CAAA;AAC9D,OAAO,IAAI,MAAM,wBAAwB,CAAA;AACzC,OAAO,mBAAmB,MAAM,uDAAuD,CAAA;AACvF,OAAO,OAAO,MAAM,8BAA8B,CAAA;AAClD,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;AAErE,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAA;AAC7B,OAAO,WAAW,MAAM,sCAAsC,CAAA;AAC9D,OAAO,IAAI,MAAM,wBAAwB,CAAA;AACzC,OAAO,mBAAmB,MAAM,uDAAuD,CAAA;AACvF,OAAO,OAAO,MAAM,8BAA8B,CAAA;AAClD,OAAO,OAAO,MAAM,8BAA8B,CAAA;AAClD,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;AAE9E,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,eAAe,CAAA"}