math-exercises 3.0.125 → 3.0.126

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.
Files changed (291) hide show
  1. package/lib/exercises/math/calcul/fractions/fractionsSumsPrimeDenominators.d.ts.map +1 -1
  2. package/lib/exercises/math/calcul/fractions/fractionsSumsPrimeDenominators.js +61 -1
  3. package/lib/exercises/math/calcul/mentalCaluls/index.d.ts +1 -0
  4. package/lib/exercises/math/calcul/mentalCaluls/index.d.ts.map +1 -1
  5. package/lib/exercises/math/calcul/mentalCaluls/index.js +1 -0
  6. package/lib/exercises/math/calcul/mentalCaluls/mentalProgramSolve.d.ts +15 -0
  7. package/lib/exercises/math/calcul/mentalCaluls/mentalProgramSolve.d.ts.map +1 -0
  8. package/lib/exercises/math/calcul/mentalCaluls/mentalProgramSolve.js +217 -0
  9. package/lib/exercises/math/calcul/ordering/compareA10N.d.ts +16 -0
  10. package/lib/exercises/math/calcul/ordering/compareA10N.d.ts.map +1 -0
  11. package/lib/exercises/math/calcul/ordering/compareA10N.js +327 -0
  12. package/lib/exercises/math/calcul/ordering/compareABUsingQuotient.d.ts +8 -0
  13. package/lib/exercises/math/calcul/ordering/compareABUsingQuotient.d.ts.map +1 -0
  14. package/lib/exercises/math/calcul/ordering/compareABUsingQuotient.js +221 -0
  15. package/lib/exercises/math/calcul/ordering/compareFracABWithFracAPlusCBPlusC.d.ts +9 -0
  16. package/lib/exercises/math/calcul/ordering/compareFracABWithFracAPlusCBPlusC.d.ts.map +1 -0
  17. package/lib/exercises/math/calcul/ordering/compareFracABWithFracAPlusCBPlusC.js +135 -0
  18. package/lib/exercises/math/calcul/ordering/compareFracAndDec.d.ts +29 -0
  19. package/lib/exercises/math/calcul/ordering/compareFracAndDec.d.ts.map +1 -0
  20. package/lib/exercises/math/calcul/ordering/compareFracAndDec.js +367 -0
  21. package/lib/exercises/math/calcul/ordering/comparePowersOfFracs.d.ts +12 -0
  22. package/lib/exercises/math/calcul/ordering/comparePowersOfFracs.d.ts.map +1 -0
  23. package/lib/exercises/math/calcul/ordering/comparePowersOfFracs.js +164 -0
  24. package/lib/exercises/math/calcul/ordering/compareWithSquareRoots.d.ts +9 -0
  25. package/lib/exercises/math/calcul/ordering/compareWithSquareRoots.d.ts.map +1 -0
  26. package/lib/exercises/math/calcul/ordering/compareWithSquareRoots.js +140 -0
  27. package/lib/exercises/math/calcul/ordering/index.d.ts +6 -0
  28. package/lib/exercises/math/calcul/ordering/index.d.ts.map +1 -1
  29. package/lib/exercises/math/calcul/ordering/index.js +6 -0
  30. package/lib/exercises/math/calcul/rounding/estimateAroundPow10NTimesAroundPow10N.d.ts +9 -0
  31. package/lib/exercises/math/calcul/rounding/estimateAroundPow10NTimesAroundPow10N.d.ts.map +1 -0
  32. package/lib/exercises/math/calcul/rounding/estimateAroundPow10NTimesAroundPow10N.js +84 -0
  33. package/lib/exercises/math/calcul/rounding/estimatePow10NPlusPow10MinusN.d.ts +8 -0
  34. package/lib/exercises/math/calcul/rounding/estimatePow10NPlusPow10MinusN.d.ts.map +1 -0
  35. package/lib/exercises/math/calcul/rounding/estimatePow10NPlusPow10MinusN.js +90 -0
  36. package/lib/exercises/math/calcul/rounding/index.d.ts +2 -0
  37. package/lib/exercises/math/calcul/rounding/index.d.ts.map +1 -1
  38. package/lib/exercises/math/calcul/rounding/index.js +2 -0
  39. package/lib/exercises/math/calculLitteral/equation/equationFromProblem.d.ts +13 -0
  40. package/lib/exercises/math/calculLitteral/equation/equationFromProblem.d.ts.map +1 -0
  41. package/lib/exercises/math/calculLitteral/equation/equationFromProblem.js +414 -0
  42. package/lib/exercises/math/calculLitteral/equation/index.d.ts +1 -0
  43. package/lib/exercises/math/calculLitteral/equation/index.d.ts.map +1 -1
  44. package/lib/exercises/math/calculLitteral/equation/index.js +1 -0
  45. package/lib/exercises/math/calculLitteral/factorisation/factorizeAX2PlusBX.d.ts +10 -0
  46. package/lib/exercises/math/calculLitteral/factorisation/factorizeAX2PlusBX.d.ts.map +1 -0
  47. package/lib/exercises/math/calculLitteral/factorisation/factorizeAX2PlusBX.js +70 -0
  48. package/lib/exercises/math/calculLitteral/factorisation/index.d.ts +1 -0
  49. package/lib/exercises/math/calculLitteral/factorisation/index.d.ts.map +1 -1
  50. package/lib/exercises/math/calculLitteral/factorisation/index.js +1 -0
  51. package/lib/exercises/math/calculLitteral/index.d.ts +2 -0
  52. package/lib/exercises/math/calculLitteral/index.d.ts.map +1 -1
  53. package/lib/exercises/math/calculLitteral/index.js +2 -0
  54. package/lib/exercises/math/calculLitteral/isolate/index.d.ts +2 -1
  55. package/lib/exercises/math/calculLitteral/isolate/index.d.ts.map +1 -1
  56. package/lib/exercises/math/calculLitteral/isolate/index.js +2 -1
  57. package/lib/exercises/math/calculLitteral/isolate/isolateUInInvXPlusInvYEqualsInvU.d.ts +8 -0
  58. package/lib/exercises/math/calculLitteral/isolate/isolateUInInvXPlusInvYEqualsInvU.d.ts.map +1 -0
  59. package/lib/exercises/math/calculLitteral/isolate/isolateUInInvXPlusInvYEqualsInvU.js +107 -0
  60. package/lib/exercises/math/calculLitteral/isolate/isolateXInInvXPlusInvYEqualsInvU.d.ts +7 -0
  61. package/lib/exercises/math/calculLitteral/isolate/isolateXInInvXPlusInvYEqualsInvU.d.ts.map +1 -0
  62. package/lib/exercises/math/calculLitteral/isolate/isolateXInInvXPlusInvYEqualsInvU.js +80 -0
  63. package/lib/exercises/math/calculLitteral/ordering/compareAMinusB.d.ts +10 -0
  64. package/lib/exercises/math/calculLitteral/ordering/compareAMinusB.d.ts.map +1 -0
  65. package/lib/exercises/math/calculLitteral/ordering/compareAMinusB.js +182 -0
  66. package/lib/exercises/math/calculLitteral/ordering/compareFromPiMinusFrac.d.ts +9 -0
  67. package/lib/exercises/math/calculLitteral/ordering/compareFromPiMinusFrac.d.ts.map +1 -0
  68. package/lib/exercises/math/calculLitteral/ordering/compareFromPiMinusFrac.js +144 -0
  69. package/lib/exercises/math/calculLitteral/ordering/index.d.ts +3 -0
  70. package/lib/exercises/math/calculLitteral/ordering/index.d.ts.map +1 -0
  71. package/lib/exercises/math/calculLitteral/ordering/index.js +2 -0
  72. package/lib/exercises/math/calculLitteral/simplifying/compareATimes0.d.ts +11 -0
  73. package/lib/exercises/math/calculLitteral/simplifying/compareATimes0.d.ts.map +1 -0
  74. package/lib/exercises/math/calculLitteral/simplifying/compareATimes0.js +120 -0
  75. package/lib/exercises/math/calculLitteral/simplifying/compareFracXA.d.ts +8 -0
  76. package/lib/exercises/math/calculLitteral/simplifying/compareFracXA.d.ts.map +1 -0
  77. package/lib/exercises/math/calculLitteral/simplifying/compareFracXA.js +67 -0
  78. package/lib/exercises/math/calculLitteral/simplifying/compareMinusA.d.ts +11 -0
  79. package/lib/exercises/math/calculLitteral/simplifying/compareMinusA.d.ts.map +1 -0
  80. package/lib/exercises/math/calculLitteral/simplifying/compareMinusA.js +114 -0
  81. package/lib/exercises/math/calculLitteral/simplifying/index.d.ts +5 -0
  82. package/lib/exercises/math/calculLitteral/simplifying/index.d.ts.map +1 -1
  83. package/lib/exercises/math/calculLitteral/simplifying/index.js +5 -0
  84. package/lib/exercises/math/calculLitteral/simplifying/pickSameAsAPercentOfB.d.ts +13 -0
  85. package/lib/exercises/math/calculLitteral/simplifying/pickSameAsAPercentOfB.d.ts.map +1 -0
  86. package/lib/exercises/math/calculLitteral/simplifying/pickSameAsAPercentOfB.js +125 -0
  87. package/lib/exercises/math/calculLitteral/simplifying/pickSameAsInverseOfFracAB.d.ts +14 -0
  88. package/lib/exercises/math/calculLitteral/simplifying/pickSameAsInverseOfFracAB.d.ts.map +1 -0
  89. package/lib/exercises/math/calculLitteral/simplifying/pickSameAsInverseOfFracAB.js +148 -0
  90. package/lib/exercises/math/calculLitteral/writing/writeLitExpFromFrenchExp.d.ts +5 -27
  91. package/lib/exercises/math/calculLitteral/writing/writeLitExpFromFrenchExp.d.ts.map +1 -1
  92. package/lib/exercises/math/calculLitteral/writing/writeLitExpFromFrenchExp.js +178 -241
  93. package/lib/exercises/math/conversion/index.d.ts +4 -0
  94. package/lib/exercises/math/conversion/index.d.ts.map +1 -1
  95. package/lib/exercises/math/conversion/index.js +4 -0
  96. package/lib/exercises/math/conversion/kmPerMinToKmPerHourConversion.d.ts +8 -0
  97. package/lib/exercises/math/conversion/kmPerMinToKmPerHourConversion.d.ts.map +1 -0
  98. package/lib/exercises/math/conversion/kmPerMinToKmPerHourConversion.js +98 -0
  99. package/lib/exercises/math/conversion/minutesToHours.d.ts +10 -0
  100. package/lib/exercises/math/conversion/minutesToHours.d.ts.map +1 -0
  101. package/lib/exercises/math/conversion/minutesToHours.js +150 -0
  102. package/lib/exercises/math/conversion/prefixToNumber.d.ts +15 -0
  103. package/lib/exercises/math/conversion/prefixToNumber.d.ts.map +1 -0
  104. package/lib/exercises/math/conversion/prefixToNumber.js +233 -0
  105. package/lib/exercises/math/conversion/secondsToHours.d.ts +10 -0
  106. package/lib/exercises/math/conversion/secondsToHours.d.ts.map +1 -0
  107. package/lib/exercises/math/conversion/secondsToHours.js +150 -0
  108. package/lib/exercises/math/dataRepresentations/barChartInterpreting.d.ts +50 -0
  109. package/lib/exercises/math/dataRepresentations/barChartInterpreting.d.ts.map +1 -0
  110. package/lib/exercises/math/dataRepresentations/barChartInterpreting.js +517 -0
  111. package/lib/exercises/math/dataRepresentations/boxPlotInterpreting.d.ts +7 -0
  112. package/lib/exercises/math/dataRepresentations/boxPlotInterpreting.d.ts.map +1 -0
  113. package/lib/exercises/math/dataRepresentations/boxPlotInterpreting.js +223 -0
  114. package/lib/exercises/math/dataRepresentations/cartesianGraphExtremaReading.d.ts +10 -0
  115. package/lib/exercises/math/dataRepresentations/cartesianGraphExtremaReading.d.ts.map +1 -0
  116. package/lib/exercises/math/dataRepresentations/cartesianGraphExtremaReading.js +139 -0
  117. package/lib/exercises/math/dataRepresentations/dataToGraphGraphToData.d.ts +8 -0
  118. package/lib/exercises/math/dataRepresentations/dataToGraphGraphToData.d.ts.map +1 -0
  119. package/lib/exercises/math/dataRepresentations/dataToGraphGraphToData.js +133 -0
  120. package/lib/exercises/math/dataRepresentations/graphReading.d.ts +8 -0
  121. package/lib/exercises/math/dataRepresentations/graphReading.d.ts.map +1 -0
  122. package/lib/exercises/math/dataRepresentations/graphReading.js +136 -0
  123. package/lib/exercises/math/dataRepresentations/halfPieChartCommenting.d.ts +18 -0
  124. package/lib/exercises/math/dataRepresentations/halfPieChartCommenting.d.ts.map +1 -0
  125. package/lib/exercises/math/dataRepresentations/halfPieChartCommenting.js +228 -0
  126. package/lib/exercises/math/dataRepresentations/halfPieChartReading.d.ts +8 -0
  127. package/lib/exercises/math/dataRepresentations/halfPieChartReading.d.ts.map +1 -0
  128. package/lib/exercises/math/dataRepresentations/halfPieChartReading.js +213 -0
  129. package/lib/exercises/math/dataRepresentations/histogramReading.d.ts +9 -0
  130. package/lib/exercises/math/dataRepresentations/histogramReading.d.ts.map +1 -0
  131. package/lib/exercises/math/dataRepresentations/histogramReading.js +163 -0
  132. package/lib/exercises/math/dataRepresentations/index.d.ts +10 -0
  133. package/lib/exercises/math/dataRepresentations/index.d.ts.map +1 -1
  134. package/lib/exercises/math/dataRepresentations/index.js +10 -0
  135. package/lib/exercises/math/dataRepresentations/plausibleGraph.d.ts +9 -0
  136. package/lib/exercises/math/dataRepresentations/plausibleGraph.d.ts.map +1 -0
  137. package/lib/exercises/math/dataRepresentations/plausibleGraph.js +145 -0
  138. package/lib/exercises/math/dataRepresentations/scatterPlotCommenting.d.ts +9 -0
  139. package/lib/exercises/math/dataRepresentations/scatterPlotCommenting.d.ts.map +1 -0
  140. package/lib/exercises/math/dataRepresentations/scatterPlotCommenting.js +308 -0
  141. package/lib/exercises/math/derivation/derivative/exp/expDerivativeFour.d.ts.map +1 -1
  142. package/lib/exercises/math/derivation/derivative/exp/expDerivativeFour.js +5 -6
  143. package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindX.d.ts +8 -0
  144. package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindX.d.ts.map +1 -0
  145. package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindX.js +103 -0
  146. package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindY.d.ts +8 -0
  147. package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindY.d.ts.map +1 -0
  148. package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindY.js +100 -0
  149. package/lib/exercises/math/functions/affines/drawAffineFromPointAndLeadingCoeff.d.ts +16 -0
  150. package/lib/exercises/math/functions/affines/drawAffineFromPointAndLeadingCoeff.d.ts.map +1 -0
  151. package/lib/exercises/math/functions/affines/drawAffineFromPointAndLeadingCoeff.js +215 -0
  152. package/lib/exercises/math/functions/affines/drawAffineFromProgCalc.d.ts +13 -0
  153. package/lib/exercises/math/functions/affines/drawAffineFromProgCalc.d.ts.map +1 -0
  154. package/lib/exercises/math/functions/affines/drawAffineFromProgCalc.js +206 -0
  155. package/lib/exercises/math/functions/affines/index.d.ts +7 -0
  156. package/lib/exercises/math/functions/affines/index.d.ts.map +1 -1
  157. package/lib/exercises/math/functions/affines/index.js +7 -0
  158. package/lib/exercises/math/functions/affines/recognizeExprAffine.d.ts +20 -0
  159. package/lib/exercises/math/functions/affines/recognizeExprAffine.d.ts.map +1 -0
  160. package/lib/exercises/math/functions/affines/recognizeExprAffine.js +284 -0
  161. package/lib/exercises/math/functions/affines/representationOfAffine.d.ts +13 -0
  162. package/lib/exercises/math/functions/affines/representationOfAffine.d.ts.map +1 -0
  163. package/lib/exercises/math/functions/affines/representationOfAffine.js +184 -0
  164. package/lib/exercises/math/functions/basics/coordsOfPointOnCurveFindY.d.ts +14 -0
  165. package/lib/exercises/math/functions/basics/coordsOfPointOnCurveFindY.d.ts.map +1 -0
  166. package/lib/exercises/math/functions/basics/coordsOfPointOnCurveFindY.js +216 -0
  167. package/lib/exercises/math/functions/basics/index.d.ts +1 -0
  168. package/lib/exercises/math/functions/basics/index.d.ts.map +1 -1
  169. package/lib/exercises/math/functions/basics/index.js +1 -0
  170. package/lib/exercises/math/functions/composition/functionComposition.d.ts +8 -0
  171. package/lib/exercises/math/functions/composition/functionComposition.d.ts.map +1 -0
  172. package/lib/exercises/math/functions/composition/functionComposition.js +238 -0
  173. package/lib/exercises/math/functions/composition/index.d.ts +2 -0
  174. package/lib/exercises/math/functions/composition/index.d.ts.map +1 -0
  175. package/lib/exercises/math/functions/composition/index.js +1 -0
  176. package/lib/exercises/math/functions/index.d.ts +1 -0
  177. package/lib/exercises/math/functions/index.d.ts.map +1 -1
  178. package/lib/exercises/math/functions/index.js +1 -0
  179. package/lib/exercises/math/geometry/angles/anglesUsingIsParallel.d.ts +23 -0
  180. package/lib/exercises/math/geometry/angles/anglesUsingIsParallel.d.ts.map +1 -0
  181. package/lib/exercises/math/geometry/angles/anglesUsingIsParallel.js +448 -0
  182. package/lib/exercises/math/geometry/angles/index.js +2 -0
  183. package/lib/exercises/math/geometry/angles/isParallelUsingAngles.d.ts +23 -0
  184. package/lib/exercises/math/geometry/angles/isParallelUsingAngles.d.ts.map +1 -0
  185. package/lib/exercises/math/geometry/angles/isParallelUsingAngles.js +402 -0
  186. package/lib/exercises/math/geometry/cartesian/placeAbscissOnSemiLine.d.ts +9 -6
  187. package/lib/exercises/math/geometry/cartesian/placeAbscissOnSemiLine.d.ts.map +1 -1
  188. package/lib/exercises/math/geometry/cartesian/placeAbscissOnSemiLine.js +140 -60
  189. package/lib/exercises/math/geometry/convexity/convexityQuadrinomialsGeo.js +1 -1
  190. package/lib/exercises/math/geometry/vectors/colinearity/colinearityFromPicture.d.ts.map +1 -1
  191. package/lib/exercises/math/geometry/vectors/colinearity/colinearityFromPicture.js +121 -104
  192. package/lib/exercises/math/geometry/vectors/vectorRepresentative.d.ts.map +1 -1
  193. package/lib/exercises/math/geometry/vectors/vectorRepresentative.js +3 -2
  194. package/lib/exercises/math/probaStat/basicProbas/index.d.ts +1 -0
  195. package/lib/exercises/math/probaStat/basicProbas/index.d.ts.map +1 -1
  196. package/lib/exercises/math/probaStat/basicProbas/index.js +1 -0
  197. package/lib/exercises/math/probaStat/basicProbas/possibleValuesForProba.d.ts +0 -1
  198. package/lib/exercises/math/probaStat/basicProbas/possibleValuesForProba.d.ts.map +1 -1
  199. package/lib/exercises/math/probaStat/basicProbas/possibleValuesForProba.js +42 -80
  200. package/lib/exercises/math/probaStat/conditionalProbaWriteFromFrench.d.ts +9 -0
  201. package/lib/exercises/math/probaStat/conditionalProbaWriteFromFrench.d.ts.map +1 -0
  202. package/lib/exercises/math/probaStat/conditionalProbaWriteFromFrench.js +217 -0
  203. package/lib/exercises/math/probaStat/index.d.ts +2 -0
  204. package/lib/exercises/math/probaStat/index.d.ts.map +1 -1
  205. package/lib/exercises/math/probaStat/index.js +2 -0
  206. package/lib/exercises/math/probaStat/probaAsSumOfProbas.d.ts +30 -0
  207. package/lib/exercises/math/probaStat/probaAsSumOfProbas.d.ts.map +1 -0
  208. package/lib/exercises/math/probaStat/probaAsSumOfProbas.js +548 -0
  209. package/lib/exercises/math/probaStat/stats1var/index.d.ts +2 -0
  210. package/lib/exercises/math/probaStat/stats1var/index.d.ts.map +1 -1
  211. package/lib/exercises/math/probaStat/stats1var/index.js +2 -0
  212. package/lib/exercises/math/probaStat/stats1var/interpretIndicatorsForLists.d.ts +9 -0
  213. package/lib/exercises/math/probaStat/stats1var/interpretIndicatorsForLists.d.ts.map +1 -0
  214. package/lib/exercises/math/probaStat/stats1var/interpretIndicatorsForLists.js +90 -0
  215. package/lib/exercises/math/probaStat/stats1var/plausibilityOfAverage.d.ts +10 -0
  216. package/lib/exercises/math/probaStat/stats1var/plausibilityOfAverage.d.ts.map +1 -0
  217. package/lib/exercises/math/probaStat/stats1var/plausibilityOfAverage.js +151 -0
  218. package/lib/exercises/pc/electricity/calculateUEqualsRI.d.ts +7 -0
  219. package/lib/exercises/pc/electricity/calculateUEqualsRI.d.ts.map +1 -0
  220. package/lib/exercises/pc/electricity/calculateUEqualsRI.js +73 -0
  221. package/lib/exercises/pc/electricity/index.d.ts +1 -0
  222. package/lib/exercises/pc/electricity/index.d.ts.map +1 -1
  223. package/lib/exercises/pc/electricity/index.js +1 -0
  224. package/lib/exercises/pc/index.d.ts +1 -0
  225. package/lib/exercises/pc/index.d.ts.map +1 -1
  226. package/lib/exercises/pc/index.js +1 -0
  227. package/lib/exercises/pc/moleculeFormula.d.ts.map +1 -1
  228. package/lib/exercises/pc/moleculeFormula.js +4 -3
  229. package/lib/exercises/pc/optics/index.d.ts +2 -0
  230. package/lib/exercises/pc/optics/index.d.ts.map +1 -0
  231. package/lib/exercises/pc/optics/index.js +1 -0
  232. package/lib/exercises/pc/optics/lensFormula.d.ts +21 -0
  233. package/lib/exercises/pc/optics/lensFormula.d.ts.map +1 -0
  234. package/lib/exercises/pc/optics/lensFormula.js +415 -0
  235. package/lib/exercises/pc/weight/calculateWeight.d.ts +8 -1
  236. package/lib/exercises/pc/weight/calculateWeight.d.ts.map +1 -1
  237. package/lib/exercises/pc/weight/calculateWeight.js +113 -38
  238. package/lib/geogebra/parsers/geogebraParser.d.ts +4 -0
  239. package/lib/geogebra/parsers/geogebraParser.d.ts.map +1 -1
  240. package/lib/geogebra/parsers/geogebraParser.js +17 -0
  241. package/lib/index.d.ts +346 -12
  242. package/lib/index.d.ts.map +1 -1
  243. package/lib/latexTester.d.ts.map +1 -1
  244. package/lib/latexTester.js +1 -0
  245. package/lib/math/geometry/CloudPoints.d.ts +10 -0
  246. package/lib/math/geometry/CloudPoints.d.ts.map +1 -1
  247. package/lib/math/geometry/CloudPoints.js +119 -0
  248. package/lib/math/geometry/line.d.ts +1 -0
  249. package/lib/math/geometry/line.d.ts.map +1 -1
  250. package/lib/math/geometry/line.js +10 -2
  251. package/lib/math/geometry/vector.d.ts +1 -0
  252. package/lib/math/geometry/vector.d.ts.map +1 -1
  253. package/lib/math/geometry/vector.js +12 -0
  254. package/lib/math/progCalc/progCalc.d.ts +46 -0
  255. package/lib/math/progCalc/progCalc.d.ts.map +1 -0
  256. package/lib/math/progCalc/progCalc.js +239 -0
  257. package/lib/math/utils/latex/realize.d.ts +12 -0
  258. package/lib/math/utils/latex/realize.d.ts.map +1 -0
  259. package/lib/math/utils/latex/realize.js +43 -0
  260. package/lib/pc/constants/molecularChemistry/molecule.d.ts +2 -0
  261. package/lib/pc/constants/molecularChemistry/molecule.d.ts.map +1 -1
  262. package/lib/pc/constants/molecularChemistry/molecule.js +52 -0
  263. package/lib/tests/questionTest.d.ts.map +1 -1
  264. package/lib/tests/questionTest.js +1 -1
  265. package/lib/tests/singleExo.test.js +3 -3
  266. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  267. package/lib/tree/nodes/operators/addNode.d.ts +4 -2
  268. package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
  269. package/lib/tree/nodes/operators/addNode.js +8 -17
  270. package/lib/tree/nodes/operators/fractionNode.d.ts +1 -1
  271. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  272. package/lib/tree/nodes/operators/fractionNode.js +5 -1
  273. package/lib/tree/nodes/operators/multiplyNode.d.ts +4 -2
  274. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  275. package/lib/tree/nodes/operators/multiplyNode.js +8 -17
  276. package/lib/tree/nodes/operators/operatorNode.d.ts +3 -3
  277. package/lib/tree/nodes/operators/operatorNode.d.ts.map +1 -1
  278. package/lib/tree/nodes/variables/variableNode.d.ts +1 -1
  279. package/lib/tree/nodes/variables/variableNode.d.ts.map +1 -1
  280. package/lib/tree/utilities/nodeShuffler.d.ts +12 -0
  281. package/lib/tree/utilities/nodeShuffler.d.ts.map +1 -0
  282. package/lib/tree/utilities/nodeShuffler.js +123 -0
  283. package/lib/utils/arrays/getAllPicks.d.ts +2 -0
  284. package/lib/utils/arrays/getAllPicks.d.ts.map +1 -0
  285. package/lib/utils/arrays/getAllPicks.js +17 -0
  286. package/lib/utils/errors/handleVEAError.d.ts +1 -1
  287. package/lib/utils/errors/handleVEAError.d.ts.map +1 -1
  288. package/lib/utils/strings/decapitalize.d.ts +2 -0
  289. package/lib/utils/strings/decapitalize.d.ts.map +1 -0
  290. package/lib/utils/strings/decapitalize.js +3 -0
  291. package/package.json +1 -1
@@ -0,0 +1,284 @@
1
+ import { addValidProp, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { AffineConstructor } from "../../../../math/polynomials/affine.js";
4
+ import { TrinomConstructor } from "../../../../math/polynomials/trinom.js";
5
+ import { randint } from "../../../../math/utils/random/randint.js";
6
+ import { add } from "../../../../tree/nodes/operators/addNode.js";
7
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
8
+ import { NodeShuffler } from "../../../../tree/utilities/nodeShuffler.js";
9
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
10
+ import { probaLawFlip } from "../../../../utils/alea/probaLawFlip.js";
11
+ import { shuffle } from "../../../../utils/alea/shuffle.js";
12
+ const getStringCommaCommaAnd = (strings, stringComma = ", ", stringAnd = " et ") => {
13
+ return strings.slice(0, -1).length > 0
14
+ ? [strings.slice(0, -1).join(stringComma), ...strings.slice(-1)].join(stringAnd)
15
+ : strings[0];
16
+ };
17
+ const fNames = ["f", "g", "h", "i"];
18
+ const getInstruction = (identifiers) => {
19
+ const { askedType } = identifiers;
20
+ return `Parmi les fonctions suivantes, laquelle ou lesquelles sont des fonctions ${(() => {
21
+ switch (askedType) {
22
+ case "affine":
23
+ return "affines";
24
+ case "linear":
25
+ return "linéaires";
26
+ }
27
+ })()} ?`;
28
+ };
29
+ const getHint = (identifiers) => {
30
+ const { askedType } = identifiers;
31
+ switch (askedType) {
32
+ case "affine":
33
+ return `L'expression d'une fonction affine est de la forme $ax+b$,
34
+ avec $a$ et $b$ des nombres réels.`;
35
+ case "linear":
36
+ return `L'expression d'une fonction linéaire est de la forme $ax$,
37
+ avec $a$ un nombre réel.`;
38
+ }
39
+ };
40
+ const getCorrection = (identifiers) => {
41
+ const { items, askedType } = identifiers;
42
+ const affines = items.filter((item) => item.fType === askedType);
43
+ const affineFNames = affines.map((item) => `$${item.fName}$`);
44
+ const affinesTex = affines.map((item) => {
45
+ return `$${item.fName}(x) = ${item.tex}$`;
46
+ });
47
+ switch (askedType) {
48
+ case "affine": {
49
+ return `${getStringCommaCommaAnd(affinesTex)} ${affinesTex.length > 1 ? `sont des expressions` : `est une expression`} de la forme $ax+b$,
50
+ avec $a$ et $b$ des nombres réels.
51
+
52
+ ${affines.map((item) => {
53
+ return `Pour $${item.fName}(x)$, $a=${item.a}$ et $b=${item.b}$.`;
54
+ }).join(`
55
+
56
+ `)}
57
+
58
+ ${affinesTex.length > 1
59
+ ? `Les fonctions affines sont`
60
+ : `La fonction affine est`} ${getStringCommaCommaAnd(affineFNames)}.`;
61
+ }
62
+ case "linear":
63
+ return `${getStringCommaCommaAnd(affinesTex)} ${affinesTex.length > 1 ? `sont des expressions` : `est une expression`} de la forme $ax$,
64
+ avec $a$ un nombre réel.
65
+
66
+ ${affines.map((item) => {
67
+ return `Pour $${item.fName}(x)$, $a=${item.a}$.`;
68
+ }).join(`
69
+
70
+ `)}
71
+
72
+ ${affinesTex.length > 1
73
+ ? `Les fonctions linéaires sont`
74
+ : `La fonction linéaire est`} ${getStringCommaCommaAnd(affineFNames)}.`;
75
+ }
76
+ };
77
+ const getPropositions = (_, { answer, ...identifiers }) => {
78
+ const { items, askedType } = identifiers;
79
+ const propositions = [];
80
+ items.forEach((item, _) => {
81
+ const tex = `${item.fName}(x) = ${item.tex}`;
82
+ if (item.fType === askedType) {
83
+ addValidProp(propositions, tex);
84
+ }
85
+ else {
86
+ tryToAddWrongProp(propositions, tex);
87
+ }
88
+ });
89
+ return propositions;
90
+ };
91
+ const getRecognizeExprAffineQuestion = (opts) => {
92
+ const askedType = opts.askedType;
93
+ const nbTotal = 4;
94
+ const createAffineNodeObj = (affineType, fType) => {
95
+ switch (affineType) {
96
+ case "affine": {
97
+ const a = randint(-10, 11, [0]);
98
+ const b = randint(-10, 11, [0]);
99
+ return {
100
+ node: AffineConstructor.fromCoeffs([b, a]).toTree(),
101
+ a,
102
+ b,
103
+ fType,
104
+ };
105
+ }
106
+ case "linear": {
107
+ const a = randint(-10, 11, [0]);
108
+ const b = 0;
109
+ return {
110
+ node: AffineConstructor.fromCoeffs([b, a]).toTree(),
111
+ a,
112
+ b,
113
+ fType,
114
+ };
115
+ }
116
+ case "constant": {
117
+ const a = 0;
118
+ const b = randint(-10, 11, [0]);
119
+ return {
120
+ node: b.toTree(),
121
+ a,
122
+ b,
123
+ fType,
124
+ };
125
+ }
126
+ }
127
+ };
128
+ const createNonAffineFuncNode = (nonAffineType) => {
129
+ switch (nonAffineType) {
130
+ case "trinomA": {
131
+ const a = randint(-10, 11, [0]);
132
+ return TrinomConstructor.fromCoeffs([0, 0, a]).toTree();
133
+ }
134
+ case "trinomAC": {
135
+ const a = randint(-10, 11, [0]);
136
+ const c = randint(-10, 11, [0]);
137
+ return TrinomConstructor.fromCoeffs([c, 0, a]).toTree();
138
+ }
139
+ case "inv": {
140
+ const a = randint(-10, 11, [0]);
141
+ return frac(a, "x".toTree());
142
+ }
143
+ case "invPlusB": {
144
+ const a = randint(-10, 11, [0]);
145
+ const b = randint(-10, 11, [0]);
146
+ const aInvX = frac(a, "x".toTree());
147
+ return add(aInvX, b);
148
+ }
149
+ }
150
+ };
151
+ let affinesObj;
152
+ let arrayOfFillerObj;
153
+ switch (askedType) {
154
+ case "affine":
155
+ {
156
+ const nbAffineMore = probaLawFlip([
157
+ [0, 0.7],
158
+ [1, 0.25],
159
+ [2, 0.04],
160
+ [3, 0.01],
161
+ ]);
162
+ affinesObj = [
163
+ createAffineNodeObj("affine", "affine"),
164
+ ...[...Array(nbAffineMore).keys()].map((_) => {
165
+ return createAffineNodeObj(probaLawFlip([
166
+ ["affine", 0.5],
167
+ ["linear", 0.45],
168
+ ["constant", 0.05],
169
+ ]), "affine");
170
+ }),
171
+ ];
172
+ const nbFiller = nbTotal - (nbAffineMore + 1);
173
+ arrayOfFillerObj = [...Array(nbFiller).keys()].map((_) => {
174
+ const fType = probaLawFlip([
175
+ ["trinomA", 0.35],
176
+ ["trinomAC", 0.35],
177
+ ["inv", 0.15],
178
+ ["invPlusB", 0.15],
179
+ ]);
180
+ return { node: createNonAffineFuncNode(fType), fType };
181
+ });
182
+ }
183
+ break;
184
+ case "linear":
185
+ {
186
+ const nbLinearMore = probaLawFlip([
187
+ [0, 0.7],
188
+ [1, 0.25],
189
+ [2, 0.04],
190
+ [3, 0.01],
191
+ ]);
192
+ affinesObj = [
193
+ createAffineNodeObj("linear", "linear"),
194
+ ...[...Array(nbLinearMore).keys()].map((_) => {
195
+ return createAffineNodeObj("linear", "linear");
196
+ }),
197
+ ];
198
+ const nbFiller = nbTotal - (nbLinearMore + 1);
199
+ arrayOfFillerObj = [...Array(nbFiller).keys()].map((_) => {
200
+ if (coinFlip()) {
201
+ const fType = probaLawFlip([
202
+ ["affine", 0.55],
203
+ ["constant", 0.45],
204
+ ]);
205
+ return {
206
+ node: createAffineNodeObj(fType, fType).node,
207
+ fType,
208
+ };
209
+ }
210
+ else {
211
+ const fType = probaLawFlip([
212
+ ["trinomA", 0.35],
213
+ ["trinomAC", 0.35],
214
+ ["inv", 0.15],
215
+ ["invPlusB", 0.15],
216
+ ]);
217
+ return {
218
+ node: createNonAffineFuncNode(fType),
219
+ fType,
220
+ };
221
+ }
222
+ });
223
+ }
224
+ break;
225
+ }
226
+ const shuffledArray = shuffle([...affinesObj, ...arrayOfFillerObj]);
227
+ const items = shuffledArray.map(({ node, fType, a, b }, i) => {
228
+ const tex = coinFlip()
229
+ ? node.toTex()
230
+ : NodeShuffler.deepShuffle(node).toTex();
231
+ return {
232
+ tex: tex,
233
+ fType,
234
+ fName: fNames[i],
235
+ a,
236
+ b,
237
+ };
238
+ });
239
+ const identifiers = { items, askedType };
240
+ return getQuestionFromIdentifiers(identifiers);
241
+ };
242
+ const getQuestionFromIdentifiers = (identifiers) => {
243
+ const question = {
244
+ instruction: getInstruction(identifiers),
245
+ keys: [],
246
+ answerFormat: "tex",
247
+ identifiers,
248
+ hint: getHint(identifiers),
249
+ correction: getCorrection(identifiers),
250
+ };
251
+ return question;
252
+ };
253
+ export const recognizeExprAffine = {
254
+ id: "recognizeExprAffine",
255
+ label: "Reconnaître l’expression d’une fonction affine",
256
+ isSingleStep: true,
257
+ generator: (nb) => getDistinctQuestions(() => getRecognizeExprAffineQuestion({
258
+ askedType: "affine",
259
+ }), nb),
260
+ qcmTimer: 60,
261
+ freeTimer: 60,
262
+ getPropositions,
263
+ subject: "Mathématiques",
264
+ getQuestionFromIdentifiers,
265
+ hasHintAndCorrection: true,
266
+ answerType: "QCM",
267
+ isQCM: true,
268
+ };
269
+ export const recognizeExprLinear = {
270
+ id: "recognizeExprLinear",
271
+ label: "Reconnaître l’expression d’une fonction linéaire",
272
+ isSingleStep: true,
273
+ generator: (nb) => getDistinctQuestions(() => getRecognizeExprAffineQuestion({
274
+ askedType: "linear",
275
+ }), nb),
276
+ qcmTimer: 60,
277
+ freeTimer: 60,
278
+ getPropositions,
279
+ subject: "Mathématiques",
280
+ getQuestionFromIdentifiers,
281
+ hasHintAndCorrection: true,
282
+ answerType: "QCM",
283
+ isQCM: true,
284
+ };
@@ -0,0 +1,13 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ type Item = {
3
+ tex: string;
4
+ isValid: boolean;
5
+ };
6
+ type Identifiers = {
7
+ fName: string;
8
+ coeffs: number[];
9
+ items: Item[];
10
+ };
11
+ export declare const representationOfAffine: Exercise<Identifiers>;
12
+ export {};
13
+ //# sourceMappingURL=representationOfAffine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"representationOfAffine.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/affines/representationOfAffine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAWT,MAAM,6BAA6B,CAAC;AAUrC,KAAK,IAAI,GAAG;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf,CAAC;AAwOF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,CAexD,CAAC"}
@@ -0,0 +1,184 @@
1
+ import { addValidProp, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { AffineConstructor } from "../../../../math/polynomials/affine.js";
4
+ import { randint } from "../../../../math/utils/random/randint.js";
5
+ import { add } from "../../../../tree/nodes/operators/addNode.js";
6
+ import { substract } from "../../../../tree/nodes/operators/substractNode.js";
7
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
8
+ import { random } from "../../../../utils/alea/random.js";
9
+ import { shuffle } from "../../../../utils/alea/shuffle.js";
10
+ const primordialRightsAndWrongs = {
11
+ rights: [`une droite`],
12
+ wrongs: [
13
+ `une parabole`,
14
+ `un demi-cercle`,
15
+ `une succession de deux segments`,
16
+ `un cercle`,
17
+ `une ellipse`,
18
+ `une fonction affine`,
19
+ ],
20
+ };
21
+ const createRightsAndWrongs = (validSuffixFunc, invalidSuffixFuncs) => {
22
+ return {
23
+ rights: primordialRightsAndWrongs.rights.map((rightStr) => (pointName) => validSuffixFunc(rightStr, pointName)),
24
+ wrongs: [
25
+ ...primordialRightsAndWrongs.wrongs.map((wrongStr) => (pointName) => validSuffixFunc(wrongStr, pointName)),
26
+ ...invalidSuffixFuncs.flatMap((invalidSuffixFunc) => primordialRightsAndWrongs.rights.map((rightStr) => (pointName) => invalidSuffixFunc(rightStr, pointName))),
27
+ ],
28
+ };
29
+ };
30
+ const createArrayOfRightsAndWrongs = (f) => {
31
+ function createRightAndWrongsCoords(f, x) {
32
+ const yR = f.calculate(x);
33
+ const yWs = [
34
+ f.a,
35
+ f.b,
36
+ add(f.a, f.b).evaluate(),
37
+ substract(f.a, f.b).evaluate(),
38
+ ].filter((yW) => yW !== yR);
39
+ return {
40
+ right: [x, yR],
41
+ wrongs: yWs.map((yW) => [x, yW]),
42
+ };
43
+ }
44
+ const coordObjects = [-1, 0, 1].map((x) => createRightAndWrongsCoords(f, x));
45
+ const strFunc = (str, pointName, x, y) => `${str} qui passe par $${pointName}(${x.frenchify()};${y.frenchify()})$`;
46
+ return [
47
+ createRightsAndWrongs((str) => `${str}`, []),
48
+ ...coordObjects.flatMap((coordObject) => {
49
+ return createRightsAndWrongs((str, pointName) => strFunc(str, pointName, coordObject.right[0], coordObject.right[1]), coordObject.wrongs.map(([x, y]) => (str, pointName) => strFunc(str, pointName, x, y)));
50
+ }),
51
+ ];
52
+ };
53
+ const getInstruction = (identifiers) => {
54
+ const { fName, coeffs } = identifiers;
55
+ const affine = AffineConstructor.fromCoeffs(coeffs);
56
+ return `La représentation graphique de
57
+
58
+ $$
59
+ ${fName}(x)=${affine.toTex()}
60
+ $$
61
+
62
+ est :`;
63
+ };
64
+ const getHint = () => {
65
+ return `Les fonctions affines et linéaires sont représentées par des droites.`;
66
+ };
67
+ const getCorrection = (identifiers) => {
68
+ const { fName } = identifiers;
69
+ const abstractFName = ["f", "g", "h"].find((letter) => letter !== fName);
70
+ return `Une fonction affine $${abstractFName}$ est de la forme
71
+
72
+ $$
73
+ ${abstractFName}(x)=mx+p
74
+ $$
75
+
76
+ Sa représentation graphique est donc une droite qui passe, entre autres, par le point de coordonnées $(1;m+p)$ car
77
+
78
+ $$
79
+ ${abstractFName}(1)=m+p
80
+ $$
81
+ `;
82
+ };
83
+ const getPropositions = (_, { answer, ...idenfitiers }) => {
84
+ const { items } = idenfitiers;
85
+ const propositions = [];
86
+ //keep same order on each question
87
+ items.forEach((item) => {
88
+ if (item.isValid) {
89
+ addValidProp(propositions, item.tex, "raw");
90
+ }
91
+ else {
92
+ tryToAddWrongProp(propositions, item.tex, "raw");
93
+ }
94
+ });
95
+ return propositions;
96
+ };
97
+ const getRepresentationOfAffineQuestion = () => {
98
+ const fName = random(["f", "g", "h"]);
99
+ const coeffs = [0, 1].map(() => randint(-10, 10, [0]));
100
+ const f = AffineConstructor.fromCoeffs(coeffs);
101
+ const nbPropositions = 4;
102
+ const nbValid = randint(1, nbPropositions);
103
+ const nbInvalid = nbPropositions - nbValid;
104
+ const arrayOfIsValid = shuffle([
105
+ ...[...Array(nbValid).keys()].map(() => true),
106
+ ...[...Array(nbInvalid).keys()].map(() => false),
107
+ ]);
108
+ const pointNames = ["A", "B", "C", "D"];
109
+ const rightsAndWrongs = createArrayOfRightsAndWrongs(f);
110
+ const allIndexes = [...Array(rightsAndWrongs.length).keys()];
111
+ function getRightTexFunc(previouslyPickedIndexes) {
112
+ const index = random(allIndexes.filter((index) => !previouslyPickedIndexes.includes(index)));
113
+ if (rightsAndWrongs[index].rights.length > 0) {
114
+ return {
115
+ texFunc: random(rightsAndWrongs[index].rights),
116
+ index,
117
+ };
118
+ }
119
+ else {
120
+ return undefined;
121
+ }
122
+ }
123
+ function getWrongTexFunc(previouslyPickedIndexes) {
124
+ const indexArray = previouslyPickedIndexes.length > 0
125
+ ? coinFlip()
126
+ ? previouslyPickedIndexes
127
+ : allIndexes
128
+ : allIndexes;
129
+ const index = random(indexArray);
130
+ if (rightsAndWrongs[index].wrongs.length > 0) {
131
+ return {
132
+ texFunc: random(rightsAndWrongs[index].wrongs),
133
+ index,
134
+ };
135
+ }
136
+ else {
137
+ return undefined;
138
+ }
139
+ }
140
+ const previouslyPickedIndexes = [];
141
+ const items = shuffle(arrayOfIsValid.map((isValid, i) => {
142
+ const pointName = pointNames[i];
143
+ let pick;
144
+ do {
145
+ pick = isValid
146
+ ? getRightTexFunc(previouslyPickedIndexes)
147
+ : getWrongTexFunc(previouslyPickedIndexes);
148
+ } while (!pick);
149
+ const tex = pick.texFunc(pointName);
150
+ previouslyPickedIndexes.push(pick.index);
151
+ const item = {
152
+ tex,
153
+ isValid,
154
+ };
155
+ return item;
156
+ }));
157
+ const identifiers = { fName, coeffs, items };
158
+ return getQuestionFromIdentifiers(identifiers);
159
+ };
160
+ const getQuestionFromIdentifiers = (identifiers) => {
161
+ const question = {
162
+ instruction: getInstruction(identifiers),
163
+ keys: [],
164
+ answerFormat: "tex",
165
+ identifiers,
166
+ hint: getHint(identifiers),
167
+ correction: getCorrection(identifiers),
168
+ };
169
+ return question;
170
+ };
171
+ export const representationOfAffine = {
172
+ id: "representationOfAffine",
173
+ label: "Savoir que la représentation graphique d'une fonction affine est une droite",
174
+ isSingleStep: true,
175
+ generator: (nb) => getDistinctQuestions(getRepresentationOfAffineQuestion, nb),
176
+ qcmTimer: 60,
177
+ freeTimer: 60,
178
+ getPropositions,
179
+ subject: "Mathématiques",
180
+ getQuestionFromIdentifiers,
181
+ hasHintAndCorrection: true,
182
+ answerType: "QCM",
183
+ isQCM: true,
184
+ };
@@ -0,0 +1,14 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
3
+ type QuestionFuncType = "...x^2" | "...x^3" | "(x-...)(x-...)" | "(x+...)(x-...)" | "(x+...)(x+...)" | "a/(x+...)" | "(x+...)/(x+...)";
4
+ type QuestionFunc = {
5
+ type: QuestionFuncType;
6
+ nodeIds: NodeIdentifiers;
7
+ };
8
+ type Identifiers = {
9
+ questionFunc: QuestionFunc;
10
+ xValue: number;
11
+ };
12
+ export declare const coordsOfPointOnCurveFindY: Exercise<Identifiers>;
13
+ export {};
14
+ //# sourceMappingURL=coordsOfPointOnCurveFindY.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordsOfPointOnCurveFindY.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/coordsOfPointOnCurveFindY.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAaT,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAc7C,KAAK,gBAAgB,GACjB,QAAQ,GACR,QAAQ,GACR,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,WAAW,GACX,iBAAiB,CAAC;AAEtB,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,eAAe,CAAC;CAC1B,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAsRF,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,WAAW,CAc3D,CAAC"}