@doenet/doenetml 0.7.26-dev.559 → 0.7.26-dev.560

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 (111) hide show
  1. package/{AnswerResponseButton-CbmZHlEg.js → AnswerResponseButton-DOeUNZeo.js} +2 -2
  2. package/{Description-Dg9D25dj.js → Description-BpQ74PLG.js} +1 -1
  3. package/{DynamicMath-BamoxgNK.js → DynamicMath-DucCnSC0.js} +1 -1
  4. package/{EditorViewer-ilHCBtHq.js → EditorViewer-CeXYiNH7.js} +6 -6
  5. package/{GraphFrame-YtRIKnoN.js → GraphFrame-uIZSADqQ.js} +2 -2
  6. package/{JSXGraphRenderer-BBAOeow5.js → JSXGraphRenderer-DwepJYgX.js} +1 -1
  7. package/{NonInlineMediaWrapper-C_O5aGO6.js → NonInlineMediaWrapper-Bnr7L_5Q.js} +1 -1
  8. package/{_error-Ch_sNVmD.js → _error-hv0SVfyN.js} +2 -2
  9. package/{alert-DaJPJheJ.js → alert-CUczPdX1.js} +3 -3
  10. package/{angle-Bjnad-51.js → angle-CivZavGP.js} +7 -7
  11. package/{answer-BHG-KbJG.js → answer-0O8ifwit.js} +6 -6
  12. package/{asList-CfjOKQ1o.js → asList-z0ZcM4DE.js} +2 -2
  13. package/{barChart-CxZeehdD.js → barChart-BLLCiOYl.js} +4 -4
  14. package/{blockQuote-BTuscsAe.js → blockQuote-GvcwbVSS.js} +3 -3
  15. package/{boolean-CxnCpqHj.js → boolean-BdAydRAv.js} +2 -2
  16. package/{booleanInput-pBgw-jcZ.js → booleanInput-D_gH69gu.js} +6 -6
  17. package/{br-CDHAIIWV.js → br-CiXKZjml.js} +2 -2
  18. package/{button-DCgVcc5L.js → button-Dq7FZzLD.js} +4 -4
  19. package/{c-C2W2rMGI.js → c-CzIcH7n4.js} +3 -3
  20. package/{cell-DIumrvg7.js → cell-aVmJgpBi.js} +3 -3
  21. package/{choiceInput-Bk7o-muo.js → choiceInput-B2jJNI-H.js} +5 -5
  22. package/{circle-B0veopSc.js → circle-y1gm3CRE.js} +6 -6
  23. package/{cobwebPolyline-D2t8ZB3A.js → cobwebPolyline-D6BxEeFB.js} +4 -4
  24. package/{codeEditor-DYI8-tg2.js → codeEditor-D6AkuIR4.js} +2 -2
  25. package/{composites-Bst0UNya.js → composites-C1cyQKhd.js} +1 -1
  26. package/{containerBlock-qdw5Yzmf.js → containerBlock-BDyYjAiZ.js} +4 -4
  27. package/{containerInline-Dfcmg4EA.js → containerInline-BZEgUcLC.js} +4 -4
  28. package/{curve-CKdwD8Wg.js → curve-Cb-mpHuT.js} +4 -4
  29. package/{doenetml-C4ik9Zuh.js → doenetml-Lo93Z-s8.js} +3 -3
  30. package/doenetml-external-worker.js +2 -2
  31. package/doenetml-inline-worker.js +3 -3
  32. package/doenetml-worker/index.esm.js +1 -1
  33. package/doenetml-worker/index.js +1 -1
  34. package/{ellipsis-DToNSLb-.js → ellipsis-C1cbZ4tX.js} +2 -2
  35. package/{em-RhwsUkI1.js → em-BIznKRJF.js} +3 -3
  36. package/{embed-C0TO-ukR.js → embed-nPZe5go1.js} +2 -2
  37. package/{feedback-DkT-dVzT.js → feedback-BvViZIl9.js} +4 -4
  38. package/{figure-DJmnoOel.js → figure-CWDyOEZ9.js} +3 -3
  39. package/{fillPatterns-CN6OpVuk.js → fillPatterns-8oO1WC4Z.js} +1 -1
  40. package/{footnote-CtEr1Bxi.js → footnote-BrJytW_3.js} +3 -3
  41. package/{fractionInput-tpDFXUOO.js → fractionInput-CfcT9Ddi.js} +4 -4
  42. package/{graph-ueGIZmF8.js → graph-B9yz5dZb.js} +6 -6
  43. package/{hint-BCvT_RFO.js → hint-DuFqYjGU.js} +4 -4
  44. package/{hovercard-store-xBw_Ecws.js → hovercard-store-CBssx2uS.js} +1 -1
  45. package/{hr-BvFHHD3h.js → hr-DkL0WvDG.js} +2 -2
  46. package/{image-zGAXtxW4.js → image-CNpSxlPu.js} +7 -7
  47. package/{index-8GVHSaRF.js → index-CvIIBQlm.js} +1 -1
  48. package/{index.es-BptOTRPj.js → index.es-CA-adqBP.js} +1 -1
  49. package/index.js +1 -1
  50. package/{label-CRBNBUih.js → label-CSkCC6Ew.js} +7 -7
  51. package/{labelWithLatex-CIWawmMv.js → labelWithLatex-D-jpl1v-.js} +2 -2
  52. package/{legend-BbFg4Flv.js → legend-D6hRfXKC.js} +4 -4
  53. package/{line-DplGMPvX.js → line-TvFiRo8N.js} +7 -7
  54. package/{lineFamilyDragHandlers-Bi43Ci_a.js → lineFamilyDragHandlers-CB1Igj1d.js} +1 -1
  55. package/{lineSegment-B5PwZdTh.js → lineSegment-Bz1uoh3m.js} +5 -5
  56. package/{list-CL3HvMGe.js → list-BxDmGEeU.js} +4 -4
  57. package/{lq-BvroqQIq.js → lq-DCbKqK8x.js} +2 -2
  58. package/{lsq-CGkgZ58k.js → lsq-C2cB9ATA.js} +2 -2
  59. package/{markupRenderer-CvBOqh57.js → markupRenderer-C1iWx2aZ.js} +1 -1
  60. package/{math-DmPfXZc4.js → math-BU-KEmVy.js} +8 -8
  61. package/{mathInput-coCYhMgV.js → mathInput-CBirrtvu.js} +8 -8
  62. package/{mathInputSlots-DbleXFXl.js → mathInputSlots-DM2E_m14.js} +1 -1
  63. package/{matrixInput-BGKTjdVJ.js → matrixInput-DLMYiAL-.js} +4 -4
  64. package/{mdash-exNozy-k.js → mdash-Do0hx8bv.js} +2 -2
  65. package/{nbsp-Cq7xnNtt.js → nbsp-sAP0Yi8P.js} +2 -2
  66. package/{ndash-BnCtNNcf.js → ndash-B1RdlqVM.js} +2 -2
  67. package/{number-C5WWvo1N.js → number-DziXXRdd.js} +7 -7
  68. package/{orbitalDiagram-DfAfMmpi.js → orbitalDiagram-DK87rk6j.js} +2 -2
  69. package/{orbitalDiagramInput-BqaYalUr.js → orbitalDiagramInput-B-rPPA8o.js} +2 -2
  70. package/{p-C59icq5K.js → p-BlaIPWpw.js} +4 -4
  71. package/package.json +1 -1
  72. package/{paginatorControls-BWMwuXnc.js → paginatorControls-CnYFstL7.js} +2 -2
  73. package/{pegboard-B2hmLgwX.js → pegboard-S-EToQZc.js} +4 -4
  74. package/{point-CZFlzzmd.js → point-QUsY8qC2.js} +7 -7
  75. package/{polygon-CZUO7POu.js → polygon-Df5UPtiq.js} +6 -6
  76. package/{polyline-hFK0w24T.js → polyline-Dldqay8n.js} +5 -5
  77. package/{pre-CK-Y0nwL.js → pre-Ce4bEd66.js} +3 -3
  78. package/{prefigure-DYXdzt9u.js → prefigure-BRLzoP0n.js} +1 -1
  79. package/{pretzel-B4KoKIZ8.js → pretzel-B_0gEsEO.js} +4 -4
  80. package/{q-DaBKD1Py.js → q-CVjGFM_K.js} +3 -3
  81. package/{ray-DobuH9aD.js → ray-9LCqTDpR.js} +5 -5
  82. package/{ref-BQ31v-qa.js → ref-4uAXVYUf.js} +2 -2
  83. package/{regionBetweenCurveXAxis-Bm3VkkNR.js → regionBetweenCurveXAxis-B9PRMOuh.js} +5 -5
  84. package/{regionBetweenCurves-BDFrx1G0.js → regionBetweenCurves-CFRWq62X.js} +5 -5
  85. package/{row-CihR89Zg.js → row-BKJb9hfG.js} +2 -2
  86. package/{rq-CWrZiYyH.js → rq-CXOOPcu0.js} +2 -2
  87. package/{rsq-BUghzZbz.js → rsq-D7bB72vh.js} +2 -2
  88. package/{section-c860MCP9.js → section-Dr7YPMwW.js} +5 -5
  89. package/{sha256-DT5xJ2Hv-BO6yZ9QQ.js → sha256-DT5xJ2Hv-DZR7XM0T.js} +1 -1
  90. package/{sideBySide-aKbyubj3.js → sideBySide-BCsIGCHG.js} +2 -2
  91. package/{slider-CnB0Hzff.js → slider-t170alEg.js} +3 -3
  92. package/{slopeField-DjwCTJI3.js → slopeField-3VgnsAZe.js} +2 -2
  93. package/{solution-mGzpch94.js → solution-BA7vop6M.js} +4 -4
  94. package/{spreadsheet-BcxN3OXh.js → spreadsheet-Ch7u0SUg.js} +2 -2
  95. package/{sq-FdK0LJXE.js → sq-D5c342BK.js} +3 -3
  96. package/{subsetOfRealsInput-BPgAFMUT.js → subsetOfRealsInput-WvtlgBo3.js} +2 -2
  97. package/{summaryStatistics-9W7EHJwM.js → summaryStatistics-DDqc1Bo2.js} +2 -2
  98. package/{table-CRN3U-HM.js → table-NO-s7v98.js} +2 -2
  99. package/{tabular-CPO7eV7-.js → tabular-Curm5kXy.js} +2 -2
  100. package/{tag-CfuXe0--.js → tag-BrqQ3Ct8.js} +2 -2
  101. package/{text-D8si0g6T.js → text-CFzIs1Ei.js} +6 -6
  102. package/{textInput-BGMmAvO-.js → textInput-CVtyAZkU.js} +7 -7
  103. package/{tooltip-provider-_yu3OpZI.js → tooltip-provider-Bhy5cVR2.js} +2 -2
  104. package/{useAnchoredGraphDragHandler-Ck3fP07E.js → useAnchoredGraphDragHandler-D1azgQQc.js} +1 -1
  105. package/useDoenetRenderer-gMc47Z24.js +114 -0
  106. package/{useFieldCurve-DodSPAVC.js → useFieldCurve-Coivvjzj.js} +2 -2
  107. package/{useSubmitActionWithDelay-CTXG1TZW.js → useSubmitActionWithDelay-BXeFLjC6.js} +2 -2
  108. package/{vector-BGcU2hRW.js → vector-DXW5z1KB.js} +7 -7
  109. package/{vectorField-VK397SC6.js → vectorField-BK5kx-D2.js} +2 -2
  110. package/{video-Db-p5lSo.js → video-BYPzHj6j.js} +4 -4
  111. package/useDoenetRenderer-CV6KFAyn.js +0 -114
@@ -2863,5 +2863,5 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
2863
2863
  `};return lineEndings.LINE_ENDINGS=Br,lineEndings}var generator={},util={},capitalize={},hasRequiredCapitalize;function requireCapitalize(){return hasRequiredCapitalize||(hasRequiredCapitalize=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=function(Hr){var Li=Hr.trim();return Li.charAt(0).toUpperCase()+Li.slice(1)},Me=ae;Br.default=Me})(capitalize)),capitalize}var isNode={exports:{}},hasRequiredIsNode;function requireIsNode(){return hasRequiredIsNode||(hasRequiredIsNode=1,(function(Br,ae){Object.defineProperty(ae,"__esModule",{value:!0}),ae.default=void 0;var Me=function(){return!!Br.exports},Or=Me;ae.default=Or})(isNode,isNode.exports)),isNode.exports}var isReactNative={},hasRequiredIsReactNative;function requireIsReactNative(){return hasRequiredIsReactNative||(hasRequiredIsReactNative=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=function(){var Hr=!1;try{Hr=navigator.product==="ReactNative"}catch{Hr=!1}return Hr},Me=ae;Br.default=Me})(isReactNative)),isReactNative}var isWindows={},platforms={},hasRequiredPlatforms;function requirePlatforms(){if(hasRequiredPlatforms)return platforms;hasRequiredPlatforms=1,Object.defineProperty(platforms,"__esModule",{value:!0}),platforms.SUPPORTED_PLATFORMS=void 0;var Br={DARWIN:"darwin",LINUX:"linux",WIN32:"win32"};return platforms.SUPPORTED_PLATFORMS=Br,platforms}var hasRequiredIsWindows;function requireIsWindows(){return hasRequiredIsWindows||(hasRequiredIsWindows=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=requirePlatforms(),Me=function(){var Li=!1;try{Li=process.platform===ae.SUPPORTED_PLATFORMS.WIN32}catch{Li=!1}return Li},Or=Me;Br.default=Or})(isWindows)),isWindows}var makeArrayOfLength={},hasRequiredMakeArrayOfLength;function requireMakeArrayOfLength(){return hasRequiredMakeArrayOfLength||(hasRequiredMakeArrayOfLength=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=function(){var Hr=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return Array.apply(null,Array(Hr)).map(function(Li,ts){return ts})},Me=ae;Br.default=Me})(makeArrayOfLength)),makeArrayOfLength}var makeArrayOfStrings={},hasRequiredMakeArrayOfStrings;function requireMakeArrayOfStrings(){return hasRequiredMakeArrayOfStrings||(hasRequiredMakeArrayOfStrings=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=Me(requireMakeArrayOfLength());function Me(Li){return Li&&Li.__esModule?Li:{default:Li}}var Or=function(ts,rs){var ns=(0,ae.default)(ts);return ns.map(function(){return rs()})},Hr=Or;Br.default=Hr})(makeArrayOfStrings)),makeArrayOfStrings}var hasRequiredUtil;function requireUtil(){return hasRequiredUtil||(hasRequiredUtil=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Object.defineProperty(Br,"capitalize",{enumerable:!0,get:function(){return ae.default}}),Object.defineProperty(Br,"isNode",{enumerable:!0,get:function(){return Me.default}}),Object.defineProperty(Br,"isReactNative",{enumerable:!0,get:function(){return Or.default}}),Object.defineProperty(Br,"isWindows",{enumerable:!0,get:function(){return Hr.default}}),Object.defineProperty(Br,"makeArrayOfLength",{enumerable:!0,get:function(){return Li.default}}),Object.defineProperty(Br,"makeArrayOfStrings",{enumerable:!0,get:function(){return ts.default}});var ae=rs(requireCapitalize()),Me=rs(requireIsNode()),Or=rs(requireIsReactNative()),Hr=rs(requireIsWindows()),Li=rs(requireMakeArrayOfLength()),ts=rs(requireMakeArrayOfStrings());function rs(ns){return ns&&ns.__esModule?ns:{default:ns}}})(util)),util}var hasRequiredGenerator;function requireGenerator(){return hasRequiredGenerator||(hasRequiredGenerator=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=requireWords(),Me=requireUtil();function Or(is,as){if(!(is instanceof as))throw new TypeError("Cannot call a class as a function")}function Hr(is,as){for(var os=0;os<as.length;os++){var ss=as[os];ss.enumerable=ss.enumerable||!1,ss.configurable=!0,"value"in ss&&(ss.writable=!0),Object.defineProperty(is,ss.key,ss)}}function Li(is,as,os){return as&&Hr(is.prototype,as),Object.defineProperty(is,"prototype",{writable:!1}),is}function ts(is,as,os){return as in is?Object.defineProperty(is,as,{value:os,enumerable:!0,configurable:!0,writable:!0}):is[as]=os,is}var rs=(function(){function is(){var as=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},os=as.sentencesPerParagraph,ss=os===void 0?{max:7,min:3}:os,ls=as.wordsPerSentence,us=ls===void 0?{max:15,min:5}:ls,cs=as.random;as.seed;var ds=as.words,ps=ds===void 0?ae.WORDS:ds;if(Or(this,is),ts(this,"sentencesPerParagraph",void 0),ts(this,"wordsPerSentence",void 0),ts(this,"random",void 0),ts(this,"words",void 0),ss.min>ss.max)throw new Error("Minimum number of sentences per paragraph (".concat(ss.min,") cannot exceed maximum (").concat(ss.max,")."));if(us.min>us.max)throw new Error("Minimum number of words per sentence (".concat(us.min,") cannot exceed maximum (").concat(us.max,")."));this.sentencesPerParagraph=ss,this.words=ps,this.wordsPerSentence=us,this.random=cs||Math.random}return Li(is,[{key:"generateRandomInteger",value:function(os,ss){return Math.floor(this.random()*(ss-os+1)+os)}},{key:"generateRandomWords",value:function(os){var ss=this,ls=this.wordsPerSentence,us=ls.min,cs=ls.max,ds=os||this.generateRandomInteger(us,cs);return(0,Me.makeArrayOfLength)(ds).reduce(function(ps,ms){return"".concat(ss.pluckRandomWord()," ").concat(ps)},"").trim()}},{key:"generateRandomSentence",value:function(os){return"".concat((0,Me.capitalize)(this.generateRandomWords(os)),".")}},{key:"generateRandomParagraph",value:function(os){var ss=this,ls=this.sentencesPerParagraph,us=ls.min,cs=ls.max,ds=os||this.generateRandomInteger(us,cs);return(0,Me.makeArrayOfLength)(ds).reduce(function(ps,ms){return"".concat(ss.generateRandomSentence()," ").concat(ps)},"").trim()}},{key:"pluckRandomWord",value:function(){var os=0,ss=this.words.length-1,ls=this.generateRandomInteger(os,ss);return this.words[ls]}}]),is})(),ns=rs;Br.default=ns})(generator)),generator}var hasRequiredLoremIpsum;function requireLoremIpsum(){return hasRequiredLoremIpsum||(hasRequiredLoremIpsum=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=requireFormats(),Me=requireLineEndings(),Or=Li(requireGenerator()),Hr=requireUtil();function Li(ss){return ss&&ss.__esModule?ss:{default:ss}}function ts(ss,ls){if(!(ss instanceof ls))throw new TypeError("Cannot call a class as a function")}function rs(ss,ls){for(var us=0;us<ls.length;us++){var cs=ls[us];cs.enumerable=cs.enumerable||!1,cs.configurable=!0,"value"in cs&&(cs.writable=!0),Object.defineProperty(ss,cs.key,cs)}}function ns(ss,ls,us){return ls&&rs(ss.prototype,ls),Object.defineProperty(ss,"prototype",{writable:!1}),ss}function is(ss,ls,us){return ls in ss?Object.defineProperty(ss,ls,{value:us,enumerable:!0,configurable:!0,writable:!0}):ss[ls]=us,ss}var as=(function(){function ss(){var ls=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},us=arguments.length>1&&arguments[1]!==void 0?arguments[1]:ae.FORMAT_PLAIN,cs=arguments.length>2?arguments[2]:void 0;if(ts(this,ss),this.format=us,this.suffix=cs,is(this,"generator",void 0),ae.FORMATS.indexOf(us.toLowerCase())===-1)throw new Error("".concat(us," is an invalid format. Please use ").concat(ae.FORMATS.join(" or "),"."));this.generator=new Or.default(ls)}return ns(ss,[{key:"getLineEnding",value:function(){return this.suffix?this.suffix:!(0,Hr.isReactNative)()&&(0,Hr.isNode)()&&(0,Hr.isWindows)()?Me.LINE_ENDINGS.WIN32:Me.LINE_ENDINGS.POSIX}},{key:"formatString",value:function(us){return this.format===ae.FORMAT_HTML?"<p>".concat(us,"</p>"):us}},{key:"formatStrings",value:function(us){var cs=this;return us.map(function(ds){return cs.formatString(ds)})}},{key:"generateWords",value:function(us){return this.formatString(this.generator.generateRandomWords(us))}},{key:"generateSentences",value:function(us){return this.formatString(this.generator.generateRandomParagraph(us))}},{key:"generateParagraphs",value:function(us){var cs=this.generator.generateRandomParagraph.bind(this.generator);return this.formatStrings((0,Hr.makeArrayOfStrings)(us,cs)).join(this.getLineEnding())}}]),ss})(),os=as;Br.default=os})(LoremIpsum)),LoremIpsum}var hasRequiredDist;function requireDist(){return hasRequiredDist||(hasRequiredDist=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Object.defineProperty(Br,"LoremIpsum",{enumerable:!0,get:function(){return Hr.default}}),Br.loremIpsum=void 0;var ae=requireFormats(),Me=requireUnits(),Or=requireWords(),Hr=Li(requireLoremIpsum());function Li(rs){return rs&&rs.__esModule?rs:{default:rs}}var ts=function(){var ns=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},is=ns.count,as=is===void 0?1:is,os=ns.format,ss=os===void 0?ae.FORMAT_PLAIN:os,ls=ns.paragraphLowerBound,us=ls===void 0?3:ls,cs=ns.paragraphUpperBound,ds=cs===void 0?7:cs,ps=ns.random,ms=ns.sentenceLowerBound,fs=ms===void 0?5:ms,hs=ns.sentenceUpperBound,gs=hs===void 0?15:hs,ys=ns.units,xs=ys===void 0?Me.UNIT_SENTENCES:ys,bs=ns.words,vs=bs===void 0?Or.WORDS:bs,Cs=ns.suffix,Ts=Cs===void 0?"":Cs,As={random:ps,sentencesPerParagraph:{max:ds,min:us},words:vs,wordsPerSentence:{max:gs,min:fs}},Ns=new Hr.default(As,ss,Ts);switch(xs){case Me.UNIT_PARAGRAPHS:case Me.UNIT_PARAGRAPH:return Ns.generateParagraphs(as);case Me.UNIT_SENTENCES:case Me.UNIT_SENTENCE:return Ns.generateSentences(as);case Me.UNIT_WORDS:case Me.UNIT_WORD:return Ns.generateWords(as);default:return""}};Br.loremIpsum=ts})(dist)),dist}var distExports=requireDist();class Lorem extends CompositeComponent{static componentType="lorem";static componentDocs={summary:"Generates lorem ipsum placeholder text"};static allowInSchemaAsComponent=["text","p"];static createsVariants=!0;static stateVariableToEvaluateAfterReplacements="readyToExpandWhenResolved";static createAttributesObject(){let ae=super.createAttributesObject();return ae.minSentencesPerParagraph={description:"Minimum number of sentences per generated paragraph.",createComponentOfType:"number",createStateVariable:"minSentencesPerParagraph",defaultValue:4,public:!0},ae.maxSentencesPerParagraph={description:"Maximum number of sentences per generated paragraph.",createComponentOfType:"number",createStateVariable:"maxSentencesPerParagraph",defaultValue:8,public:!0},ae.minWordsPerSentence={description:"Minimum number of words per generated sentence.",createComponentOfType:"number",createStateVariable:"minWordsPerSentence",defaultValue:4,public:!0},ae.maxWordsPerSentence={description:"Maximum number of words per generated sentence.",createComponentOfType:"number",createStateVariable:"maxWordsPerSentence",defaultValue:8,public:!0},ae.generateWords={createComponentOfType:"number",createStateVariable:"generateWords",defaultValue:null,description:"Number of words of lorem-ipsum to generate."},ae.generateSentences={createComponentOfType:"number",createStateVariable:"generateSentences",defaultValue:null,description:"Number of sentences of lorem-ipsum to generate."},ae.generateParagraphs={createComponentOfType:"number",createStateVariable:"generateParagraphs",defaultValue:null,description:"Number of paragraphs of lorem-ipsum to generate."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.readyToExpandWhenResolved={returnDependencies:()=>({minSentencesPerParagraph:{dependencyType:"stateVariable",variableName:"minSentencesPerParagraph"},maxSentencesPerParagraph:{dependencyType:"stateVariable",variableName:"maxSentencesPerParagraph"},minWordsPerSentence:{dependencyType:"stateVariable",variableName:"minWordsPerSentence"},maxWordsPerSentence:{dependencyType:"stateVariable",variableName:"maxWordsPerSentence"},generateWords:{dependencyType:"stateVariable",variableName:"generateWords"},generateSentences:{dependencyType:"stateVariable",variableName:"generateSentences"},generateParagraphs:{dependencyType:"stateVariable",variableName:"generateParagraphs"}}),markStale:()=>({updateReplacements:!0}),definition(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae.isVariantComponent={returnDependencies:()=>({}),definition:()=>({setValue:{isVariantComponent:!0}})},ae.generatedVariantInfo={returnDependencies:({sharedParameters:Me,componentInfoObjects:Or})=>({variantSeed:{dependencyType:"value",value:Me.variantSeed}}),definition({dependencyValues:Me,componentIdx:Or}){return{setValue:{generatedVariantInfo:{seed:Me.variantSeed,meta:{createdBy:Or}}}}}},ae}static async createSerializedReplacements({component:ae,workspace:Me,nComponents:Or}){Me.replacementsCreated===void 0&&(Me.replacementsCreated=0);const Hr={prefix:`${ae.stateId}|`,num:Me.replacementsCreated};let Li=[];const ts=new distExports.LoremIpsum({sentencesPerParagraph:{max:await ae.stateValues.maxSentencesPerParagraph,min:await ae.stateValues.minSentencesPerParagraph},wordsPerSentence:{max:await ae.stateValues.maxWordsPerSentence,min:await ae.stateValues.minWordsPerSentence},random:ae.sharedParameters.variantRng});let rs=[];if(await ae.stateValues.generateParagraphs!==null){let ns=await ae.stateValues.generateParagraphs;Number.isInteger(ns)&&ns>0&&(rs=ts.generateParagraphs(ns).split(`
2864
2864
  `).map(as=>({type:"serialized",componentType:"p",componentIdx:Or++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[as]})))}else if(await ae.stateValues.generateSentences!==null){let ns=await ae.stateValues.generateSentences;if(Number.isInteger(ns)&&ns>0){let is=ts.generateSentences(ns).split(". ");for(let as of is.slice(0,is.length-1))rs.push({type:"serialized",componentType:"text",componentIdx:Or++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[as+"."]}),rs.push(" ");rs.push({type:"serialized",componentType:"text",componentIdx:Or++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[is[is.length-1]]})}}else if(await ae.stateValues.generateWords!==null){let ns=await ae.stateValues.generateWords;if(Number.isInteger(ns)&&ns>0){let is=ts.generateWords(ns).split(" ").map(as=>({type:"serialized",componentType:"text",componentIdx:Or++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[as]}));rs.push(is[0]);for(let as of is.slice(1))rs.push(" "),rs.push(as)}}return Me.replacementsCreated=Hr.num,{replacements:rs,diagnostics:Li,nComponents:Or}}static async calculateReplacementChanges({component:ae,componentInfoObjects:Me,nComponents:Or,workspace:Hr}){let Li=[],ts=await this.createSerializedReplacements({component:ae,componentInfoObjects:Me,nComponents:Or,workspace:Hr});return Li.push(...ts.diagnostics),Or=ts.nComponents,{replacementChanges:[{changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToReplace:ae.replacements.length,serializedReplacements:ts.replacements}],diagnostics:Li,nComponents:Or}}static setUpVariant({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or}){setUpVariantSeedAndRng({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or})}}function returnStandardTriggeringAttributes(Br){return{triggerWhen:{createComponentOfType:"boolean",createStateVariable:"triggerWhen",defaultValue:!1,triggerActionOnChange:Br,groupName:"triggering",description:"Boolean expression that fires the action whenever it transitions to true."},triggerWith:{createReferences:!0,groupName:"triggering",description:"References to components whose value changes should fire this action."},triggerWhenObjectsClicked:{createReferences:!0,groupName:"triggering",description:"References to components whose click events should fire this action."},triggerWhenObjectsFocused:{createReferences:!0,groupName:"triggering",description:"References to components whose focus events should fire this action."}}}function addStandardTriggeringStateVariableDefinitions(Br,ae){Br.insideTriggerSet={returnDependencies:()=>({parentTriggerSet:{dependencyType:"parentStateVariable",parentComponentType:"triggerSet",variableName:"updateValueAndActionsToTrigger"}}),definition({dependencyValues:Hr}){return{setValue:{insideTriggerSet:Hr.parentTriggerSet!==null}}}},Br.triggerWith={returnDependencies:()=>({triggerWith:{dependencyType:"attributeRefResolutions",attributeName:"triggerWith"},triggerWhenObjectsClicked:{dependencyType:"attributeRefResolutions",attributeName:"triggerWhenObjectsClicked"},triggerWhenObjectsFocused:{dependencyType:"attributeRefResolutions",attributeName:"triggerWhenObjectsFocused"},triggerWhen:{dependencyType:"attributeComponent",attributeName:"triggerWhen"},insideTriggerSet:{dependencyType:"stateVariable",variableName:"insideTriggerSet"}}),definition({dependencyValues:Hr}){if(Hr.triggerWhen||Hr.insideTriggerSet)return{setValue:{triggerWith:null}};{let Li=[];if(Hr.triggerWith!==null)for(let ts of Hr.triggerWith)ts.unresolvedPath===null&&Li.push({target:ts.componentIdx});if(Hr.triggerWhenObjectsClicked!==null)for(let ts of Hr.triggerWhenObjectsClicked)ts.unresolvedPath===null&&Li.push({target:ts.componentIdx,triggeringAction:"click"});if(Hr.triggerWhenObjectsFocused!==null)for(let ts of Hr.triggerWhenObjectsFocused)ts.unresolvedPath===null&&Li.push({target:ts.componentIdx,triggeringAction:"focus"});return Li.length===0&&(Li=null),{setValue:{triggerWith:Li}}}}},Br.triggerWithTargetIds={chainActionOnActionOfStateVariableTargets:{triggeredAction:ae},returnDependencies:()=>({triggerWith:{dependencyType:"stateVariable",variableName:"triggerWith"}}),definition({dependencyValues:Hr}){let Li=[];if(Hr.triggerWith)for(let ts of Hr.triggerWith){let rs=ts.target;ts.triggeringAction&&(rs+="|"+ts.triggeringAction),Li.includes(rs)||Li.push(rs)}return{setValue:{triggerWithTargetIds:Li}}},markStale(){return{updateActionChaining:!0}}};let Me=Br.hidden.returnDependencies,Or=Br.hidden.definition;Br.hidden.returnDependencies=function(Hr){let Li=Me(Hr);return Li.triggerWhen={dependencyType:"attributeComponent",attributeName:"triggerWhen"},Li.triggerWith={dependencyType:"stateVariable",variableName:"triggerWith"},Li.insideTriggerSet={dependencyType:"stateVariable",variableName:"insideTriggerSet"},Li},Br.hidden.definition=function(Hr){return Hr.dependencyValues.triggerWhen||Hr.dependencyValues.triggerWith||Hr.dependencyValues.insideTriggerSet?{setValue:{hidden:!0}}:Or(Hr)}}class UpdateValue extends InlineComponent{constructor(ae){super(ae),Object.assign(this.actions,{updateValue:this.updateValue.bind(this),updateValueIfTriggerNewlyTrue:this.updateValueIfTriggerNewlyTrue.bind(this),moveButton:this.moveButton.bind(this)})}static componentType="updateValue";static componentDocs={summary:"Updates one or more state variables on a target component"};static rendererType="button";static createAttributesObject(){let ae=super.createAttributesObject();ae.target={createReferences:!0,description:"Reference to the state variable that will be updated."},ae.type={createPrimitiveOfType:"string",createStateVariable:"type",defaultPrimitiveValue:"math",toLowerCase:!0,validValues:[{value:"math",description:"Treat the new value as a math expression."},{value:"number",description:"Treat the new value as a number."},{value:"boolean",description:"Treat the new value as a boolean."},{value:"text",description:"Treat the new value as text."}],description:"Component type used to interpret the new value."},ae.newValue={createComponentOfType:"_componentWithSelectableType",description:"New value to assign to the target."},ae.draggable={description:"Whether the update button can be dragged on a graph.",createComponentOfType:"boolean",createStateVariable:"draggable",defaultValue:!0,public:!0,forRenderer:!0},Object.assign(ae,returnAnchorAttributes()),Object.assign(ae,returnLabelAttributes());let Me=returnStandardTriggeringAttributes("updateValueIfTriggerNewlyTrue");return Object.assign(ae,Me),ae.simplify={description:"Level of simplification applied to the new value.",createComponentOfType:"text",createStateVariable:"simplify",defaultValue:"none",public:!0,toLowerCase:!0,valueForTrue:"full",valueForFalse:"none",validValues:[{value:"none",description:"No simplification is applied."},{value:"full",description:"Fully simplify the new value."},{value:"numbers",description:"Simplify numeric subexpressions only, leaving symbolic structure intact."},{value:"numbersPreserveOrder",description:"Like `numbers`, but does not reorder commutative operands."},{value:"normalizeOrder",description:"Reorder commutative operands into a canonical form without simplifying values."}]},ae}static returnChildGroups(){return[{group:"labels",componentTypes:["label"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnSelectedStyleStateVariableDefinition();Object.assign(ae,Me),addStandardTriggeringStateVariableDefinitions(ae,"updateValue");let Or=returnLabelStateVariableDefinitions();Object.assign(ae,Or);let Hr=returnAnchorStateVariableDefinition();return Object.assign(ae,Hr),ae.clickAction={forRenderer:!0,returnDependencies:()=>({}),definition:()=>({setValue:{clickAction:"updateValue"}})},ae.targetComponentIdx={additionalStateVariablesDefined:["unresolvedPath","targetOriginalPath"],returnDependencies:()=>({target:{dependencyType:"attributeRefResolutions",attributeName:"target"}}),definition({dependencyValues:Li}){if(Li.target?.length===1){const ts=Li.target[0];return{setValue:{targetComponentIdx:ts.componentIdx,unresolvedPath:ts.unresolvedPath,targetOriginalPath:ts.originalPath}}}else return{setValue:{targetComponentIdx:null,unresolvedPath:null,targetOriginalPath:null}}}},ae.targetComponent={stateVariablesDeterminingDependencies:["targetComponentIdx"],returnDependencies({stateValues:Li}){return Li.targetComponentIdx!=null?{targetComponent:{dependencyType:"componentIdentity",componentIdx:Li.targetComponentIdx}}:{}},definition:function({dependencyValues:Li}){let ts=null;return Li.targetComponent&&(ts=Li.targetComponent),{setValue:{targetComponent:ts}}}},ae.targetIdentities={stateVariablesDeterminingDependencies:["targetComponent"],returnDependencies:function({stateValues:Li,componentInfoObjects:ts}){let rs={};return Li.targetComponent!==null&&(ts.isCompositeComponent({componentType:Li.targetComponent.componentType,includeNonStandard:!1})?rs.targets={dependencyType:"replacement",compositeIdx:Li.targetComponent.componentIdx,recursive:!0}:rs.targets={dependencyType:"stateVariable",variableName:"targetComponent"}),rs},definition({dependencyValues:Li}){let ts=null;Li.targets&&(ts=Li.targets,Array.isArray(ts)||(ts=[ts]));let rs=[];return(ts===null||ts.length===0)&&rs.push(codedDiagnostic({type:"warning",code:"doenet-w0043",args:{source:"updateValue"}})),{setValue:{targetIdentities:ts},sendDiagnostics:rs}}},ae.targets={stateVariablesDeterminingDependencies:["targetIdentities","unresolvedPath","targetOriginalPath"],returnDependencies:function({stateValues:Li}){let ts={targetIdentities:{dependencyType:"stateVariable",variableName:"targetIdentities"},unresolvedPath:{dependencyType:"stateVariable",variableName:"unresolvedPath"}};if(Li.targetIdentities!==null)for(let[rs,ns]of Li.targetIdentities.entries()){let is;if(Li.unresolvedPath){let as=Li.propIndex;as&&(as=[...as]),is={dependencyType:"stateVariableFromUnresolvedPath",componentIdx:ns.componentIdx,unresolvedPath:Li.unresolvedPath,referenceOriginalPath:Li.targetOriginalPath,returnAsComponentObject:!0,variablesOptional:!0,caseInsensitiveVariableMatch:!0,publicStateVariablesOnly:!0,useMappedVariableNames:!0}}else is={dependencyType:"stateVariable",componentIdx:ns.componentIdx,variableName:"value",returnAsComponentObject:!0,variablesOptional:!0};ts["target"+rs]=is}return ts},definition({dependencyValues:Li}){let ts=null,rs=[];if(Li.targetIdentities!==null){ts=[];for(let ns in Li.targetIdentities){let is=Li["target"+ns];if(is==null){rs.push(codedDiagnostic({type:"warning",code:"doenet-w0043",args:{source:"updateValue"}}));continue}if(ts.push(is),Object.keys(is.stateValues)[0]===void 0)if(Li.unresolvedPath){let as=Li.unresolvedPath[0].name;if(Li.unresolvedPath[0].index.length>0)for(const os of Li.unresolvedPath[0].index)as+="[idx]";rs.push(codedDiagnostic({type:"warning",code:"doenet-w0044",args:{source:"updateValue",property:as,component:is.componentType}}))}else rs.push(codedDiagnostic({type:"warning",code:"doenet-w0044",args:{source:"updateValue",property:"value",component:is.componentType}}))}}return{setValue:{targets:ts},sendDiagnostics:rs}}},ae.newValue={returnDependencies:()=>({newValueAttr:{dependencyType:"attributeComponent",attributeName:"newValue",variableNames:["value"]},type:{dependencyType:"stateVariable",variableName:"type"},simplify:{dependencyType:"stateVariable",variableName:"simplify"}}),definition:function({dependencyValues:Li}){if(Li.newValueAttr===null)return{setValue:{newValue:null}};let ts=Li.newValueAttr.stateValues.value;return Li.type==="math"&&(ts=normalizeMathExpression({value:ts,simplify:Li.simplify})),{setValue:{newValue:ts}}}},ae}async updateValue({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){let Hr=await this.stateValues.targets,Li=await this.stateValues.newValue;if(Hr===null||Li===null)return;let ts=[];for(let rs of Hr){let ns=Object.keys(rs.stateValues)[0];ns!==void 0&&ts.push({updateType:"updateValue",componentIdx:rs.componentIdx,stateVariable:ns,value:Li})}return await this.coreFunctions.performUpdate({updateInstructions:ts,actionId:ae,sourceInformation:Me,skipRendererUpdate:!0,event:{verb:"selected",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{response:Li,responseText:Li.toString()}}}),await this.coreFunctions.triggerChainedActions({componentIdx:this.componentIdx,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or})}async updateValueIfTriggerNewlyTrue({stateValues:ae,previousValues:Me,actionId:Or}){if(await ae.triggerWhen&&Me.triggerWhen===!1&&!await this.stateValues.insideTriggerSet)return await this.updateValue({actionId:Or,skipRendererUpdate:!0})}async moveButton({x:ae,y:Me,z:Or,transient:Hr,actionId:Li,sourceInformation:ts={},skipRendererUpdate:rs=!1}){return await moveGraphicalObjectWithAnchorAction({x:ae,y:Me,z:Or,transient:Hr,actionId:Li,sourceInformation:ts,skipRendererUpdate:rs,componentIdx:this.componentIdx,componentType:this.componentType,coreFunctions:this.coreFunctions})}}class CallAction extends InlineComponent{constructor(ae){super(ae),Object.assign(this.actions,{callAction:this.callAction.bind(this),callActionIfTriggerNewlyTrue:this.callActionIfTriggerNewlyTrue.bind(this),moveButton:this.moveButton.bind(this)})}static componentType="callAction";static componentDocs={summary:"Triggers an action when clicked or in response to a specified user interaction"};static rendererType="button";static additionalSchemaChildren=["_base"];static keepChildrenSerialized({serializedComponent:ae,componentInfoObjects:Me}){if(ae.children===void 0)return[];{let Or=[];for(let[Hr,Li]of ae.children.entries())Me.componentIsSpecifiedType(Li,"label")||Or.push(Hr);return Or}}static createAttributesObject(){let ae=super.createAttributesObject();ae.target={createReferences:!0,description:"Reference to the component whose action will be invoked."},ae.actionName={createComponentOfType:"text",createStateVariable:"actionName",defaultValue:null,public:!0,description:"Name of the action to invoke on the target component."},ae.draggable={createComponentOfType:"boolean",createStateVariable:"draggable",defaultValue:!0,public:!0,forRenderer:!0,description:"Whether the action button can be dragged on a graph."},Object.assign(ae,returnLabelAttributes()),Object.assign(ae,returnAnchorAttributes());let Me=returnStandardTriggeringAttributes("callActionIfTriggerNewlyTrue");return Object.assign(ae,Me),ae.numbers={createComponentOfType:"numberList",description:"Numeric arguments passed to the invoked action."},ae.number={createComponentOfType:"number",description:"Numeric argument passed to the invoked action."},ae}static returnChildGroups(){return[{group:"labels",componentTypes:["label"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnSelectedStyleStateVariableDefinition();Object.assign(ae,Me),addStandardTriggeringStateVariableDefinitions(ae,"callAction");let Or=returnLabelStateVariableDefinitions();Object.assign(ae,Or);let Hr=returnAnchorStateVariableDefinition();return Object.assign(ae,Hr),ae.clickAction={forRenderer:!0,returnDependencies:()=>({}),definition:()=>({setValue:{clickAction:"callAction"}})},ae.targetComponentIdx={additionalStateVariablesDefined:["unresolvedPath","targetOriginalPath"],returnDependencies:()=>({target:{dependencyType:"attributeRefResolutions",attributeName:"target"}}),definition({dependencyValues:Li}){if(Li.target?.length===1){const ts=Li.target[0];if(ts.unresolvedPath==null)return{setValue:{targetComponentIdx:ts.componentIdx,unresolvedPath:ts.unresolvedPath,targetOriginalPath:ts.originalPath}}}return{setValue:{targetComponentIdx:null,unresolvedPath:null,targetOriginalPath:null}}}},ae}async callAction({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){let Hr=await this.stateValues.targetComponentIdx,Li=await this.stateValues.actionName;if(Hr!=null&&Li!=null){let ts={sourceInformation:Me,skipRendererUpdate:!0};this.serializedChildren.length>0&&(ts.serializedComponents=deepClone(this.serializedChildren)),this.attributes.number&&(ts.number=await this.attributes.number.component.stateValues.value),this.attributes.numbers&&(ts.numbers=await this.attributes.numbers.component.stateValues.numbers),ae&&(ts.actionId=ae),(await this.coreFunctions.performAction({componentIdx:Hr,actionName:Li,args:ts,event:{verb:"selected",object:{componentIdx:this.componentIdx,componentType:this.componentType}},caseInsensitiveMatch:!0}))?.actionUnavailable&&await this.warnActionUnavailable(Li),await this.coreFunctions.triggerChainedActions({componentIdx:this.componentIdx,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or})}}async warnActionUnavailable(ae){const Me=this.coreFunctions.doenetMLStringForReference(await this.stateValues.targetOriginalPath);Me&&this.coreFunctions.addDiagnostic(codedDiagnostic({type:"warning",code:"doenet-w0102",args:{action:ae,reference:`$${Me}`},position:this.position,sourceDoc:this.sourceDoc}))}async callActionIfTriggerNewlyTrue({stateValues:ae,previousValues:Me,actionId:Or}){if(ae.triggerWhen&&Me.triggerWhen===!1&&!await this.stateValues.insideTriggerSet)return await this.callAction({actionId:Or})}async moveButton({x:ae,y:Me,z:Or,transient:Hr,actionId:Li,sourceInformation:ts={},skipRendererUpdate:rs=!1}){return await moveGraphicalObjectWithAnchorAction({x:ae,y:Me,z:Or,transient:Hr,actionId:Li,sourceInformation:ts,skipRendererUpdate:rs,componentIdx:this.componentIdx,componentType:this.componentType,coreFunctions:this.coreFunctions})}}class triggerSet extends InlineComponent{constructor(ae){super(ae),Object.assign(this.actions,{triggerActions:this.triggerActions.bind(this),triggerActionsIfTriggerNewlyTrue:this.triggerActionsIfTriggerNewlyTrue.bind(this),moveButton:this.moveButton.bind(this)})}static componentType="triggerSet";static componentDocs={summary:"Groups a set of `<updateValue>` or `<callAction>` components which share a single trigger condition"};static rendererType="button";static createAttributesObject(){let ae=super.createAttributesObject();ae.draggable={description:"Whether the trigger set's button can be dragged on a graph.",createComponentOfType:"boolean",createStateVariable:"draggable",defaultValue:!0,public:!0,forRenderer:!0},Object.assign(ae,returnAnchorAttributes()),Object.assign(ae,returnLabelAttributes());let Me=returnStandardTriggeringAttributes("triggerActionsIfTriggerNewlyTrue");return Object.assign(ae,Me),ae}static returnChildGroups(){return[{group:"updateValuesCallActions",componentTypes:["updateValue","callAction"]},{group:"labels",componentTypes:["label"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnSelectedStyleStateVariableDefinition();Object.assign(ae,Me),addStandardTriggeringStateVariableDefinitions(ae,"triggerActions");let Or=returnLabelStateVariableDefinitions();Object.assign(ae,Or);let Hr=returnAnchorStateVariableDefinition();return Object.assign(ae,Hr),ae.clickAction={forRenderer:!0,returnDependencies:()=>({}),definition:()=>({setValue:{clickAction:"triggerActions"}})},ae.updateValueAndActionsToTrigger={returnDependencies:()=>({updateValueAndCallActionChildren:{dependencyType:"child",childGroups:["updateValuesCallActions"]}}),definition({dependencyValues:Li}){return{setValue:{updateValueAndActionsToTrigger:Li.updateValueAndCallActionChildren}}}},ae}async triggerActions({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){for(let Hr of await this.stateValues.updateValueAndActionsToTrigger)this.componentInfoObjects.isInheritedComponentType({inheritedComponentType:Hr.componentType,baseComponentType:"updateValue"})?await this.coreFunctions.performAction({componentIdx:Hr.componentIdx,actionName:"updateValue",args:{actionId:ae,sourceInformation:Me,skipRendererUpdate:!0}}):this.componentInfoObjects.isInheritedComponentType({inheritedComponentType:Hr.componentType,baseComponentType:"callAction"})&&await this.coreFunctions.performAction({componentIdx:Hr.componentIdx,actionName:"callAction",args:{actionId:ae,sourceInformation:Me,skipRendererUpdate:!0}});return await this.coreFunctions.triggerChainedActions({componentIdx:this.componentIdx,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or})}async triggerActionsIfTriggerNewlyTrue({stateValues:ae,previousValues:Me,actionId:Or}){if(ae.triggerWhen&&Me.triggerWhen===!1)return await this.triggerActions({actionId:Or,skipRendererUpdate:!0})}async moveButton({x:ae,y:Me,z:Or,transient:Hr,actionId:Li,sourceInformation:ts={},skipRendererUpdate:rs=!1}){return await moveGraphicalObjectWithAnchorAction({x:ae,y:Me,z:Or,transient:Hr,actionId:Li,sourceInformation:ts,skipRendererUpdate:rs,componentIdx:this.componentIdx,componentType:this.componentType,coreFunctions:this.coreFunctions})}}class FunctionIterates extends InlineComponent{static componentType="functionIterates";static componentDocs={summary:"List of values produced by iterating a function"};static rendererType=void 0;static variableForIndexAsProp="iterates";static createAttributesObject(){let ae=super.createAttributesObject();return ae.numIterates={description:"Number of iterations to compute.",createComponentOfType:"integer",createStateVariable:"numIterates",defaultValue:0,public:!0},ae.forceSymbolic={description:"Whether to force symbolic evaluation.",createComponentOfType:"boolean",createStateVariable:"forceSymbolic",defaultValue:!1,public:!0},ae.forceNumeric={description:"Whether to force numeric evaluation.",createComponentOfType:"boolean",createStateVariable:"forceNumeric",defaultValue:!1,public:!0},ae.initialValue={createComponentOfType:"math",createStateVariable:"initialValue",defaultValue:Context.fromAst("_"),description:"Starting value passed to the function on the first iteration."},ae.function={createComponentOfType:"function",description:"The function to iterate."},Object.assign(ae,returnNumberDisplayAttributes()),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.numDimensions={description:"Number of dimensions of each iterate.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({functionAttr:{dependencyType:"attributeComponent",attributeName:"function",variableNames:["numInputs","numOutputs"]}}),definition({dependencyValues:Me}){if(Me.functionAttr)if(Me.functionAttr.stateValues.numInputs!==Me.functionAttr.stateValues.numOutputs){let Or=Me.functionAttr.stateValues.numInputs,Hr=Me.functionAttr.stateValues.numOutputs,Li=codedDiagnostic({type:"warning",code:"doenet-w0056",args:{inputs:Or,outputs:Hr},position:Me.functionAttr.position||void 0});return{setValue:{numDimensions:0},sendDiagnostics:[Li]}}else return{setValue:{numDimensions:Me.functionAttr.stateValues.numInputs}};else return{setValue:{numDimensions:0}}}},ae.allIterates={description:"All computed iterates of the function.",public:!0,shadowingInstructions:{createComponentOfType:"mathList",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({functionAttr:{dependencyType:"attributeComponent",attributeName:"function",variableNames:["symbolicfs","numericalfs","symbolic"]},forceSymbolic:{dependencyType:"stateVariable",variableName:"forceSymbolic"},forceNumeric:{dependencyType:"stateVariable",variableName:"forceNumeric"},numDimensions:{dependencyType:"stateVariable",variableName:"numDimensions"},initialValue:{dependencyType:"stateVariable",variableName:"initialValue"},numIterates:{dependencyType:"stateVariable",variableName:"numIterates"}}),definition({dependencyValues:Me}){let Or=[],Hr=Me.functionAttr,Li=Me.initialValue,ts=!Me.forceNumeric&&(Hr.stateValues.symbolic||Me.forceSymbolic),rs=Me.numIterates;if(!Hr||Me.numDimensions===0||!(Me.numDimensions===1||Array.isArray(Li.tree)&&vectorOperators.includes(Li.tree[0])&&Li.tree.length===Me.numDimensions+1))return Or=Array(rs).fill(Context.fromAst("_")),{setValue:{allIterates:Or}};if(ts)if(Me.numDimensions===1){let ns=Hr.stateValues.symbolicfs[0],is=Li;for(let as=0;as<rs;as++)is=ns(is),Or.push(is)}else{let ns=Hr.stateValues.symbolicfs,is=Li.tree.slice(1).map(as=>Context.fromAst(as));for(let as=0;as<rs;as++){let os=[];for(let ss=0;ss<Me.numDimensions;ss++)os.push(ns[ss](...is).tree);Or.push(Context.fromAst(["vector",...os])),is=os.map(ss=>Context.fromAst(ss))}}else if(Me.numDimensions===1){let ns=Hr.stateValues.numericalfs[0],is=Li.evaluate_to_constant();if(Number.isNaN(is))Or=Array(rs).fill(Context.fromAst("_"));else for(let as=0;as<rs;as++)is=ns(is),Or.push(Context.fromAst(is))}else{let ns=Hr.stateValues.numericalfs,is=Li.tree.slice(1).map(as=>Context.fromAst(as).evaluate_to_constant());for(let as=0;as<rs;as++){let os=[];for(let ss=0;ss<Me.numDimensions;ss++)os.push(ns[ss](...is));Or.push(Context.fromAst(["vector",...os])),is=os}}return{setValue:{allIterates:Or}}}},ae.allIteratesWithInitial={description:"All iterates including the initial value.",public:!0,shadowingInstructions:{createComponentOfType:"mathList",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({initialValue:{dependencyType:"stateVariable",variableName:"initialValue"},allIterates:{dependencyType:"stateVariable",variableName:"allIterates"}}),definition({dependencyValues:Me}){return{setValue:{allIteratesWithInitial:[Me.initialValue,...Me.allIterates]}}}},ae.iterates={description:"The list of iterate values.",isArray:!0,public:!0,shadowingInstructions:{createComponentOfType:"math",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},entryPrefixes:["iterate"],returnArraySizeDependencies:()=>({numIterates:{dependencyType:"stateVariable",variableName:"numIterates"}}),returnArraySize({dependencyValues:Me}){return[Me.numIterates]},returnArrayDependenciesByKey(){return{globalDependencies:{allIterates:{dependencyType:"stateVariable",variableName:"allIterates"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arraySize:Or}){let Hr={};for(let Li=0;Li<Or[0];Li++)Hr[Li]=Me.allIterates[Li];return{setValue:{iterates:Hr}}}},ae.finalIterate={description:"The last iterate value.",public:!0,shadowingInstructions:{createComponentOfType:"math",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},stateVariablesDeterminingDependencies:["numIterates"],returnDependencies({stateValues:Me}){return!Number.isFinite(Me.numIterates)||Me.numIterates<0?{}:Me.numIterates>0?{finalIterate:{dependencyType:"stateVariable",variableName:`iterate${Me.numIterates}`}}:{finalIterate:{dependencyType:"stateVariable",variableName:"initialValue"}}},definition({dependencyValues:Me}){return{setValue:{finalIterate:Me.finalIterate}}}},ae}}class Module extends Group{static componentType="module";static componentDocs={summary:"A reusable group with parameterized attributes; can be copied elsewhere with new parameter values"};static acceptAnyAttribute=!0;static createAttributesObject(){let ae=super.createAttributesObject();return delete ae.styleNumber,ae}}class ModuleAttributes extends CompositeComponent{static componentType="moduleAttributes";static componentDocs={summary:"Declares attributes accepted by an enclosing `<module>`"};static keepChildrenSerialized({serializedComponent:ae}){return ae.children===void 0?[]:Object.keys(ae.children)}static additionalSchemaChildren=["_base"];static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.moduleIdx={returnDependencies:()=>({sourceCompositeIdentity:{dependencyType:"sourceCompositeIdentity"}}),definition({dependencyValues:Me}){let Or=null;return Me.sourceCompositeIdentity&&Me.sourceCompositeIdentity.componentType==="module"&&(Or=Me.sourceCompositeIdentity.componentIdx),{setValue:{moduleIdx:Or}}}},ae.serializedChildren={returnDependencies:()=>({serializedChildren:{dependencyType:"serializedChildren",doNotProxy:!0}}),definition:function({dependencyValues:Me}){return{setValue:{serializedChildren:Me.serializedChildren}}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({componentIdentity:{dependencyType:"stateVariable",variableName:"moduleIdx"}}),definition(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae}static async createSerializedReplacements({component:ae,components:Me,componentInfoObjects:Or,nComponents:Hr,workspace:Li}){Li.replacementsCreated===void 0&&(Li.replacementsCreated=0);const ts={prefix:`${ae.stateId}|`,num:Li.replacementsCreated},rs=[],ns=await ae.stateValues.moduleIdx;if(ns===null)return{replacements:[],diagnostics:rs,nComponents:Hr};const is=Me[ns],as={};for(let cs in is.attributes)as[cs.toLowerCase()]=cs;const os=Object.keys(is.constructor.createAttributesObject()).map(cs=>cs.toLowerCase());os.push("name");const ss=[],ls=deepClone(await ae.state.serializedChildren.value);for(const cs of ls){const ds=cs.attributes.name?.primitive?.value;if(!ds){ss.push(cs),rs.push(codedDiagnostic({type:"warning",code:"doenet-w0074",args:{component:cs.componentType},position:cs.position}));continue}let ps=as[ds.toLowerCase()],ms=is.attributes[ps];if(ms===void 0){ss.push(cs);continue}if(os.includes(ps)){rs.push(codedDiagnostic({type:"warning",code:"doenet-w0075",args:{component:cs.componentType,name:ds},position:cs.position})),ss.push(cs);continue}if(ms.type!=="unresolved")throw Error("A module attribute that isn't an existing attribute must be unresolved!");const fs=expandUnflattenedToSerializedComponents({serializedComponents:ms.children,componentInfoObjects:Or,nComponents:Hr,stateIdInfo:ts});rs.push(...fs.diagnostics),Hr=fs.nComponents,cs.children=fs.components;const hs=applySugar({serializedComponents:[cs],componentInfoObjects:Or,nComponents:Hr,stateIdInfo:ts});rs.push(...hs.diagnostics),Hr=hs.nComponents,ss.push(hs.components[0])}const us={type:"serialized",componentType:"setup",componentIdx:Hr++,stateId:`${ts.prefix}${ts.num++}`,children:ss,attributes:{},doenetAttributes:{},state:{}};return Li.replacementsCreated=ts.num,{replacements:[us],diagnostics:rs,nComponents:Hr}}}class Footnote extends InlineComponent{static componentType="footnote";static renderChildren=!0;static componentDocs={summary:"Inline footnote whose body is shown on demand and is auto-numbered in the document"};static includeBlankStringChildren=!0;static returnChildGroups(){return[{group:"inlines",componentTypes:["_inline"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.text={description:"The footnote's body as plain text.",public:!0,shadowingInstructions:{createComponentOfType:"text"},forRenderer:!0,returnDependencies:()=>({inlineChildren:{dependencyType:"child",childGroups:["inlines"],variableNames:["text","hidden"],variablesOptional:!0}}),definition:function({dependencyValues:Me}){return{setValue:{text:textFromChildren(Me.inlineChildren)}}}},ae.footnoteTag={description:"The auto-generated marker (number) used to reference this footnote.",public:!0,shadowingInstructions:{createComponentOfType:"text"},forRenderer:!0,mustEvaluate:!0,returnDependencies:()=>({footnoteCounter:{dependencyType:"counter",counterName:"footnote"}}),definition({dependencyValues:Me}){return{setValue:{footnoteTag:String(Me.footnoteCounter)}}}},ae}}class Caption extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="caption";static rendererType="containerInline";static canDisplayChildErrors=!0;static componentDocs={summary:"A caption attached to a figure or table"};static renderChildren=!0;static includeBlankStringChildren=!0;static returnChildGroups(){return[{group:"inlinesBlocks",componentTypes:["_inline","_block"]},{group:"errors",componentTypes:["_error"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.text={description:"The caption rendered as a plain text string.",public:!0,shadowingInstructions:{createComponentOfType:"text"},returnDependencies:()=>({inlineChildren:{dependencyType:"child",childGroups:["inlinesBlocks"],variableNames:["text","hidden"],variablesOptional:!0}}),definition:function({dependencyValues:Me}){return{setValue:{text:textFromChildren(Me.inlineChildren)}}}},ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}class Endpoint extends Point{static componentType="endpoint";static rendererType="point";static componentDocs={summary:"A point that marks the endpoint of an interval, rendered open or closed"};static createAttributesObject(){let ae=super.createAttributesObject();return ae.markerStyle={...ae.markerStyle,validValues:markerStyleValuesWithFillVariants},delete ae.markerFilled,ae.open={createComponentOfType:"boolean",createStateVariable:"open",defaultValue:!1,public:!0,forRenderer:!0,description:"Whether the endpoint is open (excluded) rather than closed (included)."},ae.switchable={createComponentOfType:"boolean",createStateVariable:"switchable",defaultValue:!1,public:!0,forRenderer:!0,description:"Whether the user can toggle the endpoint between open and closed by clicking it."},ae}async switchPoint({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){if(await this.stateValues.switchable)return await this.coreFunctions.performUpdate({updateInstructions:[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"open",value:!await this.stateValues.open}],actionId:ae,sourceInformation:Me,skipRendererUpdate:Or,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{open:!await this.stateValues.open}}})}}class Sort extends CompositeComponent{static componentType="sort";static componentDocs={summary:"Sorts a list according to a comparison function"};static takesIndex=!0;static allowInSchemaAsComponent=["_inline","_block","_graphical"];static stateVariableToEvaluateAfterReplacements="readyToExpandWhenResolved";static createAttributesObject(){let ae=super.createAttributesObject();return ae.sortVectorsBy={groupName:"sorting",description:"Whether to sort vectors by component or by magnitude.",createComponentOfType:"text",createStateVariable:"sortVectorsBy",defaultValue:"displacement",public:!0,toLowerCase:!0,validValues:[{value:"displacement",description:"Sort vectors by their displacement components."},{value:"tail",description:"Sort vectors by the position of their tail point."}]},ae.sortByComponent={groupName:"sorting",description:"Index of the component to sort by (when sorting vectors).",createComponentOfType:"integer",createStateVariable:"sortByComponent",defaultValue:"1",public:!0},ae.sortByProp={createPrimitiveOfType:"string",highlighted:!0,groupName:"sorting",description:'Name of a property to sort by (e.g. "x" for sorting points by x-coordinate).'},ae.type={createPrimitiveOfType:"string",highlighted:!0,description:"Component type to sort bare string children as. Omit it and they are read as what they look like: every piece naming a number sorts by value, anything else sorts alphabetically.",validValues:[{value:"number",description:"Read bare strings as numbers, ordered by value."},{value:"math",description:"Read bare strings as math expressions, ordered by value."},{value:"text",description:"Read bare strings as text, ordered alphabetically."},{value:"boolean",description:"Read bare strings as booleans, ordered with false before true."}]},ae.asList={createPrimitiveOfType:"boolean",createStateVariable:"asList",defaultValue:!0,highlighted:!0,description:"Whether to render the items separated by commas (true) or with no separator (false)."},ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions();return ae.push(returnBreakStringsIntoTypeSugarInstruction(this.componentType)),ae}static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnListValueStateVariableDefinitions({componentName:this.componentType,supportProps:!0})),ae.sortedValues={returnDependencies:()=>({listValues:{dependencyType:"stateVariable",variableName:"listValues"},allAreNumeric:{dependencyType:"stateVariable",variableName:"allAreNumeric"}}),definition({dependencyValues:Me}){let Or=[...Me.listValues];return Or.sort((Hr,Li)=>compareExtractedValues(Hr,Li,Me.allAreNumeric)),{setValue:{sortedValues:Or}}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({sortedValues:{dependencyType:"stateVariable",variableName:"sortedValues"}}),markStale:()=>({updateReplacements:!0}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae}static async createSerializedReplacements({component:ae,components:Me,componentInfoObjects:Or,workspace:Hr,nComponents:Li}){let ts=[],rs=[],ns=[];for(let is of await ae.stateValues.sortedValues){let as;if(is.listInd===void 0?as=Me[is.componentIdx]:as=Me[is.componentIdx].activeChildren[is.listInd],as){ns.push(as.componentIdx);const os=await as.serialize(),ss=createNewComponentIndices([os],Li);Li=ss.nComponents,rs.push(ss.components[0])}}return rs=postProcessCopy({serializedComponents:rs,componentIdx:ae.componentIdx,addShadowDependencies:!0,markAsPrimaryShadow:!0}),Hr.componentsCopied=ns,{replacements:rs,diagnostics:ts,nComponents:Li}}static async calculateReplacementChanges({component:ae,components:Me,componentInfoObjects:Or,workspace:Hr,nComponents:Li}){let ts=[],rs=[];for(let os of await ae.stateValues.sortedValues){let ss;os.listInd===void 0?ss=Me[os.componentIdx]:ss=Me[os.componentIdx].activeChildren[os.listInd],ss&&rs.push(ss.componentIdx)}if(rs.length==Hr.componentsCopied.length&&Hr.componentsCopied.every((os,ss)=>os===rs[ss]))return{replacementChanges:[],diagnostics:ts,nComponents:Li};let ns=await this.createSerializedReplacements({component:ae,components:Me,componentInfoObjects:Or,workspace:Hr,nComponents:Li}),is=ns.replacements;return ts.push(...ns.diagnostics),Li=ns.nComponents,{replacementChanges:[{changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToReplace:ae.replacements.length,serializedReplacements:is}],diagnostics:ts,nComponents:Li}}}class Shuffle extends CompositeComponent{static componentType="shuffle";static componentDocs={summary:"Randomly shuffles its children"};static takesIndex=!0;static allowInSchemaAsComponent=["_inline","_block","_graphical"];static createsVariants=!0;static stateVariableToEvaluateAfterReplacements="readyToExpandWhenResolved";static createAttributesObject(){let ae=super.createAttributesObject();return ae.type={highlighted:!0,createPrimitiveOfType:"string",description:"Component type to read bare string children as. Omit it and they are read as what they look like: every piece naming a number makes them numbers, anything else makes them text.",validValues:[{value:"number",description:"Read bare strings as numbers."},{value:"math",description:"Read bare strings as math expressions."},{value:"text",description:"Read bare strings as text."},{value:"boolean",description:"Read bare strings as booleans."}]},ae.asList={highlighted:!0,createPrimitiveOfType:"boolean",createStateVariable:"asList",defaultValue:!0,description:"Whether to render the items separated by commas (true) or with no separator (false)."},ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions();return ae.push(returnBreakStringsIntoTypeSugarInstruction(this.componentType)),ae}static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.originalComponentIndices={additionalStateVariablesDefined:["numComponents"],returnDependencies:()=>({children:{dependencyType:"child",childGroups:["anything"],variableNames:["componentIndicesInList"],variablesOptional:!0}}),definition({dependencyValues:Me}){let Or=[];const Hr=[];for(let Li of Me.children)typeof Li=="string"&&Hr.push(codedDiagnostic({type:"warning",code:"doenet-w0015",args:{value:Li,component:"shuffle"}})),Li.stateValues?.componentIndicesInList?Or.push(...Li.stateValues.componentIndicesInList):Or.push(Li.componentIdx);return{setValue:{originalComponentIndices:Or,numComponents:Or.length},sendDiagnostics:Hr}}},ae.componentOrder={returnDependencies({sharedParameters:Me}){return{variantSeed:{dependencyType:"value",value:Me.variantSeed},rngClass:{dependencyType:"value",value:Me.rngClass,doNotProxy:!0},numComponents:{dependencyType:"stateVariable",variableName:"numComponents"},variants:{dependencyType:"variants"}}},definition({dependencyValues:Me}){let Or=[],Hr=Me.numComponents,Li=Me.variants?.desiredVariant?.indices;if(Li!==void 0)if(Li.length!==Hr)Or.push(codedDiagnostic({type:"info",code:"doenet-i0006"}));else{if(Li=Li.map(Number),!Li.every(Number.isInteger))throw Error("All indices specified for shuffle must be integers");if(!Li.every(ns=>ns>=1&&ns<=Hr))Or.push(codedDiagnostic({type:"info",code:"doenet-i0007",args:{component:"shuffle"}}));else return{setValue:{componentOrder:Li.filter(ns=>ns!==void 0)}}}let ts=Me.rngClass(Me.variantSeed+"co"),rs=[...Array(Hr).keys()].map(ns=>ns+1);for(let ns=Hr-1;ns>0;ns--){const is=ts(),as=Math.floor(is*(ns+1));[rs[ns],rs[as]]=[rs[as],rs[ns]]}return{setValue:{componentOrder:rs},sendDiagnostics:Or}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({sortedValues:{dependencyType:"stateVariable",variableName:"componentOrder"}}),markStale:()=>({updateReplacements:!0}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae.generatedVariantInfo={additionalStateVariablesDefined:["isVariantComponent"],returnDependencies:({componentInfoObjects:Me,sharedParameters:Or})=>({variantSeed:{dependencyType:"value",value:Or.variantSeed},componentOrder:{dependencyType:"stateVariable",variableName:"componentOrder"},variantDescendants:{dependencyType:"descendant",componentTypes:Object.keys(Me.componentTypesCreatingVariants),variableNames:["isVariantComponent","generatedVariantInfo"],useReplacementsForComposites:!0,recurseToMatchedChildren:!1,variablesOptional:!0,includeNonActiveChildren:!0,ignoreReplacementsOfEncounteredComposites:!0}}),definition({dependencyValues:Me,componentIdx:Or}){let Hr={seed:Me.variantSeed,meta:{createdBy:Or},indices:Me.componentOrder},Li=Hr.subvariants=[];for(let ts of Me.variantDescendants)ts.stateValues.isVariantComponent?Li.push(ts.stateValues.generatedVariantInfo):ts.stateValues.generatedVariantInfo&&Li.push(...ts.stateValues.generatedVariantInfo.subvariants);return{setValue:{generatedVariantInfo:Hr,isVariantComponent:!0}}}},ae}static setUpVariant({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or}){setUpVariantSeedAndRng({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or})}static async createSerializedReplacements({component:ae,components:Me,componentInfoObjects:Or,workspace:Hr,nComponents:Li}){let ts=[],rs=[],ns=[],is=await ae.stateValues.originalComponentIndices;for(let as of await ae.stateValues.componentOrder){let os=Me[is[as-1]];if(os){ns.push(os.componentIdx);const ss=await os.serialize(),ls=createNewComponentIndices([ss],Li);Li=ls.nComponents,rs.push(...ls.components)}}return rs=postProcessCopy({serializedComponents:rs,componentIdx:ae.componentIdx,addShadowDependencies:!0,markAsPrimaryShadow:!0}),Hr.componentsCopied=ns,{replacements:rs,diagnostics:ts,nComponents:Li}}static async calculateReplacementChanges({component:ae,components:Me,componentInfoObjects:Or,workspace:Hr,nComponents:Li}){let ts=[],rs=[],ns=await ae.stateValues.originalComponentIndices;for(let ss of await ae.stateValues.componentOrder){let ls=Me[ns[ss-1]];ls&&rs.push(ls.componentIdx)}if(rs.length==Hr.componentsCopied.length&&Hr.componentsCopied.every((ss,ls)=>ss===rs[ls]))return{replacementChanges:[],diagnostics:ts,nComponents:Li};let is=await this.createSerializedReplacements({component:ae,components:Me,componentInfoObjects:Or,workspace:Hr,nComponents:Li}),as=is.replacements;return ts.push(...is.diagnostics),Li=is.nComponents,{replacementChanges:[{changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToReplace:ae.replacements.length,serializedReplacements:as}],diagnostics:ts,nComponents:Li}}static determineNumberOfUniqueVariants({serializedComponent:ae,componentInfoObjects:Me,infoDiagnostics:Or}){let Hr=0;for(let ns of ae.children)if(Me.isInheritedComponentType({inheritedComponentType:ns.componentType,baseComponentType:"_composite"}))if(ns.attributes.createComponentOfType?.primitive)if(ns.attributes.numComponents?.primitive!==void 0){let is=Number(ns.attributes.numComponents?.primitive.value);if(Number.isInteger(is)&&is>=0)Hr+=is;else return{success:!1}}else Hr++;else return{success:!1};else Hr++;let Li=1;for(let ns=2;ns<=Hr;ns++)Li*=ns;let ts=super.determineNumberOfUniqueVariants({serializedComponent:ae,componentInfoObjects:Me,infoDiagnostics:Or});if(!ts.success)return{success:!1};let rs=ts.numVariants*Li;return rs>0?(ae.variants.numVariants=rs,ae.variants.uniqueVariantData={numVariantsByDescendant:ae.variants.uniqueVariantData.numVariantsByDescendant,numberOfPermutations:Li,numComponents:Hr},{success:!0,numVariants:rs}):{success:!1}}static getUniqueVariant({serializedComponent:ae,variantIndex:Me,componentInfoObjects:Or}){let Hr=ae.variants?.numVariants;if(Hr===void 0)return{success:!1};if(!Number.isInteger(Me)||Me<1||Me>Hr)return{success:!1};let Li=ae.variants.uniqueVariantData.numVariantsByDescendant,ts=ae.variants.descendantVariantComponents,rs=ae.variants.uniqueVariantData.numberOfPermutations,ns=ae.variants.uniqueVariantData.numComponents,is=[...Li];is.push(rs);let as=enumerateCombinations({numberOfOptionsByIndex:is,maxNumber:Me})[Me-1].map(ms=>ms+1),os=as.pop(),ss=as,ls=[...Array(ns).keys()].map(ms=>ms+1),us=enumeratePermutations({values:ls,maxNumber:os})[os-1],cs=!1,ds=[];for(let ms=0;ms<Li.length;ms++)if(Li[ms]>1){let fs=ts[ms],gs=Or.allComponentClasses[fs.componentType].getUniqueVariant({serializedComponent:fs,variantIndex:ss[ms],componentInfoObjects:Or});if(!gs.success)return{success:!1};ds.push(gs.desiredVariant),cs=!0}else ds.push({});let ps={indices:us};return cs&&(ps.subvariants=ds),{success:!0,desiredVariant:ps}}}class SortIndices extends Sort{static componentType="sortIndices";static componentDocs={summary:"The indices that put a list in sorted order, rather than the sorted values"};static allowInSchemaAsComponent=["number"];static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.sortedIndices={returnDependencies:()=>({sortedValues:{dependencyType:"stateVariable",variableName:"sortedValues"},componentIndicesForValues:{dependencyType:"stateVariable",variableName:"componentIndicesForValues"}}),definition({dependencyValues:Me}){let Or=new Map;for(let[Li,ts]of Me.componentIndicesForValues.entries())Or.has(ts)||Or.set(ts,Li+1);let Hr=[];for(let Li of Me.sortedValues){let ts=Or.get(Li.componentIdx);ts!==void 0&&Hr.push(ts)}return{setValue:{sortedIndices:Hr}}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({sortedIndices:{dependencyType:"stateVariable",variableName:"sortedIndices"}}),markStale:()=>({updateReplacements:!0}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae}static async createSerializedReplacements({component:ae,componentInfoObjects:Me,workspace:Or,nComponents:Hr}){return createValueListReplacements({component:ae,values:await ae.stateValues.sortedIndices,componentType:"number",componentInfoObjects:Me,workspace:Or,nComponents:Hr})}static async calculateReplacementChanges({component:ae,componentInfoObjects:Me,workspace:Or,nComponents:Hr}){return calculateValueListReplacementChanges({component:ae,values:await ae.stateValues.sortedIndices,componentType:"number",componentInfoObjects:Me,workspace:Or,nComponents:Hr})}addOwnPotentialRendererTypes(ae,Me){super.addOwnPotentialRendererTypes(ae,Me),addReplacementRendererType({component:this,componentType:"number",rendererTypes:ae})}}class SolveEquations extends InlineComponent{static componentType="solveEquations";static componentDocs={summary:"Numerically solves a system of equations"};static rendererType=void 0;static variableForIndexAsProp="solutions";static createAttributesObject(){let ae=super.createAttributesObject();return ae.variables={createComponentOfType:"_variableNameList",description:"Names of the variables to solve for."},ae.numDiscretizationPoints={description:"Number of points used when searching for solutions numerically.",createComponentOfType:"number",createStateVariable:"numDiscretizationPoints",defaultValue:100,public:!0},ae.minVar={createComponentOfType:"number",createStateVariable:"minVar",defaultValue:null,description:"Lower bound of the variable's search range."},ae.maxVar={createComponentOfType:"number",createStateVariable:"maxVar",defaultValue:null,description:"Upper bound of the variable's search range."},ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){return Or.every(ts=>typeof ts=="string"||ts.extending&&"Ref"in ts.extending)?Or.length===1&&typeof Or[0]!="string"?{success:!1}:{success:!0,newChildren:[{type:"serialized",componentType:"math",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}],nComponents:Hr}:{success:!1}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"maths",componentTypes:["math"]},{group:"strings",componentTypes:["string"]}]}static returnStateVariableDefinitions(ae){let Me=super.returnStateVariableDefinitions(ae);return Me.variables={description:"The variables of the equations.",isArray:!0,public:!0,shadowingInstructions:{createComponentOfType:"_variableName"},entryPrefixes:["variable"],returnArraySizeDependencies:()=>({}),returnArraySize({dependencyValues:Or}){return[1]},returnArrayDependenciesByKey({arrayKeys:Or}){return{globalDependencies:{variablesAttr:{dependencyType:"attributeComponent",attributeName:"variables",variableNames:["variables"]}}}},arrayDefinitionByKey({globalDependencyValues:Or,arraySize:Hr,arrayKeys:Li,usedDefault:ts}){let rs=[];return Or.variablesAttr!==null&&(rs=Or.variablesAttr.stateValues.variables),{setValue:{variables:returnNVariables(Hr[0],rs)}}}},Me.variable={isAlias:!0,targetVariableName:"variable1",description:"The first variable being solved for."},Me.allSolutions={returnDependencies:()=>({mathChild:{dependencyType:"child",childGroups:["maths"],variableNames:["value"]},variables:{dependencyType:"stateVariable",variableName:"variables"},minVar:{dependencyType:"stateVariable",variableName:"minVar"},maxVar:{dependencyType:"stateVariable",variableName:"maxVar"},numDiscretizationPoints:{dependencyType:"stateVariable",variableName:"numDiscretizationPoints"}}),definition({dependencyValues:Or}){if(Or.mathChild.length===0)return{setValue:{allSolutions:[]}};let Hr=Or.mathChild[0].stateValues.value;if(!(Array.isArray(Hr.tree)&&Hr.tree.length===3&&Hr.tree[0]==="="))return{setValue:{allSolutions:[]}};let Li=Or.minVar,ts=Or.maxVar,rs=[],ns=Or.variables[0].subscripts_to_strings().tree,is=Context.fromAst(["+",Hr.tree[1],["-",Hr.tree[2]]]).subscripts_to_strings(),as;try{as=is.f()}catch{let bs=[codedDiagnostic({type:"warning",code:"doenet-w0057",args:{equation:Hr.toString()}})];return{setValue:{allSolutions:[]},sendDiagnostics:bs}}let os=xs=>as({[ns]:xs}),ss=xs=>normalizeMathExpression({value:is.substitute({[ns]:xs}).strings_to_subscripts(),simplify:!0,expand:!0}).evaluate_to_constant(),ls=function(xs){try{return os(xs)}catch{return NaN}},us=function(xs){try{return os(xs)}catch{let vs=ss(xs);return vs!==null?vs:NaN}};if(Number.isFinite(Li)||(Li=-10),Number.isFinite(ts)||(ts=10),Li>ts)return{setValue:{allSolutions:[]}};let cs=[Li,ts],ds=[Li];for(let xs=0;xs<cs.length-1;xs++){let bs=cs[xs],vs=cs[xs+1],Cs=Or.numDiscretizationPoints,Ts=(vs-bs)/Cs;for(let As=1;As<Cs;As++)ds.push(bs+As*Ts);ds.push(vs)}let ps=2*ds[0]-ds[1],ms=2*ds[ds.length-1]-ds[ds.length-2];ds=[ps,...ds,ms];let fs=ds.map(us),hs=ds[0],gs=fs[0];for(let xs=0;xs<ds.length;xs++){let bs=ds[xs],vs=fs[xs];if(!Number.isFinite(vs)||!Number.isFinite(gs)){let Cs,Ts;if(Number.isFinite(vs)?(Cs=bs,Ts=hs):Number.isFinite(gs)&&(Cs=hs,Ts=bs),Cs!==void 0){for(;;){let As=(Cs+Ts)/2;if(As===Cs||As===Ts)break;Number.isFinite(ls(As))?Cs=As:Ts=As}[bs,hs].includes(Cs)||(ds.splice(xs,0,Cs),fs.splice(xs,0,ls(Cs)))}}hs=bs,gs=vs}rs=[],hs=ds[0],gs=fs[0],gs===0&&rs.push(hs);for(let xs=1;xs<ds.length;xs++){let bs=ds[xs],vs=fs[xs];if(vs===0){let Cs=!1;if(xs<ds.length-1){let Ts=ds[xs+1],As=fs[xs+1],Ns=hs,_s=gs;if(gs*As>0){for(let Es=0;Es<10;Es++)if(hs=.1*hs+.9*bs,Ts=.1*Ts+.9*bs,gs=ls(hs),As=ls(Ts),gs*As<0){gs*_s<0?(rs.push(ae.fzero(ls,[Ns,hs])),rs.push(bs)):(rs.includes(bs)||rs.push(bs),bs=Ts,vs=As),Cs=!0;break}}}!Cs&&!rs.includes(bs)&&rs.push(bs)}else if(vs*gs<0)rs.push(ae.fzero(ls,[hs,bs]));else if(gs!==0&&xs<ds.length-1){let Cs=ds[xs+1],Ts=fs[xs+1];if((gs-vs)*(Ts-vs)>0&&(vs>0&&gs>vs||vs<0&&gs<vs)){let As;gs>vs?As=ls:As=_s=>-ls(_s);let Ns=ae.fminbr(As,[hs,Cs],void 0,1e-10);if(Ns.success){let _s=Ns.x,Es=ls(_s);Es*gs<0?(rs.push(ae.fzero(ls,[hs,_s])),bs=_s,vs=Es):Es===0&&rs.push(_s)}}}hs=bs,gs=vs}return rs=rs.filter(xs=>xs>=Li&&xs<=ts),{setValue:{allSolutions:rs.map(xs=>Context.fromAst(xs))}}}},Me.numSolutions={description:"The number of numerical solutions found.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({allSolutions:{dependencyType:"stateVariable",variableName:"allSolutions"}}),definition({dependencyValues:Or}){return{setValue:{numSolutions:Or.allSolutions.length}}}},Me.solutions={description:"The numerical solutions of the equations.",public:!0,shadowingInstructions:{createComponentOfType:"math"},isArray:!0,entryPrefixes:["solution"],returnArraySizeDependencies:()=>({numSolutions:{dependencyType:"stateVariable",variableName:"numSolutions"}}),returnArraySize({dependencyValues:Or}){return[Or.numSolutions]},returnArrayDependenciesByKey(){return{globalDependencies:{allSolutions:{dependencyType:"stateVariable",variableName:"allSolutions"}}}},arrayDefinitionByKey({globalDependencyValues:Or}){let Hr={};for(let Li=0;Li<Or.__array_size[0];Li++)Hr[Li]=Or.allSolutions[Li];return{setValue:{solutions:Hr}}}},Me}}class PostponeRenderContainer extends Group{static componentType="_postponeRenderContainer";static componentDocs={summary:"Internal container that postpones rendering of its children."};static inSchemaOnlyInheritAs=[];static allowInSchemaAsComponent=void 0;static renderedDefault=!1;static createAttributesObject(){let ae=super.createAttributesObject();return delete ae.rendered,ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.rendered={returnDependencies:()=>({parentRendered:{dependencyType:"parentStateVariable",variableName:"rendered"}}),markStale:()=>({updateReplacements:!0}),definition({dependencyValues:Me}){return{setValue:{rendered:!!Me.parentRendered}}}},ae}static async calculateReplacementChanges({component:ae,componentInfoObjects:Me,nComponents:Or,workspace:Hr}){let Li=[];if(await ae.stateValues.rendered&&ae.replacements.length===0){let ts=await this.createSerializedReplacements({component:ae,componentInfoObjects:Me,nComponents:Or,workspace:Hr}),rs=ts.replacements;return Li.push(...ts.diagnostics),Or=ts.nComponents,rs.length>0?{replacementChanges:[{changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToReplace:0,serializedReplacements:rs}],diagnostics:Li,nComponents:Or}:{replacementChanges:[],diagnostics:Li,nComponents:Or}}else return{replacementChanges:[],diagnostics:Li,nComponents:Or}}}class SubsetOfReals extends MathComponent{static componentType="subsetOfReals";static componentDocs={summary:"A subset of the real numbers, defined by intervals and points"};static rendererType="math";static primaryStateVariableForDefinition="subsetValue";static stateVariableToBeShadowed="subsetValue";static createAttributesObject(){let ae=super.createAttributesObject();return ae.createIntervals.defaultValue=!0,ae.variable={createComponentOfType:"_variableName",createStateVariable:"variable",defaultValue:Context.fromAst("x"),description:"Name of the variable used when expressing the subset."},ae.displayMode={description:"How the subset is displayed.",createComponentOfType:"text",createStateVariable:"displayMode",defaultValue:"intervals",public:!0,toLowerCase:!0,validValues:[{value:"intervals",description:"Display the subset using interval notation (e.g., `(0, 1]`)."},{value:"inequalities",description:"Display the subset using inequalities (e.g., `0 < x ≤ 1`)."}]},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();renameStateVariable({stateVariableDefinitions:ae,oldName:"unnormalizedValue",newName:"unnormalizedValuePreliminary"}),ae.value.shadowingInstructions.createComponentOfType="math",ae.haveSingleSubsetChild={returnDependencies:()=>({mathChildren:{dependencyType:"child",childGroups:["maths"]}}),definition({dependencyValues:Or,componentInfoObjects:Hr}){return{setValue:{haveSingleSubsetChild:Or.mathChildren.length===1&&Or.mathChildren.filter(ts=>Hr.isInheritedComponentType({inheritedComponentType:ts.componentType,baseComponentType:"subsetOfReals"})).length===1}}}},ae.subsetValue={stateVariablesDeterminingDependencies:["haveSingleSubsetChild"],returnDependencies({stateValues:Or}){let Hr={haveSingleSubsetChild:{dependencyType:"stateVariable",variableName:"haveSingleSubsetChild"}};return Or.haveSingleSubsetChild?Hr.subsetChild={dependencyType:"child",childGroups:["maths"],variableNames:["subsetValue"]}:(Hr.unnormalizedValuePreliminary={dependencyType:"stateVariable",variableName:"unnormalizedValuePreliminary"},Hr.variable={dependencyType:"stateVariable",variableName:"variable"}),Hr},definition({dependencyValues:Or}){let Hr;return Or.haveSingleSubsetChild?Hr=Or.subsetChild[0].stateValues.subsetValue:Hr=buildSubsetFromMathExpression(Or.unnormalizedValuePreliminary,Or.variable),{setValue:{subsetValue:Hr}}},async inverseDefinition({desiredStateVariableValues:Or,dependencyValues:Hr,stateValues:Li}){return Hr.haveSingleSubsetChild?{success:!0,instructions:[{setDependency:"subsetChild",desiredValue:Or.subsetValue,childIndex:0,variableIndex:0}]}:{success:!0,instructions:[{setDependency:"unnormalizedValuePreliminary",desiredValue:mathExpressionFromSubsetValue({subsetValue:Or.subsetValue,variable:Hr.variable,displayMode:await Li.displayMode})}]}}},ae.unnormalizedValue={returnDependencies:()=>({subsetValue:{dependencyType:"stateVariable",variableName:"subsetValue"},displayMode:{dependencyType:"stateVariable",variableName:"displayMode"},variable:{dependencyType:"stateVariable",variableName:"variable"}}),definition({dependencyValues:Or}){return{setValue:{unnormalizedValue:mathExpressionFromSubsetValue(Or)}}},inverseDefinition({desiredStateVariableValues:Or,dependencyValues:Hr}){return{success:!0,instructions:[{setDependency:"subsetValue",desiredValue:buildSubsetFromMathExpression(Or.unnormalizedValue,Hr.variable)}]}}};const Me=returnPointsIntervalsFromSubsetStateVariableDefinitions();return Object.assign(ae,Me),ae}}function returnPointsIntervalsFromSubsetStateVariableDefinitions(){let Br={};return Br.pointsFromSubset={additionalStateVariablesDefined:["intervalsFromSubset"],returnDependencies:()=>({subsetValue:{dependencyType:"stateVariable",variableName:"subsetValue"}}),definition({dependencyValues:ae}){let{points:Me,intervals:Or}=determinePointAndIntervalsFromSubset(ae.subsetValue);return{setValue:{pointsFromSubset:Me,intervalsFromSubset:Or}}}},Br.points={additionalStateVariablesDefined:[{variableName:"pointsClosed",public:!0,isArray:!0,shadowingInstructions:{createComponentOfType:"boolean"},description:"Whether each boundary point of the subset is a closed (included) endpoint."}],description:"The boundary points that delimit the subset.",public:!0,isArray:!0,shadowingInstructions:{createComponentOfType:"math"},isArray:!0,entryPrefixes:["point"],returnArraySizeDependencies:()=>({pointsFromSubset:{dependencyType:"stateVariable",variableName:"pointsFromSubset"}}),returnArraySize({dependencyValues:ae}){return[ae.pointsFromSubset.length]},returnArrayDependenciesByKey(){return{globalDependencies:{pointsFromSubset:{dependencyType:"stateVariable",variableName:"pointsFromSubset"}}}},arrayDefinitionByKey({globalDependencyValues:ae,arrayKeys:Me}){let Or={},Hr={};for(let Li of Me){let ts=ae.pointsFromSubset[Li];Or[Li]=Context.fromAst(ts.value),Hr[Li]=ts.inSubset}return{setValue:{points:Or,pointsClosed:Hr}}}},Br.allIntervals={additionalStateVariablesDefined:["allIsolatedPoints"],returnDependencies:()=>({subsetValue:{dependencyType:"stateVariable",variableName:"subsetValue"}}),definition({dependencyValues:ae}){let Me=[],Or=[],Hr=mergeIntervals(ae.subsetValue);for(let Li of Hr)Li.type==="closedInterval"?Me.push(Context.fromAst(["interval",["tuple",Li.left,Li.right],["tuple",!0,!0]])):Li.type==="openClosedInterval"?Me.push(Context.fromAst(["interval",["tuple",Li.left,Li.right],["tuple",!1,!0]])):Li.type==="closedOpenInterval"?Me.push(Context.fromAst(["interval",["tuple",Li.left,Li.right],["tuple",!0,!1]])):Li.type==="openInterval"?Me.push(Context.fromAst(["interval",["tuple",Li.left,Li.right],["tuple",!1,!1]])):Li.type==="realLine"?Me.push(Context.fromAst(["interval",["tuple",-1/0,1/0],["tuple",!1,!1]])):Li.type==="singleton"&&Or.push(Li.element);return{setValue:{allIntervals:Me,allIsolatedPoints:Or}}}},Br.intervals={description:"The intervals (non-degenerate components) of the subset.",public:!0,isArray:!0,shadowingInstructions:{createComponentOfType:"math"},isArray:!0,entryPrefixes:["interval"],returnArraySizeDependencies:()=>({allIntervals:{dependencyType:"stateVariable",variableName:"allIntervals"}}),returnArraySize({dependencyValues:ae}){return[ae.allIntervals.length]},returnArrayDependenciesByKey(){return{globalDependencies:{allIntervals:{dependencyType:"stateVariable",variableName:"allIntervals"}}}},arrayDefinitionByKey({globalDependencyValues:ae}){return{setValue:{intervals:ae.allIntervals}}}},Br.isolatedPoints={description:"The isolated (non-interval) points of the subset.",public:!0,isArray:!0,shadowingInstructions:{createComponentOfType:"math"},isArray:!0,entryPrefixes:["isolatedPoint"],returnArraySizeDependencies:()=>({allIsolatedPoints:{dependencyType:"stateVariable",variableName:"allIsolatedPoints"}}),returnArraySize({dependencyValues:ae}){return[ae.allIsolatedPoints.length]},returnArrayDependenciesByKey(){return{globalDependencies:{allIsolatedPoints:{dependencyType:"stateVariable",variableName:"allIsolatedPoints"}}}},arrayDefinitionByKey({globalDependencyValues:ae}){return{setValue:{isolatedPoints:ae.allIsolatedPoints}}}},Br}function determinePointAndIntervalsFromSubset(Br){function ae(Li,ts){let rs=[],ns=[];if(Li.points&&(rs=Li.points),Li.intervals&&(ns=Li.intervals),ts.points){let is=rs.map(as=>as.value);for(let as of ts.points){let os=is.indexOf(as.value);os===-1?rs.push(as):rs[os].inSubset||=as.inSubset}}return ts.intervals&&ns.push(...ts.intervals),{points:rs,intervals:ns}}function Me(Li){if(Li===null||Li.isEmpty())return{};if(Li.type==="union"){let ts=[],rs=[];for(let ns of Li.subsets){let is=Me(ns);({points:ts,intervals:rs}=ae({points:ts,intervals:rs},is))}return{points:ts,intervals:rs}}else{if(Li.type==="realLine")return{intervals:[[-1/0,1/0]]};if(Li.type==="singleton")return{points:[{value:Li.element,inSubset:!0}]};if(Li.type==="openInterval"){let ts=[[Li.left,Li.right]],rs=[];return Number.isFinite(Li.left)&&rs.push({value:Li.left,inSubset:!1}),Number.isFinite(Li.right)&&rs.push({value:Li.right,inSubset:!1}),{intervals:ts,points:rs}}}return{}}let{points:Or,intervals:Hr}=Me(Br);return Or||=[],Hr||=[],Or.sort((Li,ts)=>Li.value-ts.value),Hr.sort((Li,ts)=>Li[0]-ts[0]),{points:Or,intervals:Hr}}class SubsetOfRealsInput extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{addPoint:this.addPoint.bind(this),deletePoint:this.deletePoint.bind(this),movePoint:this.movePoint.bind(this),togglePoint:this.togglePoint.bind(this),toggleInterval:this.toggleInterval.bind(this),clear:this.clear.bind(this),setToR:this.setToR.bind(this),recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="subsetOfRealsInput";static componentDocs={summary:"An interactive number-line widget for entering a subset of real numbers (block-level; does not inherit from Input)"};static variableForImplicitProp="subsetValue";static createAttributesObject(){let ae=super.createAttributesObject();return ae.xMin={description:"Left endpoint of the visible number line.",createComponentOfType:"number",createStateVariable:"xMin",defaultValue:-10,public:!0,forRenderer:!0,excludeFromSchema:!0},ae.xMax={description:"Right endpoint of the visible number line.",createComponentOfType:"number",createStateVariable:"xMax",defaultValue:10,public:!0,forRenderer:!0,excludeFromSchema:!0},ae.width={description:"Display width of the input.",createComponentOfType:"componentSize",createStateVariable:"width",defaultValue:800,public:!0,forRenderer:!0,excludeFromSchema:!0},ae.height={description:"Display height of the input.",createComponentOfType:"componentSize",createStateVariable:"height",defaultValue:300,public:!0,forRenderer:!0,excludeFromSchema:!0},ae.xlabel={description:"Label rendered for the x axis.",createComponentOfType:"text",createStateVariable:"xlabel",defaultValue:"",public:!0,forRenderer:!0,excludeFromSchema:!0},ae.dx={description:"Tick spacing along the number line.",createComponentOfType:"number",createStateVariable:"dx",defaultValue:.5,public:!0,excludeFromSchema:!0},ae.variable={description:"Variable name displayed on the number line.",createComponentOfType:"_variableName",createStateVariable:"variable",defaultValue:Context.fromAst("x"),public:!0},ae.format={description:"Input format used for parsing entered subsets.",createComponentOfType:"text",createStateVariable:"format",defaultValue:"text",public:!0,toLowerCase:!0,validValues:[{value:"text",description:"Parse entered subsets as plain-text notation."},{value:"latex",description:"Parse entered subsets as LaTeX notation."}]},ae.prefill={description:"Initial subset displayed in the input.",createComponentOfType:"text",createStateVariable:"prefill",defaultValue:"",public:!0},ae.bindValueTo={createComponentOfType:"subsetOfReals",description:"Two-way binding target for the input's value."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();ae.subsetValue={description:"The current subset of the reals entered by the user.",public:!0,shadowingInstructions:{createComponentOfType:"subsetOfReals",addAttributeComponentsShadowingStateVariables:{variable:{stateVariableToShadow:"variable"}}},hasEssential:!0,returnDependencies:()=>({bindValueTo:{dependencyType:"attributeComponent",attributeName:"bindValueTo",variableNames:["subsetValue"]},prefill:{dependencyType:"stateVariable",variableName:"prefill"},variable:{dependencyType:"stateVariable",variableName:"variable"},format:{dependencyType:"stateVariable",variableName:"format"}}),definition:function({dependencyValues:Or}){return Or.bindValueTo?{setValue:{subsetValue:Or.bindValueTo.stateValues.subsetValue}}:{useEssentialOrDefaultValue:{subsetValue:{get defaultValue(){return parseValueIntoSubset({inputString:Or.prefill,format:Or.format,variable:Or.variable})}}}}},inverseDefinition({desiredStateVariableValues:Or,dependencyValues:Hr}){return Hr.bindValueTo?{success:!0,instructions:[{setDependency:"bindValueTo",desiredValue:Or.subsetValue,variableIndex:0}]}:{success:!0,instructions:[{setEssentialValue:"subsetValue",value:Or.subsetValue}]}}},ae.additionalPoints={defaultValue:[],hasEssential:!0,returnDependencies:()=>({}),definition(){return{useEssentialOrDefaultValue:{additionalPoints:!0}}},inverseDefinition({desiredStateVariableValues:Or}){return Or.additionalPoints.every(Number.isFinite)?{success:!0,instructions:[{setEssentialValue:"additionalPoints",value:[...Or.additionalPoints].sort((Hr,Li)=>Hr-Li)}]}:{success:!1}}},ae.pointsDisplayed={additionalStateVariablesDefined:[{variableName:"intervalsDisplayed",forRenderer:!0}],forRenderer:!0,returnDependencies:()=>({pointsFromSubset:{dependencyType:"stateVariable",variableName:"pointsFromSubset"},intervalsFromSubset:{dependencyType:"stateVariable",variableName:"intervalsFromSubset"},additionalPoints:{dependencyType:"stateVariable",variableName:"additionalPoints"}}),definition({dependencyValues:Or}){let Hr=[...Or.pointsFromSubset],Li=[...Or.intervalsFromSubset],ts=[...Or.additionalPoints].sort((us,cs)=>us-cs),rs=[],ns=[],is=0,as=1/0,os=0;ts.length>0&&(as=ts[0]);let ss=Li[0],ls=-1/0;Hr.push({value:1/0,inSubset:!1});for(let us of Hr){let cs=!1;for(ss&&ss[0]<us.value&&(cs=!0);as<us.value;)as!==ls&&(rs.push({value:as,inSubset:cs,isAdditional:!0,additionalPointInd:os}),ns.push({left:ls,right:as,inSubset:cs}),ls=as),os++,as=ts[os],as===void 0&&(as=1/0);rs.push(us),ns.push({left:ls,right:us.value,inSubset:cs}),ls=us.value,cs&&(is++,ss=Li[is])}return rs=rs.slice(0,rs.length-1),{setValue:{pointsDisplayed:rs,intervalsDisplayed:ns}}}};const Me=returnPointsIntervalsFromSubsetStateVariableDefinitions();return Object.assign(ae,Me),ae}async addPoint({value:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){let Li=await this.stateValues.dx,ts=Math.round(Math.max(await this.stateValues.xMin,Math.min(await this.stateValues.xMax,ae))/Li)*Li,rs=[...await this.stateValues.pointsFromSubset],ns=[...await this.stateValues.intervalsFromSubset],is=[...await this.stateValues.additionalPoints];if(!is.includes(ts)&&!rs.map(os=>os.value).includes(ts)){let os=!1;for(let ss of ns)if(ss[0]<ts&&ss[1]>ts){os=!0;break}if(os)return is.push(ts),await this.coreFunctions.performUpdate({updateInstructions:[{componentIdx:this.componentIdx,updateType:"updateValue",stateVariable:"additionalPoints",value:is}],actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{addedPoint:ts,intervalsFromSubset:ns,pointsFromSubset:rs,additionalPoints:is}}});{rs.push({value:ts,inSubset:!0});let ss=await this.createUpdateInstructions({intervalsFromSubset:ns,pointsFromSubset:rs,modifiedAdditionalPoints:!1,additionalPoints:is});return await this.coreFunctions.performUpdate({updateInstructions:ss,actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{addedPoint:ts,intervalsFromSubset:ns,pointsFromSubset:rs,additionalPoints:is}}})}}}async deletePoint({pointInd:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){let Li=await this.stateValues.pointsDisplayed[ae],ts=[...await this.stateValues.additionalPoints],rs=[...await this.stateValues.pointsFromSubset],ns=[...await this.stateValues.intervalsFromSubset];if(Li.isAdditional)return ts.splice(Li.additionalPointInd,1),await this.coreFunctions.performUpdate({updateInstructions:[{componentIdx:this.componentIdx,updateType:"updateValue",stateVariable:"additionalPoints",value:ts}],actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{deletedPoint:Li.value,intervalsFromSubset:ns,pointsFromSubset:rs,additionalPoints:ts}}});{let is=!1,as=rs.map(us=>us.value).indexOf(Li.value),os=ns.map(us=>us[1]).indexOf(Li.value),ss=ns.map(us=>us[0]).indexOf(Li.value);if(os!==-1)if(ss!==-1)ns[os]=[ns[os][0],ns[ss][1]],ns.splice(ss,1),rs.splice(as,1);else{let us=(await this.stateValues.pointsDisplayed)[ae-1];us&&us.isAdditional?(ns[os]=[ns[os][0],us.value],ts.splice(us.additionalPointInd,1),is=!0,rs.splice(as,1,us)):(ns.splice(os,1),rs.splice(as,1),us&&!us.inSubset&&ns.map(ds=>ds[1]).indexOf(us.value)===-1&&(ts.push(us.value),is=!0))}else if(ss!==-1){let us=(await this.stateValues.pointsDisplayed)[ae+1];us&&us.isAdditional?(ns[ss]=[us.value,ns[ss][1]],ts.splice(us.additionalPointInd,1),is=!0,rs.splice(as,1,us)):(ns.splice(ss,1),rs.splice(as,1),us&&!us.inSubset&&ns.map(ds=>ds[0]).indexOf(us.value)===-1&&(ts.push(us.value),is=!0))}else rs.splice(as,1);let ls=await this.createUpdateInstructions({intervalsFromSubset:ns,pointsFromSubset:rs,modifiedAdditionalPoints:is,additionalPoints:ts});return await this.coreFunctions.performUpdate({updateInstructions:ls,actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{deletedPoint:Li.value,intervalsFromSubset:ns,pointsFromSubset:rs,additionalPoints:ts}}})}}async createUpdateInstructions({intervalsFromSubset:ae,pointsFromSubset:Me,modifiedAdditionalPoints:Or,additionalPoints:Hr}){let Li=await this.stateValues.dx,ts=as=>Math.round(as/Li)*Li,rs=[];for(let as of ae)rs.push(subsetOfReals.OpenInterval(ts(as[0]),ts(as[1])));for(let as of Me)as.inSubset&&rs.push(subsetOfReals.Singleton(ts(as.value)));let ns;rs.length===0?ns=subsetOfReals.EmptySet():rs.length===1?ns=rs[0]:ns=subsetOfReals.Union(rs);let is=[{componentIdx:this.componentIdx,updateType:"updateValue",stateVariable:"subsetValue",value:ns}];return Or&&is.push({componentIdx:this.componentIdx,updateType:"updateValue",stateVariable:"additionalPoints",value:Hr.map(ts)}),is}async movePoint({pointInd:ae,value:Me,transient:Or,actionId:Hr,sourceInformation:Li={},skipRendererUpdate:ts=!1}){let rs=await this.stateValues.dx,ns=Math.round(Math.max(await this.stateValues.xMin,Math.min(await this.stateValues.xMax,Me))/rs)*rs,is=await this.stateValues.pointsDisplayed,as=is[ae],os=is[ae-1];os&&(ns=Math.max(ns,os.value+rs));let ss=is[ae+1];ss&&(ns=Math.min(ns,ss.value-rs));let ls=[...await this.stateValues.additionalPoints],us=[...await this.stateValues.pointsFromSubset],cs=[...await this.stateValues.intervalsFromSubset];if(as.isAdditional)return ls[as.additionalPointInd]=ns,Or?await this.coreFunctions.performUpdate({updateInstructions:[{componentIdx:this.componentIdx,updateType:"updateValue",stateVariable:"additionalPoints",value:ls}],transient:!0,actionId:Hr,sourceInformation:Li,skipRendererUpdate:ts}):await this.coreFunctions.performUpdate({updateInstructions:[{componentIdx:this.componentIdx,updateType:"updateValue",stateVariable:"additionalPoints",value:ls}],actionId:Hr,sourceInformation:Li,skipRendererUpdate:ts,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{movedPoint:ns,intervalsFromSubset:cs,pointsFromSubset:us,additionalPoints:ls}}});{let ds=us.map(hs=>hs.value).indexOf(as.value),ps=cs.map(hs=>hs[1]).indexOf(as.value),ms=cs.map(hs=>hs[0]).indexOf(as.value);us[ds]={value:ns,inSubset:us[ds].inSubset},ps!==-1&&(cs[ps]=[cs[ps][0],ns]),ms!==-1&&(cs[ms]=[ns,cs[ms][1]]);let fs=await this.createUpdateInstructions({intervalsFromSubset:cs,pointsFromSubset:us,modifiedAdditionalPoints:!1});return Or?await this.coreFunctions.performUpdate({updateInstructions:fs,transient:!0,actionId:Hr,sourceInformation:Li,skipRendererUpdate:ts}):await this.coreFunctions.performUpdate({updateInstructions:fs,actionId:Hr,sourceInformation:Li,skipRendererUpdate:ts,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{movedPoint:ns,intervalsFromSubset:cs,pointsFromSubset:us,additionalPoints:ls}}})}}async togglePoint({pointInd:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){let Li=(await this.stateValues.pointsDisplayed)[ae],ts=[...await this.stateValues.pointsFromSubset],rs=[...await this.stateValues.intervalsFromSubset],ns=[...await this.stateValues.additionalPoints],is=!1;if(Li.isAdditional)if(ns.splice(Li.additionalPointInd,1),is=!0,Li.inSubset){for(let[os,ss]of rs.entries())if(ss[0]<Li.value&&ss[1]>Li.value){let ls=[[ss[0],Li.value],[Li.value,ss[1]]];rs.splice(os,1,...ls);break}}else ts.push({value:Li.value,inSubset:!0});else{let os=ts.map(us=>us.value).indexOf(Li.value),ss=rs.map(us=>us[1]).indexOf(Li.value),ls=rs.map(us=>us[0]).indexOf(Li.value);ss!==-1?ls!==-1?(rs[ss]=[rs[ss][0],rs[ls][1]],rs.splice(ls,1),ts.splice(os,1),ns.push(Li.value),is=!0):ts[os]={value:Li.value,inSubset:!Li.inSubset}:ls!==-1?ts[os]={value:Li.value,inSubset:!Li.inSubset}:(ts.splice(os,1),ns.push(Li.value),is=!0)}let as=await this.createUpdateInstructions({intervalsFromSubset:rs,pointsFromSubset:ts,modifiedAdditionalPoints:is,additionalPoints:ns});return await this.coreFunctions.performUpdate({updateInstructions:as,actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{toggledPoint:Li.value,intervalsFromSubset:rs,pointsFromSubset:ts,additionalPoints:ns}}})}async toggleInterval({intervalInd:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){let Li=(await this.stateValues.intervalsDisplayed)[ae],ts=await this.stateValues.pointsDisplayed,rs=ts[ae-1],ns=ts[ae],is=[...await this.stateValues.pointsFromSubset],as=[...await this.stateValues.intervalsFromSubset],os=[...await this.stateValues.additionalPoints],ss=!1;if(Li.inSubset){let us,cs;for(let[ds,ps]of as.entries())if(ps[0]<=Li.left&&ps[1]>=Li.right){cs=ps,us=ds;break}if(Li.left===cs[0])if(Li.right===cs[1]){if(as.splice(us,1),rs&&!rs.inSubset&&as.map(ps=>ps[1]).indexOf(rs.value)===-1){let ps=is.map(ms=>ms.value).indexOf(rs.value);is.splice(ps,1),os.push(rs.value),ss=!0}if(ns&&!ns.inSubset&&as.map(ps=>ps[0]).indexOf(ns.value)===-1){let ps=is.map(ms=>ms.value).indexOf(ns.value);is.splice(ps,1),os.push(ns.value),ss=!0}}else{if(as[us]=[Li.right,cs[1]],rs&&!rs.inSubset&&as.map(ps=>ps[1]).indexOf(rs.value)===-1){let ps=is.map(ms=>ms.value).indexOf(rs.value);is.splice(ps,1),os.push(rs.value),ss=!0}is.push({value:ns.value,inSubset:!0}),os.splice(ns.additionalPointInd,1),ss=!0}else if(Li.right===cs[1]){if(as[us]=[cs[0],Li.left],ns&&!ns.inSubset&&as.map(ps=>ps[0]).indexOf(ns.value)===-1){let ps=is.map(ms=>ms.value).indexOf(ns.value);is.splice(ps,1),os.push(ns.value),ss=!0}is.push({value:rs.value,inSubset:!0}),os.splice(rs.additionalPointInd,1),ss=!0}else{let ds=[[cs[0],Li.left],[Li.right,cs[1]]];as.splice(us,1,...ds),is.push({value:rs.value,inSubset:!0}),is.push({value:ns.value,inSubset:!0}),os.splice(ns.additionalPointInd,1),os.splice(rs.additionalPointInd,1),ss=!0}}else{let us=as.map(ds=>ds[1]).indexOf(Li.left),cs=as.map(ds=>ds[0]).indexOf(Li.right);if(us===-1)cs===-1?(as.push([Li.left,Li.right]),ns&&ns.isAdditional&&(os.splice(ns.additionalPointInd,1),ss=!0),rs&&rs.isAdditional&&(os.splice(rs.additionalPointInd,1),ss=!0)):(ns.inSubset?(as[cs]=[Li.left,as[cs][1]],os.push(ns.value),ss=!0):as.push([Li.left,Li.right]),rs&&rs.isAdditional&&(os.splice(rs.additionalPointInd,1),ss=!0));else if(cs===-1)rs.inSubset?(as[us]=[as[us][0],Li.right],os.push(rs.value),ss=!0):as.push([Li.left,Li.right]),ns&&ns.isAdditional&&(os.splice(ns.additionalPointInd,1),ss=!0);else if(rs.inSubset)if(ns.inSubset){let ds=[as[us][0],as[cs][1]];as.splice(us,2,ds),os.push(rs.value),os.push(ns.value),ss=!0}else as[us]=[as[us][0],Li.right],os.push(rs.value),ss=!0;else ns.inSubset?(as[cs]=[Li.left,as[cs][1]],os.push(ns.value),ss=!0):as.push([Li.left,Li.right])}let ls=await this.createUpdateInstructions({intervalsFromSubset:as,pointsFromSubset:is,modifiedAdditionalPoints:ss,additionalPoints:os});return await this.coreFunctions.performUpdate({updateInstructions:ls,actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{toggledInterval:[Li.left,Li.right],intervalsFromSubset:as,pointsFromSubset:is,additionalPoints:os}}})}async clear({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){let Hr=await this.createUpdateInstructions({intervalsFromSubset:[],pointsFromSubset:[],modifiedAdditionalPoints:!0,additionalPoints:[]});return await this.coreFunctions.performUpdate({updateInstructions:Hr,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{cleared:!0,intervalsFromSubset:[],pointsFromSubset:[],additionalPoints:[]}}})}async setToR({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){let Hr=await this.createUpdateInstructions({intervalsFromSubset:[[-1/0,1/0]],pointsFromSubset:[],modifiedAdditionalPoints:!0,additionalPoints:[]});return await this.coreFunctions.performUpdate({updateInstructions:Hr,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{setToR:!0,intervalsFromSubset:[[-1/0,1/0]],pointsFromSubset:[],additionalPoints:[]}}})}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}function parseValueIntoSubset({inputString:Br,format:ae,variable:Me}){if(!Br)return subsetOfReals.EmptySet();let Or;if(ae==="latex")try{Or=Context.fromLatex(Br)}catch{return subsetOfReals.EmptySet()}else if(ae==="text")try{Or=Context.fromText(Br)}catch{return subsetOfReals.EmptySet()}return buildSubsetFromMathExpression(Or,Me)}class Split extends CompositeComponent{static componentType="split";static componentDocs={summary:"Splits a string or list into pieces"};static allowInSchemaAsComponent=["_inline","_block","_graphical"];static stateVariableToEvaluateAfterReplacements="readyToExpandWhenResolved";static createAttributesObject(){let ae=super.createAttributesObject();return ae.type={createPrimitiveOfType:"string",createStateVariable:"type",defaultPrimitiveValue:"text",toLowerCase:!0,validValues:[{value:"text",description:"Split text values."}],description:"Type of value being split."},ae.splitBy={createComponentOfType:"text",createStateVariable:"splitBy",defaultValue:"letter",toLowerCase:!0,validValues:[{value:"letter",description:"Split into individual characters."},{value:"word",description:"Split into whitespace-separated words."},{value:"comma",description:"Split on comma boundaries."}],description:"How to break the input string into pieces."},ae.asList={createPrimitiveOfType:"boolean",createStateVariable:"asList",defaultValue:!0,description:"Whether to render the items separated by commas (true) or with no separator (false)."},ae}static returnSugarInstructions(){let ae=[];function Me({matchedChildren:Or,componentAttributes:Hr,nComponents:Li,stateIdInfo:ts}){let rs=Hr.type?.value;return["text"].includes(rs)||(rs="text"),{success:!0,newChildren:[{type:"serialized",componentType:rs,componentIdx:Li++,stateId:ts?`${ts.prefix}${ts.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}],nComponents:Li}}return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.originalValue={returnDependencies:()=>({child:{dependencyType:"child",childGroups:["anything"],variableNames:["value"]}}),definition({dependencyValues:Me}){return Me.child.length>0?{setValue:{originalValue:Me.child[0].stateValues.value}}:{setValue:{originalValue:null}}},inverseDefinition({desiredStateVariableValues:Me,dependencyValues:Or}){return Or.child.length>0?{success:!0,instructions:[{setDependency:"child",desiredValue:Me.originalValue,childIndex:0,variableIndex:0}]}:{success:!1}}},ae.allSplitValues={returnDependencies:()=>({type:{dependencyType:"stateVariable",variableName:"type"},originalValue:{dependencyType:"stateVariable",variableName:"originalValue"},splitBy:{dependencyType:"stateVariable",variableName:"splitBy"}}),definition({dependencyValues:Me}){if(Me.originalValue===null)return{setValue:{allSplitValues:[]}};let Or=[];return Me.splitBy==="letter"?Or=[...Me.originalValue]:Me.splitBy==="word"?Or=Me.originalValue.split(/\s+/):Me.splitBy==="comma"?Or=Me.originalValue.split(/\s*,\s*/):Or=[Me.originalValue],{setValue:{allSplitValues:Or}}}},ae.numValues={returnDependencies:()=>({allSplitValues:{dependencyType:"stateVariable",variableName:"allSplitValues"}}),definition({dependencyValues:Me}){return{setValue:{numValues:Me.allSplitValues.length}}}},ae.values={isArray:!0,entryPrefixes:["value"],returnArraySizeDependencies:()=>({numValues:{dependencyType:"stateVariable",variableName:"numValues"}}),returnArraySize({dependencyValues:Me}){return[Me.numValues]},returnArrayDependenciesByKey(){return{globalDependencies:{allSplitValues:{dependencyType:"stateVariable",variableName:"allSplitValues"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arrayKeys:Or}){let Hr={};for(let Li of Or)Hr[Li]=Me.allSplitValues[Li];return{setValue:{values:Hr}}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({values:{dependencyType:"stateVariable",variableName:"values"}}),markStale:()=>({updateReplacements:!0}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae}static async createSerializedReplacements({component:ae,nComponents:Me,workspace:Or}){Or.replacementsCreated===void 0&&(Or.replacementsCreated=0);const Hr={prefix:`${ae.stateId}|`,num:Or.replacementsCreated},Li=[],ts=await ae.stateValues.values,rs=ts.map((ns,is)=>({type:"serialized",componentType:"text",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},children:[],state:{value:ns},downstreamDependencies:{[ae.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:ae.componentIdx,propVariable:`value${is+1}`}]}}));return Or.values=[...ts],Or.replacementsCreated=Hr.num,{replacements:rs,diagnostics:Li,nComponents:Me}}static async calculateReplacementChanges({component:ae,components:Me,workspace:Or,nComponents:Hr}){let Li=[];const ts=await ae.stateValues.values;if(ts.length===Or.values.length&&Or.values.every((as,os)=>as===ts[os]))return{replacementChanges:[],diagnostics:Li,nComponents:Hr};let rs=await this.createSerializedReplacements({component:ae,components:Me,workspace:Or,nComponents:Hr}),ns=rs.replacements;return Li.push(...rs.diagnostics),Hr=rs.nComponents,{replacementChanges:[{changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToReplace:ae.replacements.length,serializedReplacements:ns}],diagnostics:Li,nComponents:Hr}}}const{matrix,transpose,multiply,lusolve,subset,index}=Context.math;class BestFitLine extends Line{static componentType="bestFitLine";static componentDocs={summary:"The best-fit line for a set of points"};static rendererType="line";static createAttributesObject(){let ae=super.createAttributesObject();return delete ae.draggable,delete ae.equation,delete ae.through,delete ae.slope,ae.data={createComponentOfType:"pointList",description:"The data points to fit a line to."},ae}static additionalSchemaChildren=[];static returnSugarInstructions(){return[]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.draggable={description:"Whether the line can be dragged (always false for a best-fit line).",shadowingInstructions:{createComponentOfType:"boolean"},public:!0,forRenderer:!0,returnDependencies:()=>({}),definition:()=>({setValue:{draggable:!1}})},ae.numDimensions={description:"Number of dimensions of the line (always 2 for a best-fit line).",public:!0,shadowingInstructions:{createComponentOfType:"number"},returnDependencies:()=>({}),definition:()=>({setValue:{numDimensions:2}})},delete ae.numPointsPrescribed,delete ae.basedOnSlope,delete ae.basedOnParallel,delete ae.basedOnPerpendicular,delete ae.distForSecondPt,delete ae.essentialPoint1x,delete ae.essentialPoint1y,delete ae.equationIdentity,delete ae.equation.stateVariablesDeterminingDependencies,ae.equation.returnDependencies=()=>({data:{dependencyType:"attributeComponent",attributeName:"data",variableNames:["points","numDimensions"]},variables:{dependencyType:"stateVariable",variableName:"variables"}}),ae.equation.definition=function({dependencyValues:Me}){if(!Me.data||Me.data.stateValues.numDimensions<2||Me.data.stateValues.points.length<1){let cs=Context.fromAst("_");return{setValue:{equation:cs,coeff0:cs,coeffvar1:cs,coeffvar2:cs}}}let Or=[],Hr=[];for(let cs of Me.data.stateValues.points){let ds=cs.slice(0,2).map(ps=>ps&&ps.evaluate_to_constant());ds.every(Number.isFinite)&&(Or.push([1,ds[0]]),Hr.push([ds[1]]))}if(Or.length===0){let cs=Context.fromAst("_");return{setValue:{equation:cs,coeff0:cs,coeffvar1:cs,coeffvar2:cs}}}Or=matrix(Or),Hr=matrix(Hr);let Li=transpose(Or),ts=multiply(Li,Hr),rs=multiply(Li,Or),ns=lusolve(rs,ts),is=Context.fromAst(subset(ns,index(0,0))),as=Context.fromAst(subset(ns,index(1,0))),os=Context.fromAst(-1),ss=Me.variables,ls=Context.fromAst(["+",["*","a","x"],"c"]).substitute({a:as,c:is,x:ss[0]}).simplify();return{setValue:{equation:Context.fromAst(["=",ss[1].tree,"r"]).substitute({r:ls}),coeff0:is,coeffvar1:as,coeffvar2:os}}},delete ae.equation.inverseDefinition,delete ae.points.stateVariablesDeterminingDependencies,ae.points.returnArrayDependenciesByKey=function(){return{globalDependencies:{coeff0:{dependencyType:"stateVariable",variableName:"coeff0"},coeffvar1:{dependencyType:"stateVariable",variableName:"coeffvar1"},coeffvar2:{dependencyType:"stateVariable",variableName:"coeffvar2"},variables:{dependencyType:"stateVariable",variableName:"variables"},lastPointsFromInverting:{dependencyType:"stateVariable",variableName:"lastPointsFromInverting"}}}},ae.data={description:"The data points used to compute the best-fit line.",public:!0,isLocation:!0,shadowingInstructions:{createComponentOfType:"math",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing(),returnWrappingComponents(Me){return Me==="datumX"?[]:[["point",{componentType:"mathList",isAttributeNamed:"xs"}]]}},isArray:!0,numDimensions:2,entryPrefixes:["datumX","datum"],returnEntryDimensions:Me=>Me==="datum"?1:0,getArrayKeysFromVarName({arrayEntryPrefix:Me,varEnding:Or,arraySize:Hr}){if(Me==="datumX"){let Li=Or.split("_").map(ts=>Number(ts)-1);return Li.length===2&&Li.every((ts,rs)=>Number.isInteger(ts)&&ts>=0)?Hr?Li.every((ts,rs)=>ts<Hr[rs])?[String(Li)]:[]:[String(Li)]:[]}else{let Li=Number(Or)-1;return Number.isInteger(Li)&&Li>=0?Hr?Li<Hr[0]?Array.from(Array(Hr[1]),(ts,rs)=>Li+","+rs):[]:[Li+",0"]:[]}},arrayVarNameFromPropIndex(Me,Or){if(Or==="data")return Me.length===1?"datum"+Me[0]:`datumX${Me[0]}_${Me[1]}`;if(Or.slice(0,5)==="datum"){let Hr=Number(Or.slice(5));if(Number.isInteger(Hr)&&Hr>0)return`datumX${Hr}_${Me[0]}`}return null},returnArraySizeDependencies:()=>({data:{dependencyType:"attributeComponent",attributeName:"data",variableNames:["numPoints","numDimensions"]}}),returnArraySize({dependencyValues:Me}){let Or=Me.data;return Or?[Or.stateValues.numPoints,Or.stateValues.numDimensions]:[0,0]},returnArrayDependenciesByKey(){return{globalDependencies:{data:{dependencyType:"attributeComponent",attributeName:"data",variableNames:["points"]}}}},arrayDefinitionByKey({globalDependencyValues:Me}){let Or=Me.data.stateValues.points,Hr={};for(let Li in Or){let ts=Or[Li];for(let rs in Or)Hr[`${Li},${rs}`]=ts[rs]}return{setValue:{data:Hr}}}},ae}}class RegionBetweenCurveXAxis extends GraphicalComponent{static componentType="regionBetweenCurveXAxis";static styleOverrideCategories=["fill"];static componentDocs={summary:"A region bounded between a curve and the x-axis"};static createAttributesObject(){let ae=super.createAttributesObject();return ae.boundaryValues={description:"Boundary values defining the region's left/right edges.",createComponentOfType:"numberList",createStateVariable:"boundaryValues",defaultValue:[0,1],forRenderer:!0,public:!0},ae.function={createComponentOfType:"function",description:"The function whose graph bounds the region."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnGraphicalStyleDescriptionDefinitions({kind:"region",noun:"region"})),ae.function={additionalStateVariablesDefined:[{variableName:"haveFunction",forRenderer:!0},{variableName:"fDefinition",forRenderer:!0}],returnDependencies:()=>({functionAttr:{dependencyType:"attributeComponent",attributeName:"function",variableNames:["numericalfs","numInputs","numOutputs","fDefinition"]}}),definition({dependencyValues:Me}){return Me.functionAttr===null||Me.functionAttr.stateValues.numInputs!==1||Me.functionAttr.stateValues.numOutputs!==1?{setValue:{function:()=>NaN,haveFunction:!1,fDefinition:{}}}:{setValue:{function:Me.functionAttr.stateValues.numericalfs[0],haveFunction:!0,fDefinition:Me.functionAttr.stateValues.fDefinition}}}},ae.nearestPoint={returnDependencies:()=>({function:{dependencyType:"stateVariable",variableName:"function"},boundaryValues:{dependencyType:"stateVariable",variableName:"boundaryValues"},haveFunction:{dependencyType:"stateVariable",variableName:"haveFunction"}}),definition({dependencyValues:Me}){if(!Me.haveFunction)return{setValue:{nearestPoint:()=>({})}};const Or=Math.min(Me.boundaryValues[0],Me.boundaryValues[1]),Hr=Math.max(Me.boundaryValues[0],Me.boundaryValues[1]),Li=Me.function;return{setValue:{nearestPoint:function({variables:rs}){let ns=rs.x1.evaluate_to_constant(),is=rs.x2.evaluate_to_constant();ns=Math.max(Or,Math.min(Hr,ns));let[as,os]=[0,Li(ns)].sort((ss,ls)=>ss-ls);return is=Math.max(as,Math.min(os,is)),{x1:ns,x2:is}}}}}},ae}}class RegionBetweenCurves extends GraphicalComponent{static componentType="regionBetweenCurves";static styleOverrideCategories=["fill"];static componentDocs={summary:"A region bounded between two curves"};static createAttributesObject(){let ae=super.createAttributesObject();return ae.boundaryValues={description:"Boundary values defining the region's edges.",createComponentOfType:"numberList",createStateVariable:"boundaryValues",defaultValue:[0,1],forRenderer:!0,public:!0},ae.flipFunctions={description:"Whether to swap the role of x and y for the input functions.",createComponentOfType:"boolean",createStateVariable:"flipFunctions",defaultValue:!1,public:!0,forRenderer:!0},ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae.push({group:"functions",componentTypes:["function"]}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnGraphicalStyleDescriptionDefinitions({kind:"region",noun:"region"})),ae.functions={additionalStateVariablesDefined:[{variableName:"haveFunctions",forRenderer:!0},{variableName:"fDefinitions",forRenderer:!0}],returnDependencies:()=>({functions:{dependencyType:"child",childGroups:["functions"],variableNames:["numericalfs","numInputs","numOutputs","fDefinition"]}}),definition({dependencyValues:Me}){return Me.functions.length<2||Me.functions[0].stateValues.numInputs!==1||Me.functions[0].stateValues.numOutputs!==1||Me.functions[1].stateValues.numInputs!==1||Me.functions[1].stateValues.numOutputs!==1?{setValue:{functions:[()=>NaN,()=>NaN],haveFunctions:!1,fDefinitions:[{},{}]}}:{setValue:{functions:[Me.functions[0].stateValues.numericalfs[0],Me.functions[1].stateValues.numericalfs[0]],haveFunctions:!0,fDefinitions:[Me.functions[0].stateValues.fDefinition,Me.functions[1].stateValues.fDefinition]}}}},ae.nearestPoint={returnDependencies:()=>({functions:{dependencyType:"stateVariable",variableName:"functions"},boundaryValues:{dependencyType:"stateVariable",variableName:"boundaryValues"},flipFunctions:{dependencyType:"stateVariable",variableName:"flipFunctions"},haveFunctions:{dependencyType:"stateVariable",variableName:"haveFunctions"}}),definition({dependencyValues:Me}){if(!Me.haveFunctions)return{setValue:{nearestPoint:()=>({})}};const Or=Math.min(Me.boundaryValues[0],Me.boundaryValues[1]),Hr=Math.max(Me.boundaryValues[0],Me.boundaryValues[1]),Li=Me.functions[0],ts=Me.functions[1];return{setValue:{nearestPoint:function({variables:ns}){let is=ns.x1.evaluate_to_constant(),as=ns.x2.evaluate_to_constant();Me.flipFunctions&&([is,as]=[as,is]),is=Math.max(Or,Math.min(Hr,is));let[os,ss]=[Li(is),ts(is)].sort((ls,us)=>ls-us);return as=Math.max(os,Math.min(ss,as)),Me.flipFunctions&&([is,as]=[as,is]),{x1:is,x2:as}}}}}},ae}}function returnFieldFunctionChildGroup(){return{group:"functions",componentTypes:["function"]}}function returnFieldVariablesAttribute(){return{variables:{createComponentOfType:"_variableNameList",description:'Names of the variables a bare expression is read as a function of. Defaults to "x y". Ignored when the function is given as a <function> child, which names its own variables.'}}}function returnFieldLatticeAttributes({markNoun:Br,markLengthDefault:ae,markLengthDescription:Me}){return{dx:{createComponentOfType:"number",createStateVariable:"dx",defaultValue:1,public:!0,forRenderer:!0,description:`Horizontal spacing between ${Br}.`},dy:{createComponentOfType:"number",createStateVariable:"dy",defaultValue:1,public:!0,forRenderer:!0,description:`Vertical spacing between ${Br}.`},xoffset:{createComponentOfType:"number",createStateVariable:"xoffset",defaultValue:0,public:!0,forRenderer:!0,description:"Horizontal offset of the lattice origin."},yoffset:{createComponentOfType:"number",createStateVariable:"yoffset",defaultValue:0,public:!0,forRenderer:!0,description:"Vertical offset of the lattice origin."},markLength:{createComponentOfType:"number",createStateVariable:"markLength",defaultValue:ae,public:!0,forRenderer:!0,description:Me},maxMarks:{createComponentOfType:"number",createStateVariable:"maxMarks",defaultValue:2500,public:!0,forRenderer:!0,description:`Upper bound on how many ${Br} are drawn. Zooming out past this coarsens the lattice rather than drawing an unbounded number of ${Br}.`}}}function returnFieldFunctionStateVariableDefinitions({numOutputs:Br}){const ae=Br===1,Me=ae?"slopeField":"vectorField",Or=ae?"vectorField":"slopeField",Hr=ae?2:1;return{haveFunction:{forRenderer:!0,additionalStateVariablesDefined:[{variableName:"fDefinitions",forRenderer:!0}],returnDependencies:()=>({functionChildren:{dependencyType:"child",childGroups:["functions"],variableNames:["numOutputs","fDefinitions"]}}),definition({dependencyValues:Li}){const ts=Li.functionChildren[0]??null;if(ts===null||ts.stateValues.numOutputs!==Br){const rs=[];if(ts!==null){const ns=ts.stateValues.numOutputs;rs.push(codedDiagnostic({type:"warning",code:"doenet-w0122",args:{component:Me,expected:Br,found:ns,alternative:ns===Hr?Or:"none"},position:ts.position||void 0}))}return{setValue:{haveFunction:!1,fDefinitions:Array.from({length:Br},()=>({}))},sendDiagnostics:rs}}return{setValue:{haveFunction:!0,fDefinitions:ts.stateValues.fDefinitions}}}}}}class SlopeField extends GraphicalComponent{static componentType="slopeField";static styleOverrideCategories=["line"];static includeLabels=!1;static componentDocs={summary:"A slope field for a differential equation y' = f(x,y), drawn as tick marks on a lattice"};static additionalSchemaChildren=["math","number","string"];static returnChildGroups(){let ae=super.returnChildGroups();return ae.push(returnFieldFunctionChildGroup()),ae}static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnFieldVariablesAttribute(),returnFieldLatticeAttributes({markNoun:"marks",markLengthDefault:20,markLengthDescription:"Length of each mark, in pixels. Marks keep this length whatever the axis scaling, so slopes are drawn at their true visual angle."})),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnGraphicalStyleDescriptionDefinitions({kind:"line",noun:"slope-field"}),returnFieldFunctionStateVariableDefinitions({numOutputs:1})),ae}}class VectorField extends GraphicalComponent{static componentType="vectorField";static styleOverrideCategories=["line"];static includeLabels=!1;static componentDocs={summary:"A vector field drawn as arrows on a lattice, from a function with two outputs"};static additionalSchemaChildren=["math","number","string"];static returnChildGroups(){let ae=super.returnChildGroups();return ae.push(returnFieldFunctionChildGroup()),ae}static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnFieldVariablesAttribute(),returnFieldLatticeAttributes({markNoun:"arrows",markLengthDefault:24,markLengthDescription:"Length in pixels of the longest arrow, or of every arrow when normalize is set. Arrows keep this length whatever the axis scaling."})),ae.normalize={createComponentOfType:"boolean",createStateVariable:"normalize",defaultValue:!1,public:!0,forRenderer:!0,description:"Draw every arrow the same length, showing direction only rather than magnitude."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnGraphicalStyleDescriptionDefinitions({kind:"line",noun:"vector-field"}),returnFieldFunctionStateVariableDefinitions({numOutputs:2})),ae}}class RegionHalfPlane extends GraphicalComponent{static componentType="regionHalfPlane";static componentDocs={summary:"A half-plane region bounded by a line"};static rendererType=void 0;static createAttributesObject(){let ae=super.createAttributesObject();return ae.horizontal={description:"Whether the half-plane extends horizontally, bounded by the vertical line x = boundaryValue. If false, the half-plane extends vertically, bounded by the horizontal line y = boundaryValue.",createComponentOfType:"boolean",createStateVariable:"horizontal",defaultValue:!0,public:!0},ae.boundaryValue={description:"Position of the bounding line: x = boundaryValue when horizontal is true, y = boundaryValue when horizontal is false.",createComponentOfType:"number",createStateVariable:"boundaryValue",defaultValue:0,public:!0},ae.greaterThan={description:"Whether the region is the side where the inequality is greater than the boundary.",createComponentOfType:"boolean",createStateVariable:"greaterThan",defaultValue:!0,public:!0},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.nearestPoint={returnDependencies:()=>({horizontal:{dependencyType:"stateVariable",variableName:"horizontal"},boundaryValue:{dependencyType:"stateVariable",variableName:"boundaryValue"},greaterThan:{dependencyType:"stateVariable",variableName:"greaterThan"}}),definition({dependencyValues:Me}){let Or=Me.boundaryValue;return{setValue:{nearestPoint:function({variables:Hr,scales:Li}){if(!Number.isFinite(Or))return{};if(Me.horizontal)if(Me.greaterThan)if(Hr.x1<Or){let ts=Object.assign({},Hr);return ts.x1=Or,ts}else return{};else if(Hr.x1>Or){let ts=Object.assign({},Hr);return ts.x1=Or,ts}else return{};else if(Me.greaterThan)if(Hr.x2<Or){let ts=Object.assign({},Hr);return ts.x2=Or,ts}else return{};else if(Hr.x2>Or){let ts=Object.assign({},Hr);return ts.x2=Or,ts}else return{}}}}}},ae}}class CodeEditor extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{updateImmediateValue:inputUpdateImmediateValue.bind(this),updateValue:inputUpdateValue.bind(this),recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="codeEditor";static componentDocs={summary:"An interactive DoenetML code editor"};static variableForImplicitProp="value";static renderChildren=!0;static ignoreVariantsFromChildren=!0;static processWhenJustUpdatedForNewComponent=!0;static ignoreErrorsFromChildren=!0;static get stateVariablesShadowedForReference(){return["value"]}static createAttributesObject(){let ae=super.createAttributesObject();return ae.prefill={description:"Initial code shown in the editor before the user types.",createComponentOfType:"text",createStateVariable:"prefill",defaultValue:"",public:!0},ae.bindValueTo={createComponentOfType:"text",description:"Two-way binding target for the input's value."},ae.width={description:'Editor width (e.g. "100%" or "600px").',createComponentOfType:"componentSize",createStateVariable:"width",defaultValue:{size:"100",isAbsolute:!1},forRenderer:!0,public:!0},ae.height={description:'Editor height (e.g. "500px").',createComponentOfType:"componentSize",createStateVariable:"height",defaultValue:{size:400,isAbsolute:!0},forRenderer:!0,public:!0},ae.viewerRatio={createComponentOfType:"number",description:"Fraction of the editor area allotted to the live viewer."},ae.showResults={description:"Whether to render the results panel alongside the editor.",createComponentOfType:"boolean",createStateVariable:"showResults",defaultValue:!1,forRenderer:!0,public:!0},ae.showFormatter={description:"Whether to show a code formatter button.",createComponentOfType:"boolean",createStateVariable:"showFormatter",defaultValue:!1,forRenderer:!0,public:!0},ae.resultsLocation={description:"Position of the results panel relative to the editor.",createComponentOfType:"text",createStateVariable:"resultsLocation",defaultValue:"bottom",forRenderer:!0,public:!0,toLowerCase:!0,validValues:[{value:"bottom",description:"Place the results panel below the editor."},{value:"start",description:"Place the results panel before the editor: to its left in a left-to-right document, to its right in a right-to-left one."},{value:"end",description:"Place the results panel after the editor: to its right in a left-to-right document, to its left in a right-to-left one."}]},ae.readOnly={description:"Whether the editor is read-only.",createComponentOfType:"boolean",createStateVariable:"readOnly",defaultValue:!1,forRenderer:!0,public:!0},ae.initialOpenTab={description:"Which diagnostics/responses tab to open initially.",createComponentOfType:"text",createStateVariable:"initialOpenTab",defaultValue:"first",forRenderer:!0,public:!0,toLowerCase:!0,validValues:[{value:"none",description:"Panel starts closed."},{value:"first",description:"Open the first available tab."},{value:"errors",description:"Open the errors tab."},{value:"warnings",description:"Open the warnings tab."},{value:"info",description:"Open the info tab."},{value:"accessibility",description:"Open the accessibility tab."},{value:"responses",description:"Open the responses tab."},{value:"help",description:"Open the help tab."}]},ae.renderedName={createPrimitiveOfType:"string",description:"Name to assign to the dynamically-rendered DoenetML output."},ae.staticName={createPrimitiveOfType:"string",description:"Name to assign to the static DoenetML source."},ae}static keepChildrenSerialized({serializedComponent:ae}){return ae.children===void 0?[]:Object.keys(ae.children)}static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnInputValueChangedStateVariableDefinitions({valueChangedDescription:"Whether the value has been changed from its initial state.",immediateValueChangedDescription:"Whether the value, including in-progress edits, has been changed from its initial state."})),ae.prefillFromChildren={returnDependencies:()=>({childrenDoenetML:{dependencyType:"doenetML",displayOnlyChildren:!0}}),definition({dependencyValues:Me}){let Or=Me.childrenDoenetML;return Or&&(Or+=`
2865
2865
  `),{setValue:{prefillFromChildren:Or}}}},ae.value={description:"The code value of the input.",public:!0,shadowingInstructions:{createComponentOfType:"text"},hasEssential:!0,forRenderer:!0,returnDependencies:()=>({bindValueTo:{dependencyType:"attributeComponent",attributeName:"bindValueTo",variableNames:["value"]},prefill:{dependencyType:"stateVariable",variableName:"prefill"},prefillFromChildren:{dependencyType:"stateVariable",variableName:"prefillFromChildren"},valueChanged:{dependencyType:"stateVariable",variableName:"valueChanged",onlyToSetInInverseDefinition:!0},immediateValueChanged:{dependencyType:"stateVariable",variableName:"immediateValueChanged",onlyToSetInInverseDefinition:!0}}),definition:function({dependencyValues:Me,usedDefault:Or}){return Me.bindValueTo?{setValue:{value:Me.bindValueTo.stateValues.value}}:{useEssentialOrDefaultValue:{value:{variablesToCheck:"value",get defaultValue(){return Or.prefill?Me.prefillFromChildren:Me.prefill}}}}},inverseDefinition:function({desiredStateVariableValues:Me,dependencyValues:Or}){let Hr=[{setDependency:"valueChanged",desiredValue:!0},{setDependency:"immediateValueChanged",desiredValue:!0}];return Or.bindValueTo?Hr.push({setDependency:"bindValueTo",desiredValue:Me.value,variableIndex:0}):Hr.push({setEssentialValue:"value",value:Me.value}),{success:!0,instructions:Hr}}},Object.assign(ae,returnImmediateValueStateVariableDefinition({description:"The code value reflecting the user's in-progress edits.",createComponentOfType:"text"})),ae.text={description:"The current code as a plain text string.",public:!0,shadowingInstructions:{createComponentOfType:"text"},returnDependencies:()=>({value:{dependencyType:"stateVariable",variableName:"value"}}),definition:function({dependencyValues:Me}){return{setValue:{text:Me.value}}}},ae.componentType={returnDependencies:()=>({}),definition:()=>({setValue:{componentType:"text"}})},ae.allChildren={returnDependencies:()=>({allChildren:{dependencyType:"child",childGroups:["anything"]}}),definition({dependencyValues:Me}){return{setValue:{allChildren:Me.allChildren}}}},ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}class HasSameFactoring extends BooleanComponent{static componentType="hasSameFactoring";static componentDocs={summary:"Boolean condition that tests for equivalent factoring"};static rendererType="boolean";static createAttributesObject(){let ae=super.createAttributesObject();return ae.variable={createComponentOfType:"_variableName",createStateVariable:"variable",defaultValue:Context.fromAst("x"),description:"Variable used when comparing factored expressions."},ae.restrictDivision={createComponentOfType:"boolean",createStateVariable:"restrictDivision",defaultValue:!1,description:"Whether to disallow dividing through to match factored forms."},ae.monomialFactorMustMatch={createComponentOfType:"boolean",createStateVariable:"monomialFactorMustMatch",defaultValue:!1,description:"Whether monomial factors must match exactly (implies restrictDivision)."},ae.allowOnlySignDifferences={createComponentOfType:"boolean",createStateVariable:"allowOnlySignDifferences",defaultValue:!1,description:"Whether to count factorizations as equivalent when they differ only by sign."},ae}static returnChildGroups(){return[{group:"maths",componentTypes:["math"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.parsedExpression,delete ae.mathChildrenByCode,ae.value={public:!0,description:"Whether the input math expressions share the same factoring.",shadowingInstructions:{createComponentOfType:"boolean"},forRenderer:!0,returnDependencies:()=>({mathChildren:{dependencyType:"child",childGroups:["maths"],variableNames:["value"]},allowedErrorInNumbers:{dependencyType:"stateVariable",variableName:"allowedErrorInNumbers"},includeErrorInNumberExponents:{dependencyType:"stateVariable",variableName:"includeErrorInNumberExponents"},allowedErrorIsAbsolute:{dependencyType:"stateVariable",variableName:"allowedErrorIsAbsolute"},numSignErrorsMatched:{dependencyType:"stateVariable",variableName:"numSignErrorsMatched"},variable:{dependencyType:"stateVariable",variableName:"variable"},restrictDivision:{dependencyType:"stateVariable",variableName:"restrictDivision"},monomialFactorMustMatch:{dependencyType:"stateVariable",variableName:"monomialFactorMustMatch"},allowOnlySignDifferences:{dependencyType:"stateVariable",variableName:"allowOnlySignDifferences"}}),definition:function({dependencyValues:Me}){if(Me.mathChildren.length!==2)return{setValue:{value:!1}};let Or=Me.mathChildren[0].stateValues.value,Hr=Me.mathChildren[1].stateValues.value;if(checkEquality({object1:Or,object2:Hr,isUnordered:!1,partialMatches:!1,symbolicEquality:!1,allowedErrorInNumbers:Me.allowedErrorInNumbers,includeErrorInNumberExponents:Me.includeErrorInNumberExponents,allowedErrorIsAbsolute:Me.allowedErrorIsAbsolute,numSignErrorsMatched:Me.numSignErrorsMatched}).fraction_equal!==1)return{setValue:{value:!1}};if(Array.isArray(Or.tree)&&Or.tree[0]==="-"&&(Or=Context.fromAst(Or.tree[1])),Array.isArray(Hr.tree)&&Hr.tree[0]==="-"&&(Hr=Context.fromAst(Hr.tree[1])),!Me.restrictDivision&&!Me.monomialFactorMustMatch&&!Me.allowOnlySignDifferences&&(Array.isArray(Or.tree)&&Or.tree[0]==="/"&&Context.fromAst(Or.tree[2]).variables().length===0&&(Or=Context.fromAst(Or.tree[1]),Array.isArray(Or.tree)&&Or.tree[0]==="-"&&(Or=Context.fromAst(Or.tree[1]))),Array.isArray(Hr.tree)&&Hr.tree[0]==="/"&&Context.fromAst(Hr.tree[2]).variables().length===0&&(Hr=Context.fromAst(Hr.tree[1]),Array.isArray(Hr.tree)&&Hr.tree[0]==="-"&&(Hr=Context.fromAst(Hr.tree[1])))),Or=Context.fromAst(expandPositiveIntegerPowers(Or.tree)),Hr=Context.fromAst(expandPositiveIntegerPowers(Hr.tree)),Array.isArray(Or.tree)&&Or.tree[0]==="*"){if(!(Array.isArray(Hr.tree)&&Hr.tree[0]==="*"))return{setValue:{value:!1}}}else return Array.isArray(Hr.tree)&&Hr.tree[0]==="*"?{setValue:{value:!1}}:{setValue:{value:!0}};if(Me.monomialFactorMustMatch||Me.allowOnlySignDifferences){let us=findMonomialFromFactors(Or.tree.slice(1)),cs=findMonomialFromFactors(Hr.tree.slice(1));if(!us.equals(cs)){let ds=Context.fromAst(["-",cs.tree]);if(!us.equals(ds))return{setValue:{value:!1}}}}if(Me.allowOnlySignDifferences){let us=normalizeFactorSigns(Or),cs=normalizeFactorSigns(Hr);return{setValue:{value:us.equalsViaSyntax(cs,{allowed_error_in_numbers:Me.allowedErrorInNumbers,include_error_in_number_exponents:Me.includeErrorInNumberExponents,allowed_error_is_absolute:Me.allowedErrorIsAbsolute})}}}let ts=Or.tree.slice(1).filter(us=>Context.fromAst(us).variables().length>0),rs=Hr.tree.slice(1).filter(us=>Context.fromAst(us).variables().length>0);if(ts.length!==rs.length)return{setValue:{value:!1}};let ns=0,is=0,as=0,os=0,ss=Me.variable.subscripts_to_strings().tree;for(let us of ts){let cs=Context.fromAst(us).subscripts_to_strings().derivative(ss).derivative(ss).simplify();if(cs.tree===0)is++;else if(cs.variables().length===0)ns++;else return{setValue:{value:!1}}}for(let us of rs){let cs=Context.fromAst(us).subscripts_to_strings().derivative(ss).derivative(ss).simplify();if(cs.tree===0)os++;else if(cs.variables().length===0)as++;else return{setValue:{value:!1}}}return{setValue:{value:is===os&&ns===as}}}},ae}}function expandPositiveIntegerPowers(Br){if(!Array.isArray(Br))return Br;if(Br[0]==="^"){let ae=Br[1],Me=Br[2];Number.isInteger(Me)&&Me>0&&(Br=["*",...Array(Me).fill(ae)])}if(Br[0]==="*"){let ae=Br;Br=["*"];for(let Me of ae.slice(1))if(Array.isArray(Me)&&Me[0]==="^"){let Or=Me[1],Hr=Me[2];Number.isInteger(Hr)&&Hr>0?Br.push(...Array(Hr).fill(Or)):Br.push(Me)}else Br.push(Me)}return Br}function findMonomialFromFactors(Br){let ae=[],Me=!1;for(let Hr of Br)if(typeof Hr=="string"||Context.fromAst(Hr).variables().length===0){if(!Me){if(ae.length>0)return Context.fromAst("_");Me=!0}ae.push(Hr)}else Me=!1;let Or;return ae.length===0?Or=1:ae.length===1?Or=ae[0]:Or=["*",...ae],Context.fromAst(Or)}function normalizeFactorSigns(Br){let ae=Br.simplify().tree;if(ae[0]==="-"&&(ae=ae[1]),ae[0]!=="*")return Context.fromAst(ae).simplify();let Me=["*"];for(let Or of ae.slice(1))if(typeof Or=="number")Or<0?Me.push(-Or):Me.push(Or);else if(!Array.isArray(Or))Me.push(Or);else if(Or[0]==="-")Me.push(Or[1]);else if(Or[0]==="+"){let Hr=!1,Li=Or[1];if(typeof Li=="number")Li<0&&(Hr=!0);else if(Array.isArray(Li)){if(Li[0]==="-")Hr=!0;else if(Li[0]==="*"){let ts=Li[1];typeof ts=="number"?ts<0&&(Hr=!0):Array.isArray(ts)&&ts[0]==="-"&&(Hr=!0)}}Hr?Me.push(Context.fromAst(["-",Or]).simplify().tree):Me.push(Or)}else Me.push(Or);return Context.fromAst(Me).simplify()}class DataFrame extends BaseComponent{static componentType="dataFrame";static excludeFromSchema=!0;static componentDocs={summary:"A 2D table of typed data values."};static rendererType=void 0;static createAttributesObject(){let ae=super.createAttributesObject();return ae.source={description:"URL or identifier of the data source.",createComponentOfType:"text",createStateVariable:"source",required:!0,public:!0,forRenderer:!0},ae.hasHeader={description:"Whether the first row of data contains column headers.",createComponentOfType:"boolean",createStateVariable:"hasHeader",defaultValue:!0,public:!0},ae.columnTypes={createComponentOfType:"textList",createStateVariable:"columnTypesPrelim",defaultValue:[],description:"Override the inferred type of each column."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.cid={forRenderer:!0,returnDependencies:()=>({source:{dependencyType:"stateVariable",variableName:"source"}}),definition:function({dependencyValues:Me}){if(!Me.source||Me.source.substring(0,7).toLowerCase()!=="doenet:")return{setValue:{cid:null}};let Or=null,Hr=Me.source.match(/[:&]cid=([^&]+)/i);return Hr&&(Or=Hr[1]),{setValue:{cid:Or}}}},ae.dataFrame={stateVariablesDeterminingDependencies:["cid","source"],additionalStateVariablesDefined:[{variableName:"numRows",public:!0,description:"The number of rows in the data frame.",shadowingInstructions:{createComponentOfType:"integer"}},{variableName:"numColumns",public:!0,description:"The number of columns in the data frame.",shadowingInstructions:{createComponentOfType:"integer"}},{variableName:"columnTypes",public:!0,description:"The data type of each column in the data frame.",shadowingInstructions:{createComponentOfType:"textList"}},{variableName:"columnNames",public:!0,description:"The name of each column in the data frame.",shadowingInstructions:{createComponentOfType:"textList"}}],returnDependencies:({stateValues:Me})=>({fileContents:{dependencyType:"file",cid:Me.cid,uri:Me.source,fileType:"csv"},hasHeader:{dependencyType:"stateVariable",variableName:"hasHeader"},columnTypesPrelim:{dependencyType:"stateVariable",variableName:"columnTypesPrelim"}}),definition:function({dependencyValues:Me,componentIdx:Or}){let Hr=[],Li=[],ts=Me.fileContents.trim().split(`
2866
- `).map(ss=>ss.trim().split(",").map(ls=>ls.trim())),rs=ts[0]?.length,ns=!1;for(let ss of ts.slice(1))if(ss.length!==rs){ns=!0;break}if(ns){let ss=codedDiagnostic({type:"warning",code:"doenet-w0066",args:{componentIdx:String(Or)}});return{setValue:{dataFrame:null,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:Li},sendDiagnostics:[ss]}}let is={},as=[];if(Me.hasHeader?(is.columnNames=ts[0].map(ss=>(['"',"'"].includes(ss[0])&&ss[ss.length-1]===ss[0]&&(ss=ss.substring(1,ss.length-1)),ss)),as=ts.slice(1)):(is.columnNames=[...Array(rs).keys()].map(ss=>`col${ss+1}`),as=ts),[...new Set(is.columnNames)].length<is.columnNames){let ss=codedDiagnostic({type:"warning",code:"doenet-w0067",args:{componentIdx:String(Or)}});return{setValue:{dataFrame:null,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:Li},sendDiagnostics:[ss]}}if(is.columnNames.includes("")){let ss=codedDiagnostic({type:"warning",code:"doenet-w0068",args:{componentIdx:String(Or)}});return{setValue:{dataFrame:null,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:Li},sendDiagnostics:[ss]}}let os=as.length;is.shape=[os,rs];for(let ss=0;ss<rs;ss++){let ls=Me.columnTypesPrelim[ss]?.toLowerCase();if(["number","string"].includes(ls)||(ls="auto"),ls==="auto"){let us=!1;for(let cs=0;cs<os;cs++){let ds=as[cs][ss];if(ds!==""){let ps=Number(ds);if(!Number.isFinite(ps)){us=!0;break}}}us?ls="string":ls="number"}if(ls==="number")for(let us=0;us<os;us++)as[us][ss]===""?as[us][ss]=null:as[us][ss]=Number(as[us][ss]);else for(let us=0;us<os;us++){let cs=as[us][ss];['"',"'"].includes(cs[0])&&cs[cs.length-1]===cs[0]&&(cs=cs.substring(1,cs.length-1)),as[us][ss]=cs}Hr.push(ls)}return is.data=as,is.columnTypes=Hr,{setValue:{dataFrame:is,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:is.columnNames}}}},ae.means={description:"Mean of each numeric column in the data frame.",public:!0,shadowingInstructions:{createComponentOfType:"number"},isArray:!0,entryPrefixes:["mean"],returnArraySizeDependencies:()=>({numColumns:{dependencyType:"stateVariable",variableName:"numColumns"}}),returnArraySize({dependencyValues:Me}){return[Me.numColumns]},returnArrayDependenciesByKey(){return{globalDependencies:{dataFrame:{dependencyType:"stateVariable",variableName:"dataFrame"},numColumns:{dependencyType:"stateVariable",variableName:"numColumns"},numRows:{dependencyType:"stateVariable",variableName:"numRows"},columnTypes:{dependencyType:"stateVariable",variableName:"columnTypes"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arrayKeys:Or}){let Hr={};for(let Li of Or){let ts=0,rs=0;if(Me.columnTypes[Li]==="number"){for(let ns=0;ns<Me.numRows;ns++){let is=Me.dataFrame.data[ns][Li];is!==null&&(ts+=is,rs++)}ts/=rs}else ts=NaN;Hr[Li]=ts}return{setValue:{means:Hr}}}},ae}}const{mean,std,variance,median,quantileSeq}=Context.math,STATISTICS=[{value:"mean",description:"The arithmetic mean of the values.",compute:mean},{value:"stdev",description:"The sample standard deviation.",compute:std},{value:"variance",description:"The sample variance.",compute:variance},{value:"stderr",description:"The standard error of the mean."},{value:"count",description:"The number of non-missing values."},{value:"minimum",description:"The smallest value.",compute:Br=>Br.reduce((ae,Me)=>Me<ae?Me:ae)},{value:"quartile1",description:"The first quartile (25th percentile).",compute:Br=>quantileSeq(Br,.25)},{value:"median",description:"The median value.",compute:median},{value:"quartile3",description:"The third quartile (75th percentile).",compute:Br=>quantileSeq(Br,.75)},{value:"maximum",description:"The largest value.",compute:Br=>Br.reduce((ae,Me)=>Me>ae?Me:ae)},{value:"range",description:"The maximum minus the minimum."},{value:"sum",description:"The sum of the values.",compute:Br=>Br.reduce((ae,Me)=>ae+Me)}],FIVE_NUMBER_SUMMARY=["minimum","quartile1","median","quartile3","maximum"],DEFAULT_STATISTICS=["mean","stdev","count","minimum","quartile1","median","quartile3","maximum"];function returnColumnStatisticDefinition({value:Br,description:ae,compute:Me}){return{description:ae,public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Or}){const Hr=Or.dataColumn;return{setValue:{[Br]:Hr.length?Me(Hr):null}}}}}function displayedStatistic(Br,ae,Me){return ae===null?null:Br==="count"?ae:roundForDisplay({value:numberToMathExpression(ae),dependencyValues:Me}).toString(buildNumberDisplayParameters(Me))}class SummaryStatistics extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="summaryStatistics";static componentDocs={summary:"Summary statistics (mean, median, etc.) for a list of numbers."};static createAttributesObject(){let ae=super.createAttributesObject();return ae.statisticsToDisplay={createComponentOfType:"textList",createStateVariable:"statisticsToDisplayPrelim",defaultValue:["default"],toLowerCase:!0,highlighted:!0,validValues:[{value:"default",description:`The default selection: ${DEFAULT_STATISTICS.join(", ")}.`},{value:"all",description:"Every statistic listed here."},{value:"fiveNumberSummary",description:`The five-number summary: ${FIVE_NUMBER_SUMMARY.join(", ")}.`},...STATISTICS.map(({value:Me,description:Or})=>({value:Me,description:Or}))],description:'Which summary statistics to display (or "default" / "all" / "fiveNumberSummary").'},Object.assign(ae,returnNumberDisplayAttributes()),ae}static additionalSchemaChildren=["string"];static returnSugarInstructions(){let ae=super.returnSugarInstructions();return ae.push(returnBreakStringsIntoMathsBySpacesSugarInstruction()),ae}static returnChildGroups(){return[{group:"numbers",componentTypes:["number"]},{group:"maths",componentTypes:["math"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.statisticsToDisplay={description:"Which summary statistics to display.",public:!0,shadowingInstructions:{createComponentOfType:"textList"},returnDependencies:()=>({statisticsToDisplayPrelim:{dependencyType:"stateVariable",variableName:"statisticsToDisplayPrelim"}}),definition:function({dependencyValues:Or}){const Hr=STATISTICS.map(ns=>ns.value),Li=Or.statisticsToDisplayPrelim,ts=new Set;for(const ns of Li)if(ns==="default")for(const is of DEFAULT_STATISTICS)ts.add(is);else if(ns==="all")for(const is of Hr)ts.add(is);else if(ns==="fivenumbersummary")for(const is of FIVE_NUMBER_SUMMARY)ts.add(is);else ts.add(ns);return{setValue:{statisticsToDisplay:Hr.filter(ns=>ts.has(ns))}}}},ae.dataColumn={description:"The numeric values being summarized.",returnDependencies:()=>({valueChildren:{dependencyType:"child",childGroups:["numbers","maths"],variableNames:["value"]}}),definition({dependencyValues:Or}){const Hr=[];for(let Li of Or.valueChildren){const ts=Li.stateValues.value,rs=typeof ts?.evaluate_to_constant=="function"?ts.evaluate_to_constant():ts;Number.isFinite(rs)&&Hr.push(rs)}return{setValue:{dataColumn:Hr}}}};const Me={};Me.count={public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Or}){return{setValue:{count:Or.dataColumn.length}}}},Me.stderr={public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({stdev:{dependencyType:"stateVariable",variableName:"stdev"},count:{dependencyType:"stateVariable",variableName:"count"}}),definition({dependencyValues:Or}){let Hr=null;return Or.stdev!==null&&(Hr=Or.stdev/Math.sqrt(Or.count)),{setValue:{stderr:Hr}}}},Me.range={public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({minimum:{dependencyType:"stateVariable",variableName:"minimum"},maximum:{dependencyType:"stateVariable",variableName:"maximum"}}),definition({dependencyValues:Or}){let Hr=null;return Or.minimum!==null&&(Hr=Or.maximum-Or.minimum),{setValue:{range:Hr}}}};for(let Or of STATISTICS)ae[Or.value]={...Or.compute?returnColumnStatisticDefinition(Or):{description:Or.description,...Me[Or.value]},highlighted:!0};return ae.summaryStatistics={description:"The statistics being displayed, as the table should show them, keyed by statistic.",forRenderer:!0,stateVariablesDeterminingDependencies:["statisticsToDisplay"],returnDependencies({stateValues:Or}){let Hr={};for(let Li of["displayDigits","displayDecimals","displaySmallAsZero","padZeros","avoidScientificNotation"])Hr[Li]={dependencyType:"stateVariable",variableName:Li};for(let Li of Or.statisticsToDisplay)Hr[Li]={dependencyType:"stateVariable",variableName:Li};return Hr},definition({dependencyValues:Or}){let Hr={};for(let{value:Li}of STATISTICS){const ts=Or[Li];ts!==void 0&&(Hr[Li]=displayedStatistic(Li,ts,Or))}return{setValue:{summaryStatistics:Hr}}}},ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}class Legend extends GraphicalComponent{static componentType="legend";static componentDocs={summary:"A legend describing the contents of a graph"};static createAttributesObject(){let ae=super.createAttributesObject();return ae.layer.defaultValue=1,ae.position={description:"Position of the legend on the graph.",createComponentOfType:"text",createStateVariable:"position",defaultValue:"upperRight",public:!0,forRenderer:!0,toLowerCase:!0,validValues:[{value:"upperRight",description:"Place the legend in the upper-right corner."},{value:"upperLeft",description:"Place the legend in the upper-left corner."},{value:"lowerRight",description:"Place the legend in the lower-right corner."},{value:"lowerLeft",description:"Place the legend in the lower-left corner."}]},ae.boxed={description:"Whether to draw an opaque box behind the legend so that graph contents passing behind it stay hidden.",createComponentOfType:"boolean",createStateVariable:"boxed",defaultValue:!1,public:!0,forRenderer:!0},ae.displayClosedSwatches={description:"Whether to render closed/filled swatches in the legend.",createComponentOfType:"boolean",createStateVariable:"displayClosedSwatches",defaultValue:!1,public:!0},ae}static returnChildGroups(){return[{group:"labels",componentTypes:["label"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.graphicalElementNames={returnDependencies:()=>({graphAncestor:{dependencyType:"ancestor",componentType:"graph",variableNames:["graphicalDescendants"]}}),definition({dependencyValues:Me}){return Me.graphAncestor?{setValue:{graphicalElementNames:Me.graphAncestor.stateValues.graphicalDescendants.map(Or=>Or.componentIdx)}}:{setValue:{graphicalElementNames:null}}}},ae.legendElements={forRenderer:!0,stateVariablesDeterminingDependencies:["graphicalElementNames"],returnDependencies:({stateValues:Me})=>{let Or={labelChildren:{dependencyType:"child",childGroups:["labels"],variableNames:["value","hasLatex","forObjectComponentIdx"]},displayClosedSwatches:{dependencyType:"stateVariable",variableName:"displayClosedSwatches"}};if(Me.graphicalElementNames){Or.numGraphicalElements={dependencyType:"value",value:Me.graphicalElementNames.length};for(let[Hr,Li]of Me.graphicalElementNames.entries())Or[`graphicalElement${Hr}`]={dependencyType:"multipleStateVariables",componentIdx:Li,variableNames:["selectedStyle","styleNumber","filled"],variablesOptional:!0},Or[`graphicalElement${Hr}AdapterSource`]={dependencyType:"adapterSource",componentIdx:Li},Or[`graphicalElement${Hr}ShadowSource`]={dependencyType:"shadowSource",componentIdx:Li}}return Or},definition({dependencyValues:Me,componentInfoObjects:Or}){let Hr=[];if(Me.numGraphicalElements>0){let Li=[],ts=[],rs=[],ns=[];for(let ss=0;ss<Me.numGraphicalElements;ss++){let ls=Me[`graphicalElement${ss}`],us=Me[`graphicalElement${ss}AdapterSource`];us&&(ls={...ls},ls.componentIdx=us.componentIdx);let cs=Me[`graphicalElement${ss}ShadowSource`];if(cs){const ds=JSON.parse(JSON.stringify(ls));ds.componentIdx=cs.componentIdx,ns.push(ds)}ns.push(ls)}let is=ns.map(ss=>ss.componentIdx),as=[],os={};for(let ss of Me.labelChildren){let ls={value:ss.stateValues.value,hasLatex:ss.stateValues.hasLatex};if(ss.stateValues.forObjectComponentIdx){os[ss.stateValues.forObjectComponentIdx]=ls;let us=is.indexOf(ss.stateValues.forObjectComponentIdx);if(us!==-1){let cs=ns[us];Or.isInheritedComponentType({inheritedComponentType:cs.componentType,baseComponentType:"point"})?Li.push(cs.stateValues.styleNumber):Me.displayClosedSwatches&&Or.allComponentClasses[cs.componentType].representsClosedPath?ts.push(cs.stateValues.styleNumber):cs.componentType!=="legend"&&rs.push(cs.stateValues.styleNumber)}}as.push({labelInfo:ls,forObject:ss.stateValues.forObjectComponentIdx})}for(let ss of as){let ls;if(ss.forObject){let us=is.indexOf(ss.forObject);us!==-1&&(ls=ns[us],ns.splice(us,1),is.splice(us,1))}else for(let us=0;us<ns.length;us++){let cs=ns[us];if(!(cs.componentIdx in os)){if(Or.isInheritedComponentType({inheritedComponentType:cs.componentType,baseComponentType:"point"})){if(!Li.includes(cs.stateValues.styleNumber)){ls=cs;break}}else if(Me.displayClosedSwatches&&Or.allComponentClasses[cs.componentType].representsClosedPath){if(!ts.includes(cs.stateValues.styleNumber)){ls=cs;break}}else if(cs.componentType!=="legend"&&!rs.includes(cs.stateValues.styleNumber)){ls=cs;break}}}if(ls){let us=ls.stateValues.selectedStyle,cs=ls.stateValues.styleNumber;Or.isInheritedComponentType({inheritedComponentType:ls.componentType,baseComponentType:"point"})?(Li.push(cs),Hr.push({swatchType:"marker",markerStyle:us.markerStyle,markerColor:us.markerColor,markerColorDarkMode:us.markerColorDarkMode,markerSize:us.markerSize,lineOpacity:us.lineOpacity,label:ss.labelInfo})):Me.displayClosedSwatches&&Or.allComponentClasses[ls.componentType].representsClosedPath?(ts.push(cs),Hr.push({swatchType:"rectangle",lineStyle:us.lineStyle,lineColor:us.lineColor,lineColorDarkMode:us.lineColorDarkMode,lineWidth:us.lineWidth,lineOpacity:us.lineOpacity,fillColor:us.fillColor,fillColorDarkMode:us.fillColorDarkMode,filled:ls.stateValues.filled,fillOpacity:us.fillOpacity,label:ss.labelInfo})):(rs.push(cs),Hr.push({swatchType:"line",lineStyle:us.lineStyle,lineColor:us.lineColor,lineColorDarkMode:us.lineColorDarkMode,lineWidth:us.lineWidth,lineOpacity:us.lineOpacity,label:ss.labelInfo}))}}}return{setValue:{legendElements:Hr}}}},ae.graphLimits={forRenderer:!0,returnDependencies:()=>({graphAncestor:{dependencyType:"ancestor",componentType:"graph",variableNames:["xMin","xMax","yMin","yMax"]}}),definition({dependencyValues:Me}){return Me.graphAncestor?{setValue:{graphLimits:Me.graphAncestor.stateValues}}:{setValue:{graphLimits:null}}}},ae}}const BLANK="_";function parameterKey(Br){if(isValidVariable({tree:Br}))return typeof Br=="string"?"s"+Br:"t"+JSON.stringify(Br)}function replacePlaceholders(Br,ae){let Me=ae(Br);return Me!==void 0?Me:Array.isArray(Br)?[Br[0],...Br.slice(1).map(Or=>replacePlaceholders(Or,ae))]:Br}class MatchesPattern extends BooleanComponent{static componentType="matchesPattern";static componentDocs={summary:"Boolean condition that tests whether input matches a math pattern"};static rendererType="boolean";static createAttributesObject(){let ae=super.createAttributesObject();return ae.pattern={createComponentOfType:"math",description:"Math expression pattern to match against.",highlighted:!0},ae.parameters={createComponentOfType:"_variableNameList",description:"Variables in the pattern that act as placeholders. Repeating one in the pattern requires the same subexpression at each occurrence. When specified, blanks in the pattern are matched literally.",highlighted:!0},ae.allowImplicitIdentities={description:"Whether to allow implicit identity transformations when matching.",createComponentOfType:"boolean",createStateVariable:"allowImplicitIdentities",defaultValue:!1,public:!0,highlighted:!0},ae.allowPermutations={description:"Whether to allow permutations of operands when matching.",createComponentOfType:"boolean",createStateVariable:"allowPermutations",defaultValue:!0,public:!0,highlighted:!0},ae.requireNumericMatches={description:"Whether numeric placeholders must match numbers.",createComponentOfType:"boolean",createStateVariable:"requireNumericMatches",defaultValue:!1,public:!0,highlighted:!0},ae.requireVariableMatches={description:"Whether variable placeholders must match variables.",createComponentOfType:"boolean",createStateVariable:"requireVariableMatches",defaultValue:!1,public:!0,highlighted:!0},ae.excludeMatches={description:"Patterns whose matches are excluded.",createComponentOfType:"mathList",createStateVariable:"excludeMatches",defaultValue:[],public:!0,highlighted:!0},ae.matchExpressionWithBlanks={description:"Whether to allow expressions with blanks to match.",createComponentOfType:"boolean",createStateVariable:"matchExpressionWithBlanks",defaultValue:!1,public:!0,highlighted:!0},ae}static additionalSchemaChildren=["string"];static returnSugarInstructions(){let ae=[],Me=function({matchedChildren:Or,componentInfoObjects:Hr,nComponents:Li,stateIdInfo:ts}){return Or.length===0||Or.length===1&&Hr.componentIsSpecifiedType(Or[0],"math")?{success:!1}:{success:!0,newChildren:[{type:"serialized",componentType:"math",componentIdx:Li++,stateId:ts?`${ts.prefix}${ts.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}],nComponents:Li}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"maths",componentTypes:["math"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.parsedExpression,delete ae.mathChildrenByCode,ae.pattern={additionalStateVariablesDefined:["patternVariables"],returnDependencies:()=>({patternAttr:{dependencyType:"attributeComponent",attributeName:"pattern",variableNames:["value"]},parametersAttr:{dependencyType:"attributeComponent",attributeName:"parameters",variableNames:["variables"]}}),definition({dependencyValues:Me}){let Or=[];if(!Me.patternAttr)return{setValue:{pattern:BLANK,patternVariables:Or}};let Hr=Me.patternAttr.stateValues.value,Li=Hr.variables(),ts=703;function rs(){let cs=numberToLetters(ts);for(ts++;Li.includes(cs);)cs=numberToLetters(ts),ts++;return cs}if(!Me.parametersAttr)return{setValue:{pattern:replacePlaceholders(Hr.tree,ds=>{if(ds!==BLANK)return;let ps=rs();return Or.push(ps),ps}),patternVariables:Or}};let ns=Me.parametersAttr.position||void 0,is=[],as=new Map,os=new Map;for(let cs of Me.parametersAttr.stateValues.variables){let ds=parameterKey(cs.tree);if(ds===void 0||as.has(ds))continue;let ps=rs();as.set(ds,ps),os.set(ps,cs.toString()),Or.push(ps)}let ss=new Set,ls=replacePlaceholders(Hr.tree,cs=>{let ds=as.get(parameterKey(cs));return ds!==void 0&&ss.add(ds),ds}),us=[...os].filter(([cs])=>!ss.has(cs)).map(([cs,ds])=>ds);return us.length>0&&is.push(codedDiagnostic({type:"warning",code:"doenet-w0117",args:{parameters:us},position:ns})),{setValue:{pattern:ls,patternVariables:Or},sendDiagnostics:is}}},ae.value={description:"Whether the input matches the pattern.",additionalStateVariablesDefined:[{variableName:"allPatternMatches"}],public:!0,highlighted:!0,shadowingInstructions:{createComponentOfType:"boolean"},forRenderer:!0,returnDependencies:()=>({pattern:{dependencyType:"stateVariable",variableName:"pattern"},patternVariables:{dependencyType:"stateVariable",variableName:"patternVariables"},mathChildren:{dependencyType:"child",childGroups:["maths"],variableNames:["value"]},allowImplicitIdentities:{dependencyType:"stateVariable",variableName:"allowImplicitIdentities"},allowPermutations:{dependencyType:"stateVariable",variableName:"allowPermutations"},requireNumericMatches:{dependencyType:"stateVariable",variableName:"requireNumericMatches"},requireVariableMatches:{dependencyType:"stateVariable",variableName:"requireVariableMatches"},excludeMatches:{dependencyType:"stateVariable",variableName:"excludeMatches"},matchExpressionWithBlanks:{dependencyType:"stateVariable",variableName:"matchExpressionWithBlanks"}}),definition:function({dependencyValues:Me}){if(Me.mathChildren.length===0)return{setValue:{value:!1,allPatternMatches:[]}};let Or=Me.mathChildren[0].stateValues.value;if(Or.variables().includes(BLANK)&&!Me.matchExpressionWithBlanks)return{setValue:{value:!1,allPatternMatches:[]}};let Hr={};if(Me.requireNumericMatches){let is=as=>!Number.isNaN(Context.fromAst(as).evaluate_to_constant());Me.patternVariables.forEach(as=>Hr[as]=is)}else if(Me.requireVariableMatches){let is=as=>typeof as=="string";Me.patternVariables.forEach(as=>Hr[as]=is)}else Me.patternVariables.forEach(is=>Hr[is]=!0);let Li={variables:Hr,allow_permutations:Me.allowPermutations};Me.allowImplicitIdentities&&(Li.allow_implicit_identities=Me.patternVariables);let ts=Or.match(Me.pattern,Li),rs=!1,ns=[];return ts&&(Object.values(ts).map(is=>Context.fromAst(is)).some(is=>Me.excludeMatches.some(as=>is.variables().some(os=>as.equalsViaSyntax(Context.fromAst(os)))))||(rs=!0,ns=Me.patternVariables.map(is=>Context.fromAst(ts[is]??BLANK)))),{setValue:{value:rs,allPatternMatches:ns}}}},ae.numMatches={description:"The number of matches found.",public:!0,highlighted:!0,shadowingInstructions:{createComponentOfType:"number"},returnDependencies:()=>({allPatternMatches:{dependencyType:"stateVariable",variableName:"allPatternMatches"}}),definition({dependencyValues:Me}){return{setValue:{numMatches:Me.allPatternMatches.length},checkForActualChange:{numMatches:!0}}}},ae.patternMatches={description:"The list of matched sub-expressions.",public:!0,highlighted:!0,shadowingInstructions:{createComponentOfType:"math"},isArray:!0,numDimensions:1,entryPrefixes:["patternMatch"],returnArraySizeDependencies:()=>({numMatches:{dependencyType:"stateVariable",variableName:"numMatches"}}),returnArraySize({dependencyValues:Me}){return[Me.numMatches]},returnArrayDependenciesByKey(){return{globalDependencies:{allPatternMatches:{dependencyType:"stateVariable",variableName:"allPatternMatches"}}}},arrayDefinitionByKey({globalDependencyValues:Me}){let Or={};for(let Hr=0;Hr<Me.__array_size[0];Hr++)Or[Hr]=Me.allPatternMatches[Hr];return{setValue:{patternMatches:Or}}}},ae}}class Matrix extends MathComponent{static componentType="matrix";static componentDocs={summary:"A matrix of math values",childAliases:{row:"matrixRow",column:"matrixColumn"}};static rendererType="math";static additionalSchemaChildren=["row","column"];static returnChildGroups(){return[{group:"rows",componentTypes:["matrixRow"]},{group:"columns",componentTypes:["matrixColumn"]},{group:"maths",componentTypes:["math"],excludeFromSchema:!0}]}static createAttributesObject(){let ae=super.createAttributesObject();return ae.defaultEntry={createComponentOfType:"math",createStateVariable:"defaultEntry",defaultValue:Context.fromAst(0),description:"Value used for entries that aren't explicitly specified."},ae.numRows={createComponentOfType:"integer",description:"Number of rows in the matrix."},ae.numColumns={createComponentOfType:"integer",description:"Number of columns in the matrix."},ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,componentInfoObjects:Hr,nComponents:Li,stateIdInfo:ts}){if(Or.length===0)return{success:!1};let rs=[],ns=!1;for(let is of Or)typeof is!="string"&&(is.doenetAttributes||(is.doenetAttributes={}),is.componentType==="column"?(is.doenetAttributes.createNameFromComponentType="column",is.componentType="matrixColumn",ns=!0):is.componentType==="row"?(is.doenetAttributes.createNameFromComponentType="row",is.componentType="matrixRow",ns=!0):is.attributes?.createComponentOfType?.primitive.value==="column"?(is.doenetAttributes.createNameFromComponentType="column",is.attributes.createComponentOfType.primitive.value="matrixColumn",ns=!0):is.attributes?.createComponentOfType?.primitive.value==="row"&&(is.doenetAttributes.createNameFromComponentType="row",is.attributes.createComponentOfType.primitive.value="matrixRow",ns=!0),rs.push(is));return ns||(Or.length>1||!Hr.componentIsSpecifiedType(Or[0],"math"))&&(rs=[{type:"serialized",componentType:"math",componentIdx:Li++,stateId:ts?`${ts.prefix}${ts.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}]),{success:!0,newChildren:rs,nComponents:Li}};return ae.push({replacementFunction:Me}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.codePre,delete ae.mathChildrenFunctionSymbols,delete ae.expressionWithCodes,delete ae.mathChildrenWithCanBeModified,delete ae.codesAdjacentToStrings,delete ae.canBeModified,delete ae.mathChildrenByVectorComponent,Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.unordered={description:"Whether matrix entries should be treated as unordered.",public:!0,shadowingInstructions:{createComponentOfType:"boolean"},returnDependencies:()=>({}),definition(){return{setValue:{unordered:!1}}}},ae.matrixSizePre={returnDependencies:()=>({rowChildren:{dependencyType:"child",childGroups:["rows"],variableNames:["numComponents"]},colChildren:{dependencyType:"child",childGroups:["columns"],variableNames:["numComponents"]},mathChildren:{dependencyType:"child",childGroups:["maths"],variableNames:["matrixSize"]},numRowsAttr:{dependencyType:"attributeComponent",attributeName:"numRows",variableNames:["value"]},numColumnsAttr:{dependencyType:"attributeComponent",attributeName:"numColumns",variableNames:["value"]}}),definition({dependencyValues:Me}){let Or=null,Hr=null;return Me.numRowsAttr&&(Or=Me.numRowsAttr.stateValues.value,Number.isFinite(Or)&&Or>0||(Or=null)),Me.numColumnsAttr&&(Hr=Me.numColumnsAttr.stateValues.value,Number.isFinite(Hr)&&Hr>0||(Hr=null)),Me.rowChildren.length>0?(Or===null&&(Or=Me.rowChildren.length),Hr===null&&(Hr=Math.max(1,...Me.rowChildren.map(Li=>Li.stateValues.numComponents)))):Me.colChildren.length>0?(Hr===null&&(Hr=Me.colChildren.length),Or===null&&(Or=Math.max(1,...Me.colChildren.map(Li=>Li.stateValues.numComponents)))):Me.mathChildren.length===1?(Or===null&&(Or=Me.mathChildren[0].stateValues.matrixSize[0]),Hr===null&&(Hr=Me.mathChildren[0].stateValues.matrixSize[1])):Or===null?Hr===null?(Or=0,Hr=0):Or=1:Hr===null&&(Hr=1),{setValue:{matrixSizePre:[Or,Hr]}}}},ae.matrixPre={isArray:!0,numDimensions:2,hasEssential:!0,returnArraySizeDependencies:()=>({matrixSizePre:{dependencyType:"stateVariable",variableName:"matrixSizePre"}}),returnArraySize({dependencyValues:Me}){return Me.matrixSizePre},returnArrayDependenciesByKey:({arrayKeys:Me})=>{let Or={defaultEntry:{dependencyType:"stateVariable",variableName:"defaultEntry"},rowChildIdentities:{dependencyType:"child",childGroups:["rows"]},colChildIdentities:{dependencyType:"child",childGroups:["columns"]}},Hr={};for(let Li of Me){let[ts,rs]=Li.split(",");Hr[Li]={rowChild:{dependencyType:"child",childGroups:["rows"],childIndices:[ts],variableNames:["math"+(Number(rs)+1)]},colChild:{dependencyType:"child",childGroups:["columns"],childIndices:[rs],variableNames:["math"+(Number(ts)+1)]},mathChild:{dependencyType:"child",childGroups:["maths"],childIndices:[0],variableNames:["matrixEntry"+(Number(ts)+1)+"_"+(Number(rs)+1)]}}}return{globalDependencies:Or,dependenciesByKey:Hr}},arrayDefinitionByKey({globalDependencyValues:Me,dependencyValuesByKey:Or,arrayKeys:Hr,arraySize:Li}){let ts={},rs={},ns=Me.rowChildIdentities.length>0,is=Me.colChildIdentities.length>0;for(let as of Hr){let[os,ss]=as.split(","),ls;ns?ls=Or[as].rowChild[0]?.stateValues["math"+(Number(ss)+1)]:is?ls=Or[as].colChild[0]?.stateValues["math"+(Number(os)+1)]:ls=Or[as].mathChild[0]?.stateValues["matrixEntry"+(Number(os)+1)+"_"+(Number(ss)+1)],ls===void 0?rs[as]={defaultValue:Me.defaultEntry}:ts[as]=ls}return{setValue:{matrixPre:ts},useEssentialOrDefaultValue:{matrixPre:rs}}},async inverseArrayDefinitionByKey({desiredStateVariableValues:Me,globalDependencyValues:Or,dependencyValuesByKey:Hr,dependencyNamesByKey:Li}){let ts=[],rs={},ns=Or.rowChildIdentities.length>0,is=Or.colChildIdentities.length>0;for(let as in Me.matrixPre){let[os,ss]=as.split(",");ns?Hr[as].rowChild[0]?.stateValues["math"+(Number(ss)+1)]===void 0?rs[as]=Me.matrixPre[as]:ts.push({setDependency:Li[as].rowChild,desiredValue:Me.matrixPre[as],childIndex:0,variableIndex:0}):is?Hr[as].colChild[0]?.stateValues["math"+(Number(os)+1)]===void 0?rs[as]=Me.matrixPre[as]:ts.push({setDependency:Li[as].colChild,desiredValue:Me.matrixPre[as],childIndex:0,variableIndex:0}):Hr[as].mathChild[0]?.stateValues["matrixEntry"+(Number(os)+1)+"_"+(Number(ss)+1)]===void 0?rs[as]=Me.matrixPre[as]:ts.push({setDependency:Li[as].mathChild,desiredValue:Me.matrixPre[as],childIndex:0,variableIndex:0})}return Object.keys(rs).length>0&&ts.push({setEssentialValue:"matrixPre",value:rs}),{success:!0,instructions:ts}}},ae.unnormalizedValue={returnDependencies:()=>({matrixPre:{dependencyType:"stateVariable",variableName:"matrixPre"},matrixSizePre:{dependencyType:"stateVariable",variableName:"matrixSizePre"}}),hasEssential:!0,defaultValue:Context.fromAst(["matrix",["tuple",0,0],["tuple"]]),definition({dependencyValues:Me}){let Or=["tuple"];for(let Li=0;Li<Me.matrixSizePre[0];Li++)Or.push(["tuple",...Me.matrixPre[Li].map(ts=>ts.tree)]);return{setValue:{unnormalizedValue:Context.fromAst(["matrix",["tuple",...Me.matrixSizePre],Or])}}},inverseDefinition({dependencyValues:Me,desiredStateVariableValues:Or}){let Hr=Or.unnormalizedValue.tree;if(!(Array.isArray(Hr)&&Hr[0]==="matrix"&&Hr[1]?.[1]===Me.matrixSizePre[0]&&Hr[1]?.[2]===Me.matrixSizePre[1]))return{success:!1};let Li={};for(let ts=0;ts<Me.matrixSizePre[0];ts++)for(let rs=0;rs<Me.matrixSizePre[1];rs++)Li[`${ts},${rs}`]=Context.fromAst(Hr[2][ts+1][rs+1]);return{success:!0,instructions:[{setDependency:"matrixPre",desiredValue:Li}]}}},ae.canBeModified={returnDependencies:()=>({modifyIndirectly:{dependencyType:"stateVariable",variableName:"modifyIndirectly"},fixed:{dependencyType:"stateVariable",variableName:"fixed"}}),definition({dependencyValues:Me}){return{setValue:{canBeModified:Me.modifyIndirectly&&!Me.fixed}}}},ae}}const{eigs,square,abs,divide}=Context.math;class EigenDecomposition extends BaseComponent{static componentType="eigenDecomposition";static rendererType=void 0;static componentDocs={summary:"Computes the eigenvalues and eigenvectors of a square matrix"};static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnNumberDisplayAttributes()),ae}static returnChildGroups(){return[{group:"maths",componentTypes:["math"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.decomposition={description:"The eigendecomposition of the matrix as a list of eigenvalue/eigenvector pairs.",additionalStateVariablesDefined:[{variableName:"numEigenvectors",description:"The number of eigenvectors found in the decomposition.",public:!0,shadowingInstructions:{createComponentOfType:"integer"}}],returnDependencies:()=>({mathChild:{dependencyType:"child",childGroups:["maths"],variableNames:["value"]}}),definition({dependencyValues:Me}){if(Me.mathChild.length===0)return{setValue:{decomposition:null,numEigenvectors:0}};let Or=Me.mathChild[0].stateValues.value.tree;if(!Array.isArray(Or)||Or[0]!=="matrix")return{setValue:{decomposition:null,numEigenvectors:0}};let Hr=Or[1][1],Li=Or[1][2];if(!(Number.isInteger(Hr)&&Li===Hr))return{setValue:{decomposition:null,numEigenvectors:0}};let ts=[];for(let ns=0;ns<Hr;ns++){let is=[],as=Or[2][ns+1]||[];for(let os=0;os<Li;os++){let ss=as[os+1];if(ss==null)return{setValue:{decomposition:null,numEigenvectors:0}};if(typeof ss=="number"||typeof ss?.re=="number"&&typeof ss?.im=="number")is.push(ss);else try{ss=Context.fromAst(ss).evaluate_to_constant(),typeof ss=="number"||typeof ss?.re=="number"&&typeof ss?.im=="number"?is.push(ss):is.push(NaN)}catch{is.push(NaN)}}ts.push(is)}let rs;try{rs=eigs(ts)}catch(ns){console.error("Could nt calculate eigenvalues of matrix",ns);let is=codedDiagnostic({type:"warning",code:"doenet-w0059"});return{setValue:{decomposition:null,numEigenvectors:0},sendDiagnostics:[is]}}return{setValue:{decomposition:rs,numEigenvectors:rs.eigenvectors.length}}}},ae.eigenvalues={description:"The eigenvalues of the matrix.",isArray:!0,public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},entryPrefixes:["eigenvalue"],returnArraySizeDependencies:()=>({decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}),returnArraySize({dependencyValues:Me}){let Or;return Me.decomposition?Or=Me.decomposition.values.length:Or=0,[Or]},returnArrayDependenciesByKey(){return{globalDependencies:{decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arraySize:Or}){let Hr=[];for(let Li=0;Li<Or[0];Li++)Hr.push(Me.decomposition.values[Li]);return{setValue:{eigenvalues:Hr}}}},ae.eigenvectors={description:"The eigenvectors of the matrix, as a 2D array (one column per eigenvalue).",isArray:!0,public:!0,numDimensions:2,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing(),returnWrappingComponents(Me){return Me==="eigenvectorX"?[]:[["vector",{componentType:"mathList",isAttributeNamed:"xs"}]]}},getArrayKeysFromVarName({arrayEntryPrefix:Me,varEnding:Or,arraySize:Hr}){if(Me==="eigenvectorX"){let Li=Or.split("_").map(ts=>Number(ts)-1);return Li.length===2&&Li.every((ts,rs)=>Number.isInteger(ts)&&ts>=0)?Hr?Li.every((ts,rs)=>ts<Hr[rs])?[String(Li)]:[]:[String(Li)]:[]}else{let Li=Number(Or)-1;return Number.isInteger(Li)&&Li>=0?Hr?Li<Hr[0]?Array.from(Array(Hr[1]),(ts,rs)=>Li+","+rs):[]:[Li+",0"]:[]}},arrayVarNameFromPropIndex(Me,Or){if(Or==="eigenvectors")return Me.length===1?"eigenvector"+Me[0]:`eigenvectorX${Me[0]}_${Me[1]}`;if(Or.slice(0,11)==="eigenvector"){let Hr=Number(Or.slice(11));if(Number.isInteger(Hr)&&Hr>0)return`eigenvectorX${Hr}_${Me[0]}`}return null},indexAliases:[[],["x","y","z"]],entryPrefixes:["eigenvectorX","eigenvector"],returnEntryDimensions:Me=>Me==="eigenvector"?1:0,returnArraySizeDependencies:()=>({decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}),returnArraySize({dependencyValues:Me}){let Or,Hr;return Me.decomposition?(Or=Me.decomposition.eigenvectors.length,Hr=Me.decomposition.eigenvectors[0].vector.length):(Or=0,Hr=0),[Or,Hr]},returnArrayDependenciesByKey(){return{globalDependencies:{decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arraySize:Or}){let Hr={};for(let Li=0;Li<Or[0];Li++){let ts=[],rs=0;for(let ns=0;ns<Or[1];ns++){let is=Me.decomposition.eigenvectors[Li].vector[ns];ts.push(is),rs+=square(abs(is))}rs=Math.sqrt(rs),ts=ts.map(ns=>divide(ns,rs));for(let ns=0;ns<Or[1];ns++)Hr[`${Li},${ns}`]=ts[ns]}return{setValue:{eigenvectors:Hr}}}},ae}}class Latex extends Text{static componentType="latex";static componentDocs={summary:"A snippet of LaTeX that can be rendered as math"};static rendererType="text";static createAttributesObject(){let ae=super.createAttributesObject();return ae.isLatex.defaultValue=!0,ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae[0].componentTypes.push("math","m","md"),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.value.returnDependencies=()=>({mathTextLikeChildren:{dependencyType:"child",childGroups:["textLike"],variableNames:["text","latex"],variablesOptional:!0}}),ae.value.definition=function({dependencyValues:Me}){if(Me.mathTextLikeChildren.length===0)return{useEssentialOrDefaultValue:{value:!0}};let Or=[];for(let Li of Me.mathTextLikeChildren)if(typeof Li=="string"){let ts=Li.trim();ts&&Or.push(ts)}else if(Li.stateValues.latex!==void 0){let ts=Li.stateValues.latex.trim();ts&&Or.push(ts)}else{let ts=Li.stateValues.text.trim();ts&&Or.push(ts)}return{setValue:{value:Or.join(" ")}}},ae.value.inverseDefinition=function({desiredStateVariableValues:Me,dependencyValues:Or}){let Hr=Or.mathTextLikeChildren.length;return Hr>1?{success:!1}:Hr===1?{success:!0,instructions:[{setDependency:"textLikeChildren",desiredValue:Me.value,childIndex:0,variableIndex:Or.textLikeChildren[0].stateValues?.latex===void 0?0:1}]}:{success:!0,instructions:[{setEssentialValue:"value",value:Me.value===null?"":String(Me.value)}]}},ae.latex={isAlias:!0,targetVariableName:"value",description:"The LaTeX content as a string."},ae}}class BlockQuote extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="blockQuote";static rendererType="blockQuote";static renderChildren=!0;static canDisplayChildErrors=!0;static includeBlankStringChildren=!0;static componentDocs={summary:"A block-level quotation"};static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnPassThroughListItemChildStateVariableDefinitions()),ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}class Description extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="description";static componentDocs={summary:"Extra information about an enclosing component, shown to all users in a popup or disclosure"};static rendererType="containerBlock";static renderChildren=!0;static canDisplayChildErrors=!0;static includeBlankStringChildren=!0;static inSchemaOnlyInheritAs=[];static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnPassThroughListItemChildStateVariableDefinitions()),ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}const{mod:mod$1}=Context.math;function findAttractedSegmentPointsSub({point1:Br,point2:ae,scales:Me,threshold2:Or,numericalNearestPointFunction:Hr,numericalNearestPointAsLineFunction:Li,verifyNotOneSided:ts=!0}){let rs=1e-6,ns=rs**2,is=Li(Br,Me);if(!is)return{success:!1};let as=is.reduce((ss,ls,us)=>ss+Math.pow(ls-Br[us],2),0);if(as>=Or)return{success:!1};let os=Li(ae,Me);if(!os)return{success:!1};if(as=os.reduce((ss,ls,us)=>ss+Math.pow(ls-ae[us],2),0),as>=Or)return{success:!1};if(ts){let ss=Hr(Br,Me),ls=ss&&ss.every((ds,ps)=>Math.abs(ds-is[ps])<rs),us=Hr(ae,Me),cs=us&&us.every((ds,ps)=>Math.abs(ds-os[ps])<rs);if(!(ls||cs)&&(as=ss.reduce((ds,ps,ms)=>ds+Math.pow(ps-us[ms],2),0),as<ns))return{success:!1}}return{success:!0,nearestPoint1:is,nearestPoint2:os}}function findAttractedSegmentPoints({point1:Br,point2:ae,allowRotation:Me,scales:Or,threshold2:Hr,numericalNearestPointFunction:Li,numericalNearestPointAsLineFunction:ts}){let rs=findAttractedSegmentPointsSub({point1:Br,point2:ae,scales:Or,threshold2:Hr,numericalNearestPointFunction:Li,numericalNearestPointAsLineFunction:ts,verifyNotOneSided:!0});if(!rs.success)return{success:!1};let ns=1e-6,is=ns**2,{nearestPoint1:as,nearestPoint2:os}=rs;if(!Me){let bs=[ae[0]-Br[0],ae[1]-Br[1]],vs=[os[0]-as[0],os[1]-as[1]],Cs=Math.atan2(vs[1],vs[0])-Math.atan2(bs[1],bs[0]);if(Cs=mod$1(Cs+Math.PI,2*Math.PI)-Math.PI,Math.abs(Cs)>ns)return{success:!1}}let ss=Br.reduce((bs,vs,Cs)=>bs+Math.pow(vs-ae[Cs],2),0),ls=as.reduce((bs,vs,Cs)=>bs+Math.pow(vs-os[Cs],2),0);if(Math.abs(ss-ls)<is){let bs=as.reduce((vs,Cs,Ts)=>vs+Math.pow(Cs-Br[Ts],2),0)+os.reduce((vs,Cs,Ts)=>vs+Math.pow(Cs-ae[Ts],2),0);return bs<Hr?{success:!0,distance2:bs,segment:[as,os]}:{success:!1}}if(ls>ss)return{success:!1};let us=Math.sqrt(ss/ls),cs=Math.sqrt(Br.reduce((bs,vs,Cs)=>bs+Math.pow(vs-as[Cs],2),0)),ds=Math.sqrt(ae.reduce((bs,vs,Cs)=>bs+Math.pow(vs-os[Cs],2),0)),ps=cs/(cs+ds),ms=1-ps,fs=(us-1)*ps+1,hs=(us-1)*ms+1,gs=os.map((bs,vs)=>bs+(as[vs]-bs)*fs),ys=as.map((bs,vs)=>bs+(os[vs]-bs)*hs);if(rs=findAttractedSegmentPointsSub({point1:gs,point2:ys,scales:Or,threshold2:is,numericalNearestPointFunction:Li,numericalNearestPointAsLineFunction:ts,verifyNotOneSided:!1}),!rs.success)return{success:!1};let xs=gs.reduce((bs,vs,Cs)=>bs+Math.pow(vs-Br[Cs],2),0)+ys.reduce((bs,vs,Cs)=>bs+Math.pow(vs-ae[Cs],2),0);return xs<Hr?{success:!0,distance2:xs,segment:[gs,ys]}:{success:!1}}function attractSegment({segment:Br,allowRotation:ae,scales:Me,threshold2:Or,numericalNearestPointFunctions:Hr,numericalNearestPointAsLineFunctions:Li}){let ts=Br[0],rs=Br[1];if(ts.length!=rs.length)return{};let ns,is=1/0,as=ae?Or*1e3:Or;for(let[os,ss]of Hr.entries()){let ls=Li[os],us=findAttractedSegmentPoints({point1:ts,point2:rs,allowRotation:ae,scales:Me,threshold2:as,numericalNearestPointFunction:ss,numericalNearestPointAsLineFunction:ls});us.success&&us.distance2<is&&(is=us.distance2,ns=us.segment)}return is<Or?{constrained:!0,segment:ns}:is<as?{constrained:!1,distance2:is,segment:ns}:{}}function nearestPointForSegment({point:Br,segment:ae,scales:Me}){let Or=ae[0][0],Hr=ae[0][1],Li=ae[1][0],ts=ae[1][1],rs=Number.isFinite(Or)&&Number.isFinite(Hr)&&Number.isFinite(Li)&&Number.isFinite(ts);if(ae[0].length!==2||!rs||Li===Or&&ts===Hr)return null;let ns=Me[0],is=Me[1],as=(Li-Or)/ns,os=(ts-Hr)/is,ss=as*as+os*os,ls=((Br[0]-Or)/ns*as+(Br[1]-Hr)/is*os)/ss;return ls<=0?[Or,Hr]:ls>=1?[Li,ts]:[Or+ls*as*ns,Hr+ls*os*is]}function nearestPointForSegmentAsLine({point:Br,segment:ae,scales:Me}){let Or=ae[0][0],Hr=ae[0][1],Li=ae[1][0],ts=ae[1][1],rs=Number.isFinite(Or)&&Number.isFinite(Hr)&&Number.isFinite(Li)&&Number.isFinite(ts);if(ae[0].length!==2||!rs||Li===Or&&ts===Hr)return null;let ns=Me[0],is=Me[1],as=(Li-Or)/ns,os=(ts-Hr)/is,ss=as*as+os*os,ls=((Br[0]-Or)/ns*as+(Br[1]-Hr)/is*os)/ss;return[Or+ls*as*ns,Hr+ls*os*is]}const{mod:mod$6}=Context.math;class StickyGroup extends GraphicalComponent{static componentType="stickyGroup";constructor(ae){super(ae),Object.assign(this.actions,{addChildren:this.addChildren.bind(this),deleteChildren:this.deleteChildren.bind(this)})}static componentDocs={summary:"Constrains group members to attract to each other when nearby"};static rendererType="containerInline";static renderChildren=!0;static createAttributesObject(){let ae=super.createAttributesObject();return ae.relativeToGraphScales={description:"Whether the snapping threshold is interpreted relative to graph scales.",createComponentOfType:"boolean",createStateVariable:"relativeToGraphScales",defaultValue:!1,public:!0},ae.threshold={createComponentOfType:"number",description:"Distance threshold within which group members snap together."},ae.angleThreshold={description:"Angular distance within which group members snap together.",createComponentOfType:"number",createStateVariable:"angleThreshold",defaultValue:Math.PI*.03,public:!0},ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae.push({group:"graphical",componentTypes:["_graphical"]}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnConstraintGraphInfoDefinitions();return Object.assign(ae,Me),ae.numObjects={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"]}}),definition({dependencyValues:Or}){return{setValue:{numObjects:Or.graphicalChildren.length}}}},ae.numObjects={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"]}}),definition({dependencyValues:Or}){return{setValue:{numObjects:Or.graphicalChildren.length}}}},ae.pointsByObject={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"],variableNames:["numericalVertices","numericalXs","numericalEndpoints"],variablesOptional:!0}}),definition({dependencyValues:Or}){let Hr=[];for(let Li of Or.graphicalChildren)Li.stateValues.numericalVertices?Hr.push(Li.stateValues.numericalVertices):Li.stateValues.numericalXs?Hr.push([Li.stateValues.numericalXs]):Li.stateValues.numericalEndpoints?Hr.push(Li.stateValues.numericalEndpoints):Hr.push([]);return{setValue:{pointsByObject:Hr}}}},ae.getPointsForObject={returnDependencies:()=>({pointsByObject:{dependencyType:"stateVariable",variableName:"pointsByObject"}}),definition({dependencyValues:Or}){return{setValue:{getPointsForObject:function(Li){return Or.pointsByObject.filter((ts,rs)=>rs!==Li).reduce((ts,rs)=>(ts.push(...rs),ts),[])}}}}},ae.segmentsByObject={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"],variableNames:["numericalVertices","closed","numericalEndpoints"],variablesOptional:!0}}),definition({dependencyValues:Or}){let Hr=[];for(let Li of Or.graphicalChildren)if(Li.stateValues.numericalVertices){let ts=Li.stateValues.numericalVertices,rs=ts.length,ns=[];for(let is=1;is<rs;is++)ns.push([ts[is-1],ts[is]]);Li.stateValues.closed&&ns.push([ts[rs-1],ts[0]]),Hr.push(ns)}else if(Li.stateValues.numericalEndpoints){let ts=Li.stateValues.numericalEndpoints,rs=ts.length,ns=[];for(let is=1;is<rs;is++)ns.push([ts[is-1],ts[is]]);Hr.push(ns)}else Hr.push([]);return{setValue:{segmentsByObject:Hr}}}},ae.getSegmentsForObject={returnDependencies:()=>({segmentsByObject:{dependencyType:"stateVariable",variableName:"segmentsByObject"}}),definition({dependencyValues:Or}){return{setValue:{getSegmentsForObject:function(Li){return Or.segmentsByObject.filter((ts,rs)=>rs!==Li).reduce((ts,rs)=>(ts.push(...rs),ts),[])}}}}},ae.threshold={description:"Distance within which group members attract each other.",public:!0,shadowingInstructions:{createComponentOfType:"number"},hasEssential:!0,returnDependencies:()=>({thresholdAttr:{dependencyType:"attributeComponent",attributeName:"threshold",variableNames:["value"]},graphXmin:{dependencyType:"stateVariable",variableName:"graphXmin"},relativeToGraphScales:{dependencyType:"stateVariable",variableName:"relativeToGraphScales"}}),definition({dependencyValues:Or}){return Or.thresholdAttr?{setValue:{threshold:Or.thresholdAttr.stateValues.value}}:{useEssentialOrDefaultValue:{threshold:{get defaultValue(){return Or.relativeToGraphScales&&Or.graphXmin!==null?.02:.5}}}}},inverseDefinition({desiredStateVariableValues:Or,dependencyValues:Hr}){return Hr.thresholdAttr?{success:!0,instructions:[{setDependency:"thresholdAttr",desiredValue:Or.threshold}]}:{success:!0,instructions:[{setEssentialValue:"threshold",value:Or.threshold}]}}},ae.verticesConstraintFunction={returnDependencies:()=>({getPointsForObject:{dependencyType:"stateVariable",variableName:"getPointsForObject"},getSegmentsForObject:{dependencyType:"stateVariable",variableName:"getSegmentsForObject"},threshold:{dependencyType:"stateVariable",variableName:"threshold"},angleThreshold:{dependencyType:"stateVariable",variableName:"angleThreshold"},relativeToGraphScales:{dependencyType:"stateVariable",variableName:"relativeToGraphScales"},scales:{dependencyType:"stateVariable",variableName:"scales"}}),definition({dependencyValues:Or}){let Hr;Or.relativeToGraphScales?Hr=Or.scales||[1,1,1]:Hr=[1,1,1];let Li=Or.angleThreshold,ts=function({numericalUnconstrainedEdges:os,allowRotation:ss,enforceRigid:ls,shrinkThreshold:us,rotationPoint:cs},{objectInd:ds}){let ps=Or.getSegmentsForObject(ds),ms=[],fs=[],hs=!1,gs={distance2:1/0},ys=Or.threshold;us&&(ys*=.2);let xs=ys*ys;for(let[bs,vs]of os.entries()){let Cs=[],Ts=[];for(let Ns of ps)Cs.push((_s,Es)=>nearestPointForSegment({point:_s,segment:Ns,scales:Es})),Ts.push((_s,Es)=>nearestPointForSegmentAsLine({point:_s,segment:Ns,scales:Es}));let As=attractSegment({segment:vs,allowRotation:ss,scales:Hr,threshold2:xs,numericalNearestPointFunctions:Cs,numericalNearestPointAsLineFunctions:Ts});As.constrained?(ms.push(As.segment),fs.push(!0),hs=!0):(ms.push(vs),fs.push(!1),!hs&&As.distance2<gs.distance2&&(gs=As,gs.edgeInd=bs))}if(ss&&ls&&!hs&&gs.distance2<1/0){let bs=gs.edgeInd,vs=rotateIfClose({attractedEdgeInd:bs,attractingSegment:gs.segment,angleThreshold:Li,rotationPoint:cs,numericalUnconstrainedEdges:os});vs&&(ms[bs]=vs,fs[bs]=!0,hs=!0)}if(ss&&ls&&!hs){let bs=[0,Math.PI/2],vs=rotateToAttractAngles({numericalUnconstrainedEdges:os,anglesToAttract:bs,angleThreshold:Li,rotationPoint:cs});if(vs){let Cs=vs.rotatedEdgeInd;ms[Cs]=vs.rotatedEdge,fs[Cs]=!0,hs=!0}}return{numericalConstrainedEdges:ms,constraintUsedForEdge:fs}},rs=function({numericalUnconstrainedVertices:os,closed:ss,shrinkThreshold:ls,onlyMoveVertexInd:us=null},{objectInd:cs}){let ds=Or.getPointsForObject(cs),ps=Or.getSegmentsForObject(cs),ms=[],fs=[],hs=Or.threshold;ls&&(hs*=.2);let gs=hs*hs;for(let[vs,Cs]of os.entries()){if(us!==null&&vs!==us){ms.push(Cs),fs.push(!1);continue}let Ts=1/0,As={};for(let Es of ds){if(Cs.length!==Es.length)continue;let $s=Cs.reduce((Is,Ds,Vs)=>Is+Math.pow((Ds-Es[Vs])/Hr[Vs],2),0);$s<Ts&&(As=Es,Ts=$s)}let Ns=!1,_s;if(Ts<gs)Ns=!0,_s=As;else{Ts=1/0,As={};for(let Es of ps){let $s=nearestPointForSegment({point:Cs,segment:Es,scales:Hr});if($s){let Is=Cs.reduce((Ds,Vs,Ps)=>Ds+Math.pow((Vs-$s[Ps])/Hr[Ps],2),0);Is<Ts&&(As=$s,Ts=Is)}}Ts<gs?(Ns=!0,_s=As):_s=Cs}ms.push(_s),fs.push(Ns)}let ys=os.length,xs=ss?ys:ys-1,bs=[];for(let vs=0;vs<xs;vs++){let Cs=(vs+1)%ys;if(!(us!==null&&!(us===vs||us===Cs))&&!(fs[vs]||fs[Cs])){let Ts=os[vs],As=os[Cs],Ns,_s=1/0;for(let Es of ds){let $s=nearestPointForSegment({point:Es,segment:[Ts,As],scales:Hr});if($s){let Is=$s.reduce((Ds,Vs,Ps)=>Ds+Math.pow(Vs-Es[Ps],2),0);if(Is<_s)if(us===null){let Ds=Ts.map((Ps,Gs)=>Ps+Es[Gs]-$s[Gs]),Vs=As.map((Ps,Gs)=>Ps+Es[Gs]-$s[Gs]);Ns=[Ds,Vs],_s=Is}else{let Ds;us===vs?Ds=As:Ds=Ts;let Vs=[Es[0]-Ds[0],Es[1]-Ds[1]],Ps=Math.sqrt(Math.pow(Vs[0],2)+Math.pow(Vs[1],2)),Os=Math.sqrt(Math.pow(Ts[0]-As[0],2)+Math.pow(Ts[1]-As[1],2))/Ps;if(Os<1)continue;let ws=Ds.map((Rs,zs)=>Rs+Vs[zs]*Os),Ws;us===vs?(Ws=[ws,As],Is=Math.pow(Ts[0]-ws[0],2)+Math.pow(Ts[1]-ws[1],2)):(Ws=[Ts,ws],Is=Math.pow(As[0]-ws[0],2)+Math.pow(As[1]-ws[1],2)),Is<_s&&(_s=Is,Ns=Ws)}}}_s<gs&&bs.push({vertexInd1:vs,vertexInd2:Cs,distance2:_s,movedSegment:Ns})}}bs.sort((vs,Cs)=>vs.distance2-Cs.distance2);for(let{vertexInd1:vs,vertexInd2:Cs,movedSegment:Ts}of bs)fs[vs]||fs[Cs]||(fs[vs]=!0,fs[Cs]=!0,ms[vs]=Ts[0],ms[Cs]=Ts[1]);return{numericalConstrainedVertices:ms,constraintUsedForVertex:fs}},ns=returnVertexConstraintFunctionFromEdges(ts),is=returnVertexConstraintFunction(rs);return{setValue:{verticesConstraintFunction:function({unconstrainedVertices:os,closed:ss,enforceRigid:ls,allowRotation:us,rotationPoint:cs,shrinkThreshold:ds,vertexIndMoved:ps},{objectInd:ms}){let fs=ns({unconstrainedVertices:os,closed:ss,enforceRigid:ls,allowRotation:us,rotationPoint:cs,shrinkThreshold:ds,vertexIndMoved:ps},{objectInd:ms});return fs=is({unconstrainedVertices:fs,closed:ss,enforceRigid:ls,shrinkThreshold:ds,vertexIndMoved:ps},{objectInd:ms}),fs}}}}},ae.pointConstraintFunction={returnDependencies:()=>({getPointsForObject:{dependencyType:"stateVariable",variableName:"getPointsForObject"},getSegmentsForObject:{dependencyType:"stateVariable",variableName:"getSegmentsForObject"},threshold:{dependencyType:"stateVariable",variableName:"threshold"},relativeToGraphScales:{dependencyType:"stateVariable",variableName:"relativeToGraphScales"},scales:{dependencyType:"stateVariable",variableName:"scales"}}),definition({dependencyValues:Or}){let Hr;return Or.relativeToGraphScales?Hr=Or.scales||[1,1,1]:Hr=[1,1,1],{setValue:{pointConstraintFunction:function(ts,rs){let ns=ts.map(ls=>findFiniteNumericalValue(ls)),is=Or.getPointsForObject(rs),as=Or.getSegmentsForObject(rs),os=1/0,ss={};for(let ls of is){if(ns.length!==ls.length)continue;let us=ns.reduce((cs,ds,ps)=>cs+Math.pow((ds-ls[ps])/Hr[ps],2),0);us<os&&(ss=ls,os=us)}if(os<Or.threshold*Or.threshold)return ss.map(ls=>Context.fromAst(ls));os=1/0,ss={};for(let ls of as){let us=nearestPointForSegment({point:ns,segment:ls,scales:Hr});if(us){let cs=ns.reduce((ds,ps,ms)=>ds+Math.pow((ps-us[ms])/Hr[ms],2),0);cs<os&&(ss=us,os=cs)}}return os<Or.threshold*Or.threshold?ss.map(ls=>Context.fromAst(ls)):ts}}}}},ae}async addChildren(ae){return await addChildrenToDynamicChild(this,ae)}async deleteChildren(ae){return await deleteChildrenFromDynamicChild(this,ae)}}function rotateToAttractAngles({numericalUnconstrainedEdges:Br,anglesToAttract:ae,angleThreshold:Me,rotationPoint:Or}){let Hr=1/0,Li;for(let[os,ss]of Br.entries()){let ls=Math.atan((ss[1][1]-ss[0][1])/(ss[1][0]-ss[0][0]));for(let us of ae){let cs=mod$6(us-ls+Math.PI/2,Math.PI)-Math.PI/2;Math.abs(cs)<Math.abs(Hr)&&(Hr=cs,Li=os)}}if(!(Math.abs(Hr)<Me))return null;let[ts,rs]=Or,ns=Math.cos(Hr),is=Math.sin(Hr),as=Br[Li].map(os=>{let ss=os[0]-ts,ls=os[1]-rs;return[ss*ns-ls*is+ts,ss*is+ls*ns+rs]});return{rotatedEdgeInd:Li,rotatedEdge:as}}function rotateIfClose({attractedEdgeInd:Br,attractingSegment:ae,angleThreshold:Me,rotationPoint:Or,numericalUnconstrainedEdges:Hr}){let Li=Math.atan((ae[1][1]-ae[0][1])/(ae[1][0]-ae[0][0])),ts=Hr[Br],rs=Math.atan((ts[1][1]-ts[0][1])/(ts[1][0]-ts[0][0])),ns=mod$6(Li-rs+Math.PI/2,Math.PI)-Math.PI/2;if(!(Math.abs(ns)<Me))return null;let[is,as]=Or,os=Math.cos(ns),ss=Math.sin(ns);return Hr[Br].map(us=>{let cs=us[0]-is,ds=us[1]-as;return[cs*os-ds*ss+is,cs*ss+ds*os+as]})}class BlockScoredComponent extends BlockComponent{static componentType="_blockScoredComponent";static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnStandardAnswerAttributes()),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return renameStateVariable({stateVariableDefinitions:ae,oldName:"disabled",newName:"disabledOriginal"}),Object.assign(ae,returnStandardAnswerStateVariableDefinition()),ae}}function parseIntegerResponse(Br){const ae=Br.trim();if(ae==="")return null;const Me=Number(ae);return Number.isInteger(Me)?Me:null}function isDistractorResponse(Br){return Br.trim().toLowerCase()==="x"}function calculateResponseOffset({numericResponse:Br,effectiveProblemNum:ae,numEffectiveProblems:Me}){return(Br-ae+Me)%Me}function calculatePretzelCredit({problemOrder:Br,currentResponses:ae,distractors:Me,mode:Or}){const Hr=new Set(Me),Li=Br.length,ts=Li-Hr.size;if(ts===0)return ae.every(isDistractorResponse)?1:0;const rs=Array(Li).fill(null);let ns=0;for(let ls=0;ls<Li;ls++)Hr.has(ls)||(rs[ls]=ns,ns++);const is=[],as=Or==="circuit"?ts===1?0:1:null;for(let ls=0;ls<Li;ls++){const us=Br[ls],cs=ae[ls]??"";if(Hr.has(us)){if(!isDistractorResponse(cs))return 0;continue}const ds=parseIntegerResponse(cs);if(ds===null)return 0;const ps=rs[us],ms=calculateResponseOffset({numericResponse:ds,effectiveProblemNum:ps,numEffectiveProblems:ts});if(Or==="circuit"){if(ms!==as)return 0;continue}is.push(ms)}if(Or==="circuit")return 1;const os=is[0];return is.every(ls=>ls===os)?1:0}class Pretzel extends BlockScoredComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this),submitAnswer:this.submitAnswer.bind(this)})}static componentType="pretzel";static componentDocs={summary:"A response-matching component where students enter a sequence to match statements and answers"};static renderChildren=!0;static additionalSchemaChildren=["problem"];static additionalSchemaChildrenDoNotInherit=!0;static createAttributesObject(){const ae=super.createAttributesObject();return ae.maxNumColumns={description:"Maximum number of columns when arranging child problems.",createComponentOfType:"integer",createStateVariable:"maxNumColumns",defaultValue:2,public:!0,forRenderer:!0,clamp:[1,4]},ae.mode={description:"Arrangement mode for the child problems.",createPrimitiveOfType:"string",createStateVariable:"mode",defaultValue:"pretzel",public:!0,forRenderer:!0,toLowerCase:!0,validValues:[{value:"pretzel",description:"Interleaved arrangement where each problem's answer feeds the next and one can start with any problem."},{value:"circuit",description:"A variant of the pretzel where one must start with the first problem."}]},ae}static returnChildGroups(){return[{group:"problems",componentTypes:["statement"],excludeFromSchema:!0},{group:"textInputs",componentTypes:["textInput"],excludeFromSchema:!0},{group:"givenAnswers",componentTypes:["span"],excludeFromSchema:!0}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.textInputs={returnDependencies:()=>({textInputs:{dependencyType:"child",childGroups:["textInputs"]}}),definition:function({dependencyValues:Me}){return{setValue:{textInputs:Me.textInputs}}}},ae.problemOrder={stateVariablesDeterminingDependencies:["textInputs"],additionalStateVariablesDefined:["distractors"],returnDependencies({stateValues:Me}){return Me.textInputs.length>0?{problemOrder:{dependencyType:"sourceCompositeStateVariable",replacementIdx:Me.textInputs[0].componentIdx,variableName:"problemOrder"},distractors:{dependencyType:"sourceCompositeStateVariable",replacementIdx:Me.textInputs[0].componentIdx,variableName:"distractors"}}:{}},definition:function({dependencyValues:Me}){return{setValue:{problemOrder:Me.problemOrder??[],distractors:Me.distractors??[]}}}},ae.numProblems={description:"The number of child problems.",public:!0,forRenderer:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({problemChildren:{dependencyType:"child",childGroups:["problems"]}}),definition({dependencyValues:Me}){return{setValue:{numProblems:Me.problemChildren.length}}}},ae.currentResponses={description:"The current responses across all child problems.",public:!0,shadowingInstructions:{createComponentOfType:"text"},isArray:!0,entryPrefixes:["currentResponse"],returnArraySizeDependencies:()=>({numProblems:{dependencyType:"stateVariable",variableName:"numProblems"}}),returnArraySize({dependencyValues:Me}){return[Me.numProblems]},returnArrayDependenciesByKey({arrayKeys:Me}){const Or={};for(const Hr of Me)Or[Hr]={textInput:{dependencyType:"child",childGroups:["textInputs"],childIndices:[Hr],variableNames:["value"]}};return{dependenciesByKey:Or}},arrayDefinitionByKey({dependencyValuesByKey:Me}){const Or={};for(const Hr in Me)Or[Hr]=Me[Hr].textInput[0].stateValues.value;return{setValue:{currentResponses:Or}}}},ae.creditAchievedIfSubmit={returnDependencies:()=>({problemOrder:{dependencyType:"stateVariable",variableName:"problemOrder"},currentResponses:{dependencyType:"stateVariable",variableName:"currentResponses"},distractors:{dependencyType:"stateVariable",variableName:"distractors"},mode:{dependencyType:"stateVariable",variableName:"mode"}}),definition({dependencyValues:Me}){const Or=Me.problemOrder.map(Hr=>Hr-1);return{setValue:{creditAchievedIfSubmit:calculatePretzelCredit({problemOrder:Or,currentResponses:Me.currentResponses,distractors:Me.distractors,mode:Me.mode})}}}},ae.numSubmittedResponses={description:"The number of responses submitted.",public:!0,shadowingInstructions:{createComponentOfType:"number"},hasEssential:!0,defaultValue:0,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{numSubmittedResponses:!0}}),inverseDefinition({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setEssentialValue:"numSubmittedResponses",value:Me.numSubmittedResponses}]}}},ae.submittedResponses={description:"The most recently submitted responses.",public:!0,shadowingInstructions:{createComponentOfType:"text"},isArray:!0,allowExtraArrayKeysInInverse:!0,entryPrefixes:["submittedResponse"],defaultValueByArrayKey:()=>"_",hasEssential:!0,inverseShadowToSetEntireArray:!0,doNotCombineInverseArrayInstructions:!0,returnArraySizeDependencies:()=>({numSubmittedResponses:{dependencyType:"stateVariable",variableName:"numSubmittedResponses"}}),returnArraySize({dependencyValues:Me}){return[Me.numSubmittedResponses]},returnArrayDependenciesByKey(){return{globalDependencies:{numSubmittedResponses:{dependencyType:"stateVariable",variableName:"numSubmittedResponses"}}}},arrayDefinitionByKey({globalDependencyValues:Me}){let Or=[];Me.submittedResponsesComponentType&&Or.push(...Me.submittedResponsesComponentType.slice(0,Me.numSubmittedResponses));let Hr={};for(let Li=0;Li<Me.numSubmittedResponses;Li++)Hr[Li]=!0;return{useEssentialOrDefaultValue:{submittedResponses:Hr}}},inverseArrayDefinitionByKey:function({desiredStateVariableValues:Me,initialChange:Or}){return Or?{success:!0,instructions:[{setDependency:"numSubmittedResponses",desiredValue:Me.submittedResponses.length},{setEssentialValue:"submittedResponses",value:[...Me.submittedResponses]}]}:{success:!1}}},ae.showCheckWork={forRenderer:!0,returnDependencies:()=>({suppressCheckWork:{dependencyType:"stateVariable",variableName:"suppressCheckWork"}}),definition({dependencyValues:Me}){return{setValue:{showCheckWork:!Me.suppressCheckWork}}}},ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}async submitAnswer({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){if(await this.stateValues.numAttemptsLeft<1||await this.stateValues.disabled)return;const ts=await this.stateValues.handGraded?0:await this.stateValues.creditAchievedIfSubmit;let rs=[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"creditAchieved",value:ts},{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"responseHasBeenSubmitted",value:!0}],ns=await this.stateValues.currentResponses;rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"submittedResponses",value:ns}),rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"justSubmitted",value:!0}),rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"creditAchievedDependenciesAtSubmit",value:await this.stateValues.creditAchievedDependencies}),rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"numSubmissions",value:await this.stateValues.numSubmissions+1}),ts<1&&rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"numIncorrectSubmissions",value:await this.stateValues.numIncorrectSubmissions+1});const is=[];for(const as of ns)if(as.toString)try{is.push(as.toString())}catch{is.push("_")}else is.push(as);return rs.push({updateType:"recordItemSubmission",componentNumber:await this.stateValues.inComponentNumber,submittedComponent:this.componentIdx,response:ns,responseText:is,creditAchieved:ts}),await this.coreFunctions.performUpdate({updateInstructions:rs,actionId:ae,sourceInformation:Me,skipRendererUpdate:!0,event:{verb:"submitted",object:{componentIdx:this.componentIdx,componentType:this.componentType,answerNumber:this.answerNumber,rootName:this.rootName},result:{response:ns,responseText:is,componentTypes:Array(ns.length).fill("text"),creditAchieved:ts}}}),await this.coreFunctions.triggerChainedActions({componentIdx:this.componentIdx,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or})}}function getCorrespondingAnswerIdx({problemIdx:Br,numProblems:ae,distractorSet:Me}){if(Me.has(Br))return Br;let Or=(Br-1+ae)%ae,Hr=0;for(;Me.has(Or)&&Hr<ae;)Or=(Or-1+ae)%ae,Hr++;return Or}function normalizePretzelMode(Br){return Br?.toLowerCase()==="circuit"?"circuit":"pretzel"}function getProblemIndicesToPermute({numProblems:Br,mode:ae}){const Me=ae==="circuit"?2:1;return[...Array(Math.max(Br-Me+1,0)).keys()].map(Or=>Or+Me)}function buildProblemOrderFromPermutedIndices({permutedIndices:Br,numProblems:ae,mode:Me}){return Me==="circuit"?ae===0?[]:[1,...Br]:Br}function determineNumberOfPermutations({numProblems:Br,mode:ae}){const Me=getProblemIndicesToPermute({numProblems:Br,mode:ae}).length;let Or=1;for(let Hr=2;Hr<=Me;Hr++)Or*=Hr;return Or}function shuffleProblemOrder({numProblems:Br,variantRng:ae,mode:Me}){const Or=getProblemIndicesToPermute({numProblems:Br,mode:Me});for(let Hr=Or.length-1;Hr>0;Hr--){const Li=ae(),ts=Math.floor(Li*(Hr+1));[Or[Hr],Or[ts]]=[Or[ts],Or[Hr]]}return buildProblemOrderFromPermutedIndices({permutedIndices:Or,numProblems:Br,mode:Me})}class PretzelArranger extends CompositeComponent{static componentType="_pretzelArranger";static componentDocs={summary:"Internal arranger that lays out subset visualizations within <pretzel>."};static createsVariants=!0;static serializeReplacementsForChildren=!0;static replacementsAlreadyInResolver=!0;static useSerializedChildrenComponentIndices=!0;static createAttributesObject(){const ae=super.createAttributesObject();return ae.mode={createPrimitiveOfType:"string",createStateVariable:"mode",defaultValue:"pretzel",toLowerCase:!0,validValues:[{value:"pretzel",description:"Interleaved arrangement where each problem's answer feeds the next and one can start with any problem."},{value:"circuit",description:"A variant of the pretzel where one must start with the first problem."}]},ae}static keepChildrenSerialized({serializedComponent:ae}){return ae.children===void 0?[]:Object.keys(ae.children)}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.serializedProblemChildren={returnDependencies:()=>({serializedChildren:{dependencyType:"serializedChildren",doNotProxy:!0}}),definition:function({dependencyValues:Me}){return{setValue:{serializedProblemChildren:Me.serializedChildren.filter(Or=>Or.componentType==="problem")}}}},ae.numProblems={description:"The number of problems arranged.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({serializedProblemChildren:{dependencyType:"stateVariable",variableName:"serializedProblemChildren"}}),definition({dependencyValues:Me}){return{setValue:{numProblems:Me.serializedProblemChildren.length}}}},ae.problemOrder={forRenderer:!0,shadowVariable:!0,returnDependencies:({sharedParameters:Me})=>({mode:{dependencyType:"stateVariable",variableName:"mode"},numProblems:{dependencyType:"stateVariable",variableName:"numProblems"},variantSeed:{dependencyType:"value",value:Me.variantSeed},rngClass:{dependencyType:"value",value:Me.rngClass,doNotProxy:!0},variants:{dependencyType:"variants"}}),definition:function({dependencyValues:Me}){let Or=Me.numProblems,Hr=[],Li;const ts=Me.mode;let rs=Me.variants?.desiredVariant?.indices;if(rs!==void 0)if(rs.length!==Or)Hr.push(codedDiagnostic({type:"info",code:"doenet-i0005"}));else{if(rs=rs.map(Number),!rs.every(Number.isInteger))throw Error("All indices specified for pretzel must be integers");if(!rs.every(is=>is>=1&&is<=Or))Hr.push(codedDiagnostic({type:"info",code:"doenet-i0007",args:{component:"pretzel"}}));else if(new Set(rs).size!==Or)Hr.push(codedDiagnostic({type:"info",code:"doenet-i0008"}));else if(ts==="circuit"&&Or>0&&rs[0]!==1)Hr.push(codedDiagnostic({type:"info",code:"doenet-i0009"}));else return{setValue:{problemOrder:rs}}}let ns=Me.rngClass(Me.variantSeed+"co");return Li=shuffleProblemOrder({numProblems:Or,variantRng:ns,mode:ts}),{setValue:{problemOrder:Li},sendDiagnostics:Hr}}},ae.generatedVariantInfo={additionalStateVariablesDefined:["isVariantComponent"],returnDependencies:({componentInfoObjects:Me,sharedParameters:Or})=>({variantSeed:{dependencyType:"value",value:Or.variantSeed},problemOrder:{dependencyType:"stateVariable",variableName:"problemOrder"},variantDescendants:{dependencyType:"descendant",componentTypes:Object.keys(Me.componentTypesCreatingVariants),variableNames:["isVariantComponent","generatedVariantInfo"],useReplacementsForComposites:!0,recurseToMatchedChildren:!1,variablesOptional:!0,includeNonActiveChildren:!0,ignoreReplacementsOfEncounteredComposites:!0}}),definition({dependencyValues:Me,componentIdx:Or}){let Hr={seed:Me.variantSeed,meta:{createdBy:Or},indices:Me.problemOrder},Li=Hr.subvariants=[];for(let ts of Me.variantDescendants)ts.stateValues.isVariantComponent?Li.push(ts.stateValues.generatedVariantInfo):ts.stateValues.generatedVariantInfo&&Li.push(...ts.stateValues.generatedVariantInfo.subvariants);return{setValue:{generatedVariantInfo:Hr,isVariantComponent:!0}}}},ae.statements={additionalStateVariablesDefined:["givenAnswers","validProblems","distractors"],returnDependencies:()=>({serializedProblemChildren:{dependencyType:"stateVariable",variableName:"serializedProblemChildren"},mode:{dependencyType:"stateVariable",variableName:"mode"}}),definition({dependencyValues:Me}){const Or=[],Hr=[],Li=[];let ts=!0;const rs=[];for(const[ns,is]of Me.serializedProblemChildren.entries()){let as=null,os=null;for(const ss of is.children)if(ss.componentType==="statement")as=ss;else if(ss.componentType==="givenAnswer"){const ls=ss.children.find(us=>us.componentType==="_postponeRenderContainer");ls&&(os={...ls,componentType:"span",attributes:{...ls.attributes},children:(ls.children??[]).filter(us=>us.componentType!=="label"&&us.componentType!=="shortDescription")},os.componentIdx=ss.componentIdx,ss.attributes.name&&(os.attributes.name=ss.attributes.name))}(as===null||os===null)&&(ts=!1),Or.push(as),Hr.push(os),is.attributes.isDistractor?.primitive.value&&Li.push(ns)}return ts||rs.push(codedDiagnostic({type:"warning",code:"doenet-w0076"})),Me.mode==="circuit"&&Li.includes(0)&&rs.push(codedDiagnostic({type:"error",code:"doenet-e0001"})),{setValue:{statements:Or,givenAnswers:Hr,validProblems:ts,distractors:Li},sendDiagnostics:rs}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({problemOrder:{dependencyType:"stateVariable",variableName:"problemOrder"},statements:{dependencyType:"stateVariable",variableName:"statements"},givenAnswers:{dependencyType:"stateVariable",variableName:"givenAnswers"}}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae}static async createSerializedReplacements({component:ae,nComponents:Me,workspace:Or}){Or.replacementsCreated===void 0&&(Or.replacementsCreated=0);const Hr={prefix:`${ae.stateId}|`,num:Or.replacementsCreated},Li=[];let ts=[];const rs=await ae.stateValues.numProblems,ns=await ae.stateValues.problemOrder,is=await ae.stateValues.statements,as=await ae.stateValues.givenAnswers,os=await ae.stateValues.distractors,ss=await ae.stateValues.mode,ls=new Set(os);for(let us=0;us<rs;us++){const cs=ns[us]-1,ds=is[cs],ps=getCorrespondingAnswerIdx({problemIdx:cs,numProblems:rs,distractorSet:ls}),ms=as[ps];ms===null?ts.push({type:"serialized",componentType:"span",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[]}):ts.push(ms),ts.push({type:"serialized",componentType:"textInput",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{width:{type:"component",name:"width",component:{type:"serialized",componentType:"componentSize",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,state:{componentSize:{size:15,isAbsolute:!0}},children:[],attributes:{},doenetAttributes:{}}}},doenetAttributes:{},state:ss==="circuit"&&us===0?{value:"1",disabledPreliminary:!0}:{},children:[{type:"serialized",componentType:"shortDescription",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,state:{},children:[{type:"serialized",componentType:"text",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,state:{value:"Enter number in sequence for this answer or X if it is a distractor"},children:[],attributes:{},doenetAttributes:{}}],attributes:{},doenetAttributes:{}}]}),ds===null?ts.push({type:"serialized",componentType:"statement",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[]}):ts.push(ds)}return Or.replacementsCreated=Hr.num,{replacements:ts,diagnostics:Li,nComponents:Me}}static setUpVariant({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or}){setUpVariantSeedAndRng({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or})}static determineNumberOfUniqueVariants({serializedComponent:ae,componentInfoObjects:Me,infoDiagnostics:Or}){let Hr=0;const Li=normalizePretzelMode(ae.attributes.mode?.primitive?.value);for(let is of ae.children)if(is.componentType==="problem")Hr++;else if(Me.isInheritedComponentType({inheritedComponentType:is.componentType,baseComponentType:"_composite"})&&is.attributes.createComponentOfType?.primitive.value==="problem")if(is.attributes.numProblems?.primitive!==void 0){let as=Number(is.attributes.numProblems?.primitive.value);if(Number.isInteger(as)&&as>=0)Hr+=as;else return{success:!1}}else Hr++;else return{success:!1};let ts=determineNumberOfPermutations({numProblems:Hr,mode:Li}),rs=super.determineNumberOfUniqueVariants({serializedComponent:ae,componentInfoObjects:Me,infoDiagnostics:Or});if(!rs.success)return{success:!1};let ns=rs.numVariants*ts;return ae.variants.numVariants=ns,ae.variants.uniqueVariantData={numVariantsByDescendant:ae.variants.uniqueVariantData.numVariantsByDescendant,numberOfPermutations:ts,numProblems:Hr,mode:Li},{success:!0,numVariants:ns}}static getUniqueVariant({serializedComponent:ae,variantIndex:Me,componentInfoObjects:Or}){let Hr=ae.variants?.numVariants;if(Hr===void 0)return{success:!1};if(!Number.isInteger(Me)||Me<1||Me>Hr)return{success:!1};let Li=ae.variants.uniqueVariantData.numVariantsByDescendant,ts=ae.variants.descendantVariantComponents,rs=ae.variants.uniqueVariantData.numberOfPermutations,ns=ae.variants.uniqueVariantData.numProblems;const is=normalizePretzelMode(ae.variants.uniqueVariantData.mode);let as=[...Li];as.push(rs);let os=enumerateCombinations({numberOfOptionsByIndex:as,maxNumber:Me})[Me-1].map(fs=>fs+1),ss=os.pop(),ls=os;const us=getProblemIndicesToPermute({numProblems:ns,mode:is}),cs=buildProblemOrderFromPermutedIndices({permutedIndices:enumeratePermutations({values:us,maxNumber:ss})[ss-1],numProblems:ns,mode:is});let ds=!1,ps=[];for(let fs=0;fs<Li.length;fs++)if(Li[fs]>1){let hs=ts[fs],ys=Or.allComponentClasses[hs.componentType].getUniqueVariant({serializedComponent:hs,variantIndex:ls[fs],componentInfoObjects:Or});if(!ys.success)return{success:!1};ps.push(ys.desiredVariant),ds=!0}else ps.push({});let ms={indices:cs};return ds&&(ms.subvariants=ps),{success:!0,desiredVariant:ms}}}class Cascade extends SectioningComponent{static componentType="cascade";static componentDocs={summary:"Sectional component that reveals its children step-by-step"};static rendererType="section";static includeBlankStringChildren=!1;static createAttributesObject(){let ae=super.createAttributesObject();return ae.hideFutureSections={createComponentOfType:"boolean",createStateVariable:"hideFutureSections",defaultValue:!1,public:!0,description:"Whether to hide later cascade sections until previous ones are completed."},ae.noAutoTitle.defaultValue=!0,ae.asList.createStateVariable="asListPreliminary",ae.asList.public=!1,ae.revealAll={createComponentOfType:"boolean",createStateVariable:"revealAllPreliminary",defaultValue:!1,description:"Whether all cascade entries should be revealed regardless of progress."},ae.boxAll={createComponentOfType:"boolean",createStateVariable:"boxAll",defaultValue:!1,description:"Whether to draw boxes around all cascade entries regardless of progress."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.isListItem={forRenderer:!0,returnDependencies:()=>({}),definition:()=>({setValue:{isListItem:!1}})},ae.asList={description:"Whether to render this section's children as a list.",public:!0,forRenderer:!0,shadowingInstructions:{createComponentOfType:"boolean"},returnDependencies:()=>({asListPreliminary:{dependencyType:"stateVariable",variableName:"asListPreliminary"},parentAsList:{dependencyType:"parentStateVariable",variableName:"asList"}}),definition({dependencyValues:Me,usedDefault:Or}){let Hr=Me.parentAsList;return Or.asListPreliminary||(Hr=Me.asListPreliminary),{setValue:{asList:!!Hr}}}},ae.childrenAggregateScores={returnDependencies:()=>({}),definition:()=>({setValue:{childrenAggregateScores:!0}})},ae.childCreditAchieved={returnDependencies:()=>({children:{dependencyType:"child",childGroups:["anything"],variableNames:["creditAchievedForProgress"],variablesOptional:!0}}),definition({dependencyValues:Me}){return{setValue:{childCreditAchieved:Me.children.map(Hr=>Hr.stateValues?.creditAchievedForProgress??null)}}}},ae.numCompleted={description:"The number of cascade sections currently completed.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({childCreditAchieved:{dependencyType:"stateVariable",variableName:"childCreditAchieved"}}),definition({dependencyValues:Me}){let Or=0;for(const Hr of Me.childCreditAchieved)if(Hr===1||Hr===null)Or++;else break;return{setValue:{numCompleted:Or}}}},ae.revealAll={returnDependencies:()=>({cascadeAncestor:{dependencyType:"ancestor",componentType:"cascade",variableNames:["revealAll"]},revealAllPreliminary:{dependencyType:"stateVariable",variableName:"revealAllPreliminary"}}),definition({dependencyValues:Me,usedDefault:Or}){let Hr=!1;return Or.revealAllPreliminary?Me.cascadeAncestor?Hr=Me.cascadeAncestor.stateValues.revealAll:Me.revealAllPreliminary:Hr=Me.revealAllPreliminary,{setValue:{revealAll:Hr}}}},ae.childrenToHide={additionalStateVariablesDefined:["childrenToHideChildren","sectionToShowCascadeMessage"],returnDependencies:()=>({hideFutureSections:{dependencyType:"stateVariable",variableName:"hideFutureSections"},numCompleted:{dependencyType:"stateVariable",variableName:"numCompleted"},children:{dependencyType:"child",childGroups:["anything"],variableNames:["hasCascadeMessageToShow"],variablesOptional:!0},childrenWithCascadeMessages:{dependencyType:"child",childGroups:["anything","cascadeMessages"]},revealAll:{dependencyType:"stateVariable",variableName:"revealAll"},hideChildren:{dependencyType:"stateVariable",variableName:"hideChildren"},showCascadeMessage:{dependencyType:"stateVariable",variableName:"showCascadeMessage"}}),definition({dependencyValues:Me,componentInfoObjects:Or}){const Hr=Me.childrenWithCascadeMessages.filter(as=>as.componentType==="cascadeMessage").map(as=>as.componentIdx);if(Me.revealAll)return{setValue:{childrenToHide:Hr,childrenToHideChildren:[],sectionToShowCascadeMessage:null}};const Li=[],ts=[];for(const[as,os]of Me.children.entries())as<=Me.numCompleted?Me.hideChildren&&Li.push(os.componentIdx):!Me.hideChildren&&!Me.hideFutureSections&&Or.isInheritedComponentType({inheritedComponentType:os.componentType,baseComponentType:"_sectioningComponent"})?ts.push(os.componentIdx):Li.push(os.componentIdx);const rs=Me.children[Me.numCompleted+1],ns=rs&&ts.includes(rs.componentIdx)&&rs.stateValues?.hasCascadeMessageToShow?rs.componentIdx:null,is=ns===null&&(!Me.hideChildren||Me.showCascadeMessage)?nextOwnCascadeMessage(Me):null;return Li.push(...Hr.filter(as=>as!==is)),{setValue:{childrenToHide:Li,childrenToHideChildren:ts,sectionToShowCascadeMessage:ns}}}},ae.hasCascadeMessageToShow={returnDependencies:()=>({numCompleted:{dependencyType:"stateVariable",variableName:"numCompleted"},children:{dependencyType:"child",childGroups:["anything"]},childrenWithCascadeMessages:{dependencyType:"child",childGroups:["anything","cascadeMessages"]},revealAll:{dependencyType:"stateVariable",variableName:"revealAll"}}),definition({dependencyValues:Me}){return{setValue:{hasCascadeMessageToShow:nextOwnCascadeMessage(Me)!==null}}}},ae}}function nextOwnCascadeMessage(Br){if(Br.revealAll||Br.numCompleted>Br.children.length-2)return null;const ae=Br.children[Br.numCompleted].componentIdx,Me=Br.childrenWithCascadeMessages.findIndex(Or=>Or.componentIdx===ae);return Br.childrenWithCascadeMessages.slice(Me+1).find(Or=>Or.componentType==="cascadeMessage")?.componentIdx??null}class DynamicChildren extends CompositeComponent{constructor(ae){super(ae),Object.assign(this.actions,{addChildren:this.addChildren.bind(this),deleteChildren:this.deleteChildren.bind(this)})}static componentType="_dynamicChildren";static componentDocs={summary:"Internal container for dynamically-generated children."};static treatAsComponentForRecursiveReplacements=!0;static stateVariableToEvaluateAfterReplacements="readyToExpandWhenResolved";static createAttributesObject(){let ae=super.createAttributesObject();return ae.deferUntilParentRendered={createComponentOfType:"boolean",createStateVariable:"deferUntilParentRendered",defaultValue:!1,description:"Whether to wait until the parent is rendered before creating dynamic children."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.dynamicChildren={hasEssential:!0,defaultValue:[],returnDependencies:()=>({}),definition:function(){return{useEssentialOrDefaultValue:{dynamicChildren:!0}}},inverseDefinition({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setEssentialValue:"dynamicChildren",value:Me.dynamicChildren}]}}},ae.createReplacements={stateVariablesDeterminingDependencies:["deferUntilParentRendered"],returnDependencies:({stateValues:Me})=>{const Or={deferUntilParentRendered:{dependencyType:"stateVariable",variableName:"deferUntilParentRendered"}};return Me.deferUntilParentRendered&&(Or.parentRendered={dependencyType:"parentStateVariable",variableName:"rendered"}),Or},definition({dependencyValues:Me}){return{setValue:{createReplacements:!Me.deferUntilParentRendered||Me.parentRendered!==!1}}},markStale(){return{updateReplacements:!0}}},ae.nGroups={returnDependencies:()=>({dynamicChildren:{dependencyType:"stateVariable",variableName:"dynamicChildren"}}),definition({dependencyValues:Me}){return{setValue:{nGroups:Me.dynamicChildren.length}}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({dynamicChildren:{dependencyType:"stateVariable",variableName:"dynamicChildren"},createReplacements:{dependencyType:"stateVariable",variableName:"createReplacements"}}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}},markStale(){return{updateReplacements:!0}}},ae}async addChildren({serializedComponents:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){if(ae&&ae.length>0){const Li=[...await this.stateValues.dynamicChildren];return Li.push({type:"serialized",componentType:"group",componentIdx:0,attributes:{},doenetAttributes:{},state:{},children:deepClone(ae)}),await this.coreFunctions.performUpdate({updateInstructions:[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"dynamicChildren",value:Li}],actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr})}else return}async deleteChildren({number:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){const Li=await this.stateValues.nGroups;let ts=Math.min(ae,Li);if(ts>0){const rs=(await this.stateValues.dynamicChildren).slice(0,Li-ts);return await this.coreFunctions.performUpdate({updateInstructions:[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"dynamicChildren",value:rs}],actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr})}else return}static async createSerializedReplacements({component:ae,nComponents:Me,workspace:Or}){let Hr=[];Or.replacementsCreated===void 0&&(Or.replacementsCreated=0),Or.replacementsCreatedThroughGroup=[];let Li=[];if(!await ae.stateValues.createReplacements)return Or.nGroups=0,{replacements:Li,diagnostics:Hr,nComponents:Me};const ts=await ae.stateValues.nGroups;for(let rs=0;rs<ts;rs++){let ns=await this.replacementForGroup({component:ae,groupNum:rs,nComponents:Me,workspace:Or}),is=ns.replacements;Me=ns.nComponents,Li.push(...is)}return Or.nGroups=ts,{replacements:Li,diagnostics:Hr,nComponents:Me}}static async replacementForGroup({component:ae,groupNum:Me,nComponents:Or,workspace:Hr}){let Li=[deepClone((await ae.stateValues.dynamicChildren)[Me])];const ts={prefix:`${ae.stateId}|`,num:Hr.replacementsCreated},rs=createNewComponentIndices(Li,Or,ts);return Li=rs.components,Or=rs.nComponents,Hr.replacementsCreated=ts.num,Hr.replacementsCreatedThroughGroup=[...Hr.replacementsCreatedThroughGroup,Hr.replacementsCreated],{replacements:Li,nComponents:Or}}static async calculateReplacementChanges({component:ae,nComponents:Me,workspace:Or}){const Li=await ae.stateValues.createReplacements?await ae.stateValues.nGroups:0;if(Li===Or.nGroups)return{replacementChanges:[],nComponents:Me};if(Li<Or.nGroups){const ns=[{changeType:"delete",changeTopLevelReplacements:!0,firstReplacementInd:Li,numberReplacementsToDelete:Or.nGroups-Li}];return Or.nGroups=Li,Or.replacementsCreated=Or.replacementsCreatedThroughGroup[Li-1]||0,Or.replacementsCreatedThroughGroup=Or.replacementsCreatedThroughGroup.slice(0,Li),{replacementChanges:ns,nComponents:Me}}let ts=[];for(let ns=Or.nGroups;ns<Li;ns++){let is=await this.replacementForGroup({component:ae,groupNum:ns,nComponents:Me,workspace:Or}),as=is.replacements;Me=is.nComponents,ts.push(...as)}let rs={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:Or.nGroups,numberReplacementsToReplace:0,serializedReplacements:ts,replacementsToWithhold:0};return Or.nGroups=Li,{replacementChanges:[rs],nComponents:Me}}}class ShortDescription extends TextOrInline{static componentType="shortDescription";static componentDocs={summary:"A short accessibility description (e.g. for a `<graph>`) read by screen readers"};static rendererType=void 0;static inSchemaOnlyInheritAs=[];static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.inlineChildren={returnDependencies:()=>({inlineChildren:{dependencyType:"child",childGroups:["inlines"],variableNames:["text","hidden"],variablesOptional:!0}}),definition:({dependencyValues:Me})=>({setValue:{inlineChildren:Me.inlineChildren}})},ae.value={description:"The short description text.",public:!0,shadowingInstructions:{createComponentOfType:this.componentType},stateVariablesDeterminingDependencies:["inlineChildren"],returnDependencies:({stateValues:Me})=>{const Or={inlineChildren:{dependencyType:"stateVariable",variableName:"inlineChildren"}};for(const[Hr,Li]of Me.inlineChildren.entries())typeof Li=="object"&&(Or[`adapterSource${Hr}`]={dependencyType:"adapterSource",componentIdx:Li.componentIdx});return Or},definition({dependencyValues:Me,componentInfoObjects:Or}){const Hr=textFromChildren(Me.inlineChildren);let Li;for(let rs=0;rs<Me.inlineChildren.length;rs++){const ns=Me.inlineChildren[rs];if(typeof ns!="object")continue;const is=Me[`adapterSource${rs}`]?.componentType??ns.componentType;if(Or.isInheritedComponentType({inheritedComponentType:is,baseComponentType:"math"})||Or.isInheritedComponentType({inheritedComponentType:is,baseComponentType:"m"})){Li=is;break}}const ts=[];return Li&&ts.push(codedDiagnostic({type:"accessibility",level:2,code:"doenet-a0005",args:{component:Li}})),{setValue:{value:Hr},sendDiagnostics:ts}}},ae}}const unitConversions={"":1,px:1,pixel:1,pixels:1,"%":1,em:100,in:96,inch:96,inches:96,pt:1.333333333333,mm:3.7795296,millimeter:3.7795296,millimeters:3.7795296,cm:37.795296,centimeter:37.795296,centimeters:37.795296};class ComponentSize extends InlineComponent{static componentType="componentSize";static rendererType="text";static excludeFromSchema=!0;static primaryStateVariableForDefinition="componentSize";static stateVariableToBeShadowed="componentSize";static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){let ts=Or[Or.length-1];if(typeof ts=="string"){let rs=/([a-zA-z]+|%)$/,ns=ts.trim(),is=ns.match(rs);if(is){let as=is[1];if(as in unitConversions){let os=ns.slice(0,is.index),ss=Or.slice(0,Or.length-1);return os.length>0&&ss.push(os),{success:!0,newChildren:[{type:"serialized",componentType:"number",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:ss,attributes:{},doenetAttributes:{},state:{}},as],nComponents:Hr}}}}return{success:!0,newChildren:[{componentType:"number",children:Or}]}};return ae.push({childrenRegex:/..+/,replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"strings",componentTypes:["string"]},{group:"numbers",componentTypes:["number"]},{group:"componentSizes",componentTypes:["componentSize"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnSelectedStyleStateVariableDefinition();Object.assign(ae,Me);let Or=returnTextStyleDescriptionDefinitions();return Object.assign(ae,Or),ae.componentSize={description:"The size value with its associated unit (absolute pixels or relative percent).",public:!0,shadowingInstructions:{createComponentOfType:"componentSize"},hasEssential:!0,returnDependencies:()=>({componentSizeChild:{dependencyType:"child",childGroups:["componentSizes"],variableNames:["componentSize"]},numberChild:{dependencyType:"child",childGroups:["numbers"],variableNames:["value"]},stringChild:{dependencyType:"child",childGroups:["strings"],variableNames:["value"]},parentDefaultAbsoluteSize:{dependencyType:"parentStateVariable",variableName:"defaultAbsoluteSize"}}),definition({dependencyValues:Hr}){let Li=Hr.parentDefaultAbsoluteSize===void 0?!1:Hr.parentDefaultAbsoluteSize;if(Hr.stringChild.length===0)return Hr.numberChild.length===0?Hr.componentSizeChild.length===0?{useEssentialOrDefaultValue:{componentSize:{defaultValue:{size:100,isAbsolute:Li}}}}:{setValue:{componentSize:Hr.componentSizeChild[0].stateValues.componentSize}}:{setValue:{componentSize:{size:Hr.numberChild[0].stateValues.value,isAbsolute:!0}}};{let ts,rs;if(Hr.numberChild.length>0)ts=Hr.numberChild[0].stateValues.value,rs=Hr.stringChild[0].trim();else{let os=Hr.stringChild[0].trim().match(/^(-?[\d.]+)\s*(.*)$/);if(os===null)return{setValue:{componentSize:null}};ts=os[1],rs=os[2].trim()}if(ts=Number(ts),!Number.isFinite(ts))return{setValue:{componentSize:null}};let ns=!(rs==="%"||rs==="em"),is=unitConversions[rs];return is===void 0&&(is=1),{setValue:{componentSize:{size:is*ts,isAbsolute:ns}}}}},inverseDefinition({desiredStateVariableValues:Hr,dependencyValues:Li}){if(Li.stringChild.length===0)return Li.numberChild.length===0?Li.componentSizeChild.length===0?{success:!0,instructions:[{setEssentialValue:"componentSize",value:Hr.componentSize}]}:{success:!0,instructions:[{setDependency:"componentSizeChild",desiredValue:Hr.componentSize,childIndex:0,variableIndex:0}]}:Hr.componentSize.isAbsolute?{success:!0,instructions:[{setDependency:"numberChild",desiredValue:Hr.componentSize.size,childIndex:0,variableIndex:0}]}:{success:!1};if(Li.numberChild.length>0){let ts=Li.stringChild[0].trim(),rs=!(ts==="%"||ts==="em");if(Hr.componentSize.isAbsolute!==rs)return{success:!1};let ns=unitConversions[ts];return ns===void 0&&(ns=1),{success:!0,instructions:[{setDependency:"numberChild",desiredValue:Hr.componentSize.size/ns,childIndex:0,variableIndex:0}]}}else{let ts=Hr.componentSize.size;return Hr.componentSize.isAbsolute?ts+="px":ts+="%",{success:!0,instructions:[{setDependency:"stringChild",desiredValue:ts,childIndex:0,variableIndex:0}]}}}},ae.number={description:"The numeric portion of the size.",public:!0,shadowingInstructions:{createComponentOfType:"number"},returnDependencies:()=>({componentSize:{dependencyType:"stateVariable",variableName:"componentSize"}}),definition({dependencyValues:Hr}){let Li=null;return Hr.componentSize&&(Li=Hr.componentSize.size),{setValue:{number:Li}}},inverseDefinition({desiredStateVariableValues:Hr,dependencyValues:Li}){return Li.componentSize?{success:!0,instructions:[{setDependency:"componentSize",desiredValue:{size:Hr.number,isAbsolute:Li.componentSize.isAbsolute}}]}:{success:!1}}},ae.math=mathStateVariableFromNumberStateVariable({numberVariableName:"number",mathVariableName:"math",isPublic:!0}),ae.math.description="The size as a math expression.",ae.isAbsolute={description:"Whether the size uses absolute units (pixels) rather than relative units (percent).",public:!0,shadowingInstructions:{createComponentOfType:"boolean"},returnDependencies:()=>({componentSize:{dependencyType:"stateVariable",variableName:"componentSize"}}),definition({dependencyValues:Hr}){let Li=null;return Hr.componentSize&&(Li=Hr.componentSize.isAbsolute),{setValue:{isAbsolute:Li}}}},ae.text={forRenderer:!0,returnDependencies:()=>({componentSize:{dependencyType:"stateVariable",variableName:"componentSize"}}),definition({dependencyValues:Hr}){let Li="";return Hr.componentSize&&(Li=Hr.componentSize.size,Hr.componentSize.isAbsolute?Li+="px":Li+="%"),{setValue:{text:Li}}}},ae}static adapters=["number","math"]}class ComponentSizeList extends BaseComponent{static componentType="_componentSizeList";static rendererType="asList";static renderChildren=!0;static stateVariableToBeShadowed="componentSizes";static additionalSchemaChildren=["string","number"];static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){let ts=[],rs=[],ns=function(){rs.length>0&&(ts.push({type:"serialized",componentType:"componentSize",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:rs,attributes:{},doenetAttributes:{},state:{}}),rs=[])};for(let is of Or)if(typeof is=="string"){let as=is.split(/\s+/);as[0].length===0&&(ns(),as=as.slice(1));for(let[os,ss]of as.entries())ss.length>0?(rs.push(ss),os<as.length-1&&ns()):ns()}else rs.push(is);return ns(),{success:!0,newChildren:ts,nComponents:Hr}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"componentSizes",componentTypes:["componentSize"]},{group:"componentSizeLists",componentTypes:["_componentSizeList"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.overrideChildHide={returnDependencies:()=>({}),definition:()=>({setValue:{overrideChildHide:!0}})},ae.numComponents={description:"The number of size values in the list.",public:!0,shadowingInstructions:{createComponentOfType:"number"},additionalStateVariablesDefined:["childIndexByArrayKey"],returnDependencies(){return{componentSizeListChildren:{dependencyType:"child",childGroups:["componentSizeLists"],variableNames:["numComponents"]},componentSizeAndComponentSizeListChildren:{dependencyType:"child",childGroups:["componentSizes","componentSizeLists"],skipComponentIndices:!0}}},definition:function({dependencyValues:Me,componentInfoObjects:Or}){let Hr=0,Li=[],ts=0;for(let[rs,ns]of Me.componentSizeAndComponentSizeListChildren.entries())if(Or.isInheritedComponentType({inheritedComponentType:ns.componentType,baseComponentType:"_componentSizeList"})){let is=Me.componentSizeListChildren[ts];ts++;for(let as=0;as<is.stateValues.numComponents;as++)Li[Hr+as]=[rs,as];Hr+=is.stateValues.numComponents}else Li[Hr]=[rs,0],Hr+=1;return{setValue:{numComponents:Hr,childIndexByArrayKey:Li},checkForActualChange:{numComponents:!0}}}},ae.componentSizes={description:"The list of component sizes.",public:!0,shadowingInstructions:{createComponentOfType:"componentSize"},isArray:!0,entryPrefixes:["componentSize"],stateVariablesDeterminingDependencies:["childIndexByArrayKey"],returnArraySizeDependencies:()=>({numComponents:{dependencyType:"stateVariable",variableName:"numComponents"}}),returnArraySize({dependencyValues:Me}){return[Me.numComponents]},returnArrayDependenciesByKey({arrayKeys:Me,stateValues:Or}){let Hr={},Li={childIndexByArrayKey:{dependencyType:"stateVariable",variableName:"childIndexByArrayKey"}};for(let ts of Me){let rs=[],ns="1";Or.childIndexByArrayKey[ts]&&(rs=[Or.childIndexByArrayKey[ts][0]],ns=Or.childIndexByArrayKey[ts][1]+1),Hr[ts]={componentSizeAndComponentSizeListChildren:{dependencyType:"child",childGroups:["componentSizes","componentSizeLists"],variableNames:["componentSize","componentSize"+ns],variablesOptional:!0,childIndices:rs}}}return{globalDependencies:Li,dependenciesByKey:Hr}},arrayDefinitionByKey({globalDependencyValues:Me,dependencyValuesByKey:Or,arrayKeys:Hr,componentInfoObjects:Li}){let ts={};for(let rs of Hr){let ns=Or[rs].componentSizeAndComponentSizeListChildren[0];if(ns)if(Li.isInheritedComponentType({inheritedComponentType:ns.componentType,baseComponentType:"_componentSizeList"})){let is=Me.childIndexByArrayKey[rs][1]+1;ts[rs]=ns.stateValues["componentSize"+is]}else ts[rs]=ns.stateValues.componentSize}return{setValue:{componentSizes:ts}}},inverseArrayDefinitionByKey({desiredStateVariableValues:Me,globalDependencyValues:Or,dependencyValuesByKey:Hr,dependencyNamesByKey:Li,arraySize:ts,componentInfoObjects:rs}){let ns=[];for(let is in Me.componentSizes){if(!Hr[is])continue;let as=Hr[is].componentSizeAndComponentSizeListChildren[0];as&&(rs.isInheritedComponentType({inheritedComponentType:as.componentType,baseComponentType:"_componentSizeList"})?ns.push({setDependency:Li[is].componentSizeAndComponentSizeListChildren,desiredValue:Me.componentSizes[is],childIndex:0,variableIndex:1}):ns.push({setDependency:Li[is].componentSizeAndComponentSizeListChildren,desiredValue:Me.componentSizes[is],childIndex:0,variableIndex:0}))}return{success:!0,instructions:ns}}},ae.numValues={isAlias:!0,targetVariableName:"numComponents",description:"The number of component sizes in the list."},ae.values={isAlias:!0,targetVariableName:"componentSizes",description:"The list's component sizes."},ae}}const ComponentSize$1=Object.freeze(Object.defineProperty({__proto__:null,ComponentSize,ComponentSizeList},Symbol.toStringTag,{value:"Module"}));class Copy extends CompositeComponent{static componentType="_copy";static excludeFromSchema=!0;static acceptAnyAttribute=!0;static includeBlankStringChildren=!0;static stateVariableToEvaluateAfterReplacements="needsReplacementsUpdatedWhenStale";static createAttributesObject(){let ae=super.createAttributesObject();return delete ae.disabled,delete ae.modifyIndirectly,delete ae.fixed,delete ae.styleNumber,delete ae.isResponse,delete ae.isPotentialResponse,delete ae.hide,ae.createComponentOfType={createPrimitiveOfType:"string"},ae.createComponentIdx={createPrimitiveOfType:"integer"},ae.createComponentName={createPrimitiveOfType:"string"},ae.numComponents={createPrimitiveOfType:"number"},ae.copyInChildren={createPrimitiveOfType:"boolean"},ae.uri={createPrimitiveOfType:"string",createStateVariable:"uri",defaultValue:null,public:!0},ae.link={createPrimitiveOfType:"boolean",createStateVariable:"link",defaultValue:!0},ae.removeEmptyArrayEntries={createPrimitiveOfType:"boolean",createStateVariable:"removeEmptyArrayEntries",defaultValue:!1},ae.asList={createPrimitiveOfType:"boolean",createStateVariable:"asListPreliminary",defaultValue:!0,description:"Whether to render the items separated by commas (true) or with no separator (false)."},ae}static keepChildrenSerialized({serializedComponent:ae}){return ae.children===void 0?[]:Object.keys(ae.children)}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.refResolutionIndexDependencies={returnDependencies:()=>({refResolutionIndexDependencies:{dependencyType:"refResolutionIndexDependencies"}}),definition:({dependencyValues:Me})=>({setValue:{refResolutionIndexDependencies:Me.refResolutionIndexDependencies}})},ae.refResolutionIndexDependencyValues={stateVariablesDeterminingDependencies:["refResolutionIndexDependencies"],returnDependencies:({stateValues:Me})=>{const Or={};for(const Hr of Me.refResolutionIndexDependencies)Or[Hr]={dependencyType:"stateVariable",componentIdx:Hr,variableName:"value"};return Or},definition:({dependencyValues:Me})=>({setValue:{refResolutionIndexDependencyValues:Me}})},ae.extendIdx={additionalStateVariablesDefined:["unresolvedPath","originalPath"],stateVariablesDeterminingDependencies:["refResolutionIndexDependencyValues"],returnDependencies:({stateValues:Me})=>({refResolution:{dependencyType:"refResolution",indexDependencyValues:Me.refResolutionIndexDependencyValues}}),definition:({dependencyValues:Me})=>({setValue:{extendIdx:Me.refResolution.extendIdx,unresolvedPath:Me.refResolution.unresolvedPath,originalPath:Me.refResolution.originalPath}})},ae.extendedComponent={shadowVariable:!0,stateVariablesDeterminingDependencies:["extendIdx"],returnDependencies({stateValues:Me}){return Me.extendIdx!==-1?{extendedComponent:{dependencyType:"componentIdentity",componentIdx:Me.extendIdx}}:{}},definition:function({dependencyValues:Me}){let Or=null;return Me.extendedComponent&&(Or=Me.extendedComponent),{setValue:{extendedComponent:Or}}}},ae.targetInactive={stateVariablesDeterminingDependencies:["extendedComponent"],returnDependencies({stateValues:Me}){return Me.extendedComponent?{targetIsInactiveCompositeReplacement:{dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"isInactiveCompositeReplacement"}}:{}},definition:function({dependencyValues:Me}){return{setValue:{targetInactive:!!Me.targetIsInactiveCompositeReplacement}}}},ae.cid={additionalStateVariablesDefined:["doenetId"],returnDependencies:()=>({uri:{dependencyType:"stateVariable",variableName:"uri"}}),definition:function({dependencyValues:Me}){if(!Me.uri||Me.uri.substring(0,7).toLowerCase()!=="doenet:")return{setValue:{cid:null,doenetId:null}};let Or=null,Hr=null,Li=Me.uri.match(/[:&]cid=([^&]+)/i);return Li&&(Or=Li[1]),Li=Me.uri.match(/[:&]doenetid=([^&]+)/i),Li&&(Hr=Li[1]),{setValue:{cid:Or,doenetId:Hr}}}},ae.createComponentOfType={returnDependencies:()=>({typeAttr:{dependencyType:"attributePrimitive",attributeName:"createComponentOfType"}}),definition({dependencyValues:Me}){let Or=null;return Me.typeAttr&&(Or=Me.typeAttr),{setValue:{createComponentOfType:Or}}}},ae.replacementSourceIdentities={stateVariablesDeterminingDependencies:["extendedComponent","unresolvedPath","createComponentOfType"],additionalStateVariablesDefined:["usedReplacements"],returnDependencies:function({stateValues:Me,componentInfoObjects:Or}){let Hr={numComponentsSpecified:{dependencyType:"stateVariable",variableName:"numComponentsSpecified"}},Li=!1;if(Me.extendedComponent!==null){if(Me.extendedComponent.componentType==="_copy"||Or.isCompositeComponent({componentType:Me.extendedComponent.componentType,includeNonStandard:!0})&&Me.extendedComponent.componentType!==Me.createComponentOfType){Li=!0;let ts=Me.unresolvedPath?.[0]?.name;ts===""&&(ts=null),Hr.targets={dependencyType:"replacement",compositeIdx:Me.extendedComponent.componentIdx,recursive:!0,recurseNonStandardComposites:Me.unresolvedPath!=null,stopAtListComposites:Me.unresolvedPath==null,includeWithheldReplacements:!0,stopIfHaveProp:ts}}Li||(Hr.targets={dependencyType:"stateVariable",variableName:"extendedComponent"}),Hr.usedReplacements={dependencyType:"value",value:Li}}return Hr},definition({dependencyValues:Me}){let Or=null;if(Me.targets&&(Or=Me.targets,Array.isArray(Or)||(Or=[Or]),Me.numComponentsSpecified===1&&Or.length>1)){const Hr=Or.findIndex(ts=>typeof ts!="string"||ts.trim()!==""),Li=Or.findLastIndex(ts=>typeof ts!="string"||ts.trim()!=="");Hr!==-1&&Li!==-1&&(Or=Or.slice(Hr,Li+1))}return{setValue:{replacementSourceIdentities:Or,usedReplacements:!!Me.usedReplacements}}}},ae.asList={stateVariablesDeterminingDependencies:["usedReplacements","extendedComponent"],returnDependencies({stateValues:Me}){const Or={asListPreliminary:{dependencyType:"stateVariable",variableName:"asListPreliminary"},usedReplacements:{dependencyType:"stateVariable",variableName:"usedReplacements"}};return Me.usedReplacements&&(Or.extendedComponentAsList={dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"asList",variablesOptional:!0}),Or},definition({dependencyValues:Me,usedDefault:Or}){return Or.asListPreliminary&&Me.usedReplacements&&typeof Me.extendedComponentAsList=="boolean"?{setValue:{asList:Me.extendedComponentAsList}}:{setValue:{asList:Me.asListPreliminary}}}},ae.implicitProp={stateVariablesDeterminingDependencies:["replacementSourceIdentities","unresolvedPath"],returnDependencies({stateValues:Me}){let Or={unresolvedPath:{dependencyType:"stateVariable",variableName:"unresolvedPath"},usedReplacements:{dependencyType:"stateVariable",variableName:"usedReplacements"}};return Me.unresolvedPath||(Or.replacementSourceIdentities={dependencyType:"stateVariable",variableName:"replacementSourceIdentities"},Or.typeAttr={dependencyType:"attributePrimitive",attributeName:"createComponentOfType"}),Or},definition({dependencyValues:Me,componentInfoObjects:Or}){if(Me.unresolvedPath||Me.usedReplacements||!(Me.replacementSourceIdentities?.length>0))return{setValue:{implicitProp:null}};let Hr=Me.replacementSourceIdentities[0],Li=Or.allComponentClasses[Hr.componentType]?.variableForImplicitProp;if(!Li)return{setValue:{implicitProp:null}};if(Me.typeAttr){let ts=Or.componentTypeLowerCaseMapping[Me.typeAttr.toLowerCase()];if(ts===Hr.componentType)return{setValue:{implicitProp:null}};let rs=Or.publicStateVariableInfo[Hr.componentType].stateVariableDescriptions[Li];if(rs.createComponentOfType!==void 0&&rs.createComponentOfType!==ts)return{setValue:{implicitProp:null}}}return{setValue:{implicitProp:Li}}}},ae.replacementSources={stateVariablesDeterminingDependencies:["replacementSourceIdentities","unresolvedPath","implicitProp"],additionalStateVariablesDefined:["effectivePropNameBySource"],returnDependencies:function({stateValues:Me}){let Or={replacementSourceIdentities:{dependencyType:"stateVariable",variableName:"replacementSourceIdentities"}};if(Me.replacementSourceIdentities!==null)for(let[Hr,Li]of Me.replacementSourceIdentities.entries()){let ts=Me.unresolvedPath;Me.implicitProp&&(ts=[{name:Me.implicitProp,index:[]}]);let rs;if(ts){if(ts=[...ts],Or["unresolvedPath"+Hr]={dependencyType:"value",value:ts},typeof Li=="string")continue;rs={dependencyType:"stateVariableFromUnresolvedPath",componentIdx:Li.componentIdx,unresolvedPath:ts,returnAsComponentObject:!0,variablesOptional:!0,caseInsensitiveVariableMatch:!0,publicStateVariablesOnly:!0,useMappedVariableNames:!0}}else{if(typeof Li=="string")continue;rs={dependencyType:"componentIdentity",componentIdx:Li.componentIdx}}Or["target"+Hr]=rs}return Or},definition({dependencyValues:Me}){let Or=null,Hr=null;if(Me.replacementSourceIdentities!==null){Or=[],Hr=[];for(let Li in Me.replacementSourceIdentities){let ts=Me["target"+Li];if(ts){Or.push(ts);let rs;ts.stateValues&&(rs=Object.keys(ts.stateValues)[0]),!rs&&Me["unresolvedPath"+Li]&&(rs="__prop_name_not_found"),Hr.push(rs)}else{const rs=Me.replacementSourceIdentities[Li];typeof rs=="string"?Me["unresolvedPath"+Li]?Hr.push("__prop_name_not_found"):(Or.push(rs),Hr.push(void 0)):(Or.push(void 0),Hr.push("__no_target_found"))}}}return{setValue:{replacementSources:Or,effectivePropNameBySource:Hr}}}},ae.numComponentsSpecified={returnDependencies:()=>({numComponentsAttr:{dependencyType:"attributePrimitive",attributeName:"numComponents"},typeAttr:{dependencyType:"attributePrimitive",attributeName:"createComponentOfType"}}),definition({dependencyValues:Me,componentInfoObjects:Or}){let Hr;if(Me.typeAttr){if(!(Or.componentTypeLowerCaseMapping[Me.typeAttr.toLowerCase()]in Or.allComponentClasses))return{setValue:{numComponentsSpecified:null},sendDiagnostics:[codedDiagnostic({type:"warning",code:"doenet-w0065",args:{type:Me.typeAttr}})]};Me.numComponentsAttr!==null?Hr=Me.numComponentsAttr:Hr=1}else{if(Me.numComponentsAttr!==null)throw Error("You must specify createComponentOfType when specifying numComponents for a copy.");Hr=null}return{setValue:{numComponentsSpecified:Hr}}}},ae.unlinkedDescendants={stateVariablesDeterminingDependencies:["extendIdx","link"],returnDependencies({stateValues:Me}){let Or={};return Me.link?Or.targetItself={dependencyType:"componentIdentity",componentIdx:Me.extendIdx}:Or.targetDescendants={dependencyType:"descendant",ancestorIdx:Me.extendIdx,componentTypes:["_composite"]},Or},definition(){return{setValue:{unlinkedDescendants:!0}}}},ae.unlinkedTargetsExpanded={stateVariablesDeterminingDependencies:["extendedComponent","link"],returnDependencies({stateValues:Me,componentInfoObjects:Or}){let Hr={};return!Me.link&&Me.extendedComponent&&Or.isInheritedComponentType({inheritedComponentType:Me.extendedComponent.componentType,baseComponentType:"_composite"})&&(Hr.targetReplacements={dependencyType:"replacement",compositeIdx:Me.extendedComponent.componentIdx,recursive:!0,recurseNonStandardComposites:!0}),Hr},definition(){return{setValue:{unlinkedTargetsExpanded:!0}}}},ae.readyToExpandWhenResolved={stateVariablesDeterminingDependencies:["extendedComponent","unresolvedPath","link"],returnDependencies({stateValues:Me,componentInfoObjects:Or}){let Hr={extendedComponent:{dependencyType:"stateVariable",variableName:"extendedComponent"},needsReplacementsUpdatedWhenStale:{dependencyType:"stateVariable",variableName:"needsReplacementsUpdatedWhenStale"},link:{dependencyType:"stateVariable",variableName:"link"},unlinkedTargetsExpanded:{dependencyType:"stateVariable",variableName:"unlinkedTargetsExpanded"},unlinkedDescendants:{dependencyType:"stateVariable",variableName:"unlinkedDescendants"}};return Me.extendedComponent&&Or.isCompositeComponent({componentType:Me.extendedComponent.componentType,includeNonStandard:!1})&&(Hr.targetReadyToExpandWhenResolved={dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"readyToExpandWhenResolved"}),Me.extendedComponent&&Me.unresolvedPath===null&&(Hr.extendedVariantInfo={dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"generatedVariantInfo",variablesOptional:!0}),Me.link||(Hr.replacementSources={dependencyType:"stateVariable",variableName:"replacementSources"}),Hr},definition(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae.needsReplacementsUpdatedWhenStale={stateVariablesDeterminingDependencies:["extendedComponent","replacementSourceIdentities","effectivePropNameBySource","unresolvedPath","link","removeEmptyArrayEntries"],returnDependencies:function({stateValues:Me,componentInfoObjects:Or}){if(!Me.link)return{};let Hr={extendedComponent:{dependencyType:"stateVariable",variableName:"extendedComponent"},targetInactive:{dependencyType:"stateVariable",variableName:"targetInactive"},replacementSourceIdentities:{dependencyType:"stateVariable",variableName:"replacementSourceIdentities"}};if(Me.effectivePropNameBySource!==null){for(let[Li,ts]of Me.effectivePropNameBySource.entries())if(ts){let rs=Me.replacementSourceIdentities[Li];Hr["sourceArraySize"+Li]={dependencyType:"stateVariableArraySize",componentIdx:rs.componentIdx,variableName:ts,variablesOptional:!0,caseInsensitiveVariableMatch:!0},Hr["sourceComponentType"+Li]={dependencyType:"stateVariableComponentType",componentIdx:rs.componentIdx,variableName:ts,variablesOptional:!0,caseInsensitiveVariableMatch:!0}}}return Me.extendedComponent!==null&&Or.isCompositeComponent({componentType:Me.extendedComponent.componentType,includeNonStandard:!1})&&(Hr.allReplacementIdentities={dependencyType:"replacement",compositeIdx:Me.extendedComponent.componentIdx,recursive:!0,variableNames:["isInactiveCompositeReplacement"]}),Me.removeEmptyArrayEntries&&(Hr.replacementSources={dependencyType:"stateVariable",variableName:"replacementSources"}),Hr},markStale(){return{updateReplacements:!0}},definition:()=>({setValue:{needsReplacementsUpdatedWhenStale:!0}})},ae}static async createSerializedReplacements({component:ae,components:Me,nComponents:Or,workspace:Hr,allDoenetMLs:Li,componentInfoObjects:ts,resolveItem:rs,publicCaseInsensitiveAliasSubstitutions:ns}){Hr.replacementsCreated===void 0&&(Hr.replacementsCreated=0);let is=[];await ae.stateValues.numComponentsSpecified,Hr.numReplacementsBySource=[],Hr.numNonStringReplacementsBySource=[],Hr.propVariablesCopiedBySource=[],Hr.sourceIndices=[];let as=this.createAttributesObject(),os=await ae.stateValues.replacementSourceIdentities;if(!await ae.stateValues.extendedComponent||!os){let gs=[];const ys={prefix:`${ae.stateId}|`,num:Hr.replacementsCreated};if(ae.attributes.copyInChildren?.primitive.value){let bs=ts.componentTypeLowerCaseMapping[ae.attributes.createComponentOfType.primitive.value.toLowerCase()],vs=ts.allComponentClasses[bs];const Cs=convertUnresolvedAttributesForComponentType({attributes:ae.attributes,componentType:bs,componentInfoObjects:ts,compositeAttributesObj:as,nComponents:Or,stateIdInfo:ys}),Ts=Cs.attributes;Or=Cs.nComponents;let As=deepClone(ae.serializedChildren);vs.includeBlankStringChildren||(As=As.filter(_s=>typeof _s!="string"||_s.trim()!==""));let Ns=Ts;gs=[{type:"serialized",componentType:bs,componentIdx:Or++,stateId:`${ys.prefix}${ys.num++}`,attributes:Ns,doenetAttributes:{},state:{},children:As}],Hr.numReplacementsBySource.push(gs.length),Hr.numNonStringReplacementsBySource.push(gs.filter(_s=>typeof _s!="string").length)}let xs=await verifyReplacementsMatchSpecifiedType({component:ae,replacements:gs,workspace:Hr,componentInfoObjects:ts,compositeAttributesObj:as,components:Me,nComponents:Or,stateIdInfo:ys,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...xs.diagnostics),Or=xs.nComponents,addAttributesToSingleReplacement(xs.replacements,ae),Hr.replacementsCreated=ys.num,{replacements:xs.replacements,diagnostics:is,nComponents:Or}}let ss=await rs({componentIdx:ae.componentIdx,type:"determineDependencies",stateVariable:"replacementSources",dependency:"__determine_dependencies",expandComposites:!1});if(!ss.success)throw Error(`Couldn't resolve determineDependencies of replacementSources of ${ae.componentIdx}`);let ls=await ae.stateValues.effectivePropNameBySource;for(let gs in os)if(ls[gs]&&(ss=await rs({componentIdx:ae.componentIdx,type:"recalculateDownstreamComponents",stateVariable:"replacementSources",dependency:"target"+gs,expandComposites:!1}),!ss.success))throw Error(`Couldn't resolve recalculateDownstreamComponents for target${gs} of replacementSources of ${ae.componentIdx}`);let us=[];const cs={prefix:`${ae.stateId}|`,num:Hr.replacementsCreated};let ds=[],ps=[],ms=0,fs=0;for(let gs in os){let ys;if(ae.attributes.createComponentOfType?.primitive){let vs=await ae.stateValues.numComponentsSpecified,Cs=os.length;ys=Math.floor(vs/Cs);let Ts=vs%Cs;gs<Ts&&ys++}let xs=await this.createReplacementForSource({component:ae,sourceNum:gs,components:Me,nComponents:Or,stateIdInfo:cs,allDoenetMLs:Li,numReplacementsSoFar:ms,numNonStringReplacementsSoFar:fs,compositeAttributesObj:as,componentInfoObjects:ts,numComponentsForSource:ys,publicCaseInsensitiveAliasSubstitutions:ns,copyInChildren:Number(gs)===0&&ae.attributes.copyInChildren?.primitive.value});is.push(...xs.diagnostics),Or=xs.nComponents,Hr.propVariablesCopiedBySource[gs]=xs.propVariablesCopiedByReplacement;let bs=xs.serializedReplacements;ds[gs]=bs.length,ps[gs]=bs.filter(vs=>typeof vs!="string").length,ms+=ds[gs],fs+=ps[gs],us.push(...bs)}Hr.numReplacementsBySource=ds,Hr.numNonStringReplacementsBySource=ps,Hr.sourceIndices=os.map(gs=>gs.componentIdx);let hs=await verifyReplacementsMatchSpecifiedType({component:ae,replacements:us,workspace:Hr,componentInfoObjects:ts,compositeAttributesObj:as,components:Me,nComponents:Or,stateIdInfo:cs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...hs.diagnostics),Or=hs.nComponents,us=hs.replacements,addAttributesToSingleReplacement(us,ae),Hr.replacementsCreated=cs.num,{replacements:us,diagnostics:is,nComponents:Or}}static async createReplacementForSource({component:ae,sourceNum:Me,components:Or,nComponents:Hr,stateIdInfo:Li,allDoenetMLs:ts,numReplacementsSoFar:rs,numNonStringReplacementsSoFar:ns,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss,copyInChildren:ls}){let us=[],cs=(await ae.stateValues.replacementSourceIdentities)[Me];if(typeof cs!="object")return ae.stateValues.effectivePropNameBySource[Me]?{serializedReplacements:[],diagnostics:us,nComponents:Hr}:{serializedReplacements:[cs],diagnostics:us,nComponents:Hr};const ds=Or[cs.componentIdx];if(await ds.stateValues.isInactiveCompositeReplacement)return{serializedReplacements:[],diagnostics:us,nComponents:Hr};let ps=(await ae.stateValues.effectivePropNameBySource)[Me],ms=await ae.stateValues.link;if(!ms||ps&&await ae.stateValues.removeEmptyArrayEntries){const hs=(await ae.stateValues.replacementSources)[Me];hs&&(cs=hs)}if(ps){let hs=await replacementFromProp({component:ae,components:Or,nComponents:Hr,stateIdInfo:Li,replacementSource:cs,propName:ps,allDoenetMLs:ts,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss});us.push(...hs.diagnostics),Hr=hs.nComponents;let gs=hs.serializedReplacements,ys=hs.propVariablesCopiedByReplacement;if(ls&&ae.serializedChildren.length>0)if(gs.length===0){let xs=as.componentTypeLowerCaseMapping[ae.attributes.createComponentOfType.primitive.value.toLowerCase()],bs=as.allComponentClasses[xs];const vs=convertUnresolvedAttributesForComponentType({attributes:ae.attributes,componentType:xs,componentInfoObjects:as,compositeAttributesObj:is,nComponents:Hr,stateIdInfo:Li}),Cs=vs.attributes;Hr=vs.nComponents;let Ts=deepClone(ae.serializedChildren);bs.includeBlankStringChildren||(Ts=Ts.filter(Ns=>typeof Ns!="string"||Ns.trim()!==""));let As=Cs;gs=[{type:"serialized",componentType:xs,componentIdx:Hr++,stateId:`${Li.prefix}${Li.num++}`,attributes:As,doenetAttributes:{},state:{},children:Ts}],ys=[[]]}else gs.length===1&&addChildrenFromComposite({replacements:gs,children:ae.serializedChildren,componentInfoObjects:as});return{serializedReplacements:gs,propVariablesCopiedByReplacement:ys,diagnostics:us,nComponents:Hr}}let fs;try{fs=[await ds.serialize({copyAll:!ms,componentSourceAttributesToIgnore:["labelIsName"],copyVariants:!ms,copyPrimaryEssentialIfShadow:!ms,copyEssentialStateIfShadow:!ms,errorIfEncounterComponent:[ae.componentIdx]})];let hs=createNewComponentIndices(fs,Hr,Li);fs=hs.components,Hr=hs.nComponents}catch(hs){if(hs.message?.startsWith(SERIALIZE_ENCOUNTERED_COMPONENT_PREFIX)){const ys=getSelfReferentialFallbackPropName({componentAncestors:ae.ancestors,componentInfoObjects:as,replacementSourceComponentType:ds.componentType});if(ys)try{let xs=await replacementFromProp({component:ae,components:Or,nComponents:Hr,stateIdInfo:Li,replacementSource:ds,propName:ys,allDoenetMLs:ts,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss});return us.push(...xs.diagnostics),Hr=xs.nComponents,{serializedReplacements:xs.serializedReplacements,propVariablesCopiedByReplacement:xs.propVariablesCopiedByReplacement,diagnostics:us,nComponents:Hr}}catch{}}console.error("we're calling this circular",hs);const gs=codedDiagnostic({type:"error",code:"doenet-e0005",args:{componentType:ae.attributes.createComponentOfType?.primitive?.value??"none"}});return fs=[{type:"serialized",componentType:"_error",componentIdx:Hr++,stateId:`${Li.prefix}${Li.num++}`,state:errorComponentState(gs.message,gs),attributes:{},doenetAttributes:{},children:[]}],us.push(gs),{serializedReplacements:fs,diagnostics:us,nComponents:Hr}}!ms&&fs[0].state&&(delete fs[0].state.fixed,delete fs[0].state.fixedPreliminary,delete fs[0].attributes.fixed),fs=postProcessCopy({serializedComponents:fs,componentIdx:ae.componentIdx,addShadowDependencies:ms,unlinkExternalCopies:!1});for(let hs of fs){if(typeof hs!="object")continue;hs.attributes||(hs.attributes={});const gs=convertUnresolvedAttributesForComponentType({attributes:ae.attributes,componentType:hs.componentType,componentInfoObjects:as,compositeAttributesObj:is,dontSkipAttributes:["asList"],nComponents:Hr,stateIdInfo:Li}),ys=gs.attributes;Hr=gs.nComponents,(ys.displayDigits||ys.displayDecimals)&&(delete hs.attributes.displayDigits,delete hs.attributes.displayDecimals),Object.assign(hs.attributes,ys)}return ls&&fs.length===1&&ae.serializedChildren.length>0&&addChildrenFromComposite({replacements:fs,children:ae.serializedChildren,componentInfoObjects:as}),{serializedReplacements:fs,diagnostics:us,nComponents:Hr}}static async calculateReplacementChanges({component:ae,nComponents:Me,componentChanges:Or,components:Hr,workspace:Li,componentInfoObjects:ts,resolveItem:rs,publicCaseInsensitiveAliasSubstitutions:ns}){let is=[];if(await ae.stateValues.link===!1)return{replacementChanges:[],diagnostics:is,nComponents:Me};let as=this.createAttributesObject(),os=await ae.stateValues.replacementSourceIdentities;if(!await ae.stateValues.extendedComponent||!os){let vs=[];const Cs={prefix:`${ae.stateId}|`,num:Li.replacementsCreated};if(ae.replacements.length>0){let Ns={changeType:"delete",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToDelete:ae.replacements.length};vs.push(Ns)}let Ts=Li.sourceIndices.length===0;Li.sourceIndices=[],Li.numReplacementsBySource=[],Li.numNonStringReplacementsBySource=[],Li.propVariablesCopiedBySource=[];let As=await verifyReplacementsMatchSpecifiedType({component:ae,replacementChanges:vs,workspace:Li,componentInfoObjects:ts,compositeAttributesObj:as,components:Hr,nComponents:Me,stateIdInfo:Cs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...As.diagnostics),Me=As.nComponents,Ts?{replacementChanges:[],diagnostics:is,nComponents:Me}:(addAttributesToSingleReplacementChange(ae,As.replacementChanges),Li.replacementsCreated=Cs.num,{replacementChanges:As.replacementChanges,diagnostics:is,nComponents:Me})}if(await ae.stateValues.targetInactive){let vs=[];const Cs={prefix:`${ae.stateId}|`,num:Li.replacementsCreated};let Ts=ae.replacements.length;if(Ts>0){if(ae.replacementsToWithhold!==Ts){let Ns={changeType:"changeReplacementsToWithhold",replacementsToWithhold:Ts};vs.push(Ns)}let As=await verifyReplacementsMatchSpecifiedType({component:ae,replacementChanges:vs,workspace:Li,componentInfoObjects:ts,compositeAttributesObj:as,components:Hr,nComponents:Me,stateIdInfo:Cs,publicCaseInsensitiveAliasSubstitutions:ns});is.push(...As.diagnostics),Me=As.nComponents,vs=As.replacementChanges}return addAttributesToSingleReplacementChange(ae,vs),Li.replacementsCreated=Cs.num,{replacementChanges:vs,diagnostics:is,nComponents:Me}}let ss=await rs({componentIdx:ae.componentIdx,type:"determineDependencies",stateVariable:"replacementSources",dependency:"__determine_dependencies",expandComposites:!1});if(!ss.success)throw Error(`Couldn't resolve determineDependencies of replacementSources of ${ae.componentIdx}`);let ls=await ae.stateValues.effectivePropNameBySource;for(let vs in os)if(ls[vs]&&(ss=await rs({componentIdx:ae.componentIdx,type:"recalculateDownstreamComponents",stateVariable:"replacementSources",dependency:"target"+vs,expandComposites:!1}),!ss.success))throw Error(`Couldn't resolve recalculateDownstreamComponents for target${vs} of replacementSources of ${ae.componentIdx}`);let us=[];const cs={prefix:`${ae.stateId}|`,num:Li.replacementsCreated};if(ae.replacementsToWithhold>0){let vs={changeType:"changeReplacementsToWithhold",replacementsToWithhold:0};us.push(vs)}let ds=0,ps=0,ms=[],fs=[],hs=[],gs=Math.max(os.length,Li.numReplacementsBySource.length),ys=!1;for(let vs=0;vs<gs;vs++){let Cs;if(ae.attributes.createComponentOfType?.primitive){let Os=await ae.stateValues.numComponentsSpecified,ws=os.length;Cs=Math.floor(Os/ws);let Ws=Os%ws;vs<Ws&&Cs++}let Ts=os[vs];if(!ys&&await Hr[Ts?.componentIdx]?.stateValues.isInactiveCompositeReplacement){let Os=!0;for(let ws=vs+1;ws<gs;ws++){const Ws=os[ws];if(!await Hr[Ws?.componentIdx]?.stateValues.isInactiveCompositeReplacement){Os=!1;break}}if(Os){let ws=Li.numReplacementsBySource.slice(vs).reduce((Ws,Rs)=>Ws+Rs,0);if(ws>0){let Ws={changeType:"changeReplacementsToWithhold",replacementsToWithhold:ws};us.push(Ws)}for(let Ws=vs;Ws<gs;Ws++)ms[Ws]=Li.numReplacementsBySource[Ws],fs[Ws]=Li.numNonStringReplacementsBySource[Ws],hs[Ws]=Li.propVariablesCopiedBySource[Ws];break}else Ts=void 0}if(Ts===void 0){if(Li.numReplacementsBySource[vs]>0&&!ys){let Os=Li.numReplacementsBySource.slice(vs).reduce((ws,Ws)=>ws+Ws,0);if(Os>0){let ws={changeType:"delete",changeTopLevelReplacements:!0,firstReplacementInd:ds,numberReplacementsToDelete:Os};us.push(ws)}ys=!0,Li.numReplacementsBySource.slice(vs).forEach((ws,Ws)=>Li.numReplacementsBySource[Ws]=0),Li.numNonStringReplacementsBySource.slice(vs).forEach((ws,Ws)=>Li.numNonStringReplacementsBySource[Ws]=0)}ms[vs]=0,fs[vs]=0,hs.push([]);continue}let As=Li.sourceIndices[vs],Ns=As===void 0||Ts.componentIdx!==As||ys;if(!Ns)for(let Os=0;Os<Li.numReplacementsBySource[vs];Os++){let ws=ae.replacements[ds+Os];if(ws){if(!ls[vs]&&ws.shadows?.componentIdx!==os[vs].componentIdx){Ns=!0;break}}else{Ns=!0;break}}if(Ns){let Os=0;vs in Li.numReplacementsBySource&&(Os=Li.numReplacementsBySource[vs]);let ws=Os;ys&&(ws=0);let Ws=await this.recreateReplacements({component:ae,sourceNum:vs,numReplacementsSoFar:ds,numNonStringReplacementsSoFar:ps,numReplacementsToDelete:ws,components:Hr,nComponents:Me,stateIdInfo:cs,compositeAttributesObj:as,componentInfoObjects:ts,numComponentsForSource:Cs,publicCaseInsensitiveAliasSubstitutions:ns});is.push(...Ws.diagnostics),Me=Ws.nComponents,ds+=Ws.numReplacements,ps+=Ws.numNonStringReplacements,ms[vs]=Ws.numReplacements,fs[vs]=Ws.numNonStringReplacements,hs[vs]=Ws.propVariablesCopiedByReplacement;let Rs=Ws.replacementInstruction;if(!ys&&Ws.numReplacements!==Os){let zs=Li.numReplacementsBySource.slice(vs).reduce((qs,Ms)=>qs+Ms,0);Rs.numberReplacementsToReplace=zs,ys=!0,Li.numReplacementsBySource.slice(vs).forEach((qs,Ms)=>Li.numReplacementsBySource[Ms]=0),Li.numNonStringReplacementsBySource.slice(vs).forEach((qs,Ms)=>Li.numNonStringReplacementsBySource[Ms]=0)}Rs&&us.push(Rs);continue}if(!ls[vs]&&Li.numReplacementsBySource[vs]>0){ds+=Li.numReplacementsBySource[vs],ps+=Li.numNonStringReplacementsBySource[vs],ms[vs]=Li.numReplacementsBySource[vs],fs[vs]=Li.numNonStringReplacementsBySource[vs];continue}const _s={prefix:`${ae.stateId}|`,num:cs.num};let Es=await this.createReplacementForSource({component:ae,sourceNum:vs,components:Hr,nComponents:Me,stateIdInfo:_s,numReplacementsSoFar:ds,numNonStringReplacementsSoFar:ps,compositeAttributesObj:as,componentInfoObjects:ts,numComponentsForSource:Cs,publicCaseInsensitiveAliasSubstitutions:ns,copyInChildren:Number(vs)===0&&ae.attributes.copyInChildren?.primitive.value});is.push(...Es.diagnostics);const $s=Es.nComponents;let Is=Es.propVariablesCopiedByReplacement,Ds=Es.serializedReplacements,Vs=Ds.length,Ps=Li.numReplacementsBySource[vs];if(Vs!==Ps){let Os=Li.numReplacementsBySource.slice(vs).reduce((Ws,Rs)=>Ws+Rs,0),ws={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:ds,numberReplacementsToReplace:Os,serializedReplacements:Ds};us.push(ws),ys=!0,Me=$s,cs.num=_s.num,Li.numReplacementsBySource.slice(vs).forEach((Ws,Rs)=>Li.numReplacementsBySource[Rs]=0),Li.numNonStringReplacementsBySource.slice(vs).forEach((Ws,Rs)=>Li.numNonStringReplacementsBySource[Rs]=0)}else for(let Os=0;Os<Vs;Os++){let ws=Is[Os].length!==Li.propVariablesCopiedBySource[vs][Os].length,Ws=!ws;if(ws||(Li.propVariablesCopiedBySource[vs][Os].some((Rs,zs)=>Rs!==Is[Os][zs])?(Ws=!1,ws=!0):ae.replacements[ds+Os].componentType!==Ds[Os].componentType&&(ws=!0)),Os==0&&ws&&Ws&&await ae.stateValues.numComponentsSpecified===1&&Vs===1&&!(ae.replacementsToWithhold>0)&&Li.sourceIndices.length===1&&(ws=!1),ws){Me=$s,cs.num=_s.num;let Rs={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:ds+Os,numberReplacementsToReplace:1,serializedReplacements:[Ds[Os]]};us.push(Rs)}Ds[Os]}let Gs=Ds.filter(Os=>typeof Os!="string").length;ds+=Vs,ps+=Gs,ms[vs]=Vs,fs[vs]=Gs,hs[vs]=Is}let xs=Li.sourceIndices.length===0;Li.numReplacementsBySource=ms,Li.numNonStringReplacementsBySource=fs,Li.sourceIndices=os.map(vs=>vs.componentIdx),Li.propVariablesCopiedBySource=hs;let bs=await verifyReplacementsMatchSpecifiedType({component:ae,replacementChanges:us,workspace:Li,componentInfoObjects:ts,compositeAttributesObj:as,components:Hr,nComponents:Me,stateIdInfo:cs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...bs.diagnostics),Me=bs.nComponents,us=bs.replacementChanges,xs&&Li.sourceIndices.length===0?{replacementChanges:[],diagnostics:is,nComponents:Me}:(addAttributesToSingleReplacementChange(ae,us),Li.replacementsCreated=cs.num,{replacementChanges:us,diagnostics:is,nComponents:Me})}static async recreateReplacements({component:ae,sourceNum:Me,numReplacementsSoFar:Or,numNonStringReplacementsSoFar:Hr,numReplacementsToDelete:Li,components:ts,nComponents:rs,stateIdInfo:ns,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss}){let ls=[],us=await this.createReplacementForSource({component:ae,sourceNum:Me,numReplacementsSoFar:Or,numNonStringReplacementsSoFar:Hr,components:ts,nComponents:rs,stateIdInfo:ns,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss,copyInChildren:Number(Me)===0&&ae.attributes.copyInChildren?.primitive.value});ls.push(...us.diagnostics),rs=us.nComponents;let cs=us.propVariablesCopiedByReplacement,ds=us.serializedReplacements;if(ds.length>0||Li>0){let ps={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:Or,numberReplacementsToReplace:Li,serializedReplacements:ds};return{numReplacements:ds.length,numNonStringReplacements:ds.filter(ms=>typeof ms!="string").length,propVariablesCopiedByReplacement:cs,replacementInstruction:ps,diagnostics:ls,nComponents:rs}}else return{numReplacements:0,numNonStringReplacements:0,propVariablesCopiedByReplacement:cs,replacementInstruction:null,diagnostics:ls,nComponents:rs}}}async function replacementFromProp({component:Br,components:ae,nComponents:Me,stateIdInfo:Or,replacementSource:Hr,propName:Li,allDoenetMLs:ts,compositeAttributesObj:rs,componentInfoObjects:ns,numComponentsForSource:is,publicCaseInsensitiveAliasSubstitutions:as}){let os=[],ss=[],ls=[],us=-1,cs,ds;if(Hr&&(cs=ae[Hr.componentIdx],ds=as({stateVariables:[Li],componentClass:cs.constructor})[0]),ds===void 0||ds.slice(0,12)==="__not_public"){if(Li==="__no_target_found"){const hs=await Br.stateValues.unresolvedPath,gs=hs[0].position?.start.offset,ys=hs[hs.length-1].position?.end.offset;let xs="";if(gs!=null&&ys!=null){const bs=hs[0].sourceDoc??0;xs=ts?.[bs]?.substring(gs,ys)}os.push(codedDiagnostic({type:"info",code:"doenet-i0018",args:{property:xs,component:Hr.componentType}}))}else Li!=="__prop_name_not_found"&&os.push(codedDiagnostic({type:"info",code:"doenet-i0018",args:{property:Li,component:Hr.componentType}}));return{serializedReplacements:[],propVariablesCopiedByReplacement:[],diagnostics:os,nComponents:Me}}let ps=cs.state[ds],ms=await ps.value,fs=await Br.stateValues.link;if(ps.isArray||ps.isArrayEntry){let hs,gs,ys,xs;if(ps.isArray?(hs=ps,ys=await ps.arraySize,gs=ps.getAllArrayKeys(ys,!1)):(hs=cs.state[ps.arrayStateVariable],gs=await ps.unflattenedArrayKeys,xs=await ps.arrayKeys),hs.shadowingInstructions?.hasVariableComponentType&&(await Br.stateValues.replacementSources,!hs.shadowingInstructions.createComponentOfType))return{serializedReplacements:[],propVariablesCopiedByReplacement:[],diagnostics:os,nComponents:Me};let bs=ps.wrappingComponents,vs=bs.length,Cs=is;if(ps.isArray)ys.some(Ts=>Ts===0)?Cs=0:Cs=ys.slice(0,ys.length-vs).reduce((Ts,As)=>Ts*As,1);else if(xs.length===0)Cs=0;else if(vs===0)Cs=xs.length;else if(vs>=ps.numDimensions)Cs=1;else if(vs===ps.numDimensions-1)Cs=gs.length;else{let Ts=ps.numDimensions-vs-1;Cs=flattenLevels(gs,Ts).length}if(vs===0){let Ts=flattenDeep(gs);for(let As=0;As<Cs;As++){let Ns=Ts[As];if(await Br.stateValues.removeEmptyArrayEntries){if(!Ns)continue;let $s=hs.keyToIndex(Ns);Array.isArray($s)||($s=[$s]);let Is=await hs.value;for(let Ds of $s)Is=Is[Ds];if(Is==null)continue}us++;let _s=ls[us]=[],Es=hs.shadowingInstructions.createComponentOfType;if(Array.isArray(Es)&&(Es[hs.keyToIndex(Ns)]?Es=Es[hs.keyToIndex(Ns)]:Es=Es[0]),Ns){let $s=hs.arrayVarNameFromArrayKey(Ns);_s.push($s);const Is=convertUnresolvedAttributesForComponentType({attributes:Br.attributes,componentType:Es,componentInfoObjects:ns,compositeAttributesObj:rs,nComponents:Me,stateIdInfo:Or}),Ds=Is.attributes;Me=Is.nComponents;let Vs;if(hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){Vs={};for(let Gs in hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let Os=hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables[Gs].stateVariableToShadow,ws=cs.state[Os];ws.isArray&&(Os=ws.arrayVarNameFromArrayKey(Ns)),Vs[Gs]={stateVariableToShadow:Os}}}let Ps;if(hs.shadowingInstructions.addStateVariablesShadowingStateVariables){Ps={};for(let Gs in hs.shadowingInstructions.addStateVariablesShadowingStateVariables){let Os=hs.shadowingInstructions.addStateVariablesShadowingStateVariables[Gs].stateVariableToShadow,ws=cs.state[Os];ws.isArray&&(Os=ws.arrayVarNameFromArrayKey(Ns)),Ps[Gs]={stateVariableToShadow:Os}}}if(fs){let Gs={};if(Vs){let ws=ns.allComponentClasses[Es].createAttributesObject();for(let Ws in Vs){let Rs=Vs[Ws].stateVariableToShadow,zs=ws[Ws]?.createComponentOfType;if(zs){let qs={type:"serialized",componentType:zs,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Rs}]}};Gs[Ws]={component:qs}}}}Object.assign(Gs,Ds),ss.push({type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:Gs,doenetAttributes:{},children:[],state:{},downstreamDependencies:{[Hr.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:$s,additionalStateVariableShadowing:Ps}]}})}else{let Gs={};if(Vs){let Ms=ns.allComponentClasses[Es].createAttributesObject(),Fs={};for(let Xs in Vs)if(Ms[Xs]?.createComponentOfType){let Js=Vs[Xs].stateVariableToShadow,Zs=cs.state[Js],ul=await Zs.value;Zs.isArray&&(ul=ul[Zs.keyToIndex[Ns]]),cs.state[Js].usedDefault||(Fs[Xs]=ul)}const Ls=convertAttributeValuesForComponentType({attributeValues:Fs,componentType:Es,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or}),js=Ls.attributes;if(Me=Ls.nComponents,ps.shadowingInstructions.attributesToShadow)for(let Xs of ps.shadowingInstructions.attributesToShadow)if(cs.attributes[Xs]?.component){const Js=await cs.attributes[Xs].component.serialize({copyAll:!0,copyVariants:!0});let Zs=createNewComponentIndices([Js],Me,Or);Me=Zs.nComponents,js[Xs]={component:Zs.components[0]}}else cs.attributes[Xs]?.primitive!==void 0&&(js[Xs]={primitive:JSON.parse(JSON.stringify(cs.attributes[Xs].primitive))});Object.assign(Gs,js)}Object.assign(Gs,Ds);let Os="value",ws=ns.allComponentClasses[Es];ws.primaryEssentialStateVariable?Os=ws.primaryEssentialStateVariable:ws.primaryStateVariableForDefinition&&(Os=ws.primaryStateVariableForDefinition);let Ws=hs.keyToIndex(Ns);Array.isArray(Ws)||(Ws=[Ws]);let Rs=await hs.value;for(let qs of Ws)Rs=Rs[qs];let zs={type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:Gs,doenetAttributes:{},state:{[Os]:Rs},children:[]};ss.push(zs)}}else ss.push({type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},children:[],state:{}})}}else{let Ts=async function(_s,Es,$s=!1){let Is=[],Ds=[];if(Es>1)for(let Ps of _s){let Gs=await Ts(Ps,Es-1);Is.push(...Gs.pieces),Ds.push(...Gs.propVariablesCopiedByPiece)}else for(let Ps of _s){let Gs=hs.arrayVarNameFromArrayKey(Ps),Os=[Gs],ws=hs.shadowingInstructions.createComponentOfType;Array.isArray(ws)&&(ws=ws[hs.keyToIndex(Ps)]);let Ws;if(hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){Ws={};let zs=hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables;for(let qs in zs)if(!zs[qs].addToOuterIfWrappedArray){let Ms=zs[qs].stateVariableToShadow,Fs=cs.state[Ms];Fs.isArray&&(Ms=Fs.arrayVarNameFromArrayKey(Ps)),Ws[qs]={stateVariableToShadow:Ms}}}let Rs;if(hs.shadowingInstructions.addStateVariablesShadowingStateVariables){Rs={};for(let zs in hs.shadowingInstructions.addStateVariablesShadowingStateVariables){let qs=hs.shadowingInstructions.addStateVariablesShadowingStateVariables[zs].stateVariableToShadow,Ms=cs.state[qs];Ms.isArray&&(qs=Ms.arrayVarNameFromArrayKey(Ps)),Rs[zs]={stateVariableToShadow:qs}}}if(fs){let zs={};if(Ws){let Ms=ns.allComponentClasses[ws].createAttributesObject();for(let Fs in Ws){let Ls=Ws[Fs].stateVariableToShadow,js=Ms[Fs]?.createComponentOfType;if(js){let Xs={type:"serialized",componentType:js,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Ls}]}};zs[Fs]={component:Xs}}}}Is.push({type:"serialized",componentType:ws,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:zs,doenetAttributes:{},children:[],state:{},downstreamDependencies:{[Hr.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:Gs,additionalStateVariableShadowing:Rs}]}})}else{let zs={};if(Ws){let Js=ns.allComponentClasses[ws].createAttributesObject(),Zs={};for(let nl in Ws)if(Js[nl]?.createComponentOfType){let gl=Ws[nl].stateVariableToShadow,ml=cs.state[gl],ks=await ml.value;ml.isArray&&(ks=ks[ml.keyToIndex[Ps]]),cs.state[gl].usedDefault||(Zs[nl]=ks)}const ul=convertAttributeValuesForComponentType({attributeValues:Zs,componentType:ws,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or}),ll=ul.attributes;if(Me=ul.nComponents,ps.shadowingInstructions.attributesToShadow)for(let nl of ps.shadowingInstructions.attributesToShadow)if(cs.attributes[nl]?.component){let gl=await cs.attributes[nl].component.serialize({copyAll:!0,copyVariants:!0}),ml=createNewComponentIndices([gl],Me,Or);Me=ml.nComponents,ll[nl]={component:ml.components[0]}}else cs.attributes[nl]?.primitive!==void 0&&(ll[nl]={primitive:JSON.parse(JSON.stringify(cs.attributes[nl].primitive))});Object.assign(zs,ll)}let qs="value",Ms=ns.allComponentClasses[ws];Ms.primaryEssentialStateVariable?qs=Ms.primaryEssentialStateVariable:Ms.primaryStateVariableForDefinition&&(qs=Ms.primaryStateVariableForDefinition);let Fs=hs.keyToIndex(Ps);Array.isArray(Fs)||(Fs=[Fs]);let Ls=await hs.value;for(let Xs of Fs)Ls=Ls[Xs];let js={type:"serialized",componentType:ws,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:zs,doenetAttributes:{},children:[],state:{[qs]:Ls}};Is.push(js)}Ds.push(Os)}let Vs=bs[Es-1];if(Is.length>0&&Vs&&Vs.length>0){for(let Ps=Vs.length-1;Ps>=0;Ps--){let Gs=typeof Vs[Ps]=="object"?Vs[Ps].componentType:Vs[Ps],Os=[],ws={};for(let Ws of Is)if(Ws.isAttributeNamed){let Rs=Ws.isAttributeNamed;delete Ws.isAttributeNamed,ws[Rs]={component:Ws}}else Os.push(Ws);Is=[{type:"serialized",componentType:Gs,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,children:Os,attributes:ws,doenetAttributes:{},state:{},skipSugar:!0}],typeof Vs[Ps]=="object"&&Vs[Ps].isAttributeNamed&&(Is[0].isAttributeNamed=Vs[Ps].isAttributeNamed)}Ds=[flattenDeep(Ds)]}if($s&&hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let Ps={},Gs=hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables;for(let Os in Gs)if(Gs[Os].addToOuterIfWrappedArray){let ws=Gs[Os].stateVariableToShadow;Ps[Os]={stateVariableToShadow:ws}}if(Object.keys(Ps).length>0)for(let Os of Is){let ws=Os.attributes;ws||(ws=Os.attributes={});let Rs=ns.allComponentClasses[Os.componentType].createAttributesObject();if(fs)for(let zs in Ps){let qs=Ps[zs].stateVariableToShadow,Ms=Rs[zs]?.createComponentOfType;if(Ms){let Fs={type:"serialized",componentType:Ms,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:qs}]}};ws[zs]={component:Fs}}}else{let zs={};for(let qs in Ps)if(Rs[qs]?.createComponentOfType){let Ms=Ps[qs].stateVariableToShadow,Ls=await cs.state[Ms].value;cs.state[Ms].usedDefault||(zs[qs]=Ls)}if(Object.keys(zs).length>0){const qs=convertAttributeValuesForComponentType({attributeValues:zs,componentType:Os.componentType,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or});zs=qs.attributes,Me=qs.nComponents,Object.assign(ws,zs)}}}}return{pieces:Is,propVariablesCopiedByPiece:Ds}},As=await Ts(gs,ps.numDimensions,!0),Ns=As.pieces;ls=As.propVariablesCopiedByPiece;for(let _s of Ns){if(typeof _s!="object")continue;_s.attributes||(_s.attributes={});const Es=convertUnresolvedAttributesForComponentType({attributes:Br.attributes,componentType:_s.componentType,componentInfoObjects:ns,compositeAttributesObj:rs,nComponents:Me,stateIdInfo:Or}),$s=Es.attributes;Me=Es.nComponents,Object.assign(_s.attributes,$s),fs&&(_s.downstreamDependencies={[Hr.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:ds,ignorePrimaryStateVariable:!0}]})}if(us+=Ns.length,ss.push(...Ns),Ns.length<Cs)for(let _s=Ns.length;_s<Cs;_s++){us++,ls[us]=[];let Es,$s=bs[0],Is;$s&&$s.length>0?typeof $s[0]=="object"?(Es=$s[0].componentType,Is=Object.assign({},$s[0].doenetAttributes)):Es=$s[0]:(Es=hs.shadowingInstructions.createComponentOfType,Array.isArray(Es)&&(ps.isArrayEntry?Es=Es[hs.keyToIndex(xs[_s])]:Es=Es[_s]));let Ds={type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[]};Is&&(Ds.doenetAttributes=Is),ss.push(Ds)}else if(Ns>Cs)throw Error(`Something went wrong when creating replacements for ${Br.componentIdx} as we ended up with too many replacements`)}}else{if(ps.shadowingInstructions?.hasVariableComponentType&&await ps.value,!ps.shadowingInstructions?.createComponentOfType)return{serializedReplacements:[],propVariablesCopiedByReplacement:[],diagnostics:os,nComponents:Me};if(us++,(ls[us]=[]).push(ds),ps.shadowingInstructions.createComponentOfType==="string")ss.push(await ps.value);else{const gs=convertUnresolvedAttributesForComponentType({attributes:Br.attributes,componentType:ps.shadowingInstructions.createComponentOfType,componentInfoObjects:ns,compositeAttributesObj:rs,nComponents:Me,stateIdInfo:Or}),ys=gs.attributes;if(Me=gs.nComponents,fs){let xs={};if(ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let vs=ns.allComponentClasses[ps.shadowingInstructions.createComponentOfType].createAttributesObject();for(let Cs in ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let Ts=ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables[Cs].stateVariableToShadow,As=vs[Cs]?.createComponentOfType;if(As){let Ns={type:"serialized",componentType:As,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Ts}]}};xs[Cs]={component:Ns}}}}Object.assign(xs,ys),ss.push({type:"serialized",componentType:ps.shadowingInstructions.createComponentOfType,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:xs,doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:ds,additionalStateVariableShadowing:ps.shadowingInstructions.addStateVariablesShadowingStateVariables}]}})}else{let xs={};if(ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let As=ns.allComponentClasses[ps.shadowingInstructions.createComponentOfType].createAttributesObject(),Ns={};for(let $s in ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables)if(As[$s]?.createComponentOfType&&$s!=="fixed"){let Is=ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables[$s].stateVariableToShadow,Ds=await cs.state[Is].value;cs.state[Is].usedDefault||(Ns[$s]={type:"unresolved",name:$s,children:[Ds.toString()]})}const _s=convertUnresolvedAttributesForComponentType({attributes:Ns,componentType:ps.shadowingInstructions.createComponentOfType,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or}),Es=_s.attributes;if(Me=_s.nComponents,ps.shadowingInstructions.attributesToShadow)for(let $s of ps.shadowingInstructions.attributesToShadow)if(cs.attributes[$s]?.component){let Is=await cs.attributes[$s].component.serialize({copyAll:!0,copyVariants:!0}),Ds=createNewComponentIndices([Is],Me,Or);Me=Ds.nComponents,Es[$s]={type:"component",name:$s,component:Ds.components[0]}}else cs.attributes[$s]?.primitive!==void 0&&(Es[$s]={type:"primitive",name:$s,primitive:JSON.parse(JSON.stringify(cs.attributes[$s].primitive))});Object.assign(xs,Es)}Object.assign(xs,ys);let bs="value",vs=ns.allComponentClasses[ps.shadowingInstructions.createComponentOfType];vs.primaryEssentialStateVariable?bs=vs.primaryEssentialStateVariable:vs.primaryStateVariableForDefinition&&(bs=vs.primaryStateVariableForDefinition);let Cs={type:"serialized",componentType:ps.shadowingInstructions.createComponentOfType,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:xs,doenetAttributes:{},children:[],state:{[bs]:ms}};ss.push(Cs)}}}if(await Br.stateValues.implicitProp)for(let hs of ss)hs.doenetAttributes||(hs.doenetAttributes={}),hs.doenetAttributes.fromImplicitProp=!0,hs.downstreamDependencies?.[cs.componentIdx]?.[0]&&(hs.downstreamDependencies[cs.componentIdx][0].fromImplicitProp=!0);return{serializedReplacements:ss,propVariablesCopiedByReplacement:ls,diagnostics:os,nComponents:Me}}function addChildrenFromComposite({replacements:Br,children:ae,componentInfoObjects:Me}){let Or=Br[0];Or.children||(Or.children=[]);let Hr=deepClone(ae);Me.allComponentClasses[Or.componentType].includeBlankStringChildren||(Hr=Hr.filter(ts=>typeof ts!="string"||ts.trim()!=="")),Or.children.push(...Hr)}class SegmentConstraintComponent extends BaseComponent{static componentType="_segmentConstraint";static rendererType=void 0;static inSchemaOnlyInheritAs=["_segmentConstraint"]}class VariableNameList extends MathList{static componentType="_variableNameList";static stateVariableToBeShadowed="variables";static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.variables={description:"The list of variable names.",public:!0,shadowingInstructions:{createComponentOfType:"_variableName"},isArray:!0,entryPrefixes:["var"],additionalStateVariablesDefined:["validVariables"],returnArraySizeDependencies:()=>({numComponents:{dependencyType:"stateVariable",variableName:"numComponents"}}),returnArraySize({dependencyValues:Me}){return[Me.numComponents]},returnArrayDependenciesByKey({arrayKeys:Me}){let Or={};for(let Hr of Me)Or[Hr]={math:{dependencyType:"stateVariable",variableName:"math"+(Number(Hr)+1)}};return{dependenciesByKey:Or}},arrayDefinitionByKey({dependencyValuesByKey:Me,arrayKeys:Or}){let Hr={},Li={},ts=[];for(let rs of Or){let ns=Me[rs].math,is=isValidVariable(ns);is||(ts.push(codedDiagnostic({type:"warning",code:"doenet-w0017",args:{value:ns.toString()}})),is=!1),Hr[rs]=ns,Li[rs]=is}return{setValue:{variables:Hr,validVariables:Li},sendDiagnostics:ts}}},ae}}class Variable extends MathComponent{static componentType="_variableName";static rendererType="math";static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return renameStateVariable({stateVariableDefinitions:ae,oldName:"value",newName:"valuePreValidate"}),ae.valuePreValidate.essentialVarName="value",ae.value={description:"The variable as a math expression.",public:!0,shadowingInstructions:{createComponentOfType:"_variableName"},additionalStateVariablesDefined:["validVariable"],returnDependencies:()=>({valuePreValidate:{dependencyType:"stateVariable",variableName:"valuePreValidate"}}),definition({dependencyValues:Me}){let Or=[],Hr=isValidVariable(Me.valuePreValidate);return Hr||Or.push(codedDiagnostic({type:"warning",code:"doenet-w0017",args:{value:Me.valuePreValidate.toString()}})),{setValue:{value:Me.valuePreValidate,validVariable:Hr},sendDiagnostics:Or}},inverseDefinition({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setDependency:"valuePreValidate",desiredValue:Me.value}]}}},ae}}class ListOfNumberLists extends InlineComponent{static componentType="_listOfNumberLists";static includeBlankStringChildren=!0;static removeBlankStringChildrenPostSugar=!0;static additionalSchemaChildren=["math","string"];static returnSugarInstructions(){let ae=[],Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){let ts=breakEmbeddedStringsIntoParensPieces({componentList:Or,removeParens:!0});return ts.success!==!0?{success:!1}:{success:!0,newChildren:ts.pieces.map(rs=>({type:"serialized",componentType:"numberList",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:rs,attributes:{},doenetAttributes:{},state:{}})),nComponents:Hr}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"lists",componentTypes:["numberList"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.value,ae.numLists={returnDependencies:()=>({listChildren:{dependencyType:"child",childGroups:["lists"]}}),definition({dependencyValues:Me}){return{setValue:{numLists:Me.listChildren.length}}}},ae.lists={isArray:!0,entryPrefixes:["list"],returnArraySizeDependencies:()=>({numLists:{dependencyType:"stateVariable",variableName:"numLists"}}),returnArraySize({dependencyValues:Me}){return[Me.numLists]},returnArrayDependenciesByKey({arrayKeys:Me}){let Or={};for(let Hr of Me)Or[Hr]={listChildren:{dependencyType:"child",childGroups:["lists"],variableNames:["values"],childIndices:[Hr]}};return{dependenciesByKey:Or}},arrayDefinitionByKey({dependencyValuesByKey:Me,arrayKeys:Or}){let Hr={};for(let Li of Or)if(Me[Li].listChildren&&Me[Li].listChildren.length===1){let ts=Me[Li].listChildren[0];Hr[Li]=ts.stateValues.values}return{setValue:{lists:Hr}}}},ae}}class DirectionComponent extends BaseComponent{static componentType="_directionComponent";static rendererType=void 0;static primaryStateVariableForDefinition="directionShadow";static additionalSchemaChildren=["math","string"];static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnNumberDisplayAttributes()),ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){return Or.length===0?{success:!1}:Or.length>1||typeof Or[0]=="string"?{success:!0,newChildren:[{type:"serialized",componentType:"math",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}],nComponents:Hr}:{success:!1}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae.push({group:"directions",componentTypes:["_directionComponent"]}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.directionShadow={defaultValue:Context.fromAst(["vector",1,0]),hasEssential:!0,essentialVarName:"direction",set:convertValueToMathExpression,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{directionShadow:!0}}),inverseDefinition:function({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setEssentialValue:"directionShadow",value:convertValueToMathExpression(Me.directionShadow)}]}}},ae.unnormalizedDirection={returnDependencies:()=>({directionChild:{dependencyType:"child",childGroups:["directions"],variableNames:["unnormalizedDirection"]},directionShadow:{dependencyType:"stateVariable",variableName:"directionShadow"}}),definition({dependencyValues:Me}){let Or;return Me.directionChild.length>0?Or=Me.directionChild[0].stateValues.unnormalizedDirection:Or=Me.directionShadow,Or=Or.tuples_to_vectors().expand().simplify(),{setValue:{unnormalizedDirection:Or}}},inverseDefinition({desiredStateVariableValues:Me,dependencyValues:Or}){let Hr;return Or.directionChild.length>0?Hr=[{setDependency:"directionChild",desiredValue:Me.unnormalizedDirection,childIndex:0,variableIndex:0}]:Hr=[{setDependency:"directionShadow",desiredValue:Me.unnormalizedDirection}],{success:!0,instructions:Hr}}},ae.numDimensions={returnDependencies:()=>({unnormalizedDirection:{dependencyType:"stateVariable",variableName:"unnormalizedDirection"}}),definition({dependencyValues:Me}){let Or=Me.unnormalizedDirection.tree,Hr;return Array.isArray(Or)&&vectorOperators.includes(Or[0])?Hr=Or.length-1:Hr=1,{setValue:{numDimensions:Hr}}}},ae.direction={description:"The normalized direction as a unit vector.",public:!0,shadowingInstructions:{createComponentOfType:"math",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing(),returnWrappingComponents(Me){return Me==="x"?[]:[["vector",{componentType:"mathList",isAttributeNamed:"xs"}]]}},isArray:!0,entryPrefixes:["x"],hasEssential:!0,essentialVarName:"direction2",set:convertValueToMathExpression,returnArraySizeDependencies:()=>({numDimensions:{dependencyType:"stateVariable",variableName:"numDimensions"}}),returnArraySize({dependencyValues:Me}){return[Me.numDimensions]},returnArrayDependenciesByKey(){return{globalDependencies:{unnormalizedDirection:{dependencyType:"stateVariable",variableName:"unnormalizedDirection"}}}},arrayDefinitionByKey:function({globalDependencyValues:Me,arraySize:Or}){let Hr={},Li=Me.unnormalizedDirection.tree;if(Array.isArray(Li)&&vectorOperators.includes(Li[0])){let ts=[],rs=Or[0],ns=0,is=!0;for(let as=0;as<rs;as++){let os=Me.unnormalizedDirection.get_component(as).evaluate_to_constant();if(Number.isFinite(os))ts.push(os),ns+=os*os;else{is=!1;break}}if(is){let as=Math.sqrt(ns);for(let os=0;os<rs;os++)Hr[os.toString()]=Context.fromAst(ts[os]/as)}else for(let as=0;as<rs;as++)Hr[as.toString()]=Context.fromAst("_")}else Hr[0]=Context.fromAst(1);return{setValue:{direction:Hr}}},inverseArrayDefinitionByKey({desiredStateVariableValues:Me,globalDependencyValues:Or,arraySize:Hr}){let Li=[];if(Hr[0]>1){let ts=0;for(let ns=0;ns<Hr[0];ns++){let is=Or.unnormalizedDirection.get_component(ns).evaluate_to_constant();ts+=is*is}Number.isFinite(ts)?ts=Math.sqrt(ts):ts=1;let rs=["vector"];for(let ns in Me.direction)rs[Number(ns)+1]=Me.direction[ns].tree*ts;rs.length=Hr[0]+1,Li.push({setDependency:"unnormalizedDirection",desiredValue:Context.fromAst(rs)})}return{success:!0,instructions:Li}}},ae}}class ErrorComponent extends BlockComponent{static componentType="_error";static renderChildren=!0;static createAttributesObject(){let ae=super.createAttributesObject();return ae.message={createComponentOfType:"text",createStateVariable:"message",defaultValue:"",public:!0,forRenderer:!0,description:"The error message describing what went wrong."},ae}static returnChildGroups(){return[{group:"errors",componentTypes:["_error"]},{group:"any",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.hidden={returnDependencies:()=>({}),definition:()=>({setValue:{hidden:!1}})},ae.code={forRenderer:!0,hasEssential:!0,defaultValue:null,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{code:!0}})},ae.args={forRenderer:!0,hasEssential:!0,defaultValue:null,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{args:!0}})},ae.rangeMessage={description:"A message describing where in the source document the error was found.",forRenderer:!0,public:!0,shadowingInstructions:{createComponentOfType:"text"},additionalStateVariablesDefined:[{variableName:"rangeArgs",forRenderer:!0}],returnDependencies:()=>({position:{dependencyType:"position"}}),definition({dependencyValues:Me}){let Or=Me.position;return Or?.start.line===void 0?{setValue:{rangeMessage:"",rangeArgs:null}}:{setValue:{rangeMessage:"Found on "+printDoenetMLrange(Or)+".",rangeArgs:{span:Or.start.line===Or.end.line?"line":"lines",startLine:String(Or.start.line),endLine:String(Or.end.line)}}}}},ae.showMessage={forRenderer:!0,returnDependencies:()=>({childErrors:{dependencyType:"child",childGroups:["errors"],variableNames:["message"]},message:{dependencyType:"stateVariable",variableName:"message"}}),definition({dependencyValues:Me}){return{setValue:{showMessage:!Me.childErrors.some(Hr=>Hr.stateValues.message===Me.message)}}}},ae}}class Comment extends BaseComponent{static componentType="_comment";static rendererType=void 0;static returnChildGroups(){return[{group:"any",componentTypes:["_base"]}]}}const componentTypeArray=[...Object.values(Aliases),...Object.values(MMeMen),...Object.values(MdMdnMrow),...Object.values(BooleanOperators),...Object.values(BooleanOperatorsOfMath),...Object.values(MathOperators),...Object.values(MathListOperators),...Object.values(ListIndexOperators),...Object.values(CountOperators),BarChart,...Object.values(FunctionOperators),...Object.values(TextOperatorsOfMath),...Object.values(Extrema$1),...Object.values(ParagraphMarkup),...Object.values(SingleCharacterComponents),...Object.values(Sectioning),...Object.values(Lists),...Object.values(DynamicalSystems),...Object.values(Chemistry),...Object.values(FeedbackDefinitions$1),...Object.values(StyleDefinitions$1),...Object.values(StylePalette$1),...Object.values(SideBySide$1),...Object.values(ComponentWithSelectableType$1),...Object.values(Indexing),...Object.values(Divisions),...Object.values(Verbatim),...Object.values(Paginator$1),...Object.values(MatrixInput$1),...Object.values(FractionInput$1),...Object.values(Solution$1),Document,Text,TextList$1,TextList2,P$2,BooleanComponent,BooleanList,MathComponent,MathList,TupleList,NumberList,Copy,Collect,Ref,Point,Coords,Line,LineSegment,Ray,Polyline,Polygon,Triangle,Rectangle,RegularPolygon,Circle,Parabola,Curve,BezierControls,ControlVectors,Vector,Angle,Answer,Award,When,MathInput,Textinput,BooleanInput,Choiceinput,Choice,NumberComponent,Integer,Graph$1,Annotations,Annotation,Function$1,PiecewiseFunction,Interval,Option$1,Sequence,Slider,Spreadsheet,DiscreteSimulationResultList,DiscreteSimulationResultPolyline,Cell,Row,Column,CellBlock,Tabular,Table,Figure,Markers,Panel,Repeat,RepeatForSequence,Pegboard,Constraints,ConstrainToGrid,ConstrainToGraph,AttractToGrid,ConstrainTo,AttractTo,ConstraintUnion,AttractToConstraint,ConstrainToInterior,Intersection,ConstrainToAngles,AttractToAngles,ConditionalContent,AsList,VariantControl,TextListFromString,SelectFromSequence,Select,Group,AnimateFromSequence,Evaluate,SelectRandomNumbers,SampleRandomNumbers,SampleMultivariateRandomNumber,SelectPrimeNumbers,SamplePrimeNumbers,Substitute,PeriodicSet,Image,Video,Embed,Hint,IntComma,Pluralize,Feedback,CollaborateGroups,CollaborateGroupSetup,ConsiderAsResponses,Case,Lorem,UpdateValue,CallAction,triggerSet,FunctionIterates,Module,ModuleAttributes,Setup,Footnote,Caption,Endpoint,Sort,SortIndices,Shuffle,SolveEquations,PostponeRenderContainer,SubsetOfRealsInput,SubsetOfReals,Split,BestFitLine,RegionBetweenCurveXAxis,RegionBetweenCurves,SlopeField,VectorField,RegionHalfPlane,CodeEditor,HasSameFactoring,DataFrame,SummaryStatistics,Legend,Label,MatchesPattern,Matrix,EigenDecomposition,Latex,BlockQuote,Description,StickyGroup,Pretzel,PretzelArranger,Cascade,DynamicChildren,ShortDescription,BaseComponent,InlineComponent,BlockComponent,BlockScoredComponent,GraphicalComponent,ConstraintComponent,SegmentConstraintComponent,Input,CompositeComponent,PointList,IntervalList,LineListComponent,VectorListComponent,AngleListComponent,BooleanOperator,BooleanBaseOperatorOfMath,MathOperator,MathOperatorOneInput,FunctionOperator,...Object.values(ComponentSize$1),...Object.values(SectioningComponent$1),InlineRenderInlineChildren,TextOrInline,SingleCharacter,VariableNameList,Variable,ListOfNumberLists,DirectionComponent,ErrorComponent,Comment];function allComponentClasses(){const Br={},ae=new Set;for(let Me of componentTypeArray){let Or=Me.componentType;if(Or===void 0)throw Error("Cannot create component as componentType is undefined for class "+Me);let Hr=Or.toLowerCase();if(ae.has(Hr))throw Error("component type "+Or+" defined in two classes");Br[Or]=Me,ae.add(Hr)}return Br}function componentTypesCreatingVariants(){const Br={},ae=new Set;for(let Me of componentTypeArray)if(Me.createsVariants){let Or=Me.componentType;if(Or===void 0)throw Error("Cannot create component as componentType is undefined for class "+Me);let Hr=Or.toLowerCase();if(ae.has(Hr))throw Error("component type "+Or+" defined in two classes");Br[Or]=Me,ae.add(Hr)}return Br}function createComponentInfoObjects(){const Br=allComponentClasses(),ae=componentTypesCreatingVariants(),Me={};for(const is in Br)Me[is.toLowerCase()]=is;const Or={};for(const is in Br)Object.defineProperty(Or,is,{get:(function(){const as=Br[is].returnStateVariableInfo();return delete Or[is],Or[is]=as}).bind(this),configurable:!0});const Hr={};for(const is in Br)Object.defineProperty(Hr,is,{get:(function(){const as=Br[is].returnStateVariableInfo({onlyPublic:!0});return delete Hr[is],Hr[is]=as}).bind(this),configurable:!0});function Li({inheritedComponentType:is,baseComponentType:as}){if(is===as)return!0;if(is==="string")return as==="_base"||as==="_inline";if(as==="string")return!1;let os=Br[as];return os?os.isPrototypeOf(Br[is]):!1}function ts({componentType:is,includeNonStandard:as=!0}){const os=Br[is];return os?Li({inheritedComponentType:is,baseComponentType:"_composite"})&&(as||!os.treatAsComponentForRecursiveReplacements):!1}const rs=(is,as)=>Li({inheritedComponentType:is,baseComponentType:as});return{allComponentClasses:Br,componentTypesCreatingVariants:ae,componentTypeLowerCaseMapping:Me,isInheritedComponentType:Li,isCompositeComponent:ts,stateVariableInfo:Or,publicStateVariableInfo:Hr,componentIsSpecifiedType:(is,as)=>rs(is.componentType,as)||is.attributes?.createComponentOfType?.primitive!==void 0&&rs(is.attributes?.createComponentOfType?.primitive.value,as)}}async function returnAllPossibleVariants(Br,ae,Me){let Hr=getNumVariants({serializedComponent:Br,componentInfoObjects:ae,infoDiagnostics:Me}).numVariants,Li;return Br.variants?.allPossibleVariants?Li=Br.variants.allPossibleVariants:Li=[...Array(Hr).keys()].map(ts=>indexToLowercaseLetters(ts+1)),Li}function indexToLowercaseLetters(Br){return numberToLetters(Br,!0)}class PublicDoenetMLCore{constructor(){this.core=null,this.initialized=!1,this.doenetML="",this.flags={},this.localeData=DEFAULT_LOCALE_DATA}setSource(ae){this.doenetML=ae}setFlags(ae){this.flags=ae}setLocaleData(ae){this.localeData=ae}async initializeWorker({activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr,normalizedRoot:Li,addNodesToResolver:ts,replaceIndexResolutionsInResolver:rs,deleteNodesFromResolver:ns,resolvePath:is,calculateRootNames:as}){this.addNodesToResolver=ts,this.replaceIndexResolutionsInResolver=rs,this.deleteNodesFromResolver=ns,this.resolvePath=is,this.calculateRootNames=as;let os=createComponentInfoObjects();const{document:ss,nComponents:ls,diagnostics:us,sources:cs}=await normalizedDastToSerializedComponents(Li,os,ts);this.coreBaseArgs={doenetML:this.doenetML,flags:this.flags,localeData:this.localeData,activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr,serializedDocument:ss,nComponentsInit:ls,allDoenetMLs:cs,preliminaryDiagnostics:us,componentInfoObjects:os},this.initialized=!0;let ds=await returnAllPossibleVariants(this.coreBaseArgs.serializedDocument,this.coreBaseArgs.componentInfoObjects,us);const ps=this.coreBaseArgs.serializedDocument.children.reduce((ms,fs)=>(typeof fs=="object"&&(ms[fs.componentType]=(ms[fs.componentType]??0)+1),ms),{});return{allPossibleVariants:ds,baseComponentCounts:ps}}async createCoreGenerateDast(ae,Me,Or,Hr,Li,ts,rs,ns){if(this.initialized&&!this.coreBaseArgs?.serializedDocument)return{success:!1,errMsg:"Cannot create the core a second time from the same worker; the serialized document was released after the first core was created."};let is={...this.coreBaseArgs,...ae,addNodesToResolver:this.addNodesToResolver,replaceIndexResolutionsInResolver:this.replaceIndexResolutionsInResolver,deleteNodesFromResolver:this.deleteNodesFromResolver,resolvePath:this.resolvePath,calculateRootNames:this.calculateRootNames,updateRenderersCallback:Me,reportScoreAndStateCallback:Or,requestAnimationFrame:Hr,cancelAnimationFrame:Li,copyToClipboard:ts,sendEvent:rs,requestSolutionView:ns};if(this.initialized){this.core=new Core(is),this.coreBaseArgs.serializedDocument=void 0;try{return{success:!0,...await this.core.generateDast()}}catch(as){return console.error(as),{success:!1,errMsg:typeof as=="object"&&as&&"message"in as&&typeof as.message=="string"?as.message:""}}}else return{success:!1,coreId:is.coreId,errMsg:"Internal error. Cannot create document. Core not initialized."}}async requestAction(ae){if(!this.core)return{success:!1,errMsg:"Cannot request action before core is created"};try{return await this.core.requestAction(ae)}catch(Me){return console.error(Me),{success:!1,errMsg:typeof Me=="object"&&Me&&"message"in Me&&typeof Me.message=="string"?Me.message:"",actionId:ae.args?.actionId}}}async returnAllStateVariables(ae=!1,Me=!1){if(!this.core?.components)return{};const Or={},Hr=this.core.components;ae&&console.log(Hr);for(let Li in Hr){const ts=Number(Li);let rs=Hr[ts];if(!rs)continue;Or[ts]={componentIdx:ts,componentType:rs.componentType,stateValues:{},activeChildren:[],sharedParameters:null};let ns=Or[ts];for(let is in rs.state){if(["replacements","recursiveReplacements","fullRecursiveReplacements"].includes(is)&&this.core.componentInfoObjects.isCompositeComponent({componentType:rs.componentType})&&!rs.isExpanded)continue;const as=await rs.state[is].value;ns.stateValues[is]=Me?as:removeFunctionsMathExpressionClass(as)}ns.activeChildren=rs.activeChildren.map(is=>is.componentIdx?{componentIdx:is.componentIdx,componentType:is.componentType}:is),rs.replacements&&(ns.replacements=rs.replacements.map(is=>is.componentIdx?{componentIdx:is.componentIdx,componentType:is.componentType}:is),rs.replacementsToWithhold!==void 0&&(ns.replacementsToWithhold=rs.replacementsToWithhold)),rs.replacementOf&&(ns.replacementOf=rs.replacementOf.componentIdx),ns.sharedParameters=Me?rs.sharedParameters:removeFunctionsMathExpressionClass(rs.sharedParameters)}return Or}async terminate(){this.core&&(await this.core.terminate(),this.core=null)}handleVisibilityChange(ae){this.core?.handleVisibilityChange(ae)}navigatingToComponent(ae,Me){this.core&&handleNavigatingToComponent({core:this.core,componentIdx:ae,hash:Me}).catch(reportTimerError(TimerLabels.navigateToComponent))}async submitAllAnswers(){await this.core?.requestAction({componentIdx:this.core.documentIdx,actionName:"submitAllAnswers",args:{}}),await this.core?.saveImmediately()}async saveImmediately(){await this.core?.saveImmediately()}async flushState(){return await this.core?.flushState()??!1}}var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(Br){return Br&&Br.__esModule&&Object.prototype.hasOwnProperty.call(Br,"default")?Br.default:Br}var colorName$1,hasRequiredColorName;function requireColorName(){return hasRequiredColorName||(hasRequiredColorName=1,colorName$1={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}),colorName$1}var colorNameExports=requireColorName();const colorName=getDefaultExportFromCjs(colorNameExports);var r$2={grad:.9,turn:360,rad:360/(2*Math.PI)},t$3=function(Br){return typeof Br=="string"?Br.length>0:typeof Br=="number"},n$2=function(Br,ae,Me){return ae===void 0&&(ae=0),Me===void 0&&(Me=Math.pow(10,ae)),Math.round(Me*Br)/Me+0},e$2=function(Br,ae,Me){return ae===void 0&&(ae=0),Me===void 0&&(Me=1),Br>Me?Me:Br>ae?Br:ae},u$2=function(Br){return(Br=isFinite(Br)?Br%360:0)>0?Br:Br+360},a$2=function(Br){return{r:e$2(Br.r,0,255),g:e$2(Br.g,0,255),b:e$2(Br.b,0,255),a:e$2(Br.a)}},o$3=function(Br){return{r:n$2(Br.r),g:n$2(Br.g),b:n$2(Br.b),a:n$2(Br.a,3)}},i$2=/^#([0-9a-f]{3,8})$/i,s$1=function(Br){var ae=Br.toString(16);return ae.length<2?"0"+ae:ae},h$2=function(Br){var ae=Br.r,Me=Br.g,Or=Br.b,Hr=Br.a,Li=Math.max(ae,Me,Or),ts=Li-Math.min(ae,Me,Or),rs=ts?Li===ae?(Me-Or)/ts:Li===Me?2+(Or-ae)/ts:4+(ae-Me)/ts:0;return{h:60*(rs<0?rs+6:rs),s:Li?ts/Li*100:0,v:Li/255*100,a:Hr}},b$2=function(Br){var ae=Br.h,Me=Br.s,Or=Br.v,Hr=Br.a;ae=ae/360*6,Me/=100,Or/=100;var Li=Math.floor(ae),ts=Or*(1-Me),rs=Or*(1-(ae-Li)*Me),ns=Or*(1-(1-ae+Li)*Me),is=Li%6;return{r:255*[Or,rs,ts,ts,ns,Or][is],g:255*[ns,Or,Or,rs,ts,ts][is],b:255*[ts,ts,ns,Or,Or,rs][is],a:Hr}},g=function(Br){return{h:u$2(Br.h),s:e$2(Br.s,0,100),l:e$2(Br.l,0,100),a:e$2(Br.a)}},d$1=function(Br){return{h:n$2(Br.h),s:n$2(Br.s),l:n$2(Br.l),a:n$2(Br.a,3)}},f$1=function(Br){return b$2((Me=(ae=Br).s,{h:ae.h,s:(Me*=((Or=ae.l)<50?Or:100-Or)/100)>0?2*Me/(Or+Me)*100:0,v:Or+Me,a:ae.a}));var ae,Me,Or},c$1=function(Br){return{h:(ae=h$2(Br)).h,s:(Hr=(200-(Me=ae.s))*(Or=ae.v)/100)>0&&Hr<200?Me*Or/100/(Hr<=100?Hr:200-Hr)*100:0,l:Hr/2,a:ae.a};var ae,Me,Or,Hr},l$2=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,p$2=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,v$1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,m=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,y$1={string:[[function(Br){var ae=i$2.exec(Br);return ae?(Br=ae[1]).length<=4?{r:parseInt(Br[0]+Br[0],16),g:parseInt(Br[1]+Br[1],16),b:parseInt(Br[2]+Br[2],16),a:Br.length===4?n$2(parseInt(Br[3]+Br[3],16)/255,2):1}:Br.length===6||Br.length===8?{r:parseInt(Br.substr(0,2),16),g:parseInt(Br.substr(2,2),16),b:parseInt(Br.substr(4,2),16),a:Br.length===8?n$2(parseInt(Br.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(Br){var ae=v$1.exec(Br)||m.exec(Br);return ae?ae[2]!==ae[4]||ae[4]!==ae[6]?null:a$2({r:Number(ae[1])/(ae[2]?100/255:1),g:Number(ae[3])/(ae[4]?100/255:1),b:Number(ae[5])/(ae[6]?100/255:1),a:ae[7]===void 0?1:Number(ae[7])/(ae[8]?100:1)}):null},"rgb"],[function(Br){var ae=l$2.exec(Br)||p$2.exec(Br);if(!ae)return null;var Me,Or,Hr=g({h:(Me=ae[1],Or=ae[2],Or===void 0&&(Or="deg"),Number(Me)*(r$2[Or]||1)),s:Number(ae[3]),l:Number(ae[4]),a:ae[5]===void 0?1:Number(ae[5])/(ae[6]?100:1)});return f$1(Hr)},"hsl"]],object:[[function(Br){var ae=Br.r,Me=Br.g,Or=Br.b,Hr=Br.a,Li=Hr===void 0?1:Hr;return t$3(ae)&&t$3(Me)&&t$3(Or)?a$2({r:Number(ae),g:Number(Me),b:Number(Or),a:Number(Li)}):null},"rgb"],[function(Br){var ae=Br.h,Me=Br.s,Or=Br.l,Hr=Br.a,Li=Hr===void 0?1:Hr;if(!t$3(ae)||!t$3(Me)||!t$3(Or))return null;var ts=g({h:Number(ae),s:Number(Me),l:Number(Or),a:Number(Li)});return f$1(ts)},"hsl"],[function(Br){var ae=Br.h,Me=Br.s,Or=Br.v,Hr=Br.a,Li=Hr===void 0?1:Hr;if(!t$3(ae)||!t$3(Me)||!t$3(Or))return null;var ts=(function(rs){return{h:u$2(rs.h),s:e$2(rs.s,0,100),v:e$2(rs.v,0,100),a:e$2(rs.a)}})({h:Number(ae),s:Number(Me),v:Number(Or),a:Number(Li)});return b$2(ts)},"hsv"]]},N=function(Br,ae){for(var Me=0;Me<ae.length;Me++){var Or=ae[Me][0](Br);if(Or)return[Or,ae[Me][1]]}return[null,void 0]},x$1=function(Br){return typeof Br=="string"?N(Br.trim(),y$1.string):typeof Br=="object"&&Br!==null?N(Br,y$1.object):[null,void 0]},M$2=function(Br,ae){var Me=c$1(Br);return{h:Me.h,s:e$2(Me.s+100*ae,0,100),l:Me.l,a:Me.a}},H=function(Br){return(299*Br.r+587*Br.g+114*Br.b)/1e3/255},$=function(Br,ae){var Me=c$1(Br);return{h:Me.h,s:Me.s,l:e$2(Me.l+100*ae,0,100),a:Me.a}},j=(function(){function Br(ae){this.parsed=x$1(ae)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return Br.prototype.isValid=function(){return this.parsed!==null},Br.prototype.brightness=function(){return n$2(H(this.rgba),2)},Br.prototype.isDark=function(){return H(this.rgba)<.5},Br.prototype.isLight=function(){return H(this.rgba)>=.5},Br.prototype.toHex=function(){return ae=o$3(this.rgba),Me=ae.r,Or=ae.g,Hr=ae.b,ts=(Li=ae.a)<1?s$1(n$2(255*Li)):"","#"+s$1(Me)+s$1(Or)+s$1(Hr)+ts;var ae,Me,Or,Hr,Li,ts},Br.prototype.toRgb=function(){return o$3(this.rgba)},Br.prototype.toRgbString=function(){return ae=o$3(this.rgba),Me=ae.r,Or=ae.g,Hr=ae.b,(Li=ae.a)<1?"rgba("+Me+", "+Or+", "+Hr+", "+Li+")":"rgb("+Me+", "+Or+", "+Hr+")";var ae,Me,Or,Hr,Li},Br.prototype.toHsl=function(){return d$1(c$1(this.rgba))},Br.prototype.toHslString=function(){return ae=d$1(c$1(this.rgba)),Me=ae.h,Or=ae.s,Hr=ae.l,(Li=ae.a)<1?"hsla("+Me+", "+Or+"%, "+Hr+"%, "+Li+")":"hsl("+Me+", "+Or+"%, "+Hr+"%)";var ae,Me,Or,Hr,Li},Br.prototype.toHsv=function(){return ae=h$2(this.rgba),{h:n$2(ae.h),s:n$2(ae.s),v:n$2(ae.v),a:n$2(ae.a,3)};var ae},Br.prototype.invert=function(){return w$1({r:255-(ae=this.rgba).r,g:255-ae.g,b:255-ae.b,a:ae.a});var ae},Br.prototype.saturate=function(ae){return ae===void 0&&(ae=.1),w$1(M$2(this.rgba,ae))},Br.prototype.desaturate=function(ae){return ae===void 0&&(ae=.1),w$1(M$2(this.rgba,-ae))},Br.prototype.grayscale=function(){return w$1(M$2(this.rgba,-1))},Br.prototype.lighten=function(ae){return ae===void 0&&(ae=.1),w$1($(this.rgba,ae))},Br.prototype.darken=function(ae){return ae===void 0&&(ae=.1),w$1($(this.rgba,-ae))},Br.prototype.rotate=function(ae){return ae===void 0&&(ae=15),this.hue(this.hue()+ae)},Br.prototype.alpha=function(ae){return typeof ae=="number"?w$1({r:(Me=this.rgba).r,g:Me.g,b:Me.b,a:ae}):n$2(this.rgba.a,3);var Me},Br.prototype.hue=function(ae){var Me=c$1(this.rgba);return typeof ae=="number"?w$1({h:ae,s:Me.s,l:Me.l,a:Me.a}):n$2(Me.h)},Br.prototype.isEqual=function(ae){return this.toHex()===w$1(ae).toHex()},Br})(),w$1=function(Br){return Br instanceof j?Br:new j(Br)},S=[],k=function(Br){Br.forEach(function(ae){S.indexOf(ae)<0&&(ae(j,y$1),S.push(ae))})},a$1=function(Br){return typeof Br=="string"?Br.length>0:typeof Br=="number"},t$2=function(Br,ae,Me){return ae===void 0&&(ae=0),Me===void 0&&(Me=Math.pow(10,ae)),Math.round(Me*Br)/Me+0},o$2=function(Br,ae,Me){return ae===void 0&&(ae=0),Me===void 0&&(Me=1),Br>Me?Me:Br>ae?Br:ae},r$1=function(Br){var ae=Br/255;return ae<.04045?ae/12.92:Math.pow((ae+.055)/1.055,2.4)},h$1=function(Br){return 255*(Br>.0031308?1.055*Math.pow(Br,1/2.4)-.055:12.92*Br)},n$1=96.422,p$1=100,M$1=82.521,u$1=function(Br){var ae,Me,Or={x:.9555766*(ae=Br).x+-.0230393*ae.y+.0631636*ae.z,y:-.0282895*ae.x+1.0099416*ae.y+.0210077*ae.z,z:.0122982*ae.x+-.020483*ae.y+1.3299098*ae.z};return Me={r:h$1(.032404542*Or.x-.015371385*Or.y-.004985314*Or.z),g:h$1(-.00969266*Or.x+.018760108*Or.y+41556e-8*Or.z),b:h$1(556434e-9*Or.x-.002040259*Or.y+.010572252*Or.z),a:Br.a},{r:o$2(Me.r,0,255),g:o$2(Me.g,0,255),b:o$2(Me.b,0,255),a:o$2(Me.a)}},e$1=function(Br){var ae=r$1(Br.r),Me=r$1(Br.g),Or=r$1(Br.b);return(function(Hr){return{x:o$2(Hr.x,0,n$1),y:o$2(Hr.y,0,p$1),z:o$2(Hr.z,0,M$1),a:o$2(Hr.a)}})((function(Hr){return{x:1.0478112*Hr.x+.0228866*Hr.y+-.050127*Hr.z,y:.0295424*Hr.x+.9904844*Hr.y+-.0170491*Hr.z,z:-.0092345*Hr.x+.0150436*Hr.y+.7521316*Hr.z,a:Hr.a}})({x:100*(.4124564*ae+.3575761*Me+.1804375*Or),y:100*(.2126729*ae+.7151522*Me+.072175*Or),z:100*(.0193339*ae+.119192*Me+.9503041*Or),a:Br.a}))},w=216/24389,b$1=24389/27,i$1=function(Br){var ae=Br.l,Me=Br.a,Or=Br.b,Hr=Br.alpha,Li=Hr===void 0?1:Hr;if(!a$1(ae)||!a$1(Me)||!a$1(Or))return null;var ts=(function(rs){return{l:o$2(rs.l,0,400),a:rs.a,b:rs.b,alpha:o$2(rs.alpha)}})({l:Number(ae),a:Number(Me),b:Number(Or),alpha:Number(Li)});return l$1(ts)},l$1=function(Br){var ae=(Br.l+16)/116,Me=Br.a/500+ae,Or=ae-Br.b/200;return u$1({x:(Math.pow(Me,3)>w?Math.pow(Me,3):(116*Me-16)/b$1)*n$1,y:(Br.l>8?Math.pow((Br.l+16)/116,3):Br.l/b$1)*p$1,z:(Math.pow(Or,3)>w?Math.pow(Or,3):(116*Or-16)/b$1)*M$1,a:Br.alpha})};function labPlugin(Br,ae){Br.prototype.toLab=function(){return Or=e$1(this.rgba),Li=Or.y/p$1,ts=Or.z/M$1,Hr=(Hr=Or.x/n$1)>w?Math.cbrt(Hr):(b$1*Hr+16)/116,Me={l:116*(Li=Li>w?Math.cbrt(Li):(b$1*Li+16)/116)-16,a:500*(Hr-Li),b:200*(Li-(ts=ts>w?Math.cbrt(ts):(b$1*ts+16)/116)),alpha:Or.a},{l:t$2(Me.l,2),a:t$2(Me.a,2),b:t$2(Me.b,2),alpha:t$2(Me.alpha,3)};var Me,Or,Hr,Li,ts},Br.prototype.delta=function(Me){Me===void 0&&(Me="#FFF");var Or=Me instanceof Br?Me:new Br(Me),Hr=(function(Li,ts){var rs=Li.l,ns=Li.a,is=Li.b,as=ts.l,os=ts.a,ss=ts.b,ls=180/Math.PI,us=Math.PI/180,cs=Math.pow(Math.pow(ns,2)+Math.pow(is,2),.5),ds=Math.pow(Math.pow(os,2)+Math.pow(ss,2),.5),ps=(rs+as)/2,ms=Math.pow((cs+ds)/2,7),fs=.5*(1-Math.pow(ms/(ms+Math.pow(25,7)),.5)),hs=ns*(1+fs),gs=os*(1+fs),ys=Math.pow(Math.pow(hs,2)+Math.pow(is,2),.5),xs=Math.pow(Math.pow(gs,2)+Math.pow(ss,2),.5),bs=(ys+xs)/2,vs=hs===0&&is===0?0:Math.atan2(is,hs)*ls,Cs=gs===0&&ss===0?0:Math.atan2(ss,gs)*ls;vs<0&&(vs+=360),Cs<0&&(Cs+=360);var Ts=Cs-vs,As=Math.abs(Cs-vs);As>180&&Cs<=vs?Ts+=360:As>180&&Cs>vs&&(Ts-=360);var Ns=vs+Cs;As<=180?Ns/=2:Ns=(vs+Cs<360?Ns+360:Ns-360)/2;var _s=1-.17*Math.cos(us*(Ns-30))+.24*Math.cos(2*us*Ns)+.32*Math.cos(us*(3*Ns+6))-.2*Math.cos(us*(4*Ns-63)),Es=as-rs,$s=xs-ys,Is=2*Math.sin(us*Ts/2)*Math.pow(ys*xs,.5),Ds=1+.015*Math.pow(ps-50,2)/Math.pow(20+Math.pow(ps-50,2),.5),Vs=1+.045*bs,Ps=1+.015*bs*_s,Gs=30*Math.exp(-1*Math.pow((Ns-275)/25,2)),Os=-2*Math.pow(ms/(ms+Math.pow(25,7)),.5)*Math.sin(2*us*Gs);return Math.pow(Math.pow(Es/1/Ds,2)+Math.pow($s/1/Vs,2)+Math.pow(Is/1/Ps,2)+Os*$s*Is/(1*Vs*1*Ps),.5)})(this.toLab(),Or.toLab())/100;return o$2(t$2(Hr,3))},ae.object.push([i$1,"lab"])}var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t$1=function(Br){return typeof Br=="string"?Br.length>0:typeof Br=="number"},a=function(Br,ae,Me){return ae===void 0&&(ae=0),Me===void 0&&(Me=Math.pow(10,ae)),Math.round(Me*Br)/Me+0},n=function(Br,ae,Me){return ae===void 0&&(ae=0),Me===void 0&&(Me=1),Br>Me?Me:Br>ae?Br:ae},u=function(Br){var ae=Br/255;return ae<.04045?ae/12.92:Math.pow((ae+.055)/1.055,2.4)},h=function(Br){return 255*(Br>.0031308?1.055*Math.pow(Br,1/2.4)-.055:12.92*Br)},o$1=96.422,e=100,c=82.521,i=function(Br){var ae,Me,Or={x:.9555766*(ae=Br).x+-.0230393*ae.y+.0631636*ae.z,y:-.0282895*ae.x+1.0099416*ae.y+.0210077*ae.z,z:.0122982*ae.x+-.020483*ae.y+1.3299098*ae.z};return Me={r:h(.032404542*Or.x-.015371385*Or.y-.004985314*Or.z),g:h(-.00969266*Or.x+.018760108*Or.y+41556e-8*Or.z),b:h(556434e-9*Or.x-.002040259*Or.y+.010572252*Or.z),a:Br.a},{r:n(Me.r,0,255),g:n(Me.g,0,255),b:n(Me.b,0,255),a:n(Me.a)}},l=function(Br){var ae=u(Br.r),Me=u(Br.g),Or=u(Br.b);return(function(Hr){return{x:n(Hr.x,0,o$1),y:n(Hr.y,0,e),z:n(Hr.z,0,c),a:n(Hr.a)}})((function(Hr){return{x:1.0478112*Hr.x+.0228866*Hr.y+-.050127*Hr.z,y:.0295424*Hr.x+.9904844*Hr.y+-.0170491*Hr.z,z:-.0092345*Hr.x+.0150436*Hr.y+.7521316*Hr.z,a:Hr.a}})({x:100*(.4124564*ae+.3575761*Me+.1804375*Or),y:100*(.2126729*ae+.7151522*Me+.072175*Or),z:100*(.0193339*ae+.119192*Me+.9503041*Or),a:Br.a}))},f=216/24389,b=24389/27,d=function(Br){return{l:n(Br.l,0,100),c:Br.c,h:(ae=Br.h,(ae=isFinite(ae)?ae%360:0)>0?ae:ae+360),a:Br.a};var ae},p=function(Br){return{l:a(Br.l,2),c:a(Br.c,2),h:a(Br.h,2),a:a(Br.a,3)}},v=function(Br){var ae=Br.l,Me=Br.c,Or=Br.h,Hr=Br.a,Li=Hr===void 0?1:Hr;if(!t$1(ae)||!t$1(Me)||!t$1(Or))return null;var ts=d({l:Number(ae),c:Number(Me),h:Number(Or),a:Number(Li)});return M(ts)},y=function(Br){var ae=(function(Li){var ts=l(Li),rs=ts.x/o$1,ns=ts.y/e,is=ts.z/c;return rs=rs>f?Math.cbrt(rs):(b*rs+16)/116,{l:116*(ns=ns>f?Math.cbrt(ns):(b*ns+16)/116)-16,a:500*(rs-ns),b:200*(ns-(is=is>f?Math.cbrt(is):(b*is+16)/116)),alpha:ts.a}})(Br),Me=a(ae.a,3),Or=a(ae.b,3),Hr=Math.atan2(Or,Me)/Math.PI*180;return{l:ae.l,c:Math.sqrt(Me*Me+Or*Or),h:Hr<0?Hr+360:Hr,a:ae.alpha}},M=function(Br){return ae={l:Br.l,a:Br.c*Math.cos(Br.h*Math.PI/180),b:Br.c*Math.sin(Br.h*Math.PI/180),alpha:Br.a},Or=ae.a/500+(Me=(ae.l+16)/116),Hr=Me-ae.b/200,i({x:(Math.pow(Or,3)>f?Math.pow(Or,3):(116*Or-16)/b)*o$1,y:(ae.l>8?Math.pow((ae.l+16)/116,3):ae.l/b)*e,z:(Math.pow(Hr,3)>f?Math.pow(Hr,3):(116*Hr-16)/b)*c,a:ae.alpha});var ae,Me,Or,Hr},x=/^lch\(\s*([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,s=function(Br){var ae=x.exec(Br);if(!ae)return null;var Me,Or,Hr=d({l:Number(ae[1]),c:Number(ae[2]),h:(Me=ae[3],Or=ae[4],Or===void 0&&(Or="deg"),Number(Me)*(r[Or]||1)),a:ae[5]===void 0?1:Number(ae[5])/(ae[6]?100:1)});return M(Hr)};function lchPlugin(Br,ae){Br.prototype.toLch=function(){return p(y(this.rgba))},Br.prototype.toLchString=function(){return Me=p(y(this.rgba)),Or=Me.l,Hr=Me.c,Li=Me.h,(ts=Me.a)<1?"lch("+Or+"% "+Hr+" "+Li+" / "+ts+")":"lch("+Or+"% "+Hr+" "+Li+")";var Me,Or,Hr,Li,ts},ae.string.push([s,"lch"]),ae.object.push([v,"lch"])}k([labPlugin,lchPlugin]);const canonicalColorHexByKey={black:"#000000",white:"#ffffff",gray:"#808080",red:"#ff0000",orange:"#ffa500",yellow:"#ffff00",green:"#008000",cyan:"#00ffff",blue:"#0000ff",purple:"#800080",pink:"#ffc0cb",brown:"#a52a2a"},canonicalAnchorDefinitions=Object.fromEntries(Object.entries(canonicalColorHexByKey).map(([Br,ae])=>[Br,{hex:ae,canonical:Br}])),extraAnchorDefinitions={silver:{hex:"#c0c0c0",canonical:"gray"},grayDark:{hex:"#4d4d4d",canonical:"gray"},grayCustom:{hex:"#757575",canonical:"gray"},grayLight:{hex:"#c8c8c8",canonical:"gray"},grayLighter:{hex:"#dcdcdc",canonical:"gray"},maroon:{hex:"#800000",canonical:"red"},redLight:{hex:"#f08080",canonical:"red"},redCustom:{hex:"#D4042D",canonical:"red"},redDark:{hex:"#8b0000",canonical:"red"},crimson:{hex:"#dc143c",canonical:"red"},wine:{hex:"#993355",canonical:"red"},orangeLight:{hex:"#ffa07a",canonical:"orange"},orangeCustom:{hex:"#F19143",canonical:"orange"},orangePresetAccessible:{hex:"#a6510c",canonical:"orange"},orangeDark:{hex:"#ff8c00",canonical:"orange"},yellowLight:{hex:"#ffffe0",canonical:"yellow"},yellowDark:{hex:"#bdb76b",canonical:"yellow"},yellowgreen:{hex:"#9acd32",canonical:"green"},olive:{hex:"#808000",canonical:"green"},lime:{hex:"#00ff00",canonical:"green"},greenLight:{hex:"#90ee90",canonical:"green"},greenCustom:{hex:"#2ca02c",canonical:"green"},greenDark:{hex:"#006400",canonical:"green"},teal:{hex:"#008080",canonical:"green"},aqua:{hex:"#00ffff",canonical:"cyan"},cyanLight:{hex:"#e0ffff",canonical:"cyan"},cyanMid:{hex:"#25b0c0",canonical:"cyan"},cyanDark:{hex:"#008b8b",canonical:"cyan"},navy:{hex:"#000080",canonical:"blue"},blueMid:{hex:"#4477aa",canonical:"blue"},blueSky:{hex:"#56b4e9",canonical:"blue"},blueCustom:{hex:"#648FFF",canonical:"blue"},bluePresetAccessible:{hex:"#1f5dff",canonical:"blue"},blueLight:{hex:"#add8e6",canonical:"blue"},blueDark:{hex:"#00008b",canonical:"blue"},fuchsia:{hex:"#ff00ff",canonical:"purple"},purpleCustom:{hex:"#644CD6",canonical:"purple"},purpleMuted:{hex:"#9c5686",canonical:"purple"},purpleLight:{hex:"#dda0dd",canonical:"purple"},purpleDark:{hex:"#8b008b",canonical:"purple"},hotpink:{hex:"#ff69b4",canonical:"pink"},pinkDark:{hex:"#ff1493",canonical:"pink"},brownLight:{hex:"#deb887",canonical:"brown"},brownDark:{hex:"#8b4513",canonical:"brown"}},anchorDefinitions={...canonicalAnchorDefinitions,...extraAnchorDefinitions};Object.values(anchorDefinitions).map(Br=>({color:w$1(Br.hex),canonical:Br.canonical})),[...Object.keys(colorName)];const DEFAULT_STYLE_VALUES={lineOpacity:.7,lineWidth:4,lineWidthWord:"thick",lineStyle:"solid",lineStyleWord:"",markerOpacity:.7,markerStyle:"circle",markerStyleWord:"point",markerSize:5,markerFilled:!0,fillOpacity:.3,fillPatternOpacity:1,fillStyle:"solid",fillStyleWord:"",lineColor:"#1f5dff",lineColorDarkMode:"#648FFF",markerColor:"#1f5dff",markerColorDarkMode:"#648FFF",fillColor:"#1f5dff",fillColorDarkMode:"#648FFF",textColor:"black",textColorDarkMode:"white",highContrastColor:"#2963FF",highContrastColorDarkMode:"#92B4FF"},defaultPalette={name:"default",description:"The standard Doenet styles: blue, red, orange, purple, black, and gray.",styles:{1:{...DEFAULT_STYLE_VALUES},2:{lineColor:"#D4042D",lineColorDarkMode:"#F1466A",lineOpacity:.7,lineWidth:2,lineWidthWord:"",lineStyle:"solid",lineStyleWord:"",markerColor:"#D4042D",markerColorDarkMode:"#F1466A",markerOpacity:.7,markerStyle:"square",markerStyleWord:"square",markerSize:5,fillColor:"#D4042D",fillColorDarkMode:"#F1466A",fillOpacity:.3,textColor:"#D4042D",textColorDarkMode:"#FF7A7A",highContrastColor:"#D4042D",highContrastColorDarkMode:"#FF7A7A"},3:{lineColor:"#a6510c",lineColorDarkMode:"#F19143",lineOpacity:.7,lineWidth:3,lineWidthWord:"",lineStyle:"solid",lineStyleWord:"",markerColor:"#a6510c",markerColorDarkMode:"#F19143",markerOpacity:.7,markerStyle:"triangle",markerStyleWord:"triangle",markerSize:5,fillColor:"#a6510c",fillColorDarkMode:"#F19143",fillOpacity:.3,textColor:"#BE5A0E",textColorDarkMode:"#FFA94D",highContrastColor:"#BE5A0E",highContrastColorDarkMode:"#FFA94D"},4:{lineColor:"#644CD6",lineColorDarkMode:"#9F8FE8",lineColorWordDarkMode:"purple",lineOpacity:.7,lineWidth:2,lineWidthWord:"",lineStyle:"solid",lineStyleWord:"",markerColor:"#644CD6",markerColorDarkMode:"#9F8FE8",markerColorWordDarkMode:"purple",markerOpacity:.7,markerStyle:"diamond",markerStyleWord:"diamond",markerSize:5,fillColor:"#644CD6",fillColorDarkMode:"#9F8FE8",fillColorWordDarkMode:"purple",fillOpacity:.3,textColor:"#644CD6",textColorDarkMode:"#B0A4EE",highContrastColor:"#644CD6",highContrastColorDarkMode:"#B0A4EE"},5:{lineColor:"black",lineColorDarkMode:"white",lineOpacity:1,lineWidth:1,lineWidthWord:"thin",lineStyle:"solid",lineStyleWord:"",markerColor:"black",markerColorDarkMode:"white",markerOpacity:1,markerStyle:"circle",markerStyleWord:"point",markerSize:5,fillColor:"black",fillColorDarkMode:"white",fillOpacity:.7,textColor:"black",textColorDarkMode:"white",highContrastColor:"black",highContrastColorDarkMode:"white"},6:{lineColor:"#636363",lineColorDarkMode:"#CCCCCC",lineOpacity:.7,lineWidth:1,lineWidthWord:"thin",lineStyle:"dotted",lineStyleWord:"dotted",markerColor:"#636363",markerColorDarkMode:"#CCCCCC",markerOpacity:.7,markerStyle:"circle",markerStyleWord:"point",markerSize:5,fillColor:"#636363",fillColorDarkMode:"#CCCCCC",fillOpacity:.3,textColor:"#757575",textColorDarkMode:"#B0B0B0",highContrastColor:"#757575",highContrastColorDarkMode:"#B0B0B0"}}},okabeItoPalette={name:"okabeIto",description:"Colorblind-friendly blues, oranges, greens, and purples adapted from the Okabe-Ito palette, with varied marker shapes and line styles.",styles:{1:{lineColor:"#0072b2",markerColor:"#0072b2",fillColor:"#0072b2",highContrastColor:"#0072b2",lineColorDarkMode:"#0072b2",markerColorDarkMode:"#0072b2",fillColorDarkMode:"#0072b2",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#c15400",markerColor:"#c15400",fillColor:"#c15400",textColor:"#c15400",highContrastColor:"#c15400",lineColorDarkMode:"#d55e00",markerColorDarkMode:"#d55e00",fillColorDarkMode:"#d55e00",textColorDarkMode:"#d55e00",lineWidth:2,markerStyle:"square"},3:{lineColor:"#009e73",markerColor:"#009e73",fillColor:"#009e73",textColor:"#008561",highContrastColor:"#008561",lineColorDarkMode:"#009e73",markerColorDarkMode:"#009e73",fillColorDarkMode:"#009e73",textColorDarkMode:"#009e73",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#cc79a7",markerColor:"#cc79a7",fillColor:"#cc79a7",textColor:"#a35f85",highContrastColor:"#a35f85",lineColorWord:"purple",markerColorWord:"purple",fillColorWord:"purple",lineColorDarkMode:"#cc79a7",markerColorDarkMode:"#cc79a7",fillColorDarkMode:"#cc79a7",textColorDarkMode:"#cc79a7",lineColorWordDarkMode:"purple",markerColorWordDarkMode:"purple",fillColorWordDarkMode:"purple",textColorWordDarkMode:"purple",highContrastColorWordDarkMode:"purple",lineWidth:2,markerStyle:"diamond"},5:{lineColor:"#000000",markerColor:"#000000",fillColor:"#000000",textColor:"#000000",highContrastColor:"#000000",lineColorDarkMode:"#ffffff",markerColorDarkMode:"#ffffff",fillColorDarkMode:"#ffffff",textColorDarkMode:"#ffffff",lineWidth:2,markerStyle:"triangleDown"},6:{lineColor:"#5a5513",markerColor:"#5a5513",fillColor:"#5a5513",textColor:"#5a5513",highContrastColor:"#5a5513",lineColorWord:"olive",markerColorWord:"olive",fillColorWord:"olive",textColorWord:"olive",highContrastColorWord:"olive",lineColorDarkMode:"#f0e442",markerColorDarkMode:"#f0e442",fillColorDarkMode:"#f0e442",textColorDarkMode:"#f0e442",lineWidth:2,markerStyle:"triangleLeft"},7:{lineColor:"#499bca",markerColor:"#499bca",fillColor:"#499bca",textColor:"#397ba1",highContrastColor:"#397ba1",lineColorWord:"skyblue",markerColorWord:"skyblue",fillColorWord:"skyblue",textColorWord:"skyblue",highContrastColorWord:"skyblue",lineColorDarkMode:"#56b4e9",markerColorDarkMode:"#56b4e9",fillColorDarkMode:"#56b4e9",textColorDarkMode:"#56b4e9",lineColorWordDarkMode:"skyblue",markerColorWordDarkMode:"skyblue",fillColorWordDarkMode:"skyblue",textColorWordDarkMode:"skyblue",highContrastColorWordDarkMode:"skyblue",lineWidth:3,lineStyle:"dashed",markerStyle:"triangleRight"},8:{lineColor:"#c58700",markerColor:"#c58700",fillColor:"#c58700",textColor:"#9d6b00",highContrastColor:"#9d6b00",lineColorWord:"goldenrod",markerColorWord:"goldenrod",fillColorWord:"goldenrod",textColorWord:"goldenrod",highContrastColorWord:"goldenrod",lineColorDarkMode:"#e69f00",markerColorDarkMode:"#e69f00",fillColorDarkMode:"#e69f00",textColorDarkMode:"#e69f00",lineColorWordDarkMode:"goldenrod",markerColorWordDarkMode:"goldenrod",fillColorWordDarkMode:"goldenrod",textColorWordDarkMode:"goldenrod",highContrastColorWordDarkMode:"goldenrod",lineWidth:1,lineStyle:"dotted",markerStyle:"circle"}}},tolBrightPalette={name:"tolBright",description:"Colorblind-friendly bright blues, reds, greens, and purples from Paul Tol's bright palette, with varied marker shapes and line styles.",styles:{1:{lineColor:"#4477aa",markerColor:"#4477aa",fillColor:"#4477aa",highContrastColor:"#4477aa",lineColorDarkMode:"#4477aa",markerColorDarkMode:"#4477aa",fillColorDarkMode:"#4477aa",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#ee6677",markerColor:"#ee6677",fillColor:"#ee6677",textColor:"#bf515e",highContrastColor:"#bf515e",lineColorDarkMode:"#ee6677",markerColorDarkMode:"#ee6677",fillColorDarkMode:"#ee6677",textColorDarkMode:"#ee6677",lineWidth:2,markerStyle:"square"},3:{lineColor:"#228833",markerColor:"#228833",fillColor:"#228833",textColor:"#228833",highContrastColor:"#228833",lineColorDarkMode:"#228833",markerColorDarkMode:"#228833",fillColorDarkMode:"#228833",textColorDarkMode:"#3d8e47",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#a29534",markerColor:"#a29534",fillColor:"#a29534",textColor:"#817628",highContrastColor:"#817628",lineColorWord:"olive",markerColorWord:"olive",fillColorWord:"olive",textColorWord:"olive",highContrastColorWord:"olive",lineColorDarkMode:"#ccbb44",markerColorDarkMode:"#ccbb44",fillColorDarkMode:"#ccbb44",textColorDarkMode:"#ccbb44",lineWidth:2,markerStyle:"diamond"},5:{lineColor:"#4d9db8",markerColor:"#4d9db8",fillColor:"#4d9db8",textColor:"#3c7d94",highContrastColor:"#3c7d94",textColorWord:"cyan",highContrastColorWord:"cyan",lineColorDarkMode:"#66ccee",markerColorDarkMode:"#66ccee",fillColorDarkMode:"#66ccee",textColorDarkMode:"#66ccee",lineColorWordDarkMode:"cyan",markerColorWordDarkMode:"cyan",fillColorWordDarkMode:"cyan",textColorWordDarkMode:"cyan",highContrastColorWordDarkMode:"cyan",lineWidth:2,markerStyle:"triangleDown"},6:{lineColor:"#aa3377",markerColor:"#aa3377",fillColor:"#aa3377",textColor:"#aa3377",highContrastColor:"#aa3377",lineColorDarkMode:"#aa3377",markerColorDarkMode:"#aa3377",fillColorDarkMode:"#aa3377",textColorDarkMode:"#b5648c",lineWidth:2,markerStyle:"triangleLeft"},7:{lineColor:"#939393",markerColor:"#939393",fillColor:"#939393",textColor:"#757575",highContrastColor:"#757575",lineColorDarkMode:"#bbbbbb",markerColorDarkMode:"#bbbbbb",fillColorDarkMode:"#bbbbbb",textColorDarkMode:"#bbbbbb",lineWidth:3,lineStyle:"dashed",markerStyle:"triangleRight"}}},tolMutedPalette={name:"tolMuted",description:"Nine colorblind-friendly muted styles from Paul Tol's muted palette, with varied marker shapes and line styles.",styles:{1:{lineColor:"#332288",markerColor:"#332288",fillColor:"#332288",highContrastColor:"#332288",lineColorWord:"indigo",markerColorWord:"indigo",fillColorWord:"indigo",highContrastColorWord:"indigo",lineColorDarkMode:"#8a86e8",markerColorDarkMode:"#8a86e8",fillColorDarkMode:"#8a86e8",lineColorWordDarkMode:"indigo",markerColorWordDarkMode:"indigo",fillColorWordDarkMode:"indigo",highContrastColorWordDarkMode:"indigo",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#669ab5",markerColor:"#669ab5",fillColor:"#669ab5",textColor:"#507a90",highContrastColor:"#507a90",lineColorDarkMode:"#88ccee",markerColorDarkMode:"#88ccee",fillColorDarkMode:"#88ccee",textColorDarkMode:"#88ccee",lineWidth:2,markerStyle:"square"},3:{lineColor:"#41a393",markerColor:"#41a393",fillColor:"#41a393",textColor:"#328175",highContrastColor:"#328175",lineColorWord:"teal",markerColorWord:"teal",fillColorWord:"teal",textColorWord:"teal",highContrastColorWord:"teal",lineColorDarkMode:"#44aa99",markerColorDarkMode:"#44aa99",fillColorDarkMode:"#44aa99",textColorDarkMode:"#44aa99",lineColorWordDarkMode:"teal",markerColorWordDarkMode:"teal",fillColorWordDarkMode:"teal",textColorWordDarkMode:"teal",highContrastColorWordDarkMode:"teal",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#117733",markerColor:"#117733",fillColor:"#117733",textColor:"#117733",highContrastColor:"#117733",lineColorDarkMode:"#117733",markerColorDarkMode:"#117733",fillColorDarkMode:"#117733",textColorDarkMode:"#548a5f",lineWidth:2,markerStyle:"diamond"},5:{lineColor:"#989833",markerColor:"#989833",fillColor:"#989833",textColor:"#787827",highContrastColor:"#787827",lineColorWord:"olive",markerColorWord:"olive",fillColorWord:"olive",textColorWord:"olive",highContrastColorWord:"olive",lineColorDarkMode:"#999933",markerColorDarkMode:"#999933",fillColorDarkMode:"#999933",textColorDarkMode:"#999933",lineColorWordDarkMode:"olive",markerColorWordDarkMode:"olive",fillColorWordDarkMode:"olive",textColorWordDarkMode:"olive",highContrastColorWordDarkMode:"olive",lineWidth:2,markerStyle:"triangleDown"},6:{lineColor:"#867c46",markerColor:"#867c46",fillColor:"#867c46",textColor:"#7f7542",highContrastColor:"#7f7542",lineColorWord:"tan",markerColorWord:"tan",fillColorWord:"tan",textColorWord:"tan",highContrastColorWord:"tan",lineColorDarkMode:"#ddcc77",markerColorDarkMode:"#ddcc77",fillColorDarkMode:"#ddcc77",textColorDarkMode:"#ddcc77",lineColorWordDarkMode:"tan",markerColorWordDarkMode:"tan",fillColorWordDarkMode:"tan",textColorWordDarkMode:"tan",highContrastColorWordDarkMode:"tan",lineWidth:2,markerStyle:"triangleLeft"},7:{lineColor:"#cc6677",markerColor:"#cc6677",fillColor:"#cc6677",textColor:"#b35968",highContrastColor:"#b35968",lineColorWord:"pink",markerColorWord:"pink",fillColorWord:"pink",textColorWord:"pink",highContrastColorWord:"pink",lineColorDarkMode:"#cc6677",markerColorDarkMode:"#cc6677",fillColorDarkMode:"#cc6677",textColorDarkMode:"#cc6677",lineColorWordDarkMode:"pink",markerColorWordDarkMode:"pink",fillColorWordDarkMode:"pink",textColorWordDarkMode:"pink",highContrastColorWordDarkMode:"pink",lineWidth:3,lineStyle:"dashed",markerStyle:"triangleRight"},8:{lineColor:"#882255",markerColor:"#882255",fillColor:"#882255",textColor:"#882255",highContrastColor:"#882255",lineColorWord:"maroon",markerColorWord:"maroon",fillColorWord:"maroon",textColorWord:"maroon",highContrastColorWord:"maroon",lineColorDarkMode:"#924b69",markerColorDarkMode:"#924b69",fillColorDarkMode:"#924b69",textColorDarkMode:"#a17083",lineColorWordDarkMode:"maroon",markerColorWordDarkMode:"maroon",fillColorWordDarkMode:"maroon",textColorWordDarkMode:"maroon",highContrastColorWordDarkMode:"maroon",lineWidth:1,lineStyle:"dotted",markerStyle:"circle"},9:{lineColor:"#aa4499",markerColor:"#aa4499",fillColor:"#aa4499",textColor:"#aa4499",highContrastColor:"#aa4499",lineColorDarkMode:"#aa4499",markerColorDarkMode:"#aa4499",fillColorDarkMode:"#aa4499",textColorDarkMode:"#b262a3",lineWidth:2,lineStyle:"dashed",markerStyle:"square"}}},tolHighContrastPalette={name:"tolHighContrast",description:"Four maximum-distinction styles from Paul Tol's high-contrast palette, distinguishable even in grayscale.",styles:{1:{lineColor:"#004488",markerColor:"#004488",fillColor:"#004488",highContrastColor:"#004488",lineColorDarkMode:"#496194",markerColorDarkMode:"#496194",fillColorDarkMode:"#496194",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#b88d29",markerColor:"#b88d29",fillColor:"#b88d29",textColor:"#92701f",highContrastColor:"#92701f",lineColorWord:"gold",markerColorWord:"gold",fillColorWord:"gold",textColorWord:"gold",highContrastColorWord:"gold",lineColorDarkMode:"#ddaa33",markerColorDarkMode:"#ddaa33",fillColorDarkMode:"#ddaa33",textColorDarkMode:"#ddaa33",lineColorWordDarkMode:"gold",markerColorWordDarkMode:"gold",fillColorWordDarkMode:"gold",textColorWordDarkMode:"gold",highContrastColorWordDarkMode:"gold",lineWidth:2,markerStyle:"square"},3:{lineColor:"#bb5566",markerColor:"#bb5566",fillColor:"#bb5566",textColor:"#bb5566",highContrastColor:"#bb5566",lineColorDarkMode:"#c06976",markerColorDarkMode:"#c06976",fillColorDarkMode:"#c06976",textColorDarkMode:"#c06976",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#000000",markerColor:"#000000",fillColor:"#000000",textColor:"#000000",highContrastColor:"#000000",lineColorDarkMode:"#ffffff",markerColorDarkMode:"#ffffff",fillColorDarkMode:"#ffffff",textColorDarkMode:"#ffffff",lineWidth:2,markerStyle:"diamond"}}},ibmPalette={name:"ibm",description:"Five colorblind-friendly styles from the IBM Design Library accessible palette, with varied marker shapes.",styles:{1:{lineColor:"#648fff",markerColor:"#648fff",fillColor:"#648fff",highContrastColor:"#4f71cb",lineColorDarkMode:"#648fff",markerColorDarkMode:"#648fff",fillColorDarkMode:"#648fff",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#6a53d5",markerColor:"#6a53d5",fillColor:"#6a53d5",textColor:"#6a53d5",highContrastColor:"#6a53d5",lineColorDarkMode:"#785ef0",markerColorDarkMode:"#785ef0",fillColorDarkMode:"#785ef0",textColorDarkMode:"#7f69f0",lineWidth:2,markerStyle:"square"},3:{lineColor:"#dc267f",markerColor:"#dc267f",fillColor:"#dc267f",textColor:"#dc267f",highContrastColor:"#dc267f",lineColorWord:"magenta",markerColorWord:"magenta",fillColorWord:"magenta",textColorWord:"magenta",highContrastColorWord:"magenta",lineColorDarkMode:"#dc267f",markerColorDarkMode:"#dc267f",fillColorDarkMode:"#dc267f",textColorDarkMode:"#dd4186",lineColorWordDarkMode:"magenta",markerColorWordDarkMode:"magenta",fillColorWordDarkMode:"magenta",textColorWordDarkMode:"magenta",highContrastColorWordDarkMode:"magenta",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#fe6100",markerColor:"#fe6100",fillColor:"#fe6100",textColor:"#cb4b00",highContrastColor:"#cb4b00",lineColorDarkMode:"#fe6100",markerColorDarkMode:"#fe6100",fillColorDarkMode:"#fe6100",textColorDarkMode:"#fe6100",lineWidth:2,markerStyle:"diamond"},5:{lineColor:"#865a00",markerColor:"#865a00",fillColor:"#865a00",textColor:"#865a00",highContrastColor:"#865a00",lineColorWord:"gold",markerColorWord:"gold",fillColorWord:"gold",textColorWord:"gold",highContrastColorWord:"gold",lineColorDarkMode:"#ffb000",markerColorDarkMode:"#ffb000",fillColorDarkMode:"#ffb000",textColorDarkMode:"#ffb000",lineColorWordDarkMode:"gold",markerColorWordDarkMode:"gold",fillColorWordDarkMode:"gold",textColorWordDarkMode:"gold",highContrastColorWordDarkMode:"gold",lineWidth:2,markerStyle:"triangleDown"}}},grayscalePalette={name:"grayscale",description:"Four grays with maximum luminance separation, for readers who distinguish styles by lightness alone.",styles:{1:{lineColor:"#000000",markerColor:"#000000",fillColor:"#000000",highContrastColor:"#000000",lineColorDarkMode:"#ffffff",markerColorDarkMode:"#ffffff",fillColorDarkMode:"#ffffff",highContrastColorDarkMode:"#ffffff",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#323232",markerColor:"#323232",fillColor:"#323232",textColor:"#323232",highContrastColor:"#323232",lineColorWord:"dark gray",markerColorWord:"dark gray",fillColorWord:"dark gray",textColorWord:"dark gray",highContrastColorWord:"dark gray",lineColorDarkMode:"#c7c7c7",markerColorDarkMode:"#c7c7c7",fillColorDarkMode:"#c7c7c7",textColorDarkMode:"#c7c7c7",highContrastColorDarkMode:"#c7c7c7",lineColorWordDarkMode:"light gray",markerColorWordDarkMode:"light gray",fillColorWordDarkMode:"light gray",textColorWordDarkMode:"light gray",highContrastColorWordDarkMode:"light gray",lineWidth:2,markerStyle:"square"},3:{lineColor:"#616161",markerColor:"#616161",fillColor:"#616161",textColor:"#616161",highContrastColor:"#616161",lineColorDarkMode:"#929292",markerColorDarkMode:"#929292",fillColorDarkMode:"#929292",textColorDarkMode:"#929292",highContrastColorDarkMode:"#929292",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#939393",markerColor:"#939393",fillColor:"#939393",textColor:"#767676",highContrastColor:"#767676",lineColorWord:"light gray",markerColorWord:"light gray",fillColorWord:"light gray",textColorWord:"light gray",highContrastColorWord:"light gray",lineColorDarkMode:"#626262",markerColorDarkMode:"#626262",fillColorDarkMode:"#626262",textColorDarkMode:"#7d7d7d",highContrastColorDarkMode:"#7d7d7d",lineColorWordDarkMode:"dark gray",markerColorWordDarkMode:"dark gray",fillColorWordDarkMode:"dark gray",textColorWordDarkMode:"dark gray",highContrastColorWordDarkMode:"dark gray",lineWidth:2,markerStyle:"diamond"}}},categoricalPalette={name:"categorical",description:"Ten maximally varied hues adapted from the Category10 sequence, for documents needing many obviously distinct styles.",styles:{1:{lineColor:"#1f77b4",markerColor:"#1f77b4",fillColor:"#1f77b4",highContrastColor:"#1f77b4",lineColorDarkMode:"#5ba3dd",markerColorDarkMode:"#5ba3dd",fillColorDarkMode:"#5ba3dd",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#e7730c",markerColor:"#e7730c",fillColor:"#e7730c",textColor:"#b95b07",highContrastColor:"#b95b07",lineColorDarkMode:"#ff9d3c",markerColorDarkMode:"#ff9d3c",fillColorDarkMode:"#ff9d3c",textColorDarkMode:"#ff9d3c",lineWidth:2,markerStyle:"square"},3:{lineColor:"#217a21",markerColor:"#217a21",fillColor:"#217a21",textColor:"#217a21",highContrastColor:"#217a21",lineColorDarkMode:"#2ca02c",markerColorDarkMode:"#2ca02c",fillColorDarkMode:"#2ca02c",textColorDarkMode:"#2ca02c",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#d62728",markerColor:"#d62728",fillColor:"#d62728",textColor:"#d62728",highContrastColor:"#d62728",lineColorDarkMode:"#e2494a",markerColorDarkMode:"#e2494a",fillColorDarkMode:"#e2494a",textColorDarkMode:"#e2494a",lineWidth:2,markerStyle:"diamond"},5:{lineColor:"#9467bd",markerColor:"#9467bd",fillColor:"#9467bd",textColor:"#8e62b5",highContrastColor:"#8e62b5",lineColorDarkMode:"#b48fd6",markerColorDarkMode:"#b48fd6",fillColorDarkMode:"#b48fd6",textColorDarkMode:"#b48fd6",lineWidth:2,markerStyle:"triangleDown"},6:{lineColor:"#7a4a41",markerColor:"#7a4a41",fillColor:"#7a4a41",textColor:"#7a4a41",highContrastColor:"#7a4a41",lineColorDarkMode:"#a9705f",markerColorDarkMode:"#a9705f",fillColorDarkMode:"#a9705f",textColorDarkMode:"#a9705f",lineColorWordDarkMode:"brown",markerColorWordDarkMode:"brown",fillColorWordDarkMode:"brown",textColorWordDarkMode:"brown",highContrastColorWordDarkMode:"brown",lineWidth:2,markerStyle:"triangleLeft"},7:{lineColor:"#d670b7",markerColor:"#d670b7",fillColor:"#d670b7",textColor:"#ab5892",highContrastColor:"#ab5892",textColorWord:"pink",highContrastColorWord:"pink",lineColorDarkMode:"#e377c2",markerColorDarkMode:"#e377c2",fillColorDarkMode:"#e377c2",textColorDarkMode:"#e377c2",lineWidth:3,lineStyle:"dashed",markerStyle:"triangleRight"},8:{lineColor:"#7f7f7f",markerColor:"#7f7f7f",fillColor:"#7f7f7f",textColor:"#757575",highContrastColor:"#757575",lineColorDarkMode:"#a8a8a8",markerColorDarkMode:"#a8a8a8",fillColorDarkMode:"#a8a8a8",textColorDarkMode:"#a8a8a8",lineWidth:1,lineStyle:"dotted",markerStyle:"circle"},9:{lineColor:"#6e6e12",markerColor:"#6e6e12",fillColor:"#6e6e12",textColor:"#6e6e12",highContrastColor:"#6e6e12",lineColorWord:"olive",markerColorWord:"olive",fillColorWord:"olive",textColorWord:"olive",highContrastColorWord:"olive",lineColorDarkMode:"#bcbd22",markerColorDarkMode:"#bcbd22",fillColorDarkMode:"#bcbd22",textColorDarkMode:"#bcbd22",lineColorWordDarkMode:"olive",markerColorWordDarkMode:"olive",fillColorWordDarkMode:"olive",textColorWordDarkMode:"olive",highContrastColorWordDarkMode:"olive",lineWidth:2,lineStyle:"dashed",markerStyle:"square"},10:{lineColor:"#12a2b1",markerColor:"#12a2b1",fillColor:"#12a2b1",textColor:"#0c818e",highContrastColor:"#0c818e",textColorWord:"cyan",highContrastColorWord:"cyan",lineColorDarkMode:"#17becf",markerColorDarkMode:"#17becf",fillColorDarkMode:"#17becf",textColorDarkMode:"#17becf",lineWidth:2,lineStyle:"dotted",markerStyle:"diamond"}}},grumpyNarwhalPalette={name:"grumpyNarwhal",description:"Six saturated hues — burnt orange, forest green, deep pink, arctic teal, gold, and purple — going neon in dark mode.",styles:{1:{lineColor:"#b34700",markerColor:"#b34700",fillColor:"#b34700",highContrastColor:"#b34700",lineColorDarkMode:"#ff5f00",markerColorDarkMode:"#ff5f00",fillColorDarkMode:"#ff5f00",lineColorWordDarkMode:"orange",markerColorWordDarkMode:"orange",fillColorWordDarkMode:"orange",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#1b7a1b",markerColor:"#1b7a1b",fillColor:"#1b7a1b",textColor:"#1b7a1b",highContrastColor:"#1b7a1b",lineColorDarkMode:"#39ff14",markerColorDarkMode:"#39ff14",fillColorDarkMode:"#39ff14",textColorDarkMode:"#39ff14",lineWidth:2,markerStyle:"square"},3:{lineColor:"#c20e67",markerColor:"#c20e67",fillColor:"#c20e67",textColor:"#c20e67",highContrastColor:"#c20e67",lineColorWord:"pink",markerColorWord:"pink",fillColorWord:"pink",textColorWord:"pink",highContrastColorWord:"pink",lineColorDarkMode:"#ff1493",markerColorDarkMode:"#ff1493",fillColorDarkMode:"#ff1493",textColorDarkMode:"#ff1493",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#007a8c",markerColor:"#007a8c",fillColor:"#007a8c",textColor:"#007a8c",highContrastColor:"#007a8c",lineColorWord:"teal",markerColorWord:"teal",fillColorWord:"teal",textColorWord:"teal",highContrastColorWord:"teal",lineColorDarkMode:"#00e5ff",markerColorDarkMode:"#00e5ff",fillColorDarkMode:"#00e5ff",textColorDarkMode:"#00e5ff",lineWidth:2,markerStyle:"diamond"},5:{lineColor:"#8a6d00",markerColor:"#8a6d00",fillColor:"#8a6d00",textColor:"#8a6d00",highContrastColor:"#8a6d00",lineColorWord:"gold",markerColorWord:"gold",fillColorWord:"gold",textColorWord:"gold",highContrastColorWord:"gold",lineColorDarkMode:"#ffea00",markerColorDarkMode:"#ffea00",fillColorDarkMode:"#ffea00",textColorDarkMode:"#ffea00",lineWidth:2,markerStyle:"triangleDown"},6:{lineColor:"#b026ff",markerColor:"#b026ff",fillColor:"#b026ff",textColor:"#b026ff",highContrastColor:"#b026ff",lineColorDarkMode:"#b026ff",markerColorDarkMode:"#b026ff",fillColorDarkMode:"#b026ff",textColorDarkMode:"#b445ff",highContrastColorDarkMode:"#b445ff",lineWidth:2,markerStyle:"triangleLeft"}}};function deepFreezePalette(Br){for(const ae of Object.values(Br.styles)){for(const Me of Object.values(ae))typeof Me=="object"&&Me!==null&&Object.freeze(Me);Object.freeze(ae)}return Object.freeze(Br.styles),Object.freeze(Br)}function registerByKey(Br){return[Br.name.toLowerCase(),deepFreezePalette(Br)]}const STYLE_PALETTES=Object.assign(Object.create(null),Object.fromEntries([defaultPalette,okabeItoPalette,tolBrightPalette,tolMutedPalette,tolHighContrastPalette,ibmPalette,grayscalePalette,categoricalPalette,grumpyNarwhalPalette].map(registerByKey)));Object.freeze(STYLE_PALETTES),defaultPalette.name.toLowerCase(),Object.freeze(Object.keys(STYLE_PALETTES));var o=function(Br){var ae=Br/255;return ae<.04045?ae/12.92:Math.pow((ae+.055)/1.055,2.4)},t=function(Br){return .2126*o(Br.r)+.7152*o(Br.g)+.0722*o(Br.b)};function a11yPlugin(Br){Br.prototype.luminance=function(){return ae=t(this.rgba),(Me=2)===void 0&&(Me=0),Or===void 0&&(Or=Math.pow(10,Me)),Math.round(Or*ae)/Or+0;var ae,Me,Or},Br.prototype.contrast=function(ae){ae===void 0&&(ae="#FFF");var Me,Or,Hr,Li,ts,rs,ns,is=ae instanceof Br?ae:new Br(ae);return Li=this.rgba,ts=is.toRgb(),rs=t(Li),ns=t(ts),Me=rs>ns?(rs+.05)/(ns+.05):(ns+.05)/(rs+.05),(Or=2)===void 0&&(Or=0),Hr===void 0&&(Hr=Math.pow(10,Or)),Math.floor(Hr*Me)/Hr+0},Br.prototype.isReadable=function(ae,Me){return ae===void 0&&(ae="#FFF"),Me===void 0&&(Me={}),this.contrast(ae)>=(rs=(ts=(Or=Me).size)===void 0?"normal":ts,(Li=(Hr=Or.level)===void 0?"AA":Hr)==="AAA"&&rs==="normal"?7:Li==="AA"&&rs==="large"?3:4.5);var Or,Hr,Li,ts,rs}}function namesPlugin(Br,ae){var Me={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},Or={};for(var Hr in Me)Or[Me[Hr]]=Hr;var Li={};Br.prototype.toName=function(ts){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var rs,ns,is=Or[this.toHex()];if(is)return is;if(ts?.closest){var as=this.toRgb(),os=1/0,ss="black";if(!Li.length)for(var ls in Me)Li[ls]=new Br(Me[ls]).toRgb();for(var us in Me){var cs=(rs=as,ns=Li[us],Math.pow(rs.r-ns.r,2)+Math.pow(rs.g-ns.g,2)+Math.pow(rs.b-ns.b,2));cs<os&&(os=cs,ss=us)}return ss}},ae.string.push([function(ts){var rs=ts.toLowerCase(),ns=rs==="transparent"?"#0000":Me[rs];return ns?new Br(ns).toRgb():null},"name"])}k([a11yPlugin,namesPlugin]);let styleAttributes={lineColor:{componentType:"text",description:"Color used for line strokes (light mode)."},lineColorWord:{componentType:"text",description:"Human-readable name of the line color (light mode)."},lineColorDarkMode:{componentType:"text",description:"Color used for line strokes (dark mode)."},lineColorWordDarkMode:{componentType:"text",description:"Human-readable name of the line color (dark mode)."},lineOpacity:{componentType:"number",description:"Opacity of line strokes, 0 to 1."},lineWidth:{componentType:"number",description:"Stroke width for lines, in pixels."},lineWidthWord:{componentType:"text",description:"Human-readable name of the line width."},lineStyle:{componentType:"text",description:"Stroke style for lines.",toLowerCase:!0,validValues:[{value:"solid",description:"Continuous, unbroken stroke."},{value:"dashed",description:"Stroke composed of evenly-spaced dashes."},{value:"dotted",description:"Stroke composed of evenly-spaced dots."}]},lineStyleWord:{componentType:"text",description:"Human-readable name of the line style."},markerColor:{componentType:"text",description:"Color used for markers/points (light mode)."},markerColorWord:{componentType:"text",description:"Human-readable name of the marker color (light mode)."},markerColorDarkMode:{componentType:"text",description:"Color used for markers/points (dark mode)."},markerColorWordDarkMode:{componentType:"text",description:"Human-readable name of the marker color (dark mode)."},markerOpacity:{componentType:"number",description:"Opacity of markers/points, 0 to 1."},markerStyle:{componentType:"text",description:"Marker shape.",toLowerCase:!0,validValues:[{value:"circle",description:"Circular marker."},{value:"square",description:"Square marker."},{value:"triangle",description:'Triangular marker pointing up (alias for "triangleUp").'},{value:"triangleUp",description:"Triangular marker pointing up."},{value:"triangleDown",description:"Triangular marker pointing down."},{value:"triangleLeft",description:"Triangular marker pointing left."},{value:"triangleRight",description:"Triangular marker pointing right."},{value:"diamond",description:"Diamond-shaped marker."},{value:"cross",description:"Cross-shaped marker (×)."},{value:"plus",description:"Plus-shaped marker (+)."}]},markerStyleWord:{componentType:"text",description:"Human-readable name of the marker style."},markerSize:{componentType:"number",description:"Marker size in pixels."},markerFilled:{componentType:"boolean",description:"Whether the marker is rendered filled (true) or open (false). Has no effect when markerStyle is cross or plus, which have no interior."},fillColor:{componentType:"text",description:"Fill color used inside closed shapes (light mode)."},fillColorWord:{componentType:"text",description:"Human-readable name of the fill color (light mode)."},fillColorDarkMode:{componentType:"text",description:"Fill color used inside closed shapes (dark mode)."},fillColorWordDarkMode:{componentType:"text",description:"Human-readable name of the fill color (dark mode)."},fillOpacity:{componentType:"number",description:"Opacity of solid fills, 0 to 1."},fillPatternOpacity:{componentType:"number",description:"Opacity of pattern fills (non-solid fillStyle), 0 to 1."},fillStyle:{componentType:"text",description:"Fill pattern used inside closed shapes.",toLowerCase:!0,validValues:[{value:"solid",description:"Solid fill."},{value:"horizontal",description:"Horizontal line pattern."},{value:"vertical",description:"Vertical line pattern."},{value:"diagonal",description:"Diagonal line pattern (/)."},{value:"backDiagonal",description:"Back-diagonal line pattern (\\)."},{value:"dots",description:"Dots pattern."},{value:"diamonds",description:"Filled diamonds pattern."}]},fillStyleWord:{componentType:"text",description:"Human-readable name of the fill style."},textColor:{componentType:"text",description:"Text color (light mode)."},textColorWord:{componentType:"text",description:"Human-readable name of the text color (light mode)."},textColorDarkMode:{componentType:"text",description:"Text color (dark mode)."},textColorWordDarkMode:{componentType:"text",description:"Human-readable name of the text color (dark mode)."},highContrastColor:{componentType:"text",description:"High-contrast accent color (light mode)."},highContrastColorWord:{componentType:"text",description:"Human-readable name of the high-contrast accent color (light mode)."},highContrastColorDarkMode:{componentType:"text",description:"High-contrast accent color (dark mode)."},highContrastColorWordDarkMode:{componentType:"text",description:"Human-readable name of the high-contrast accent color (dark mode)."},backgroundColor:{componentType:"text",description:"Background color (light mode)."},backgroundColorWord:{componentType:"text",description:"Human-readable name of the background color (light mode)."},backgroundColorDarkMode:{componentType:"text",description:"Background color (dark mode)."},backgroundColorWordDarkMode:{componentType:"text",description:"Human-readable name of the background color (dark mode)."}};styleAttributes.markerStyle.validValues.filter(Br=>Br.value!=="cross"&&Br.value!=="plus");const MARKER_OVERRIDE_KEYS=["markerStyle","markerSize","markerFilled"],LINE_OVERRIDE_KEYS=["lineStyle","lineWidth"],FILL_OVERRIDE_KEYS=["fillOpacity","fillPatternOpacity","fillStyle"],markerOverrideAttributes=Object.fromEntries(MARKER_OVERRIDE_KEYS.map(Br=>[Br,styleAttributes[Br]])),lineOverrideAttributes=Object.fromEntries(LINE_OVERRIDE_KEYS.map(Br=>[Br,styleAttributes[Br]])),fillOverrideAttributes=Object.fromEntries(FILL_OVERRIDE_KEYS.map(Br=>[Br,styleAttributes[Br]]));({...markerOverrideAttributes,...lineOverrideAttributes,...fillOverrideAttributes});const STYLE_OVERRIDE_CATEGORIES={marker:markerOverrideAttributes,line:lineOverrideAttributes,fill:fillOverrideAttributes};for(const[Br,ae]of Object.entries(STYLE_OVERRIDE_CATEGORIES))for(const[Me,Or]of Object.entries(ae)){if(Me.toLowerCase().includes("color"))throw new Error(`Style override category "${Br}" contains color-related key "${Me}"; colors stay <styleDefinition>-only so per-styleNumber WCAG contrast diagnostics remain authoritative. If this is intentional, also reconcile the lowercase asymmetry in returnSelectedStyleStateVariableDefinition.`);if(Me.endsWith("Opacity")&&Me!=="fillOpacity"&&Me!=="fillPatternOpacity")throw new Error(`Style override category "${Br}" contains contrast-feeding opacity key "${Me}"; lineOpacity and markerOpacity feed the WCAG contrast diagnostic as an opacityMultiplier on the foreground alpha, so they stay <styleDefinition>-only alongside colors. Only fillOpacity and fillPatternOpacity are contrast-irrelevant and overridable.`);if(Or.componentType==="text"&&!Or.toLowerCase)throw new Error(`Style override key "${Me}" in category "${Br}" is text-typed but missing toLowerCase: true. Add toLowerCase: true to its styleAttributes entry, or move it out of the override surface.`)}Object.entries(styleAttributes).filter(([,Br])=>Br.toLowerCase).map(([Br])=>Br);var base32$1={exports:{}},hasRequiredBase32;function requireBase32(){return hasRequiredBase32||(hasRequiredBase32=1,(function(Br){(function(){var ae=typeof window=="object"?window:{},Me=!ae.HI_BASE32_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;Me&&(ae=commonjsGlobal);var Or=!ae.HI_BASE32_NO_COMMON_JS&&!0&&Br.exports,Hr="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".split(""),Li={A:0,B:1,C:2,D:3,E:4,F:5,G:6,H:7,I:8,J:9,K:10,L:11,M:12,N:13,O:14,P:15,Q:16,R:17,S:18,T:19,U:20,V:21,W:22,X:23,Y:24,Z:25,2:26,3:27,4:28,5:29,6:30,7:31},ts=[0,0,0,0,0,0,0,0],rs=function(ds,ps){ps.length>10&&(ps="..."+ps.substr(-10));var ms=new Error("Decoded data is not valid UTF-8. Maybe try base32.decode.asBytes()? Partial data after reading "+ds+" bytes: "+ps+" <-");throw ms.position=ds,ms},ns=function(ds){for(var ps="",ms=ds.length,fs=0,hs=0,gs,ys;fs<ms;){if(gs=ds[fs++],gs<=127){ps+=String.fromCharCode(gs);continue}else gs>191&&gs<=223?(ys=gs&31,hs=1):gs<=239?(ys=gs&15,hs=2):gs<=247?(ys=gs&7,hs=3):rs(fs,ps);for(var xs=0;xs<hs;++xs)gs=ds[fs++],(gs<128||gs>191)&&rs(fs,ps),ys<<=6,ys+=gs&63;ys>=55296&&ys<=57343&&rs(fs,ps),ys>1114111&&rs(fs,ps),ys<=65535?ps+=String.fromCharCode(ys):(ys-=65536,ps+=String.fromCharCode((ys>>10)+55296),ps+=String.fromCharCode((ys&1023)+56320))}return ps},is=function(ds){if(ds==="")return[];if(!/^[A-Z2-7=]+$/.test(ds))throw new Error("Invalid base32 characters");ds=ds.replace(/=/g,"");for(var ps,ms,fs,hs,gs,ys,xs,bs,vs=[],Cs=0,Ts=ds.length,As=0,Ns=Ts>>3<<3;As<Ns;)ps=Li[ds.charAt(As++)],ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],ys=Li[ds.charAt(As++)],xs=Li[ds.charAt(As++)],bs=Li[ds.charAt(As++)],vs[Cs++]=(ps<<3|ms>>>2)&255,vs[Cs++]=(ms<<6|fs<<1|hs>>>4)&255,vs[Cs++]=(hs<<4|gs>>>1)&255,vs[Cs++]=(gs<<7|ys<<2|xs>>>3)&255,vs[Cs++]=(xs<<5|bs)&255;var _s=Ts-Ns;return _s===2?(ps=Li[ds.charAt(As++)],ms=Li[ds.charAt(As++)],vs[Cs++]=(ps<<3|ms>>>2)&255):_s===4?(ps=Li[ds.charAt(As++)],ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],vs[Cs++]=(ps<<3|ms>>>2)&255,vs[Cs++]=(ms<<6|fs<<1|hs>>>4)&255):_s===5?(ps=Li[ds.charAt(As++)],ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],vs[Cs++]=(ps<<3|ms>>>2)&255,vs[Cs++]=(ms<<6|fs<<1|hs>>>4)&255,vs[Cs++]=(hs<<4|gs>>>1)&255):_s===7&&(ps=Li[ds.charAt(As++)],ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],ys=Li[ds.charAt(As++)],xs=Li[ds.charAt(As++)],vs[Cs++]=(ps<<3|ms>>>2)&255,vs[Cs++]=(ms<<6|fs<<1|hs>>>4)&255,vs[Cs++]=(hs<<4|gs>>>1)&255,vs[Cs++]=(gs<<7|ys<<2|xs>>>3)&255),vs},as=function(ds){for(var ps,ms,fs,hs,gs,ys="",xs=ds.length,bs=0,vs=parseInt(xs/5)*5;bs<vs;)ps=ds.charCodeAt(bs++),ms=ds.charCodeAt(bs++),fs=ds.charCodeAt(bs++),hs=ds.charCodeAt(bs++),gs=ds.charCodeAt(bs++),ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[(fs<<1|hs>>>7)&31]+Hr[hs>>>2&31]+Hr[(hs<<3|gs>>>5)&31]+Hr[gs&31];var Cs=xs-vs;return Cs===1?(ps=ds.charCodeAt(bs),ys+=Hr[ps>>>3]+Hr[ps<<2&31]+"======"):Cs===2?(ps=ds.charCodeAt(bs++),ms=ds.charCodeAt(bs),ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[ms<<4&31]+"===="):Cs===3?(ps=ds.charCodeAt(bs++),ms=ds.charCodeAt(bs++),fs=ds.charCodeAt(bs),ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[fs<<1&31]+"==="):Cs===4&&(ps=ds.charCodeAt(bs++),ms=ds.charCodeAt(bs++),fs=ds.charCodeAt(bs++),hs=ds.charCodeAt(bs),ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[(fs<<1|hs>>>7)&31]+Hr[hs>>>2&31]+Hr[hs<<3&31]+"="),ys},os=function(ds){var ps,ms,fs,hs,gs,ys,xs=!1,bs="",vs=0,Cs,Ts=0,As=ds.length;if(ds==="")return bs;do{for(ts[0]=ts[5],ts[1]=ts[6],ts[2]=ts[7],Cs=Ts;vs<As&&Cs<5;++vs)ys=ds.charCodeAt(vs),ys<128?ts[Cs++]=ys:ys<2048?(ts[Cs++]=192|ys>>6,ts[Cs++]=128|ys&63):ys<55296||ys>=57344?(ts[Cs++]=224|ys>>12,ts[Cs++]=128|ys>>6&63,ts[Cs++]=128|ys&63):(ys=65536+((ys&1023)<<10|ds.charCodeAt(++vs)&1023),ts[Cs++]=240|ys>>18,ts[Cs++]=128|ys>>12&63,ts[Cs++]=128|ys>>6&63,ts[Cs++]=128|ys&63);Ts=Cs-5,vs===As&&++vs,vs>As&&Cs<6&&(xs=!0),ps=ts[0],Cs>4?(ms=ts[1],fs=ts[2],hs=ts[3],gs=ts[4],bs+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[(fs<<1|hs>>>7)&31]+Hr[hs>>>2&31]+Hr[(hs<<3|gs>>>5)&31]+Hr[gs&31]):Cs===1?bs+=Hr[ps>>>3]+Hr[ps<<2&31]+"======":Cs===2?(ms=ts[1],bs+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[ms<<4&31]+"===="):Cs===3?(ms=ts[1],fs=ts[2],bs+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[fs<<1&31]+"==="):(ms=ts[1],fs=ts[2],hs=ts[3],bs+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[(fs<<1|hs>>>7)&31]+Hr[hs>>>2&31]+Hr[hs<<3&31]+"=")}while(!xs);return bs},ss=function(ds){for(var ps,ms,fs,hs,gs,ys="",xs=ds.length,bs=0,vs=parseInt(xs/5)*5;bs<vs;)ps=ds[bs++],ms=ds[bs++],fs=ds[bs++],hs=ds[bs++],gs=ds[bs++],ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[(fs<<1|hs>>>7)&31]+Hr[hs>>>2&31]+Hr[(hs<<3|gs>>>5)&31]+Hr[gs&31];var Cs=xs-vs;return Cs===1?(ps=ds[bs],ys+=Hr[ps>>>3]+Hr[ps<<2&31]+"======"):Cs===2?(ps=ds[bs++],ms=ds[bs],ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[ms<<4&31]+"===="):Cs===3?(ps=ds[bs++],ms=ds[bs++],fs=ds[bs],ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[fs<<1&31]+"==="):Cs===4&&(ps=ds[bs++],ms=ds[bs++],fs=ds[bs++],hs=ds[bs],ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[(fs<<1|hs>>>7)&31]+Hr[hs>>>2&31]+Hr[hs<<3&31]+"="),ys},ls=function(ds,ps){var ms=typeof ds!="string";return ms&&ds.constructor===ArrayBuffer&&(ds=new Uint8Array(ds)),ms?ss(ds):ps?as(ds):os(ds)},us=function(ds,ps){if(!ps)return ns(is(ds));if(ds==="")return"";if(!/^[A-Z2-7=]+$/.test(ds))throw new Error("Invalid base32 characters");var ms,fs,hs,gs,ys,xs,bs,vs,Cs="",Ts=ds.indexOf("=");Ts===-1&&(Ts=ds.length);for(var As=0,Ns=Ts>>3<<3;As<Ns;)ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],ys=Li[ds.charAt(As++)],xs=Li[ds.charAt(As++)],bs=Li[ds.charAt(As++)],vs=Li[ds.charAt(As++)],Cs+=String.fromCharCode((ms<<3|fs>>>2)&255)+String.fromCharCode((fs<<6|hs<<1|gs>>>4)&255)+String.fromCharCode((gs<<4|ys>>>1)&255)+String.fromCharCode((ys<<7|xs<<2|bs>>>3)&255)+String.fromCharCode((bs<<5|vs)&255);var _s=Ts-Ns;return _s===2?(ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],Cs+=String.fromCharCode((ms<<3|fs>>>2)&255)):_s===4?(ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],Cs+=String.fromCharCode((ms<<3|fs>>>2)&255)+String.fromCharCode((fs<<6|hs<<1|gs>>>4)&255)):_s===5?(ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],ys=Li[ds.charAt(As++)],Cs+=String.fromCharCode((ms<<3|fs>>>2)&255)+String.fromCharCode((fs<<6|hs<<1|gs>>>4)&255)+String.fromCharCode((gs<<4|ys>>>1)&255)):_s===7&&(ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],ys=Li[ds.charAt(As++)],xs=Li[ds.charAt(As++)],bs=Li[ds.charAt(As++)],Cs+=String.fromCharCode((ms<<3|fs>>>2)&255)+String.fromCharCode((fs<<6|hs<<1|gs>>>4)&255)+String.fromCharCode((gs<<4|ys>>>1)&255)+String.fromCharCode((ys<<7|xs<<2|bs>>>3)&255)),Cs},cs={encode:ls,decode:us};us.asBytes=is,Or?Br.exports=cs:ae.base32=cs})()})(base32$1)),base32$1.exports}requireBase32();function groupCompositeRanges({children:Br,ranges:ae,isAbsent:Me=()=>!1,isBlank:Or=()=>!1,skipRange:Hr=()=>!1,trimEnd:Li=is=>is,startInd:ts=0,endInd:rs=Br.length-1,removedInd:ns=null}){const is=(ae??[]).flatMap(us=>{const cs=shiftForRemovedChild(us,ns);return cs&&cs.firstInd>=ts&&cs.lastInd<=rs?[{range:us,...cs}]:[]}).sort((us,cs)=>us.firstInd-cs.firstInd||cs.lastInd-us.lastInd),as={range:null,firstInd:ts,lastInd:rs,nextInd:ts,eligibility:null,items:[],eligible:[]},os=[as];function ss(us,cs){for(;us.nextInd<cs;us.nextInd++){const ds=Br[us.nextInd];Me(ds)||(us.items.push({kind:"child",value:ds,index:us.nextInd}),us.eligibility&&us.eligible.push(us.eligibility[us.nextInd-us.firstInd]??!1))}}function ls(){const us=os.pop();if(ss(us,us.lastInd+1),us.items.length===0)return;const cs=os[os.length-1],ds=us.items.filter(fs=>!isBlankGroup(fs,Or)),ps=us.eligible.every((fs,hs)=>fs||isBlankGroup(us.items[hs],Or)),ms=!!us.range.asList&&ps&&ds.length>1;cs.items.push({kind:"composite",range:us.range,asList:ms,items:ms?prepareListItems(us.items,Or,Li):us.items}),cs.eligibility&&cs.eligible.push(ps)}for(const{range:us,firstInd:cs,lastInd:ds}of is){for(;os.length>1&&ds>os[os.length-1].lastInd;)ls();const ps=os[os.length-1];cs<ps.nextInd||(ss(ps,cs),ps.nextInd=ds+1,!Hr(us)&&os.push({range:us,firstInd:cs,lastInd:ds,nextInd:cs,eligibility:us.potentialListComponents??null,items:[],eligible:[]}))}for(;os.length>1;)ls();return ss(as,rs+1),as.items}function shiftForRemovedChild(Br,ae){let{firstInd:Me,lastInd:Or}=Br;if(ae===null)return{firstInd:Me,lastInd:Or};if(!(Me===ae||Or===ae))return Me>ae&&(Me-=1),Or>ae&&(Or-=1),{firstInd:Me,lastInd:Or}}function isBlankGroup(Br,ae){return Br.kind==="child"?ae(Br.value):Br.items.every(Me=>isBlankGroup(Me,ae))}function prepareListItems(Br,ae,Me){const Or=Br.findIndex(ts=>!isBlankGroup(ts,ae));let Hr=Br.length-1;for(;Hr>Or&&isBlankGroup(Br[Hr],ae);)Hr--;const Li=[];for(const[ts,rs]of Br.entries())ts<Or||ts>=Hr?Li.push(rs):isBlankGroup(rs,ae)?rs.kind==="composite"&&Li.push(withoutBlankChildren(rs)):Li.push(trimItemEnd(rs,ae,Me));return Li}function withoutBlankChildren(Br){return{...Br,items:Br.items.flatMap(ae=>ae.kind==="composite"?[withoutBlankChildren(ae)]:[])}}function trimItemEnd(Br,ae,Me){if(Br.kind==="child"){const Li=Me(Br.value);return Li===Br.value?Br:{...Br,value:Li}}let Or=Br.items.length;for(;isBlankGroup(Br.items[Or-1],ae);)Or--;const Hr=Br.items.slice(Or).flatMap(Li=>Li.kind==="composite"?[withoutBlankChildren(Li)]:[]);return{...Br,items:[...Br.items.slice(0,Or-1),trimItemEnd(Br.items[Or-1],ae,Me),...Hr]}}const{gcd,lcm}=Context.math,{mod}=Context.math,{dopri}=Context.math,defaultCreativeCommonsVersion="4.0";function creativeCommonsLicense(Br,ae,Me,Or){return{code:Br,name:`Creative Commons ${ae}`,description:Or,kind:"creative-commons",url:(Hr=defaultCreativeCommonsVersion)=>`https://creativecommons.org/licenses/${Me}/${Hr}/`}}function fixedUrlLicense(Br,ae,Me,Or,Hr){return{code:Br,name:ae,description:Or,kind:Hr,url:()=>Me}}const mediaLicenses=[creativeCommonsLicense("CC-BY","Attribution","by","Creative Commons Attribution: reuse with credit, including commercially."),creativeCommonsLicense("CC-BY-SA","Attribution-ShareAlike","by-sa","Creative Commons Attribution-ShareAlike: reuse with credit; adaptations keep the same license."),creativeCommonsLicense("CC-BY-ND","Attribution-NoDerivatives","by-nd","Creative Commons Attribution-NoDerivatives: reuse unchanged, with credit."),creativeCommonsLicense("CC-BY-NC","Attribution-NonCommercial","by-nc","Creative Commons Attribution-NonCommercial: reuse with credit for noncommercial purposes."),creativeCommonsLicense("CC-BY-NC-SA","Attribution-NonCommercial-ShareAlike","by-nc-sa","Creative Commons Attribution-NonCommercial-ShareAlike: noncommercial reuse with credit; adaptations keep the same license."),creativeCommonsLicense("CC-BY-NC-ND","Attribution-NonCommercial-NoDerivatives","by-nc-nd","Creative Commons Attribution-NonCommercial-NoDerivatives: reuse unchanged for noncommercial purposes, with credit."),fixedUrlLicense("CC0","CC0 1.0 Public Domain Dedication","https://creativecommons.org/publicdomain/zero/1.0/","Creative Commons Zero: the creator has dedicated the work to the public domain.","public-domain"),fixedUrlLicense("PDM","Public Domain Mark 1.0","https://creativecommons.org/publicdomain/mark/1.0/","Public Domain Mark: the work is free of known copyright restrictions.","public-domain"),fixedUrlLicense("GFDL","GNU Free Documentation License","https://www.gnu.org/licenses/fdl-1.3.html","GNU Free Documentation License: copyleft license common on Wikimedia.","license"),fixedUrlLicense("FAL","Free Art License 1.3","https://artlibre.org/licence/lal/en/","Free Art License: copyleft license for artistic works.","license"),fixedUrlLicense("OGL","Open Government Licence v3.0 (UK)","https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/","UK Open Government Licence: reuse government material with attribution.","license"),fixedUrlLicense("MIT","MIT License","https://opensource.org/license/mit","MIT License: permissive license common for icon and illustration sets.","license"),fixedUrlLicense("APACHE-2.0","Apache License 2.0","https://www.apache.org/licenses/LICENSE-2.0","Apache License 2.0: permissive license common for icon and illustration sets.","license")];Object.fromEntries(mediaLicenses.map(Br=>[Br.code.toLowerCase(),Br]));var cssesc_1,hasRequiredCssesc;function requireCssesc(){if(hasRequiredCssesc)return cssesc_1;hasRequiredCssesc=1;var Br={},ae=Br.hasOwnProperty,Me=function(ns,is){if(!ns)return is;var as={};for(var os in is)as[os]=ae.call(ns,os)?ns[os]:is[os];return as},Or=/[ -,\.\/:-@\[-\^`\{-~]/,Hr=/[ -,\.\/:-@\[\]\^`\{-~]/,Li=/(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g,ts=function rs(ns,is){is=Me(is,rs.options),is.quotes!="single"&&is.quotes!="double"&&(is.quotes="single");for(var as=is.quotes=="double"?'"':"'",os=is.isIdentifier,ss=ns.charAt(0),ls="",us=0,cs=ns.length;us<cs;){var ds=ns.charAt(us++),ps=ds.charCodeAt(),ms=void 0;if(ps<32||ps>126){if(ps>=55296&&ps<=56319&&us<cs){var fs=ns.charCodeAt(us++);(fs&64512)==56320?ps=((ps&1023)<<10)+(fs&1023)+65536:us--}ms="\\"+ps.toString(16).toUpperCase()+" "}else is.escapeEverything?Or.test(ds)?ms="\\"+ds:ms="\\"+ps.toString(16).toUpperCase()+" ":/[\t\n\f\r\x0B]/.test(ds)?ms="\\"+ps.toString(16).toUpperCase()+" ":ds=="\\"||!os&&(ds=='"'&&as==ds||ds=="'"&&as==ds)||os&&Hr.test(ds)?ms="\\"+ds:ms=ds;ls+=ms}return os&&(/^-[-\d]/.test(ls)?ls="\\-"+ls.slice(1):/\d/.test(ss)&&(ls="\\3"+ss+" "+ls.slice(1))),ls=ls.replace(Li,function(hs,gs,ys){return gs&&gs.length%2?hs:(gs||"")+ys}),!os&&is.wrap?as+ls+as:ls};return ts.options={escapeEverything:!1,isIdentifier:!1,quotes:"single",wrap:!1},ts.version="3.0.0",cssesc_1=ts,cssesc_1}requireCssesc();function isBlankChild(Br){return typeof Br=="string"&&Br.trim()===""}function makeWrapperElement(Br,ae,Me){return{type:"element",name:ae,attributes:{},children:Me,data:{id:Br}}}function materializeGroups(Br,ae,Me){const Or=[];for(const Hr of Br){if(Hr.kind==="child"){Hr.value!==null&&Or.push(Hr.value);continue}if(Hr.asList){const ts=Hr.items.map(as=>isBlankGroup(as,isBlankChild)),rs=ts.indexOf(!1),ns=ts.lastIndexOf(!1),is=Hr.items.slice(rs,ns+1).filter((as,os)=>!ts[rs+os]);ae||Or.push(...materializeGroups(Hr.items.slice(0,rs),!1,Me)),Me.push(makeWrapperElement(Hr.range.compositeIdx,"asList",materializeGroups(is,!0,Me))),Or.push({id:Hr.range.compositeIdx,annotation:"original"}),ae||Or.push(...materializeGroups(Hr.items.slice(ns+1),!1,Me));continue}const Li=materializeGroups(Hr.items,!1,Me);ae&&Li.length>1?(Me.push(makeWrapperElement(Hr.range.compositeIdx,"_fragment",Li)),Or.push({id:Hr.range.compositeIdx,annotation:"original"})):Or.push(...Li)}return Or}function applyCompositeListWrapping(Br,ae){const Me=groupCompositeRanges({children:Br,ranges:ae,isAbsent:Li=>Li===null,isBlank:isBlankChild,trimEnd:Li=>typeof Li=="string"?Li.trimEnd():Li}),Or=[];return{children:materializeGroups(Me,!1,Or),wrapperElements:Or}}function propRename(Br,ae){for(const[Me,Or]of Object.entries(ae))Br.hasOwnProperty(Me)&&(Br[Or]=Br[Me],delete Br[Me])}function elementRename(Br,ae){Br.name=ae}function booleanInputJsToRust(Br){Br.immediateValue=Br.value}function pointJsToRust(Br){const ae=Br.numericalXs;Br.x={math_object:ae[0].toString()},ae.length>=2&&(Br.y={math_object:ae[1].toString()}),ae.length>=3&&(Br.z={math_object:ae[2].toString()}),Br.coordsLatex=Br.latex}function refJsToRust(Br,ae){Br.referent=ae[Br.targetRendererId]}function sectionJsToRust(Br,ae){Br.divisionType=ae.name,Br.divisionDepth=Br.level;const Me=Br.titleChildName!=null?Number(Br.titleChildName):void 0,Or=Me!==void 0&&Number.isInteger(Me);if(Br.xrefLabel={label:(Or?Br.titlePrefix:Br.title)??"",global_ident:Br.sectionNumber??"",local_ident:Br.sectionNumber??"",preferred_form:"Global"},Br.codeNumber="",Or){Br.title=Me;const Hr=ae.children.findIndex(Li=>typeof Li!="string"&&Li.id===Me);Hr!==-1&&ae.children.splice(Hr,1)}else Br.title=null}function tableJsToRust(Br,ae){Br.xrefLabel={label:Br.tableName??"",global_ident:Br.tableEnumeration??"",local_ident:Br.tableEnumeration??"",preferred_form:"Global"},Br.codeNumber=Br.tableEnumeration??"",Br.titlePrefix=Br.suppressTableNameInTitle?"":Br.tableNamePrefix??"",Br.divisionType="table",Br.divisionDepth=3;const Me=Br.titleChildName!=null?Number(Br.titleChildName):void 0;if(Me!==void 0&&Number.isInteger(Me)){Br.title=Me;const Hr=ae.children.findIndex(Li=>typeof Li!="string"&&Li.id===Me);Hr!==-1&&ae.children.splice(Hr,1)}else Br.title=null;delete Br.tableEnumeration,delete Br.titleChildName,delete Br.tableName,delete Br.tableNamePrefix}function textJsToRust(Br){Br.value=Br.text}function childInstructionToContent(Br,ae){return typeof Br=="string"?Br:(ae[Br.id]=Br.componentIdx,{id:Br.componentIdx,annotation:"original"})}function applyElementJsToRustFixups(Br,ae){if(!(Br?.type!=="element"||!Br.data.props))switch(Br.name){case"angle":propRename(Br.data.props,{latexForRenderer:"latex"});break;case"cell":propRename(Br.data.props,{inHeader:"header"});break;case"booleanInput":booleanInputJsToRust(Br.data.props);break;case"text":textJsToRust(Br.data.props);break;case"aside":case"article":case"section":sectionJsToRust(Br.data.props,Br),Br.name==="section"&&elementRename(Br,"division");break;case"table":tableJsToRust(Br.data.props,Br);break;case"point":pointJsToRust(Br.data.props);break;case"ref":refJsToRust(Br.data.props,ae);break;case"coords":elementRename(Br,"math");break}}function flatDastFromJS(Br,ae){const Me=ae[0].rendererStatesToUpdate,Or=[],Hr={[Br.id]:Br.componentIdx};Or[Br.componentIdx]={type:"element",name:Br.componentType,attributes:{},children:[],data:{id:Br.componentIdx,action_names:Object.keys(Br.actions)}};for(const ts of Me){let rs=Or[ts.componentIdx];if(rs||(rs=Or[ts.componentIdx]={type:"element",name:"",attributes:{},children:[],data:{id:ts.componentIdx}}),rs.type==="element"&&(rs.data.props=ts.stateValues,ts.childrenInstructions)){const ns=[];for(const os of ts.childrenInstructions){if(os==null){ns.push(null);continue}if(ns.push(childInstructionToContent(os,Hr)),typeof os=="string")continue;const ss=Or[os.componentIdx];ss?ss.type==="element"&&(ss.name=os.componentType,ss.data.id=os.componentIdx,ss.data.action_names=Object.keys(os.actions)):Or[os.componentIdx]={type:"element",name:os.componentType,attributes:{},children:[],data:{id:os.componentIdx,action_names:Object.keys(os.actions)}}}const{children:is,wrapperElements:as}=applyCompositeListWrapping(ns,ts.stateValues?._compositeReplacementActiveRange);rs.children=is;for(const os of as)Or[os.data.id]=os}}for(const ts of Or)applyElementJsToRustFixups(ts,Hr);return{type:"root",children:[{id:Br.componentIdx,annotation:"original"}],elements:Or,warnings:[]}}function collectInstructionMaps(Br,ae={},Me={}){for(const Or of Br)for(const Hr of Or.rendererStatesToUpdate)for(const Li of Hr.childrenInstructions??[])Li!=null&&typeof Li!="string"&&(ae[Li.componentIdx]=Li.componentType,Me[Li.id]=Li.componentIdx);return{componentIdxToName:ae,doenetIdToComponentIdx:Me}}function seedInstructionMaps(Br,ae){const Me={[Br.componentIdx]:Br.componentType},Or={[Br.id]:Br.componentIdx};return collectInstructionMaps(ae,Me,Or),{componentIdxToName:Me,doenetIdToComponentIdx:Or}}function flatDastUpdateFromJS(Br,ae,Me={}){const Or={};function Hr(Li,ts){const rs=Or[Li];rs?(rs.changedState={...rs.changedState,...ts.changedState},ts.newChildren&&(rs.newChildren=ts.newChildren),ts.newFlatDastElement&&(rs.newFlatDastElement=ts.newFlatDastElement)):Or[Li]=ts}for(const Li of Br)for(const ts of Li.rendererStatesToUpdate){const{componentIdx:rs,stateValues:ns,childrenInstructions:is}=ts,as=[];if(is)for(const cs of is){if(cs==null){as.push(null);continue}as.push(childInstructionToContent(cs,Me))}const{children:os,wrapperElements:ss}=applyCompositeListWrapping(as,ns?._compositeReplacementActiveRange),ls={type:"element",name:ae[rs]??"",children:os,data:{id:rs,props:{...ns}}};applyElementJsToRustFixups(ls,Me);const us={changedState:ls.data.props};is&&(us.newChildren=ls.children),Hr(rs,us);for(const cs of ss)Hr(cs.data.id,{newFlatDastElement:cs})}return Or}async function resolvePathImmediatelyToNodeIdx(Br,ae,Me,Or=0){if(!Me.core)return-1;const Hr=Br.match(/^([\w-]+)((\[\d+\])*)/);if(!Hr)throw Error(`Invalid name to resolve: ${Br}`);const Li=[{type:"flatPathPart",name:Hr[1],index:extractIndex(Hr[2])}];let ts=Br.slice(Hr[0].length);for(;ts.length>0;){const rs=ts.match(/^\.([\w-]+)((\[\d+\])*)/);if(!rs)throw Error(`Invalid name to resolve: ${Br}`);Li.push({type:"flatPathPart",name:rs[1],index:extractIndex(rs[2])}),ts=ts.slice(rs[0].length)}try{let rs=ae.resolve_path({path:Li},Or,!1);for(;rs.unresolvedPath!==null;){if(rs.unresolvedPath[0].name!=="")return-1;const ns=Me.core._components[rs.nodeIdx];if(!Me.core.componentInfoObjects.isCompositeComponent({componentType:ns.componentType,includeNonStandard:!0})||ns.isExpanded)return-1;const as=rs.unresolvedPath[0].index;if(as.length===0)throw Error("Something went wrong as we have a ref resolution without a name or an index");if(typeof as[0].value[0]!="string")throw Error("Not implemented: we have not implemented `resolvePathImmediatelyToNodeIdx` for paths that contain references to nodes.");await ns.stateValues.readyToExpandWhenResolved,await expandCompositeComponent({core:Me.core,component:ns}),rs=ae.resolve_path({path:Li},Or,!1)}return rs.nodeIdx}catch(rs){return console.error(rs),-1}}function extractIndex(Br){const ae=[];for(const Me of Br.matchAll(/\[(\d+)\]/g))ae.push({value:[Me[1]]});return ae}const JS_CORE_ACTION_NAME_OVERRIDES={point:{move:"movePoint"},graph:{changeBoundingBox:"changeAxisLimits"}};function translateJsCoreActionName(Br,ae){return Br==null?ae:JS_CORE_ACTION_NAME_OVERRIDES[Br]?.[ae]??ae}const WASM_FILE_NAME="lib_doenetml_worker_bg.wasm";function injectedGlobal(Br){const ae=globalThis[Br];return typeof ae=="string"?ae:void 0}function decodeWasmDataUrl(Br){try{const ae=Br.split(",")[1],Me=atob(ae),Or=new Uint8Array(Me.length);for(let Hr=0;Hr<Me.length;Hr++)Or[Hr]=Me.charCodeAt(Hr);return Or.buffer}catch(ae){return console.warn("Error while decoding the WASM data URL:",ae),null}}function wasmUrlCandidates(){const Br=[];function ae(Hr){Br.includes(Hr)||Br.push(Hr)}const Me=injectedGlobal("__doenetWorkerWasmUrl");Me!==void 0&&ae(Me);const Or=[injectedGlobal("__doenetWorkerScriptUrl"),typeof location<"u"?location.href:void 0];for(const Hr of Or)if(Hr!==void 0)try{ae(new URL(WASM_FILE_NAME,Hr).href)}catch{}return ae(`https://cdn.jsdelivr.net/npm/@doenet/standalone@0.7.26-dev.559/doenetml-worker/${WASM_FILE_NAME}`),Br}async function resolveWasmInput(){const Br=injectedGlobal("__doenetWorkerWasmUrl");if(Br!==void 0&&/^data:.*;base64,/.test(Br)){const Me=decodeWasmDataUrl(Br);if(Me)return Me}let ae;for(const Me of wasmUrlCandidates())if(!Me.startsWith("data:"))try{const Or=await fetch(Me);if(!Or.ok)throw Error(`HTTP ${Or.status} fetching ${Me}`);const Hr=Or.headers.get("Content-Type")??"";if(/^text\/html\b/i.test(Hr))throw Error(`Fetching ${Me} returned ${Hr}, an HTML page rather than WebAssembly`);return Or}catch(Or){ae=Or}throw ae??Error("No URL to load the core WASM from")}if(typeof globalThis<"u"&&!globalThis.document){const Br=new URL(typeof location<"u"?location.href:"http://localhost"),ae=Br.protocol+"//"+Br.host+Br.pathname;globalThis.document={URL:ae,baseURI:ae}}let wasmInitPromise=null;function ensureWasmInitialized(){return wasmInitPromise||(wasmInitPromise=(async()=>{const Br=await resolveWasmInput();return await __wbg_init({module_or_path:Br})})().catch(Br=>{throw wasmInitPromise=null,Br})),wasmInitPromise}const RELEASED_INITIALIZATION_DATA_MESSAGE="Cannot initialize from the document DAST: it was released when the previous initialization completed. Call setSource again before re-initializing.";class CoreWorker{constructor(){this.wasm_initialized=!1,this.javascript_initialized=!1,this.source_set=!1,this._initializationDataReleased=!1,this.flags_set=!1,this.core_type="rust",this._javascriptUpdateBuffer=[],this._capturingJavascriptUpdates=!1,this._componentIdxToName={},this._doenetIdToComponentIdx={},this._javascriptInitialRenderDone=!1,this.isProcessingPromise=Promise.resolve(),this._hostedCores=new Map,this._nextHostedCoreId=1,this._isHostedCore=!1}async createCore(ae){const Me=new CoreWorker;Me._isHostedCore=!0,expose(Me,ae);const Or=this._nextHostedCoreId++;return this._hostedCores.set(Or,{core:Me,port:ae}),Or}async destroyCore(ae){const Me=this._hostedCores.get(ae);if(Me){this._hostedCores.delete(ae);try{await Me.core.terminate()}catch(Or){console.error("Error terminating hosted core",Or)}finally{Me.port.close()}}}setCoreType(ae){this.core_type=ae}async setSource(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{this.wasm_initialized||(await ensureWasmInitialized(),this.wasm_initialized=!0),this.doenetCore||(this.doenetCore=PublicDoenetMLCore$1.new()),this.core_type==="javascript"&&(this.javascriptCore||(this.javascriptCore=new PublicDoenetMLCore),this.javascriptCore.setSource(ae.source)),this.doenetCore.set_source(ae.dast,ae.source),this.source_set=!0,this._initializationDataReleased=!1}catch(Li){throw console.error("Error when setting source",Li),Li}finally{Hr()}}async setFlags(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{this.wasm_initialized||(await ensureWasmInitialized(),this.wasm_initialized=!0),this.doenetCore||(this.doenetCore=PublicDoenetMLCore$1.new()),this.core_type==="javascript"&&(this.javascriptCore||(this.javascriptCore=new PublicDoenetMLCore),this.javascriptCore.setFlags(ae.flags)),this.doenetCore.set_flags(JSON.stringify(ae.flags)),this.flags_set=!0}finally{Hr()}}async setLocaleData(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{this.core_type==="javascript"&&(this.javascriptCore||(this.javascriptCore=new PublicDoenetMLCore),this.javascriptCore.setLocaleData(ae.localeData))}finally{Hr()}}async initializeJavascriptCore({activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr}){const Li=this.isProcessingPromise;let{promise:ts,resolve:rs}=promiseWithResolver();this.isProcessingPromise=ts,await Li;try{let ns=function(){return us.calculate_root_names()},is=function(ds,ps,ms){return us.resolve_path(ds,ps,ms)},as=function(ds,ps){us.add_nodes_to_resolver(ds,ps)},os=function(ds,ps){us.replace_index_resolutions_in_resolver(ds,ps)},ss=function(ds){us.delete_nodes_from_resolver(ds)};if(!this.source_set||!this.flags_set||!this.javascriptCore||!this.doenetCore)throw Error("Cannot initialize javascript core before setting source and flags");if(this._initializationDataReleased)throw Error(RELEASED_INITIALIZATION_DATA_MESSAGE);let ls=this.doenetCore.return_normalized_dast_root();const us=this.doenetCore,cs=await this.javascriptCore.initializeWorker({activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr,normalizedRoot:ls,addNodesToResolver:as,replaceIndexResolutionsInResolver:os,deleteNodesFromResolver:ss,resolvePath:is,calculateRootNames:ns});return this.javascript_initialized=!0,this.doenetCore.release_initialization_data(),this._initializationDataReleased=!0,cs}catch(ns){throw console.error(ns),ns}finally{rs()}}async generateJavascriptDast(ae,Me,Or,Hr,Li,ts,rs,ns){const is=this.isProcessingPromise;let{promise:as,resolve:os}=promiseWithResolver();if(this.isProcessingPromise=as,await is,!this.javascript_initialized||!this.javascriptCore)throw Error("Cannot return javascript dast before initializing javascript core");try{return await this.javascriptCore?.createCoreGenerateDast(ae,Me,Or,Hr,Li,ts,rs,ns)}catch(ss){throw console.error(ss),ss}finally{os()}}async returnDast(){const ae=this.isProcessingPromise;let{promise:Me,resolve:Or}=promiseWithResolver();if(this.isProcessingPromise=Me,await ae,!this.source_set||!this.flags_set||!this.doenetCore)throw Error("Cannot return dast before setting source and flags");try{return this.core_type==="javascript"?await this.returnFlatDastFromJS():this.doenetCore.return_dast()}catch(Hr){throw console.error(Hr),Hr}finally{Or()}}async returnNormalizedDastRoot(){if(!this.source_set||!this.doenetCore)throw Error("Cannot return normalized dast root before setting source");if(this.core_type==="javascript")return{nodes:[]};if(this._initializationDataReleased)throw Error(RELEASED_INITIALIZATION_DATA_MESSAGE);return this.doenetCore.return_normalized_dast_root()}async returnFlatDastFromJS(){if(!this.javascriptCore||!this.doenetCore)throw Error("Cannot return dast before setting source and flags");if(this._initializationDataReleased)throw Error(RELEASED_INITIALIZATION_DATA_MESSAGE);let ae=this.doenetCore.return_normalized_dast_root();const Me=this.doenetCore;function Or(){return Me.calculate_root_names()}function Hr(ys,xs,bs){return Me.resolve_path(ys,xs,bs)}function Li(ys,xs){Me.add_nodes_to_resolver(ys,xs)}function ts(ys,xs){Me.replace_index_resolutions_in_resolver(ys,xs)}function rs(ys){Me.delete_nodes_from_resolver(ys)}await this.javascriptCore.initializeWorker({activityId:"a",docId:"a",requestedVariantIndex:1,attemptNumber:1,normalizedRoot:ae,addNodesToResolver:Li,replaceIndexResolutionsInResolver:ts,deleteNodesFromResolver:rs,resolvePath:Hr,calculateRootNames:Or}),this.javascript_initialized=!0,this.doenetCore.release_initialization_data(),this._initializationDataReleased=!0;const ns={coreId:"a",cid:null,initializeCounters:{}};let is=null;this._javascriptUpdateBuffer=[];const as=ys=>{ys.init?is=ys.updateInstructions:this._capturingJavascriptUpdates&&ys.updateInstructions&&this._javascriptUpdateBuffer.push(...ys.updateInstructions)},os=ys=>{},ss=ys=>{},ls=ys=>{},us=ys=>{},cs=ys=>{},ds=ys=>Promise.resolve({allowView:!0}),ps=await this.javascriptCore.createCoreGenerateDast(ns,as,os,ss,ls,us,cs,ds);if(!ps.success)throw console.error(ps.errMsg),Error(ps.errMsg);if(is===null)throw Error("Need to address case where do not get updateRenderersCallback before dast");const ms=ps.coreInfo.documentToRender,{componentIdxToName:fs,doenetIdToComponentIdx:hs}=seedInstructionMaps(ms,is);return this._componentIdxToName=fs,this._doenetIdToComponentIdx=hs,this._javascriptInitialRenderDone=!0,flatDastFromJS(ms,is)}async dispatchActionJavascript(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();if(this.isProcessingPromise=Or,await Me,!this.source_set||!this.flags_set||!this.javascriptCore)throw Error("Cannot handle action before setting source and flags");try{return await this.javascriptCore.requestAction(ae)}catch(Li){throw console.error(Li),Li}finally{Hr()}}async dispatchActionJavascriptFlat(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{if(!this.source_set||!this.flags_set||!this.javascriptCore)throw Error("Cannot handle action before setting source and flags");if(!this._javascriptInitialRenderDone)throw Error("Cannot dispatch a flat action before the initial render (returnDast) has run");this._javascriptUpdateBuffer=[],this._capturingJavascriptUpdates=!0;const Li=ae.componentIdx!=null?this._componentIdxToName[ae.componentIdx]:void 0,ts=translateJsCoreActionName(Li,ae.actionName),rs=await this.javascriptCore.requestAction({...ae,actionName:ts});if(rs&&typeof rs=="object"&&"success"in rs&&rs.success===!1){const is=ts===ae.actionName?`"${ae.actionName}"`:`"${ae.actionName}" (translated to "${ts}")`;throw Error(`Action ${is} failed: ${rs.errMsg??"unknown error"}`)}this._capturingJavascriptUpdates=!1;const ns=this._javascriptUpdateBuffer;return this._javascriptUpdateBuffer=[],collectInstructionMaps(ns,this._componentIdxToName,this._doenetIdToComponentIdx),flatDastUpdateFromJS(ns,this._componentIdxToName,this._doenetIdToComponentIdx)}catch(Li){throw console.error(Li),Li}finally{this._capturingJavascriptUpdates=!1,Hr()}}async resolvePath(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();if(this.isProcessingPromise=Or,await Me,!this.source_set||!this.flags_set||!this.doenetCore)throw Error("Cannot resolve a path before setting source and flags");try{return this.doenetCore.resolve_path(ae.path,ae.origin,ae.skipParentSearch)}finally{Hr()}}async dispatchAction(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();if(this.isProcessingPromise=Or,await Me,!this.source_set||!this.flags_set||!this.doenetCore)throw Error("Cannot handle action before setting source and flags");try{return this.doenetCore.dispatch_action(ae)}catch(Li){throw console.error(Li),Li}finally{Hr()}}async resolvePathJavascript(ae,Me=0){const Or=this.isProcessingPromise;let{promise:Hr,resolve:Li}=promiseWithResolver();if(this.isProcessingPromise=Hr,await Or,!this.source_set||!this.flags_set||!this.doenetCore||!this.javascriptCore)throw Error("Cannot resolve path before setting source and flags");try{return await resolvePathImmediatelyToNodeIdx(ae,this.doenetCore,this.javascriptCore,Me)}catch(ts){throw console.error(ts),ts}finally{Li()}}async terminate(){const ae=this.isProcessingPromise;let{promise:Me,resolve:Or}=promiseWithResolver();if(this.isProcessingPromise=Me,await ae,this.doenetCore?.free(),this.doenetCore=void 0,this.source_set=!1,this.flags_set=!1,this.javascriptCore)try{await this.javascriptCore.terminate()}catch(Hr){throw console.error(Hr),Hr}finally{Or()}else Or();this._isHostedCore||close()}async returnAllStateVariables(ae=!1){return this.javascriptCore?this.javascriptCore.returnAllStateVariables(ae):{}}handleVisibilityChange(ae){this.javascriptCore&&this.javascriptCore.handleVisibilityChange(ae)}async submitAllAnswers(){this.javascriptCore&&this.javascriptCore.submitAllAnswers()}async saveImmediately(){this.javascriptCore&&this.javascriptCore.saveImmediately()}async flushState(){return this.javascriptCore?await this.javascriptCore.flushState():!1}async _getTests(){return this.doenetCore?._get_tests()}async _runTest(ae){return this.doenetCore?._run_test(ae)}}function promiseWithResolver(){let Br,ae;return{promise:new Promise((Or,Hr)=>{Br=Or,ae=Hr}),resolve:Br,reject:ae}}expose(new CoreWorker);function _mergeNamespaces$1(Br,ae){for(var Me=0;Me<ae.length;Me++){const Or=ae[Me];if(typeof Or!="string"&&!Array.isArray(Or)){for(const Hr in Or)if(Hr!=="default"&&!(Hr in Br)){const Li=Object.getOwnPropertyDescriptor(Or,Hr);Li&&Object.defineProperty(Br,Hr,Li.get?Li:{enumerable:!0,get:()=>Or[Hr]})}}}return Object.freeze(Object.defineProperty(Br,Symbol.toStringTag,{value:"Module"}))}var sha256$3={exports:{}},convertHex$1={exports:{}},convertHex=convertHex$1.exports,hasRequiredConvertHex;function requireConvertHex(){return hasRequiredConvertHex||(hasRequiredConvertHex=1,(function(Br){(function(ae){var Me={bytesToHex:function(Li){return Or(Li)},hexToBytes:function(Li){if(Li.length%2===1)throw new Error("hexToBytes can't have a string with an odd number of characters.");return Li.indexOf("0x")===0&&(Li=Li.slice(2)),Li.match(/../g).map(function(ts){return parseInt(ts,16)})}};function Or(Li){return Li.map(function(ts){return Hr(ts.toString(16),2)}).join("")}function Hr(Li,ts){return Li.length>ts?Li:Array(ts-Li.length+1).join("0")+Li}Br.exports?Br.exports=Me:ae.convertHex=Me})(convertHex)})(convertHex$1)),convertHex$1.exports}var convertString$1={exports:{}},convertString=convertString$1.exports,hasRequiredConvertString;function requireConvertString(){return hasRequiredConvertString||(hasRequiredConvertString=1,(function(Br){(function(ae){var Me={bytesToString:function(Or){return Or.map(function(Hr){return String.fromCharCode(Hr)}).join("")},stringToBytes:function(Or){return Or.split("").map(function(Hr){return Hr.charCodeAt(0)})}};Me.UTF8={bytesToString:function(Or){return decodeURIComponent(escape(Me.bytesToString(Or)))},stringToBytes:function(Or){return Me.stringToBytes(unescape(encodeURIComponent(Or)))}},Br.exports?Br.exports=Me:ae.convertString=Me})(convertString)})(convertString$1)),convertString$1.exports}var sha256$2=sha256$3.exports,hasRequiredSha256;function requireSha256(){return hasRequiredSha256||(hasRequiredSha256=1,(function(Br){(function(ae){var Me={};Br.exports?(Me.bytesToHex=requireConvertHex().bytesToHex,Me.convertString=requireConvertString(),Br.exports=ns):(Me.bytesToHex=ae.convertHex.bytesToHex,Me.convertString=ae.convertString,ae.sha256=ns);var Or=[];(function(){function is(ls){for(var us=Math.sqrt(ls),cs=2;cs<=us;cs++)if(!(ls%cs))return!1;return!0}function as(ls){return(ls-(ls|0))*4294967296|0}for(var os=2,ss=0;ss<64;)is(os)&&(Or[ss]=as(Math.pow(os,.3333333333333333)),ss++),os++})();var Hr=function(is){for(var as=[],os=0,ss=0;os<is.length;os++,ss+=8)as[ss>>>5]|=is[os]<<24-ss%32;return as},Li=function(is){for(var as=[],os=0;os<is.length*32;os+=8)as.push(is[os>>>5]>>>24-os%32&255);return as},ts=[],rs=function(is,as,os){for(var ss=is[0],ls=is[1],us=is[2],cs=is[3],ds=is[4],ps=is[5],ms=is[6],fs=is[7],hs=0;hs<64;hs++){if(hs<16)ts[hs]=as[os+hs]|0;else{var gs=ts[hs-15],ys=(gs<<25|gs>>>7)^(gs<<14|gs>>>18)^gs>>>3,xs=ts[hs-2],bs=(xs<<15|xs>>>17)^(xs<<13|xs>>>19)^xs>>>10;ts[hs]=ys+ts[hs-7]+bs+ts[hs-16]}var vs=ds&ps^~ds&ms,Cs=ss&ls^ss&us^ls&us,Ts=(ss<<30|ss>>>2)^(ss<<19|ss>>>13)^(ss<<10|ss>>>22),As=(ds<<26|ds>>>6)^(ds<<21|ds>>>11)^(ds<<7|ds>>>25),Ns=fs+As+vs+Or[hs]+ts[hs],_s=Ts+Cs;fs=ms,ms=ps,ps=ds,ds=cs+Ns|0,cs=us,us=ls,ls=ss,ss=Ns+_s|0}is[0]=is[0]+ss|0,is[1]=is[1]+ls|0,is[2]=is[2]+us|0,is[3]=is[3]+cs|0,is[4]=is[4]+ds|0,is[5]=is[5]+ps|0,is[6]=is[6]+ms|0,is[7]=is[7]+fs|0};function ns(is,as){is.constructor===String&&(is=Me.convertString.UTF8.stringToBytes(is));var os=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],ss=Hr(is),ls=is.length*8;ss[ls>>5]|=128<<24-ls%32,ss[(ls+64>>9<<4)+15]=ls;for(var us=0;us<ss.length;us+=16)rs(os,ss,us);var cs=Li(os);return as&&as.asBytes?cs:as&&as.asString?Me.convertString.bytesToString(cs):Me.bytesToHex(cs)}ns.x2=function(is,as){return ns(ns(is,{asBytes:!0}),as)}})(sha256$2)})(sha256$3)),sha256$3.exports}var sha256Exports=requireSha256();const sha256=getDefaultExportFromCjs$1(sha256Exports),sha256$1=_mergeNamespaces$1({__proto__:null,default:sha256},[sha256Exports]),sha256DT5xJ2HvHNAN6Jrk=Object.freeze(Object.defineProperty({__proto__:null,s:sha256$1},Symbol.toStringTag,{value:"Module"}));return exports.CoreWorker=CoreWorker,Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),exports})({});
2866
+ `).map(ss=>ss.trim().split(",").map(ls=>ls.trim())),rs=ts[0]?.length,ns=!1;for(let ss of ts.slice(1))if(ss.length!==rs){ns=!0;break}if(ns){let ss=codedDiagnostic({type:"warning",code:"doenet-w0066",args:{componentIdx:String(Or)}});return{setValue:{dataFrame:null,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:Li},sendDiagnostics:[ss]}}let is={},as=[];if(Me.hasHeader?(is.columnNames=ts[0].map(ss=>(['"',"'"].includes(ss[0])&&ss[ss.length-1]===ss[0]&&(ss=ss.substring(1,ss.length-1)),ss)),as=ts.slice(1)):(is.columnNames=[...Array(rs).keys()].map(ss=>`col${ss+1}`),as=ts),[...new Set(is.columnNames)].length<is.columnNames){let ss=codedDiagnostic({type:"warning",code:"doenet-w0067",args:{componentIdx:String(Or)}});return{setValue:{dataFrame:null,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:Li},sendDiagnostics:[ss]}}if(is.columnNames.includes("")){let ss=codedDiagnostic({type:"warning",code:"doenet-w0068",args:{componentIdx:String(Or)}});return{setValue:{dataFrame:null,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:Li},sendDiagnostics:[ss]}}let os=as.length;is.shape=[os,rs];for(let ss=0;ss<rs;ss++){let ls=Me.columnTypesPrelim[ss]?.toLowerCase();if(["number","string"].includes(ls)||(ls="auto"),ls==="auto"){let us=!1;for(let cs=0;cs<os;cs++){let ds=as[cs][ss];if(ds!==""){let ps=Number(ds);if(!Number.isFinite(ps)){us=!0;break}}}us?ls="string":ls="number"}if(ls==="number")for(let us=0;us<os;us++)as[us][ss]===""?as[us][ss]=null:as[us][ss]=Number(as[us][ss]);else for(let us=0;us<os;us++){let cs=as[us][ss];['"',"'"].includes(cs[0])&&cs[cs.length-1]===cs[0]&&(cs=cs.substring(1,cs.length-1)),as[us][ss]=cs}Hr.push(ls)}return is.data=as,is.columnTypes=Hr,{setValue:{dataFrame:is,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:is.columnNames}}}},ae.means={description:"Mean of each numeric column in the data frame.",public:!0,shadowingInstructions:{createComponentOfType:"number"},isArray:!0,entryPrefixes:["mean"],returnArraySizeDependencies:()=>({numColumns:{dependencyType:"stateVariable",variableName:"numColumns"}}),returnArraySize({dependencyValues:Me}){return[Me.numColumns]},returnArrayDependenciesByKey(){return{globalDependencies:{dataFrame:{dependencyType:"stateVariable",variableName:"dataFrame"},numColumns:{dependencyType:"stateVariable",variableName:"numColumns"},numRows:{dependencyType:"stateVariable",variableName:"numRows"},columnTypes:{dependencyType:"stateVariable",variableName:"columnTypes"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arrayKeys:Or}){let Hr={};for(let Li of Or){let ts=0,rs=0;if(Me.columnTypes[Li]==="number"){for(let ns=0;ns<Me.numRows;ns++){let is=Me.dataFrame.data[ns][Li];is!==null&&(ts+=is,rs++)}ts/=rs}else ts=NaN;Hr[Li]=ts}return{setValue:{means:Hr}}}},ae}}const{mean,std,variance,median,quantileSeq}=Context.math,STATISTICS=[{value:"mean",description:"The arithmetic mean of the values.",compute:mean},{value:"stdev",description:"The sample standard deviation.",compute:std},{value:"variance",description:"The sample variance.",compute:variance},{value:"stderr",description:"The standard error of the mean."},{value:"count",description:"The number of non-missing values."},{value:"minimum",description:"The smallest value.",compute:Br=>Br.reduce((ae,Me)=>Me<ae?Me:ae)},{value:"quartile1",description:"The first quartile (25th percentile).",compute:Br=>quantileSeq(Br,.25)},{value:"median",description:"The median value.",compute:median},{value:"quartile3",description:"The third quartile (75th percentile).",compute:Br=>quantileSeq(Br,.75)},{value:"maximum",description:"The largest value.",compute:Br=>Br.reduce((ae,Me)=>Me>ae?Me:ae)},{value:"range",description:"The maximum minus the minimum."},{value:"sum",description:"The sum of the values.",compute:Br=>Br.reduce((ae,Me)=>ae+Me)}],FIVE_NUMBER_SUMMARY=["minimum","quartile1","median","quartile3","maximum"],DEFAULT_STATISTICS=["mean","stdev","count","minimum","quartile1","median","quartile3","maximum"];function returnColumnStatisticDefinition({value:Br,description:ae,compute:Me}){return{description:ae,public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Or}){const Hr=Or.dataColumn;return{setValue:{[Br]:Hr.length?Me(Hr):null}}}}}function displayedStatistic(Br,ae,Me){return ae===null?null:Br==="count"?ae:roundForDisplay({value:numberToMathExpression(ae),dependencyValues:Me}).toString(buildNumberDisplayParameters(Me))}class SummaryStatistics extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="summaryStatistics";static componentDocs={summary:"Summary statistics (mean, median, etc.) for a list of numbers."};static createAttributesObject(){let ae=super.createAttributesObject();return ae.statisticsToDisplay={createComponentOfType:"textList",createStateVariable:"statisticsToDisplayPrelim",defaultValue:["default"],toLowerCase:!0,highlighted:!0,validValues:[{value:"default",description:`The default selection: ${DEFAULT_STATISTICS.join(", ")}.`},{value:"all",description:"Every statistic listed here."},{value:"fiveNumberSummary",description:`The five-number summary: ${FIVE_NUMBER_SUMMARY.join(", ")}.`},...STATISTICS.map(({value:Me,description:Or})=>({value:Me,description:Or}))],description:'Which summary statistics to display (or "default" / "all" / "fiveNumberSummary").'},Object.assign(ae,returnNumberDisplayAttributes()),ae}static additionalSchemaChildren=["string"];static returnSugarInstructions(){let ae=super.returnSugarInstructions();return ae.push(returnBreakStringsIntoMathsBySpacesSugarInstruction()),ae}static returnChildGroups(){return[{group:"numbers",componentTypes:["number"]},{group:"maths",componentTypes:["math"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.statisticsToDisplay={description:"Which summary statistics to display.",public:!0,shadowingInstructions:{createComponentOfType:"textList"},returnDependencies:()=>({statisticsToDisplayPrelim:{dependencyType:"stateVariable",variableName:"statisticsToDisplayPrelim"}}),definition:function({dependencyValues:Or}){const Hr=STATISTICS.map(ns=>ns.value),Li=Or.statisticsToDisplayPrelim,ts=new Set;for(const ns of Li)if(ns==="default")for(const is of DEFAULT_STATISTICS)ts.add(is);else if(ns==="all")for(const is of Hr)ts.add(is);else if(ns==="fivenumbersummary")for(const is of FIVE_NUMBER_SUMMARY)ts.add(is);else ts.add(ns);return{setValue:{statisticsToDisplay:Hr.filter(ns=>ts.has(ns))}}}},ae.dataColumn={description:"The numeric values being summarized.",returnDependencies:()=>({valueChildren:{dependencyType:"child",childGroups:["numbers","maths"],variableNames:["value"]}}),definition({dependencyValues:Or}){const Hr=[];for(let Li of Or.valueChildren){const ts=Li.stateValues.value,rs=typeof ts?.evaluate_to_constant=="function"?ts.evaluate_to_constant():ts;Number.isFinite(rs)&&Hr.push(rs)}return{setValue:{dataColumn:Hr}}}};const Me={};Me.count={public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Or}){return{setValue:{count:Or.dataColumn.length}}}},Me.stderr={public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({stdev:{dependencyType:"stateVariable",variableName:"stdev"},count:{dependencyType:"stateVariable",variableName:"count"}}),definition({dependencyValues:Or}){let Hr=null;return Or.stdev!==null&&(Hr=Or.stdev/Math.sqrt(Or.count)),{setValue:{stderr:Hr}}}},Me.range={public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({minimum:{dependencyType:"stateVariable",variableName:"minimum"},maximum:{dependencyType:"stateVariable",variableName:"maximum"}}),definition({dependencyValues:Or}){let Hr=null;return Or.minimum!==null&&(Hr=Or.maximum-Or.minimum),{setValue:{range:Hr}}}};for(let Or of STATISTICS)ae[Or.value]={...Or.compute?returnColumnStatisticDefinition(Or):{description:Or.description,...Me[Or.value]},highlighted:!0};return ae.summaryStatistics={description:"The statistics being displayed, as the table should show them, keyed by statistic.",forRenderer:!0,stateVariablesDeterminingDependencies:["statisticsToDisplay"],returnDependencies({stateValues:Or}){let Hr={};for(let Li of["displayDigits","displayDecimals","displaySmallAsZero","padZeros","avoidScientificNotation"])Hr[Li]={dependencyType:"stateVariable",variableName:Li};for(let Li of Or.statisticsToDisplay)Hr[Li]={dependencyType:"stateVariable",variableName:Li};return Hr},definition({dependencyValues:Or}){let Hr={};for(let{value:Li}of STATISTICS){const ts=Or[Li];ts!==void 0&&(Hr[Li]=displayedStatistic(Li,ts,Or))}return{setValue:{summaryStatistics:Hr}}}},ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}class Legend extends GraphicalComponent{static componentType="legend";static componentDocs={summary:"A legend describing the contents of a graph"};static createAttributesObject(){let ae=super.createAttributesObject();return ae.layer.defaultValue=1,ae.position={description:"Position of the legend on the graph.",createComponentOfType:"text",createStateVariable:"position",defaultValue:"upperRight",public:!0,forRenderer:!0,toLowerCase:!0,validValues:[{value:"upperRight",description:"Place the legend in the upper-right corner."},{value:"upperLeft",description:"Place the legend in the upper-left corner."},{value:"lowerRight",description:"Place the legend in the lower-right corner."},{value:"lowerLeft",description:"Place the legend in the lower-left corner."}]},ae.boxed={description:"Whether to draw an opaque box behind the legend so that graph contents passing behind it stay hidden.",createComponentOfType:"boolean",createStateVariable:"boxed",defaultValue:!1,public:!0,forRenderer:!0},ae.displayClosedSwatches={description:"Whether to render closed/filled swatches in the legend.",createComponentOfType:"boolean",createStateVariable:"displayClosedSwatches",defaultValue:!1,public:!0},ae}static returnChildGroups(){return[{group:"labels",componentTypes:["label"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.graphicalElementNames={returnDependencies:()=>({graphAncestor:{dependencyType:"ancestor",componentType:"graph",variableNames:["graphicalDescendants"]}}),definition({dependencyValues:Me}){return Me.graphAncestor?{setValue:{graphicalElementNames:Me.graphAncestor.stateValues.graphicalDescendants.map(Or=>Or.componentIdx)}}:{setValue:{graphicalElementNames:null}}}},ae.legendElements={forRenderer:!0,stateVariablesDeterminingDependencies:["graphicalElementNames"],returnDependencies:({stateValues:Me})=>{let Or={labelChildren:{dependencyType:"child",childGroups:["labels"],variableNames:["value","hasLatex","forObjectComponentIdx"]},displayClosedSwatches:{dependencyType:"stateVariable",variableName:"displayClosedSwatches"}};if(Me.graphicalElementNames){Or.numGraphicalElements={dependencyType:"value",value:Me.graphicalElementNames.length};for(let[Hr,Li]of Me.graphicalElementNames.entries())Or[`graphicalElement${Hr}`]={dependencyType:"multipleStateVariables",componentIdx:Li,variableNames:["selectedStyle","styleNumber","filled"],variablesOptional:!0},Or[`graphicalElement${Hr}AdapterSource`]={dependencyType:"adapterSource",componentIdx:Li},Or[`graphicalElement${Hr}ShadowSource`]={dependencyType:"shadowSource",componentIdx:Li}}return Or},definition({dependencyValues:Me,componentInfoObjects:Or}){let Hr=[];if(Me.numGraphicalElements>0){let Li=[],ts=[],rs=[],ns=[];for(let ss=0;ss<Me.numGraphicalElements;ss++){let ls=Me[`graphicalElement${ss}`],us=Me[`graphicalElement${ss}AdapterSource`];us&&(ls={...ls},ls.componentIdx=us.componentIdx);let cs=Me[`graphicalElement${ss}ShadowSource`];if(cs){const ds=JSON.parse(JSON.stringify(ls));ds.componentIdx=cs.componentIdx,ns.push(ds)}ns.push(ls)}let is=ns.map(ss=>ss.componentIdx),as=[],os={};for(let ss of Me.labelChildren){let ls={value:ss.stateValues.value,hasLatex:ss.stateValues.hasLatex};if(ss.stateValues.forObjectComponentIdx){os[ss.stateValues.forObjectComponentIdx]=ls;let us=is.indexOf(ss.stateValues.forObjectComponentIdx);if(us!==-1){let cs=ns[us];Or.isInheritedComponentType({inheritedComponentType:cs.componentType,baseComponentType:"point"})?Li.push(cs.stateValues.styleNumber):Me.displayClosedSwatches&&Or.allComponentClasses[cs.componentType].representsClosedPath?ts.push(cs.stateValues.styleNumber):cs.componentType!=="legend"&&rs.push(cs.stateValues.styleNumber)}}as.push({labelInfo:ls,forObject:ss.stateValues.forObjectComponentIdx})}for(let ss of as){let ls;if(ss.forObject){let us=is.indexOf(ss.forObject);us!==-1&&(ls=ns[us],ns.splice(us,1),is.splice(us,1))}else for(let us=0;us<ns.length;us++){let cs=ns[us];if(!(cs.componentIdx in os)){if(Or.isInheritedComponentType({inheritedComponentType:cs.componentType,baseComponentType:"point"})){if(!Li.includes(cs.stateValues.styleNumber)){ls=cs;break}}else if(Me.displayClosedSwatches&&Or.allComponentClasses[cs.componentType].representsClosedPath){if(!ts.includes(cs.stateValues.styleNumber)){ls=cs;break}}else if(cs.componentType!=="legend"&&!rs.includes(cs.stateValues.styleNumber)){ls=cs;break}}}if(ls){let us=ls.stateValues.selectedStyle,cs=ls.stateValues.styleNumber;Or.isInheritedComponentType({inheritedComponentType:ls.componentType,baseComponentType:"point"})?(Li.push(cs),Hr.push({swatchType:"marker",markerStyle:us.markerStyle,markerColor:us.markerColor,markerColorDarkMode:us.markerColorDarkMode,markerSize:us.markerSize,lineOpacity:us.lineOpacity,label:ss.labelInfo})):Me.displayClosedSwatches&&Or.allComponentClasses[ls.componentType].representsClosedPath?(ts.push(cs),Hr.push({swatchType:"rectangle",lineStyle:us.lineStyle,lineColor:us.lineColor,lineColorDarkMode:us.lineColorDarkMode,lineWidth:us.lineWidth,lineOpacity:us.lineOpacity,fillColor:us.fillColor,fillColorDarkMode:us.fillColorDarkMode,filled:ls.stateValues.filled,fillOpacity:us.fillOpacity,label:ss.labelInfo})):(rs.push(cs),Hr.push({swatchType:"line",lineStyle:us.lineStyle,lineColor:us.lineColor,lineColorDarkMode:us.lineColorDarkMode,lineWidth:us.lineWidth,lineOpacity:us.lineOpacity,label:ss.labelInfo}))}}}return{setValue:{legendElements:Hr}}}},ae.graphLimits={forRenderer:!0,returnDependencies:()=>({graphAncestor:{dependencyType:"ancestor",componentType:"graph",variableNames:["xMin","xMax","yMin","yMax"]}}),definition({dependencyValues:Me}){return Me.graphAncestor?{setValue:{graphLimits:Me.graphAncestor.stateValues}}:{setValue:{graphLimits:null}}}},ae}}const BLANK="_";function parameterKey(Br){if(isValidVariable({tree:Br}))return typeof Br=="string"?"s"+Br:"t"+JSON.stringify(Br)}function replacePlaceholders(Br,ae){let Me=ae(Br);return Me!==void 0?Me:Array.isArray(Br)?[Br[0],...Br.slice(1).map(Or=>replacePlaceholders(Or,ae))]:Br}class MatchesPattern extends BooleanComponent{static componentType="matchesPattern";static componentDocs={summary:"Boolean condition that tests whether input matches a math pattern"};static rendererType="boolean";static createAttributesObject(){let ae=super.createAttributesObject();return ae.pattern={createComponentOfType:"math",description:"Math expression pattern to match against.",highlighted:!0},ae.parameters={createComponentOfType:"_variableNameList",description:"Variables in the pattern that act as placeholders. Repeating one in the pattern requires the same subexpression at each occurrence. When specified, blanks in the pattern are matched literally.",highlighted:!0},ae.allowImplicitIdentities={description:"Whether to allow implicit identity transformations when matching.",createComponentOfType:"boolean",createStateVariable:"allowImplicitIdentities",defaultValue:!1,public:!0,highlighted:!0},ae.allowPermutations={description:"Whether to allow permutations of operands when matching.",createComponentOfType:"boolean",createStateVariable:"allowPermutations",defaultValue:!0,public:!0,highlighted:!0},ae.requireNumericMatches={description:"Whether numeric placeholders must match numbers.",createComponentOfType:"boolean",createStateVariable:"requireNumericMatches",defaultValue:!1,public:!0,highlighted:!0},ae.requireVariableMatches={description:"Whether variable placeholders must match variables.",createComponentOfType:"boolean",createStateVariable:"requireVariableMatches",defaultValue:!1,public:!0,highlighted:!0},ae.excludeMatches={description:"Patterns whose matches are excluded.",createComponentOfType:"mathList",createStateVariable:"excludeMatches",defaultValue:[],public:!0,highlighted:!0},ae.matchExpressionWithBlanks={description:"Whether to allow expressions with blanks to match.",createComponentOfType:"boolean",createStateVariable:"matchExpressionWithBlanks",defaultValue:!1,public:!0,highlighted:!0},ae}static additionalSchemaChildren=["string"];static returnSugarInstructions(){let ae=[],Me=function({matchedChildren:Or,componentInfoObjects:Hr,nComponents:Li,stateIdInfo:ts}){return Or.length===0||Or.length===1&&Hr.componentIsSpecifiedType(Or[0],"math")?{success:!1}:{success:!0,newChildren:[{type:"serialized",componentType:"math",componentIdx:Li++,stateId:ts?`${ts.prefix}${ts.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}],nComponents:Li}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"maths",componentTypes:["math"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.parsedExpression,delete ae.mathChildrenByCode,ae.pattern={additionalStateVariablesDefined:["patternVariables"],returnDependencies:()=>({patternAttr:{dependencyType:"attributeComponent",attributeName:"pattern",variableNames:["value"]},parametersAttr:{dependencyType:"attributeComponent",attributeName:"parameters",variableNames:["variables"]}}),definition({dependencyValues:Me}){let Or=[];if(!Me.patternAttr)return{setValue:{pattern:BLANK,patternVariables:Or}};let Hr=Me.patternAttr.stateValues.value,Li=Hr.variables(),ts=703;function rs(){let cs=numberToLetters(ts);for(ts++;Li.includes(cs);)cs=numberToLetters(ts),ts++;return cs}if(!Me.parametersAttr)return{setValue:{pattern:replacePlaceholders(Hr.tree,ds=>{if(ds!==BLANK)return;let ps=rs();return Or.push(ps),ps}),patternVariables:Or}};let ns=Me.parametersAttr.position||void 0,is=[],as=new Map,os=new Map;for(let cs of Me.parametersAttr.stateValues.variables){let ds=parameterKey(cs.tree);if(ds===void 0||as.has(ds))continue;let ps=rs();as.set(ds,ps),os.set(ps,cs.toString()),Or.push(ps)}let ss=new Set,ls=replacePlaceholders(Hr.tree,cs=>{let ds=as.get(parameterKey(cs));return ds!==void 0&&ss.add(ds),ds}),us=[...os].filter(([cs])=>!ss.has(cs)).map(([cs,ds])=>ds);return us.length>0&&is.push(codedDiagnostic({type:"warning",code:"doenet-w0117",args:{parameters:us},position:ns})),{setValue:{pattern:ls,patternVariables:Or},sendDiagnostics:is}}},ae.value={description:"Whether the input matches the pattern.",additionalStateVariablesDefined:[{variableName:"allPatternMatches"}],public:!0,highlighted:!0,shadowingInstructions:{createComponentOfType:"boolean"},forRenderer:!0,returnDependencies:()=>({pattern:{dependencyType:"stateVariable",variableName:"pattern"},patternVariables:{dependencyType:"stateVariable",variableName:"patternVariables"},mathChildren:{dependencyType:"child",childGroups:["maths"],variableNames:["value"]},allowImplicitIdentities:{dependencyType:"stateVariable",variableName:"allowImplicitIdentities"},allowPermutations:{dependencyType:"stateVariable",variableName:"allowPermutations"},requireNumericMatches:{dependencyType:"stateVariable",variableName:"requireNumericMatches"},requireVariableMatches:{dependencyType:"stateVariable",variableName:"requireVariableMatches"},excludeMatches:{dependencyType:"stateVariable",variableName:"excludeMatches"},matchExpressionWithBlanks:{dependencyType:"stateVariable",variableName:"matchExpressionWithBlanks"}}),definition:function({dependencyValues:Me}){if(Me.mathChildren.length===0)return{setValue:{value:!1,allPatternMatches:[]}};let Or=Me.mathChildren[0].stateValues.value;if(Or.variables().includes(BLANK)&&!Me.matchExpressionWithBlanks)return{setValue:{value:!1,allPatternMatches:[]}};let Hr={};if(Me.requireNumericMatches){let is=as=>!Number.isNaN(Context.fromAst(as).evaluate_to_constant());Me.patternVariables.forEach(as=>Hr[as]=is)}else if(Me.requireVariableMatches){let is=as=>typeof as=="string";Me.patternVariables.forEach(as=>Hr[as]=is)}else Me.patternVariables.forEach(is=>Hr[is]=!0);let Li={variables:Hr,allow_permutations:Me.allowPermutations};Me.allowImplicitIdentities&&(Li.allow_implicit_identities=Me.patternVariables);let ts=Or.match(Me.pattern,Li),rs=!1,ns=[];return ts&&(Object.values(ts).map(is=>Context.fromAst(is)).some(is=>Me.excludeMatches.some(as=>is.variables().some(os=>as.equalsViaSyntax(Context.fromAst(os)))))||(rs=!0,ns=Me.patternVariables.map(is=>Context.fromAst(ts[is]??BLANK)))),{setValue:{value:rs,allPatternMatches:ns}}}},ae.numMatches={description:"The number of matches found.",public:!0,highlighted:!0,shadowingInstructions:{createComponentOfType:"number"},returnDependencies:()=>({allPatternMatches:{dependencyType:"stateVariable",variableName:"allPatternMatches"}}),definition({dependencyValues:Me}){return{setValue:{numMatches:Me.allPatternMatches.length},checkForActualChange:{numMatches:!0}}}},ae.patternMatches={description:"The list of matched sub-expressions.",public:!0,highlighted:!0,shadowingInstructions:{createComponentOfType:"math"},isArray:!0,numDimensions:1,entryPrefixes:["patternMatch"],returnArraySizeDependencies:()=>({numMatches:{dependencyType:"stateVariable",variableName:"numMatches"}}),returnArraySize({dependencyValues:Me}){return[Me.numMatches]},returnArrayDependenciesByKey(){return{globalDependencies:{allPatternMatches:{dependencyType:"stateVariable",variableName:"allPatternMatches"}}}},arrayDefinitionByKey({globalDependencyValues:Me}){let Or={};for(let Hr=0;Hr<Me.__array_size[0];Hr++)Or[Hr]=Me.allPatternMatches[Hr];return{setValue:{patternMatches:Or}}}},ae}}class Matrix extends MathComponent{static componentType="matrix";static componentDocs={summary:"A matrix of math values",childAliases:{row:"matrixRow",column:"matrixColumn"}};static rendererType="math";static additionalSchemaChildren=["row","column"];static returnChildGroups(){return[{group:"rows",componentTypes:["matrixRow"]},{group:"columns",componentTypes:["matrixColumn"]},{group:"maths",componentTypes:["math"],excludeFromSchema:!0}]}static createAttributesObject(){let ae=super.createAttributesObject();return ae.defaultEntry={createComponentOfType:"math",createStateVariable:"defaultEntry",defaultValue:Context.fromAst(0),description:"Value used for entries that aren't explicitly specified."},ae.numRows={createComponentOfType:"integer",description:"Number of rows in the matrix."},ae.numColumns={createComponentOfType:"integer",description:"Number of columns in the matrix."},ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,componentInfoObjects:Hr,nComponents:Li,stateIdInfo:ts}){if(Or.length===0)return{success:!1};let rs=[],ns=!1;for(let is of Or)typeof is!="string"&&(is.doenetAttributes||(is.doenetAttributes={}),is.componentType==="column"?(is.doenetAttributes.createNameFromComponentType="column",is.componentType="matrixColumn",ns=!0):is.componentType==="row"?(is.doenetAttributes.createNameFromComponentType="row",is.componentType="matrixRow",ns=!0):is.attributes?.createComponentOfType?.primitive.value==="column"?(is.doenetAttributes.createNameFromComponentType="column",is.attributes.createComponentOfType.primitive.value="matrixColumn",ns=!0):is.attributes?.createComponentOfType?.primitive.value==="row"&&(is.doenetAttributes.createNameFromComponentType="row",is.attributes.createComponentOfType.primitive.value="matrixRow",ns=!0),rs.push(is));return ns||(Or.length>1||!Hr.componentIsSpecifiedType(Or[0],"math"))&&(rs=[{type:"serialized",componentType:"math",componentIdx:Li++,stateId:ts?`${ts.prefix}${ts.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}]),{success:!0,newChildren:rs,nComponents:Li}};return ae.push({replacementFunction:Me}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.codePre,delete ae.mathChildrenFunctionSymbols,delete ae.expressionWithCodes,delete ae.mathChildrenWithCanBeModified,delete ae.codesAdjacentToStrings,delete ae.canBeModified,delete ae.mathChildrenByVectorComponent,Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.unordered={description:"Whether matrix entries should be treated as unordered.",public:!0,shadowingInstructions:{createComponentOfType:"boolean"},returnDependencies:()=>({}),definition(){return{setValue:{unordered:!1}}}},ae.matrixSizePre={returnDependencies:()=>({rowChildren:{dependencyType:"child",childGroups:["rows"],variableNames:["numComponents"]},colChildren:{dependencyType:"child",childGroups:["columns"],variableNames:["numComponents"]},mathChildren:{dependencyType:"child",childGroups:["maths"],variableNames:["matrixSize"]},numRowsAttr:{dependencyType:"attributeComponent",attributeName:"numRows",variableNames:["value"]},numColumnsAttr:{dependencyType:"attributeComponent",attributeName:"numColumns",variableNames:["value"]}}),definition({dependencyValues:Me}){let Or=null,Hr=null;return Me.numRowsAttr&&(Or=Me.numRowsAttr.stateValues.value,Number.isFinite(Or)&&Or>0||(Or=null)),Me.numColumnsAttr&&(Hr=Me.numColumnsAttr.stateValues.value,Number.isFinite(Hr)&&Hr>0||(Hr=null)),Me.rowChildren.length>0?(Or===null&&(Or=Me.rowChildren.length),Hr===null&&(Hr=Math.max(1,...Me.rowChildren.map(Li=>Li.stateValues.numComponents)))):Me.colChildren.length>0?(Hr===null&&(Hr=Me.colChildren.length),Or===null&&(Or=Math.max(1,...Me.colChildren.map(Li=>Li.stateValues.numComponents)))):Me.mathChildren.length===1?(Or===null&&(Or=Me.mathChildren[0].stateValues.matrixSize[0]),Hr===null&&(Hr=Me.mathChildren[0].stateValues.matrixSize[1])):Or===null?Hr===null?(Or=0,Hr=0):Or=1:Hr===null&&(Hr=1),{setValue:{matrixSizePre:[Or,Hr]}}}},ae.matrixPre={isArray:!0,numDimensions:2,hasEssential:!0,returnArraySizeDependencies:()=>({matrixSizePre:{dependencyType:"stateVariable",variableName:"matrixSizePre"}}),returnArraySize({dependencyValues:Me}){return Me.matrixSizePre},returnArrayDependenciesByKey:({arrayKeys:Me})=>{let Or={defaultEntry:{dependencyType:"stateVariable",variableName:"defaultEntry"},rowChildIdentities:{dependencyType:"child",childGroups:["rows"]},colChildIdentities:{dependencyType:"child",childGroups:["columns"]}},Hr={};for(let Li of Me){let[ts,rs]=Li.split(",");Hr[Li]={rowChild:{dependencyType:"child",childGroups:["rows"],childIndices:[ts],variableNames:["math"+(Number(rs)+1)]},colChild:{dependencyType:"child",childGroups:["columns"],childIndices:[rs],variableNames:["math"+(Number(ts)+1)]},mathChild:{dependencyType:"child",childGroups:["maths"],childIndices:[0],variableNames:["matrixEntry"+(Number(ts)+1)+"_"+(Number(rs)+1)]}}}return{globalDependencies:Or,dependenciesByKey:Hr}},arrayDefinitionByKey({globalDependencyValues:Me,dependencyValuesByKey:Or,arrayKeys:Hr,arraySize:Li}){let ts={},rs={},ns=Me.rowChildIdentities.length>0,is=Me.colChildIdentities.length>0;for(let as of Hr){let[os,ss]=as.split(","),ls;ns?ls=Or[as].rowChild[0]?.stateValues["math"+(Number(ss)+1)]:is?ls=Or[as].colChild[0]?.stateValues["math"+(Number(os)+1)]:ls=Or[as].mathChild[0]?.stateValues["matrixEntry"+(Number(os)+1)+"_"+(Number(ss)+1)],ls===void 0?rs[as]={defaultValue:Me.defaultEntry}:ts[as]=ls}return{setValue:{matrixPre:ts},useEssentialOrDefaultValue:{matrixPre:rs}}},async inverseArrayDefinitionByKey({desiredStateVariableValues:Me,globalDependencyValues:Or,dependencyValuesByKey:Hr,dependencyNamesByKey:Li}){let ts=[],rs={},ns=Or.rowChildIdentities.length>0,is=Or.colChildIdentities.length>0;for(let as in Me.matrixPre){let[os,ss]=as.split(",");ns?Hr[as].rowChild[0]?.stateValues["math"+(Number(ss)+1)]===void 0?rs[as]=Me.matrixPre[as]:ts.push({setDependency:Li[as].rowChild,desiredValue:Me.matrixPre[as],childIndex:0,variableIndex:0}):is?Hr[as].colChild[0]?.stateValues["math"+(Number(os)+1)]===void 0?rs[as]=Me.matrixPre[as]:ts.push({setDependency:Li[as].colChild,desiredValue:Me.matrixPre[as],childIndex:0,variableIndex:0}):Hr[as].mathChild[0]?.stateValues["matrixEntry"+(Number(os)+1)+"_"+(Number(ss)+1)]===void 0?rs[as]=Me.matrixPre[as]:ts.push({setDependency:Li[as].mathChild,desiredValue:Me.matrixPre[as],childIndex:0,variableIndex:0})}return Object.keys(rs).length>0&&ts.push({setEssentialValue:"matrixPre",value:rs}),{success:!0,instructions:ts}}},ae.unnormalizedValue={returnDependencies:()=>({matrixPre:{dependencyType:"stateVariable",variableName:"matrixPre"},matrixSizePre:{dependencyType:"stateVariable",variableName:"matrixSizePre"}}),hasEssential:!0,defaultValue:Context.fromAst(["matrix",["tuple",0,0],["tuple"]]),definition({dependencyValues:Me}){let Or=["tuple"];for(let Li=0;Li<Me.matrixSizePre[0];Li++)Or.push(["tuple",...Me.matrixPre[Li].map(ts=>ts.tree)]);return{setValue:{unnormalizedValue:Context.fromAst(["matrix",["tuple",...Me.matrixSizePre],Or])}}},inverseDefinition({dependencyValues:Me,desiredStateVariableValues:Or}){let Hr=Or.unnormalizedValue.tree;if(!(Array.isArray(Hr)&&Hr[0]==="matrix"&&Hr[1]?.[1]===Me.matrixSizePre[0]&&Hr[1]?.[2]===Me.matrixSizePre[1]))return{success:!1};let Li={};for(let ts=0;ts<Me.matrixSizePre[0];ts++)for(let rs=0;rs<Me.matrixSizePre[1];rs++)Li[`${ts},${rs}`]=Context.fromAst(Hr[2][ts+1][rs+1]);return{success:!0,instructions:[{setDependency:"matrixPre",desiredValue:Li}]}}},ae.canBeModified={returnDependencies:()=>({modifyIndirectly:{dependencyType:"stateVariable",variableName:"modifyIndirectly"},fixed:{dependencyType:"stateVariable",variableName:"fixed"}}),definition({dependencyValues:Me}){return{setValue:{canBeModified:Me.modifyIndirectly&&!Me.fixed}}}},ae}}const{eigs,square,abs,divide}=Context.math;class EigenDecomposition extends BaseComponent{static componentType="eigenDecomposition";static rendererType=void 0;static componentDocs={summary:"Computes the eigenvalues and eigenvectors of a square matrix"};static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnNumberDisplayAttributes()),ae}static returnChildGroups(){return[{group:"maths",componentTypes:["math"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.decomposition={description:"The eigendecomposition of the matrix as a list of eigenvalue/eigenvector pairs.",additionalStateVariablesDefined:[{variableName:"numEigenvectors",description:"The number of eigenvectors found in the decomposition.",public:!0,shadowingInstructions:{createComponentOfType:"integer"}}],returnDependencies:()=>({mathChild:{dependencyType:"child",childGroups:["maths"],variableNames:["value"]}}),definition({dependencyValues:Me}){if(Me.mathChild.length===0)return{setValue:{decomposition:null,numEigenvectors:0}};let Or=Me.mathChild[0].stateValues.value.tree;if(!Array.isArray(Or)||Or[0]!=="matrix")return{setValue:{decomposition:null,numEigenvectors:0}};let Hr=Or[1][1],Li=Or[1][2];if(!(Number.isInteger(Hr)&&Li===Hr))return{setValue:{decomposition:null,numEigenvectors:0}};let ts=[];for(let ns=0;ns<Hr;ns++){let is=[],as=Or[2][ns+1]||[];for(let os=0;os<Li;os++){let ss=as[os+1];if(ss==null)return{setValue:{decomposition:null,numEigenvectors:0}};if(typeof ss=="number"||typeof ss?.re=="number"&&typeof ss?.im=="number")is.push(ss);else try{ss=Context.fromAst(ss).evaluate_to_constant(),typeof ss=="number"||typeof ss?.re=="number"&&typeof ss?.im=="number"?is.push(ss):is.push(NaN)}catch{is.push(NaN)}}ts.push(is)}let rs;try{rs=eigs(ts)}catch(ns){console.error("Could nt calculate eigenvalues of matrix",ns);let is=codedDiagnostic({type:"warning",code:"doenet-w0059"});return{setValue:{decomposition:null,numEigenvectors:0},sendDiagnostics:[is]}}return{setValue:{decomposition:rs,numEigenvectors:rs.eigenvectors.length}}}},ae.eigenvalues={description:"The eigenvalues of the matrix.",isArray:!0,public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},entryPrefixes:["eigenvalue"],returnArraySizeDependencies:()=>({decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}),returnArraySize({dependencyValues:Me}){let Or;return Me.decomposition?Or=Me.decomposition.values.length:Or=0,[Or]},returnArrayDependenciesByKey(){return{globalDependencies:{decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arraySize:Or}){let Hr=[];for(let Li=0;Li<Or[0];Li++)Hr.push(Me.decomposition.values[Li]);return{setValue:{eigenvalues:Hr}}}},ae.eigenvectors={description:"The eigenvectors of the matrix, as a 2D array (one column per eigenvalue).",isArray:!0,public:!0,numDimensions:2,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing(),returnWrappingComponents(Me){return Me==="eigenvectorX"?[]:[["vector",{componentType:"mathList",isAttributeNamed:"xs"}]]}},getArrayKeysFromVarName({arrayEntryPrefix:Me,varEnding:Or,arraySize:Hr}){if(Me==="eigenvectorX"){let Li=Or.split("_").map(ts=>Number(ts)-1);return Li.length===2&&Li.every((ts,rs)=>Number.isInteger(ts)&&ts>=0)?Hr?Li.every((ts,rs)=>ts<Hr[rs])?[String(Li)]:[]:[String(Li)]:[]}else{let Li=Number(Or)-1;return Number.isInteger(Li)&&Li>=0?Hr?Li<Hr[0]?Array.from(Array(Hr[1]),(ts,rs)=>Li+","+rs):[]:[Li+",0"]:[]}},arrayVarNameFromPropIndex(Me,Or){if(Or==="eigenvectors")return Me.length===1?"eigenvector"+Me[0]:`eigenvectorX${Me[0]}_${Me[1]}`;if(Or.slice(0,11)==="eigenvector"){let Hr=Number(Or.slice(11));if(Number.isInteger(Hr)&&Hr>0)return`eigenvectorX${Hr}_${Me[0]}`}return null},indexAliases:[[],["x","y","z"]],entryPrefixes:["eigenvectorX","eigenvector"],returnEntryDimensions:Me=>Me==="eigenvector"?1:0,returnArraySizeDependencies:()=>({decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}),returnArraySize({dependencyValues:Me}){let Or,Hr;return Me.decomposition?(Or=Me.decomposition.eigenvectors.length,Hr=Me.decomposition.eigenvectors[0].vector.length):(Or=0,Hr=0),[Or,Hr]},returnArrayDependenciesByKey(){return{globalDependencies:{decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arraySize:Or}){let Hr={};for(let Li=0;Li<Or[0];Li++){let ts=[],rs=0;for(let ns=0;ns<Or[1];ns++){let is=Me.decomposition.eigenvectors[Li].vector[ns];ts.push(is),rs+=square(abs(is))}rs=Math.sqrt(rs),ts=ts.map(ns=>divide(ns,rs));for(let ns=0;ns<Or[1];ns++)Hr[`${Li},${ns}`]=ts[ns]}return{setValue:{eigenvectors:Hr}}}},ae}}class Latex extends Text{static componentType="latex";static componentDocs={summary:"A snippet of LaTeX that can be rendered as math"};static rendererType="text";static createAttributesObject(){let ae=super.createAttributesObject();return ae.isLatex.defaultValue=!0,ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae[0].componentTypes.push("math","m","md"),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.value.returnDependencies=()=>({mathTextLikeChildren:{dependencyType:"child",childGroups:["textLike"],variableNames:["text","latex"],variablesOptional:!0}}),ae.value.definition=function({dependencyValues:Me}){if(Me.mathTextLikeChildren.length===0)return{useEssentialOrDefaultValue:{value:!0}};let Or=[];for(let Li of Me.mathTextLikeChildren)if(typeof Li=="string"){let ts=Li.trim();ts&&Or.push(ts)}else if(Li.stateValues.latex!==void 0){let ts=Li.stateValues.latex.trim();ts&&Or.push(ts)}else{let ts=Li.stateValues.text.trim();ts&&Or.push(ts)}return{setValue:{value:Or.join(" ")}}},ae.value.inverseDefinition=function({desiredStateVariableValues:Me,dependencyValues:Or}){let Hr=Or.mathTextLikeChildren.length;return Hr>1?{success:!1}:Hr===1?{success:!0,instructions:[{setDependency:"textLikeChildren",desiredValue:Me.value,childIndex:0,variableIndex:Or.textLikeChildren[0].stateValues?.latex===void 0?0:1}]}:{success:!0,instructions:[{setEssentialValue:"value",value:Me.value===null?"":String(Me.value)}]}},ae.latex={isAlias:!0,targetVariableName:"value",description:"The LaTeX content as a string."},ae}}class BlockQuote extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="blockQuote";static rendererType="blockQuote";static renderChildren=!0;static canDisplayChildErrors=!0;static includeBlankStringChildren=!0;static componentDocs={summary:"A block-level quotation"};static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnPassThroughListItemChildStateVariableDefinitions()),ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}class Description extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="description";static componentDocs={summary:"Extra information about an enclosing component, shown to all users in a popup or disclosure"};static rendererType="containerBlock";static renderChildren=!0;static canDisplayChildErrors=!0;static includeBlankStringChildren=!0;static inSchemaOnlyInheritAs=[];static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnPassThroughListItemChildStateVariableDefinitions()),ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}const{mod:mod$1}=Context.math;function findAttractedSegmentPointsSub({point1:Br,point2:ae,scales:Me,threshold2:Or,numericalNearestPointFunction:Hr,numericalNearestPointAsLineFunction:Li,verifyNotOneSided:ts=!0}){let rs=1e-6,ns=rs**2,is=Li(Br,Me);if(!is)return{success:!1};let as=is.reduce((ss,ls,us)=>ss+Math.pow(ls-Br[us],2),0);if(as>=Or)return{success:!1};let os=Li(ae,Me);if(!os)return{success:!1};if(as=os.reduce((ss,ls,us)=>ss+Math.pow(ls-ae[us],2),0),as>=Or)return{success:!1};if(ts){let ss=Hr(Br,Me),ls=ss&&ss.every((ds,ps)=>Math.abs(ds-is[ps])<rs),us=Hr(ae,Me),cs=us&&us.every((ds,ps)=>Math.abs(ds-os[ps])<rs);if(!(ls||cs)&&(as=ss.reduce((ds,ps,ms)=>ds+Math.pow(ps-us[ms],2),0),as<ns))return{success:!1}}return{success:!0,nearestPoint1:is,nearestPoint2:os}}function findAttractedSegmentPoints({point1:Br,point2:ae,allowRotation:Me,scales:Or,threshold2:Hr,numericalNearestPointFunction:Li,numericalNearestPointAsLineFunction:ts}){let rs=findAttractedSegmentPointsSub({point1:Br,point2:ae,scales:Or,threshold2:Hr,numericalNearestPointFunction:Li,numericalNearestPointAsLineFunction:ts,verifyNotOneSided:!0});if(!rs.success)return{success:!1};let ns=1e-6,is=ns**2,{nearestPoint1:as,nearestPoint2:os}=rs;if(!Me){let bs=[ae[0]-Br[0],ae[1]-Br[1]],vs=[os[0]-as[0],os[1]-as[1]],Cs=Math.atan2(vs[1],vs[0])-Math.atan2(bs[1],bs[0]);if(Cs=mod$1(Cs+Math.PI,2*Math.PI)-Math.PI,Math.abs(Cs)>ns)return{success:!1}}let ss=Br.reduce((bs,vs,Cs)=>bs+Math.pow(vs-ae[Cs],2),0),ls=as.reduce((bs,vs,Cs)=>bs+Math.pow(vs-os[Cs],2),0);if(Math.abs(ss-ls)<is){let bs=as.reduce((vs,Cs,Ts)=>vs+Math.pow(Cs-Br[Ts],2),0)+os.reduce((vs,Cs,Ts)=>vs+Math.pow(Cs-ae[Ts],2),0);return bs<Hr?{success:!0,distance2:bs,segment:[as,os]}:{success:!1}}if(ls>ss)return{success:!1};let us=Math.sqrt(ss/ls),cs=Math.sqrt(Br.reduce((bs,vs,Cs)=>bs+Math.pow(vs-as[Cs],2),0)),ds=Math.sqrt(ae.reduce((bs,vs,Cs)=>bs+Math.pow(vs-os[Cs],2),0)),ps=cs/(cs+ds),ms=1-ps,fs=(us-1)*ps+1,hs=(us-1)*ms+1,gs=os.map((bs,vs)=>bs+(as[vs]-bs)*fs),ys=as.map((bs,vs)=>bs+(os[vs]-bs)*hs);if(rs=findAttractedSegmentPointsSub({point1:gs,point2:ys,scales:Or,threshold2:is,numericalNearestPointFunction:Li,numericalNearestPointAsLineFunction:ts,verifyNotOneSided:!1}),!rs.success)return{success:!1};let xs=gs.reduce((bs,vs,Cs)=>bs+Math.pow(vs-Br[Cs],2),0)+ys.reduce((bs,vs,Cs)=>bs+Math.pow(vs-ae[Cs],2),0);return xs<Hr?{success:!0,distance2:xs,segment:[gs,ys]}:{success:!1}}function attractSegment({segment:Br,allowRotation:ae,scales:Me,threshold2:Or,numericalNearestPointFunctions:Hr,numericalNearestPointAsLineFunctions:Li}){let ts=Br[0],rs=Br[1];if(ts.length!=rs.length)return{};let ns,is=1/0,as=ae?Or*1e3:Or;for(let[os,ss]of Hr.entries()){let ls=Li[os],us=findAttractedSegmentPoints({point1:ts,point2:rs,allowRotation:ae,scales:Me,threshold2:as,numericalNearestPointFunction:ss,numericalNearestPointAsLineFunction:ls});us.success&&us.distance2<is&&(is=us.distance2,ns=us.segment)}return is<Or?{constrained:!0,segment:ns}:is<as?{constrained:!1,distance2:is,segment:ns}:{}}function nearestPointForSegment({point:Br,segment:ae,scales:Me}){let Or=ae[0][0],Hr=ae[0][1],Li=ae[1][0],ts=ae[1][1],rs=Number.isFinite(Or)&&Number.isFinite(Hr)&&Number.isFinite(Li)&&Number.isFinite(ts);if(ae[0].length!==2||!rs||Li===Or&&ts===Hr)return null;let ns=Me[0],is=Me[1],as=(Li-Or)/ns,os=(ts-Hr)/is,ss=as*as+os*os,ls=((Br[0]-Or)/ns*as+(Br[1]-Hr)/is*os)/ss;return ls<=0?[Or,Hr]:ls>=1?[Li,ts]:[Or+ls*as*ns,Hr+ls*os*is]}function nearestPointForSegmentAsLine({point:Br,segment:ae,scales:Me}){let Or=ae[0][0],Hr=ae[0][1],Li=ae[1][0],ts=ae[1][1],rs=Number.isFinite(Or)&&Number.isFinite(Hr)&&Number.isFinite(Li)&&Number.isFinite(ts);if(ae[0].length!==2||!rs||Li===Or&&ts===Hr)return null;let ns=Me[0],is=Me[1],as=(Li-Or)/ns,os=(ts-Hr)/is,ss=as*as+os*os,ls=((Br[0]-Or)/ns*as+(Br[1]-Hr)/is*os)/ss;return[Or+ls*as*ns,Hr+ls*os*is]}const{mod:mod$6}=Context.math;class StickyGroup extends GraphicalComponent{static componentType="stickyGroup";constructor(ae){super(ae),Object.assign(this.actions,{addChildren:this.addChildren.bind(this),deleteChildren:this.deleteChildren.bind(this)})}static componentDocs={summary:"Constrains group members to attract to each other when nearby"};static rendererType="containerInline";static renderChildren=!0;static createAttributesObject(){let ae=super.createAttributesObject();return ae.relativeToGraphScales={description:"Whether the snapping threshold is interpreted relative to graph scales.",createComponentOfType:"boolean",createStateVariable:"relativeToGraphScales",defaultValue:!1,public:!0},ae.threshold={createComponentOfType:"number",description:"Distance threshold within which group members snap together."},ae.angleThreshold={description:"Angular distance within which group members snap together.",createComponentOfType:"number",createStateVariable:"angleThreshold",defaultValue:Math.PI*.03,public:!0},ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae.push({group:"graphical",componentTypes:["_graphical"]}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnConstraintGraphInfoDefinitions();return Object.assign(ae,Me),ae.numObjects={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"]}}),definition({dependencyValues:Or}){return{setValue:{numObjects:Or.graphicalChildren.length}}}},ae.numObjects={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"]}}),definition({dependencyValues:Or}){return{setValue:{numObjects:Or.graphicalChildren.length}}}},ae.pointsByObject={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"],variableNames:["numericalVertices","numericalXs","numericalEndpoints"],variablesOptional:!0}}),definition({dependencyValues:Or}){let Hr=[];for(let Li of Or.graphicalChildren)Li.stateValues.numericalVertices?Hr.push(Li.stateValues.numericalVertices):Li.stateValues.numericalXs?Hr.push([Li.stateValues.numericalXs]):Li.stateValues.numericalEndpoints?Hr.push(Li.stateValues.numericalEndpoints):Hr.push([]);return{setValue:{pointsByObject:Hr}}}},ae.getPointsForObject={returnDependencies:()=>({pointsByObject:{dependencyType:"stateVariable",variableName:"pointsByObject"}}),definition({dependencyValues:Or}){return{setValue:{getPointsForObject:function(Li){return Or.pointsByObject.filter((ts,rs)=>rs!==Li).reduce((ts,rs)=>(ts.push(...rs),ts),[])}}}}},ae.segmentsByObject={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"],variableNames:["numericalVertices","closed","numericalEndpoints"],variablesOptional:!0}}),definition({dependencyValues:Or}){let Hr=[];for(let Li of Or.graphicalChildren)if(Li.stateValues.numericalVertices){let ts=Li.stateValues.numericalVertices,rs=ts.length,ns=[];for(let is=1;is<rs;is++)ns.push([ts[is-1],ts[is]]);Li.stateValues.closed&&ns.push([ts[rs-1],ts[0]]),Hr.push(ns)}else if(Li.stateValues.numericalEndpoints){let ts=Li.stateValues.numericalEndpoints,rs=ts.length,ns=[];for(let is=1;is<rs;is++)ns.push([ts[is-1],ts[is]]);Hr.push(ns)}else Hr.push([]);return{setValue:{segmentsByObject:Hr}}}},ae.getSegmentsForObject={returnDependencies:()=>({segmentsByObject:{dependencyType:"stateVariable",variableName:"segmentsByObject"}}),definition({dependencyValues:Or}){return{setValue:{getSegmentsForObject:function(Li){return Or.segmentsByObject.filter((ts,rs)=>rs!==Li).reduce((ts,rs)=>(ts.push(...rs),ts),[])}}}}},ae.threshold={description:"Distance within which group members attract each other.",public:!0,shadowingInstructions:{createComponentOfType:"number"},hasEssential:!0,returnDependencies:()=>({thresholdAttr:{dependencyType:"attributeComponent",attributeName:"threshold",variableNames:["value"]},graphXmin:{dependencyType:"stateVariable",variableName:"graphXmin"},relativeToGraphScales:{dependencyType:"stateVariable",variableName:"relativeToGraphScales"}}),definition({dependencyValues:Or}){return Or.thresholdAttr?{setValue:{threshold:Or.thresholdAttr.stateValues.value}}:{useEssentialOrDefaultValue:{threshold:{get defaultValue(){return Or.relativeToGraphScales&&Or.graphXmin!==null?.02:.5}}}}},inverseDefinition({desiredStateVariableValues:Or,dependencyValues:Hr}){return Hr.thresholdAttr?{success:!0,instructions:[{setDependency:"thresholdAttr",desiredValue:Or.threshold}]}:{success:!0,instructions:[{setEssentialValue:"threshold",value:Or.threshold}]}}},ae.verticesConstraintFunction={returnDependencies:()=>({getPointsForObject:{dependencyType:"stateVariable",variableName:"getPointsForObject"},getSegmentsForObject:{dependencyType:"stateVariable",variableName:"getSegmentsForObject"},threshold:{dependencyType:"stateVariable",variableName:"threshold"},angleThreshold:{dependencyType:"stateVariable",variableName:"angleThreshold"},relativeToGraphScales:{dependencyType:"stateVariable",variableName:"relativeToGraphScales"},scales:{dependencyType:"stateVariable",variableName:"scales"}}),definition({dependencyValues:Or}){let Hr;Or.relativeToGraphScales?Hr=Or.scales||[1,1,1]:Hr=[1,1,1];let Li=Or.angleThreshold,ts=function({numericalUnconstrainedEdges:os,allowRotation:ss,enforceRigid:ls,shrinkThreshold:us,rotationPoint:cs},{objectInd:ds}){let ps=Or.getSegmentsForObject(ds),ms=[],fs=[],hs=!1,gs={distance2:1/0},ys=Or.threshold;us&&(ys*=.2);let xs=ys*ys;for(let[bs,vs]of os.entries()){let Cs=[],Ts=[];for(let Ns of ps)Cs.push((_s,Es)=>nearestPointForSegment({point:_s,segment:Ns,scales:Es})),Ts.push((_s,Es)=>nearestPointForSegmentAsLine({point:_s,segment:Ns,scales:Es}));let As=attractSegment({segment:vs,allowRotation:ss,scales:Hr,threshold2:xs,numericalNearestPointFunctions:Cs,numericalNearestPointAsLineFunctions:Ts});As.constrained?(ms.push(As.segment),fs.push(!0),hs=!0):(ms.push(vs),fs.push(!1),!hs&&As.distance2<gs.distance2&&(gs=As,gs.edgeInd=bs))}if(ss&&ls&&!hs&&gs.distance2<1/0){let bs=gs.edgeInd,vs=rotateIfClose({attractedEdgeInd:bs,attractingSegment:gs.segment,angleThreshold:Li,rotationPoint:cs,numericalUnconstrainedEdges:os});vs&&(ms[bs]=vs,fs[bs]=!0,hs=!0)}if(ss&&ls&&!hs){let bs=[0,Math.PI/2],vs=rotateToAttractAngles({numericalUnconstrainedEdges:os,anglesToAttract:bs,angleThreshold:Li,rotationPoint:cs});if(vs){let Cs=vs.rotatedEdgeInd;ms[Cs]=vs.rotatedEdge,fs[Cs]=!0,hs=!0}}return{numericalConstrainedEdges:ms,constraintUsedForEdge:fs}},rs=function({numericalUnconstrainedVertices:os,closed:ss,shrinkThreshold:ls,onlyMoveVertexInd:us=null},{objectInd:cs}){let ds=Or.getPointsForObject(cs),ps=Or.getSegmentsForObject(cs),ms=[],fs=[],hs=Or.threshold;ls&&(hs*=.2);let gs=hs*hs;for(let[vs,Cs]of os.entries()){if(us!==null&&vs!==us){ms.push(Cs),fs.push(!1);continue}let Ts=1/0,As={};for(let Es of ds){if(Cs.length!==Es.length)continue;let $s=Cs.reduce((Is,Ds,Vs)=>Is+Math.pow((Ds-Es[Vs])/Hr[Vs],2),0);$s<Ts&&(As=Es,Ts=$s)}let Ns=!1,_s;if(Ts<gs)Ns=!0,_s=As;else{Ts=1/0,As={};for(let Es of ps){let $s=nearestPointForSegment({point:Cs,segment:Es,scales:Hr});if($s){let Is=Cs.reduce((Ds,Vs,Ps)=>Ds+Math.pow((Vs-$s[Ps])/Hr[Ps],2),0);Is<Ts&&(As=$s,Ts=Is)}}Ts<gs?(Ns=!0,_s=As):_s=Cs}ms.push(_s),fs.push(Ns)}let ys=os.length,xs=ss?ys:ys-1,bs=[];for(let vs=0;vs<xs;vs++){let Cs=(vs+1)%ys;if(!(us!==null&&!(us===vs||us===Cs))&&!(fs[vs]||fs[Cs])){let Ts=os[vs],As=os[Cs],Ns,_s=1/0;for(let Es of ds){let $s=nearestPointForSegment({point:Es,segment:[Ts,As],scales:Hr});if($s){let Is=$s.reduce((Ds,Vs,Ps)=>Ds+Math.pow(Vs-Es[Ps],2),0);if(Is<_s)if(us===null){let Ds=Ts.map((Ps,Gs)=>Ps+Es[Gs]-$s[Gs]),Vs=As.map((Ps,Gs)=>Ps+Es[Gs]-$s[Gs]);Ns=[Ds,Vs],_s=Is}else{let Ds;us===vs?Ds=As:Ds=Ts;let Vs=[Es[0]-Ds[0],Es[1]-Ds[1]],Ps=Math.sqrt(Math.pow(Vs[0],2)+Math.pow(Vs[1],2)),Os=Math.sqrt(Math.pow(Ts[0]-As[0],2)+Math.pow(Ts[1]-As[1],2))/Ps;if(Os<1)continue;let ws=Ds.map((Rs,zs)=>Rs+Vs[zs]*Os),Ws;us===vs?(Ws=[ws,As],Is=Math.pow(Ts[0]-ws[0],2)+Math.pow(Ts[1]-ws[1],2)):(Ws=[Ts,ws],Is=Math.pow(As[0]-ws[0],2)+Math.pow(As[1]-ws[1],2)),Is<_s&&(_s=Is,Ns=Ws)}}}_s<gs&&bs.push({vertexInd1:vs,vertexInd2:Cs,distance2:_s,movedSegment:Ns})}}bs.sort((vs,Cs)=>vs.distance2-Cs.distance2);for(let{vertexInd1:vs,vertexInd2:Cs,movedSegment:Ts}of bs)fs[vs]||fs[Cs]||(fs[vs]=!0,fs[Cs]=!0,ms[vs]=Ts[0],ms[Cs]=Ts[1]);return{numericalConstrainedVertices:ms,constraintUsedForVertex:fs}},ns=returnVertexConstraintFunctionFromEdges(ts),is=returnVertexConstraintFunction(rs);return{setValue:{verticesConstraintFunction:function({unconstrainedVertices:os,closed:ss,enforceRigid:ls,allowRotation:us,rotationPoint:cs,shrinkThreshold:ds,vertexIndMoved:ps},{objectInd:ms}){let fs=ns({unconstrainedVertices:os,closed:ss,enforceRigid:ls,allowRotation:us,rotationPoint:cs,shrinkThreshold:ds,vertexIndMoved:ps},{objectInd:ms});return fs=is({unconstrainedVertices:fs,closed:ss,enforceRigid:ls,shrinkThreshold:ds,vertexIndMoved:ps},{objectInd:ms}),fs}}}}},ae.pointConstraintFunction={returnDependencies:()=>({getPointsForObject:{dependencyType:"stateVariable",variableName:"getPointsForObject"},getSegmentsForObject:{dependencyType:"stateVariable",variableName:"getSegmentsForObject"},threshold:{dependencyType:"stateVariable",variableName:"threshold"},relativeToGraphScales:{dependencyType:"stateVariable",variableName:"relativeToGraphScales"},scales:{dependencyType:"stateVariable",variableName:"scales"}}),definition({dependencyValues:Or}){let Hr;return Or.relativeToGraphScales?Hr=Or.scales||[1,1,1]:Hr=[1,1,1],{setValue:{pointConstraintFunction:function(ts,rs){let ns=ts.map(ls=>findFiniteNumericalValue(ls)),is=Or.getPointsForObject(rs),as=Or.getSegmentsForObject(rs),os=1/0,ss={};for(let ls of is){if(ns.length!==ls.length)continue;let us=ns.reduce((cs,ds,ps)=>cs+Math.pow((ds-ls[ps])/Hr[ps],2),0);us<os&&(ss=ls,os=us)}if(os<Or.threshold*Or.threshold)return ss.map(ls=>Context.fromAst(ls));os=1/0,ss={};for(let ls of as){let us=nearestPointForSegment({point:ns,segment:ls,scales:Hr});if(us){let cs=ns.reduce((ds,ps,ms)=>ds+Math.pow((ps-us[ms])/Hr[ms],2),0);cs<os&&(ss=us,os=cs)}}return os<Or.threshold*Or.threshold?ss.map(ls=>Context.fromAst(ls)):ts}}}}},ae}async addChildren(ae){return await addChildrenToDynamicChild(this,ae)}async deleteChildren(ae){return await deleteChildrenFromDynamicChild(this,ae)}}function rotateToAttractAngles({numericalUnconstrainedEdges:Br,anglesToAttract:ae,angleThreshold:Me,rotationPoint:Or}){let Hr=1/0,Li;for(let[os,ss]of Br.entries()){let ls=Math.atan((ss[1][1]-ss[0][1])/(ss[1][0]-ss[0][0]));for(let us of ae){let cs=mod$6(us-ls+Math.PI/2,Math.PI)-Math.PI/2;Math.abs(cs)<Math.abs(Hr)&&(Hr=cs,Li=os)}}if(!(Math.abs(Hr)<Me))return null;let[ts,rs]=Or,ns=Math.cos(Hr),is=Math.sin(Hr),as=Br[Li].map(os=>{let ss=os[0]-ts,ls=os[1]-rs;return[ss*ns-ls*is+ts,ss*is+ls*ns+rs]});return{rotatedEdgeInd:Li,rotatedEdge:as}}function rotateIfClose({attractedEdgeInd:Br,attractingSegment:ae,angleThreshold:Me,rotationPoint:Or,numericalUnconstrainedEdges:Hr}){let Li=Math.atan((ae[1][1]-ae[0][1])/(ae[1][0]-ae[0][0])),ts=Hr[Br],rs=Math.atan((ts[1][1]-ts[0][1])/(ts[1][0]-ts[0][0])),ns=mod$6(Li-rs+Math.PI/2,Math.PI)-Math.PI/2;if(!(Math.abs(ns)<Me))return null;let[is,as]=Or,os=Math.cos(ns),ss=Math.sin(ns);return Hr[Br].map(us=>{let cs=us[0]-is,ds=us[1]-as;return[cs*os-ds*ss+is,cs*ss+ds*os+as]})}class BlockScoredComponent extends BlockComponent{static componentType="_blockScoredComponent";static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnStandardAnswerAttributes()),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return renameStateVariable({stateVariableDefinitions:ae,oldName:"disabled",newName:"disabledOriginal"}),Object.assign(ae,returnStandardAnswerStateVariableDefinition()),ae}}function parseIntegerResponse(Br){const ae=Br.trim();if(ae==="")return null;const Me=Number(ae);return Number.isInteger(Me)?Me:null}function isDistractorResponse(Br){return Br.trim().toLowerCase()==="x"}function calculateResponseOffset({numericResponse:Br,effectiveProblemNum:ae,numEffectiveProblems:Me}){return(Br-ae+Me)%Me}function calculatePretzelCredit({problemOrder:Br,currentResponses:ae,distractors:Me,mode:Or}){const Hr=new Set(Me),Li=Br.length,ts=Li-Hr.size;if(ts===0)return ae.every(isDistractorResponse)?1:0;const rs=Array(Li).fill(null);let ns=0;for(let ls=0;ls<Li;ls++)Hr.has(ls)||(rs[ls]=ns,ns++);const is=[],as=Or==="circuit"?ts===1?0:1:null;for(let ls=0;ls<Li;ls++){const us=Br[ls],cs=ae[ls]??"";if(Hr.has(us)){if(!isDistractorResponse(cs))return 0;continue}const ds=parseIntegerResponse(cs);if(ds===null)return 0;const ps=rs[us],ms=calculateResponseOffset({numericResponse:ds,effectiveProblemNum:ps,numEffectiveProblems:ts});if(Or==="circuit"){if(ms!==as)return 0;continue}is.push(ms)}if(Or==="circuit")return 1;const os=is[0];return is.every(ls=>ls===os)?1:0}class Pretzel extends BlockScoredComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this),submitAnswer:this.submitAnswer.bind(this)})}static componentType="pretzel";static componentDocs={summary:"A response-matching component where students enter a sequence to match statements and answers"};static renderChildren=!0;static additionalSchemaChildren=["problem"];static additionalSchemaChildrenDoNotInherit=!0;static createAttributesObject(){const ae=super.createAttributesObject();return ae.maxNumColumns={description:"Maximum number of columns when arranging child problems.",createComponentOfType:"integer",createStateVariable:"maxNumColumns",defaultValue:2,public:!0,forRenderer:!0,clamp:[1,4]},ae.mode={description:"Arrangement mode for the child problems.",createPrimitiveOfType:"string",createStateVariable:"mode",defaultValue:"pretzel",public:!0,forRenderer:!0,toLowerCase:!0,validValues:[{value:"pretzel",description:"Interleaved arrangement where each problem's answer feeds the next and one can start with any problem."},{value:"circuit",description:"A variant of the pretzel where one must start with the first problem."}]},ae}static returnChildGroups(){return[{group:"problems",componentTypes:["statement"],excludeFromSchema:!0},{group:"textInputs",componentTypes:["textInput"],excludeFromSchema:!0},{group:"givenAnswers",componentTypes:["span"],excludeFromSchema:!0}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.textInputs={returnDependencies:()=>({textInputs:{dependencyType:"child",childGroups:["textInputs"]}}),definition:function({dependencyValues:Me}){return{setValue:{textInputs:Me.textInputs}}}},ae.problemOrder={stateVariablesDeterminingDependencies:["textInputs"],additionalStateVariablesDefined:["distractors"],returnDependencies({stateValues:Me}){return Me.textInputs.length>0?{problemOrder:{dependencyType:"sourceCompositeStateVariable",replacementIdx:Me.textInputs[0].componentIdx,variableName:"problemOrder"},distractors:{dependencyType:"sourceCompositeStateVariable",replacementIdx:Me.textInputs[0].componentIdx,variableName:"distractors"}}:{}},definition:function({dependencyValues:Me}){return{setValue:{problemOrder:Me.problemOrder??[],distractors:Me.distractors??[]}}}},ae.numProblems={description:"The number of child problems.",public:!0,forRenderer:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({problemChildren:{dependencyType:"child",childGroups:["problems"]}}),definition({dependencyValues:Me}){return{setValue:{numProblems:Me.problemChildren.length}}}},ae.currentResponses={description:"The current responses across all child problems.",public:!0,shadowingInstructions:{createComponentOfType:"text"},isArray:!0,entryPrefixes:["currentResponse"],returnArraySizeDependencies:()=>({numProblems:{dependencyType:"stateVariable",variableName:"numProblems"}}),returnArraySize({dependencyValues:Me}){return[Me.numProblems]},returnArrayDependenciesByKey({arrayKeys:Me}){const Or={};for(const Hr of Me)Or[Hr]={textInput:{dependencyType:"child",childGroups:["textInputs"],childIndices:[Hr],variableNames:["value"]}};return{dependenciesByKey:Or}},arrayDefinitionByKey({dependencyValuesByKey:Me}){const Or={};for(const Hr in Me)Or[Hr]=Me[Hr].textInput[0].stateValues.value;return{setValue:{currentResponses:Or}}}},ae.creditAchievedIfSubmit={returnDependencies:()=>({problemOrder:{dependencyType:"stateVariable",variableName:"problemOrder"},currentResponses:{dependencyType:"stateVariable",variableName:"currentResponses"},distractors:{dependencyType:"stateVariable",variableName:"distractors"},mode:{dependencyType:"stateVariable",variableName:"mode"}}),definition({dependencyValues:Me}){const Or=Me.problemOrder.map(Hr=>Hr-1);return{setValue:{creditAchievedIfSubmit:calculatePretzelCredit({problemOrder:Or,currentResponses:Me.currentResponses,distractors:Me.distractors,mode:Me.mode})}}}},ae.numSubmittedResponses={description:"The number of responses submitted.",public:!0,shadowingInstructions:{createComponentOfType:"number"},hasEssential:!0,defaultValue:0,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{numSubmittedResponses:!0}}),inverseDefinition({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setEssentialValue:"numSubmittedResponses",value:Me.numSubmittedResponses}]}}},ae.submittedResponses={description:"The most recently submitted responses.",public:!0,shadowingInstructions:{createComponentOfType:"text"},isArray:!0,allowExtraArrayKeysInInverse:!0,entryPrefixes:["submittedResponse"],defaultValueByArrayKey:()=>"_",hasEssential:!0,inverseShadowToSetEntireArray:!0,doNotCombineInverseArrayInstructions:!0,returnArraySizeDependencies:()=>({numSubmittedResponses:{dependencyType:"stateVariable",variableName:"numSubmittedResponses"}}),returnArraySize({dependencyValues:Me}){return[Me.numSubmittedResponses]},returnArrayDependenciesByKey(){return{globalDependencies:{numSubmittedResponses:{dependencyType:"stateVariable",variableName:"numSubmittedResponses"}}}},arrayDefinitionByKey({globalDependencyValues:Me}){let Or=[];Me.submittedResponsesComponentType&&Or.push(...Me.submittedResponsesComponentType.slice(0,Me.numSubmittedResponses));let Hr={};for(let Li=0;Li<Me.numSubmittedResponses;Li++)Hr[Li]=!0;return{useEssentialOrDefaultValue:{submittedResponses:Hr}}},inverseArrayDefinitionByKey:function({desiredStateVariableValues:Me,initialChange:Or}){return Or?{success:!0,instructions:[{setDependency:"numSubmittedResponses",desiredValue:Me.submittedResponses.length},{setEssentialValue:"submittedResponses",value:[...Me.submittedResponses]}]}:{success:!1}}},ae.showCheckWork={forRenderer:!0,returnDependencies:()=>({suppressCheckWork:{dependencyType:"stateVariable",variableName:"suppressCheckWork"}}),definition({dependencyValues:Me}){return{setValue:{showCheckWork:!Me.suppressCheckWork}}}},ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}async submitAnswer({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){if(await this.stateValues.numAttemptsLeft<1||await this.stateValues.disabled)return;const ts=await this.stateValues.handGraded?0:await this.stateValues.creditAchievedIfSubmit;let rs=[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"creditAchieved",value:ts},{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"responseHasBeenSubmitted",value:!0}],ns=await this.stateValues.currentResponses;rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"submittedResponses",value:ns}),rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"justSubmitted",value:!0}),rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"creditAchievedDependenciesAtSubmit",value:await this.stateValues.creditAchievedDependencies}),rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"numSubmissions",value:await this.stateValues.numSubmissions+1}),ts<1&&rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"numIncorrectSubmissions",value:await this.stateValues.numIncorrectSubmissions+1});const is=[];for(const as of ns)if(as.toString)try{is.push(as.toString())}catch{is.push("_")}else is.push(as);return rs.push({updateType:"recordItemSubmission",componentNumber:await this.stateValues.inComponentNumber,submittedComponent:this.componentIdx,response:ns,responseText:is,creditAchieved:ts}),await this.coreFunctions.performUpdate({updateInstructions:rs,actionId:ae,sourceInformation:Me,skipRendererUpdate:!0,event:{verb:"submitted",object:{componentIdx:this.componentIdx,componentType:this.componentType,answerNumber:this.answerNumber,rootName:this.rootName},result:{response:ns,responseText:is,componentTypes:Array(ns.length).fill("text"),creditAchieved:ts}}}),await this.coreFunctions.triggerChainedActions({componentIdx:this.componentIdx,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or})}}function getCorrespondingAnswerIdx({problemIdx:Br,numProblems:ae,distractorSet:Me}){if(Me.has(Br))return Br;let Or=(Br-1+ae)%ae,Hr=0;for(;Me.has(Or)&&Hr<ae;)Or=(Or-1+ae)%ae,Hr++;return Or}function normalizePretzelMode(Br){return Br?.toLowerCase()==="circuit"?"circuit":"pretzel"}function getProblemIndicesToPermute({numProblems:Br,mode:ae}){const Me=ae==="circuit"?2:1;return[...Array(Math.max(Br-Me+1,0)).keys()].map(Or=>Or+Me)}function buildProblemOrderFromPermutedIndices({permutedIndices:Br,numProblems:ae,mode:Me}){return Me==="circuit"?ae===0?[]:[1,...Br]:Br}function determineNumberOfPermutations({numProblems:Br,mode:ae}){const Me=getProblemIndicesToPermute({numProblems:Br,mode:ae}).length;let Or=1;for(let Hr=2;Hr<=Me;Hr++)Or*=Hr;return Or}function shuffleProblemOrder({numProblems:Br,variantRng:ae,mode:Me}){const Or=getProblemIndicesToPermute({numProblems:Br,mode:Me});for(let Hr=Or.length-1;Hr>0;Hr--){const Li=ae(),ts=Math.floor(Li*(Hr+1));[Or[Hr],Or[ts]]=[Or[ts],Or[Hr]]}return buildProblemOrderFromPermutedIndices({permutedIndices:Or,numProblems:Br,mode:Me})}class PretzelArranger extends CompositeComponent{static componentType="_pretzelArranger";static componentDocs={summary:"Internal arranger that lays out subset visualizations within <pretzel>."};static createsVariants=!0;static serializeReplacementsForChildren=!0;static replacementsAlreadyInResolver=!0;static useSerializedChildrenComponentIndices=!0;static createAttributesObject(){const ae=super.createAttributesObject();return ae.mode={createPrimitiveOfType:"string",createStateVariable:"mode",defaultValue:"pretzel",toLowerCase:!0,validValues:[{value:"pretzel",description:"Interleaved arrangement where each problem's answer feeds the next and one can start with any problem."},{value:"circuit",description:"A variant of the pretzel where one must start with the first problem."}]},ae}static keepChildrenSerialized({serializedComponent:ae}){return ae.children===void 0?[]:Object.keys(ae.children)}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.serializedProblemChildren={returnDependencies:()=>({serializedChildren:{dependencyType:"serializedChildren",doNotProxy:!0}}),definition:function({dependencyValues:Me}){return{setValue:{serializedProblemChildren:Me.serializedChildren.filter(Or=>Or.componentType==="problem")}}}},ae.numProblems={description:"The number of problems arranged.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({serializedProblemChildren:{dependencyType:"stateVariable",variableName:"serializedProblemChildren"}}),definition({dependencyValues:Me}){return{setValue:{numProblems:Me.serializedProblemChildren.length}}}},ae.problemOrder={forRenderer:!0,shadowVariable:!0,returnDependencies:({sharedParameters:Me})=>({mode:{dependencyType:"stateVariable",variableName:"mode"},numProblems:{dependencyType:"stateVariable",variableName:"numProblems"},variantSeed:{dependencyType:"value",value:Me.variantSeed},rngClass:{dependencyType:"value",value:Me.rngClass,doNotProxy:!0},variants:{dependencyType:"variants"}}),definition:function({dependencyValues:Me}){let Or=Me.numProblems,Hr=[],Li;const ts=Me.mode;let rs=Me.variants?.desiredVariant?.indices;if(rs!==void 0)if(rs.length!==Or)Hr.push(codedDiagnostic({type:"info",code:"doenet-i0005"}));else{if(rs=rs.map(Number),!rs.every(Number.isInteger))throw Error("All indices specified for pretzel must be integers");if(!rs.every(is=>is>=1&&is<=Or))Hr.push(codedDiagnostic({type:"info",code:"doenet-i0007",args:{component:"pretzel"}}));else if(new Set(rs).size!==Or)Hr.push(codedDiagnostic({type:"info",code:"doenet-i0008"}));else if(ts==="circuit"&&Or>0&&rs[0]!==1)Hr.push(codedDiagnostic({type:"info",code:"doenet-i0009"}));else return{setValue:{problemOrder:rs}}}let ns=Me.rngClass(Me.variantSeed+"co");return Li=shuffleProblemOrder({numProblems:Or,variantRng:ns,mode:ts}),{setValue:{problemOrder:Li},sendDiagnostics:Hr}}},ae.generatedVariantInfo={additionalStateVariablesDefined:["isVariantComponent"],returnDependencies:({componentInfoObjects:Me,sharedParameters:Or})=>({variantSeed:{dependencyType:"value",value:Or.variantSeed},problemOrder:{dependencyType:"stateVariable",variableName:"problemOrder"},variantDescendants:{dependencyType:"descendant",componentTypes:Object.keys(Me.componentTypesCreatingVariants),variableNames:["isVariantComponent","generatedVariantInfo"],useReplacementsForComposites:!0,recurseToMatchedChildren:!1,variablesOptional:!0,includeNonActiveChildren:!0,ignoreReplacementsOfEncounteredComposites:!0}}),definition({dependencyValues:Me,componentIdx:Or}){let Hr={seed:Me.variantSeed,meta:{createdBy:Or},indices:Me.problemOrder},Li=Hr.subvariants=[];for(let ts of Me.variantDescendants)ts.stateValues.isVariantComponent?Li.push(ts.stateValues.generatedVariantInfo):ts.stateValues.generatedVariantInfo&&Li.push(...ts.stateValues.generatedVariantInfo.subvariants);return{setValue:{generatedVariantInfo:Hr,isVariantComponent:!0}}}},ae.statements={additionalStateVariablesDefined:["givenAnswers","validProblems","distractors"],returnDependencies:()=>({serializedProblemChildren:{dependencyType:"stateVariable",variableName:"serializedProblemChildren"},mode:{dependencyType:"stateVariable",variableName:"mode"}}),definition({dependencyValues:Me}){const Or=[],Hr=[],Li=[];let ts=!0;const rs=[];for(const[ns,is]of Me.serializedProblemChildren.entries()){let as=null,os=null;for(const ss of is.children)if(ss.componentType==="statement")as=ss;else if(ss.componentType==="givenAnswer"){const ls=ss.children.find(us=>us.componentType==="_postponeRenderContainer");ls&&(os={...ls,componentType:"span",attributes:{...ls.attributes},children:(ls.children??[]).filter(us=>us.componentType!=="label"&&us.componentType!=="shortDescription")},os.componentIdx=ss.componentIdx,ss.attributes.name&&(os.attributes.name=ss.attributes.name))}(as===null||os===null)&&(ts=!1),Or.push(as),Hr.push(os),is.attributes.isDistractor?.primitive.value&&Li.push(ns)}return ts||rs.push(codedDiagnostic({type:"warning",code:"doenet-w0076"})),Me.mode==="circuit"&&Li.includes(0)&&rs.push(codedDiagnostic({type:"error",code:"doenet-e0001"})),{setValue:{statements:Or,givenAnswers:Hr,validProblems:ts,distractors:Li},sendDiagnostics:rs}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({problemOrder:{dependencyType:"stateVariable",variableName:"problemOrder"},statements:{dependencyType:"stateVariable",variableName:"statements"},givenAnswers:{dependencyType:"stateVariable",variableName:"givenAnswers"}}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae}static async createSerializedReplacements({component:ae,nComponents:Me,workspace:Or}){Or.replacementsCreated===void 0&&(Or.replacementsCreated=0);const Hr={prefix:`${ae.stateId}|`,num:Or.replacementsCreated},Li=[];let ts=[];const rs=await ae.stateValues.numProblems,ns=await ae.stateValues.problemOrder,is=await ae.stateValues.statements,as=await ae.stateValues.givenAnswers,os=await ae.stateValues.distractors,ss=await ae.stateValues.mode,ls=new Set(os);for(let us=0;us<rs;us++){const cs=ns[us]-1,ds=is[cs],ps=getCorrespondingAnswerIdx({problemIdx:cs,numProblems:rs,distractorSet:ls}),ms=as[ps];ms===null?ts.push({type:"serialized",componentType:"span",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[]}):ts.push(ms),ts.push({type:"serialized",componentType:"textInput",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{width:{type:"component",name:"width",component:{type:"serialized",componentType:"componentSize",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,state:{componentSize:{size:15,isAbsolute:!0}},children:[],attributes:{},doenetAttributes:{}}}},doenetAttributes:{},state:ss==="circuit"&&us===0?{value:"1",disabledPreliminary:!0}:{},children:[{type:"serialized",componentType:"shortDescription",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,state:{},children:[{type:"serialized",componentType:"text",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,state:{value:"Enter number in sequence for this answer or X if it is a distractor"},children:[],attributes:{},doenetAttributes:{}}],attributes:{},doenetAttributes:{}}]}),ds===null?ts.push({type:"serialized",componentType:"statement",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[]}):ts.push(ds)}return Or.replacementsCreated=Hr.num,{replacements:ts,diagnostics:Li,nComponents:Me}}static setUpVariant({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or}){setUpVariantSeedAndRng({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or})}static determineNumberOfUniqueVariants({serializedComponent:ae,componentInfoObjects:Me,infoDiagnostics:Or}){let Hr=0;const Li=normalizePretzelMode(ae.attributes.mode?.primitive?.value);for(let is of ae.children)if(is.componentType==="problem")Hr++;else if(Me.isInheritedComponentType({inheritedComponentType:is.componentType,baseComponentType:"_composite"})&&is.attributes.createComponentOfType?.primitive.value==="problem")if(is.attributes.numProblems?.primitive!==void 0){let as=Number(is.attributes.numProblems?.primitive.value);if(Number.isInteger(as)&&as>=0)Hr+=as;else return{success:!1}}else Hr++;else return{success:!1};let ts=determineNumberOfPermutations({numProblems:Hr,mode:Li}),rs=super.determineNumberOfUniqueVariants({serializedComponent:ae,componentInfoObjects:Me,infoDiagnostics:Or});if(!rs.success)return{success:!1};let ns=rs.numVariants*ts;return ae.variants.numVariants=ns,ae.variants.uniqueVariantData={numVariantsByDescendant:ae.variants.uniqueVariantData.numVariantsByDescendant,numberOfPermutations:ts,numProblems:Hr,mode:Li},{success:!0,numVariants:ns}}static getUniqueVariant({serializedComponent:ae,variantIndex:Me,componentInfoObjects:Or}){let Hr=ae.variants?.numVariants;if(Hr===void 0)return{success:!1};if(!Number.isInteger(Me)||Me<1||Me>Hr)return{success:!1};let Li=ae.variants.uniqueVariantData.numVariantsByDescendant,ts=ae.variants.descendantVariantComponents,rs=ae.variants.uniqueVariantData.numberOfPermutations,ns=ae.variants.uniqueVariantData.numProblems;const is=normalizePretzelMode(ae.variants.uniqueVariantData.mode);let as=[...Li];as.push(rs);let os=enumerateCombinations({numberOfOptionsByIndex:as,maxNumber:Me})[Me-1].map(fs=>fs+1),ss=os.pop(),ls=os;const us=getProblemIndicesToPermute({numProblems:ns,mode:is}),cs=buildProblemOrderFromPermutedIndices({permutedIndices:enumeratePermutations({values:us,maxNumber:ss})[ss-1],numProblems:ns,mode:is});let ds=!1,ps=[];for(let fs=0;fs<Li.length;fs++)if(Li[fs]>1){let hs=ts[fs],ys=Or.allComponentClasses[hs.componentType].getUniqueVariant({serializedComponent:hs,variantIndex:ls[fs],componentInfoObjects:Or});if(!ys.success)return{success:!1};ps.push(ys.desiredVariant),ds=!0}else ps.push({});let ms={indices:cs};return ds&&(ms.subvariants=ps),{success:!0,desiredVariant:ms}}}class Cascade extends SectioningComponent{static componentType="cascade";static componentDocs={summary:"Sectional component that reveals its children step-by-step"};static rendererType="section";static includeBlankStringChildren=!1;static createAttributesObject(){let ae=super.createAttributesObject();return ae.hideFutureSections={createComponentOfType:"boolean",createStateVariable:"hideFutureSections",defaultValue:!1,public:!0,description:"Whether to hide later cascade sections until previous ones are completed."},ae.noAutoTitle.defaultValue=!0,ae.asList.createStateVariable="asListPreliminary",ae.asList.public=!1,ae.revealAll={createComponentOfType:"boolean",createStateVariable:"revealAllPreliminary",defaultValue:!1,description:"Whether all cascade entries should be revealed regardless of progress."},ae.boxAll={createComponentOfType:"boolean",createStateVariable:"boxAll",defaultValue:!1,description:"Whether to draw boxes around all cascade entries regardless of progress."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.isListItem={forRenderer:!0,returnDependencies:()=>({}),definition:()=>({setValue:{isListItem:!1}})},ae.asList={description:"Whether to render this section's children as a list.",public:!0,forRenderer:!0,shadowingInstructions:{createComponentOfType:"boolean"},returnDependencies:()=>({asListPreliminary:{dependencyType:"stateVariable",variableName:"asListPreliminary"},parentAsList:{dependencyType:"parentStateVariable",variableName:"asList"}}),definition({dependencyValues:Me,usedDefault:Or}){let Hr=Me.parentAsList;return Or.asListPreliminary||(Hr=Me.asListPreliminary),{setValue:{asList:!!Hr}}}},ae.childrenAggregateScores={returnDependencies:()=>({}),definition:()=>({setValue:{childrenAggregateScores:!0}})},ae.childCreditAchieved={returnDependencies:()=>({children:{dependencyType:"child",childGroups:["anything"],variableNames:["creditAchievedForProgress"],variablesOptional:!0}}),definition({dependencyValues:Me}){return{setValue:{childCreditAchieved:Me.children.map(Hr=>Hr.stateValues?.creditAchievedForProgress??null)}}}},ae.numCompleted={description:"The number of cascade sections currently completed.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({childCreditAchieved:{dependencyType:"stateVariable",variableName:"childCreditAchieved"}}),definition({dependencyValues:Me}){let Or=0;for(const Hr of Me.childCreditAchieved)if(Hr===1||Hr===null)Or++;else break;return{setValue:{numCompleted:Or}}}},ae.revealAll={returnDependencies:()=>({cascadeAncestor:{dependencyType:"ancestor",componentType:"cascade",variableNames:["revealAll"]},revealAllPreliminary:{dependencyType:"stateVariable",variableName:"revealAllPreliminary"}}),definition({dependencyValues:Me,usedDefault:Or}){let Hr=!1;return Or.revealAllPreliminary?Me.cascadeAncestor?Hr=Me.cascadeAncestor.stateValues.revealAll:Me.revealAllPreliminary:Hr=Me.revealAllPreliminary,{setValue:{revealAll:Hr}}}},ae.childrenToHide={additionalStateVariablesDefined:["childrenToHideChildren","sectionToShowCascadeMessage"],returnDependencies:()=>({hideFutureSections:{dependencyType:"stateVariable",variableName:"hideFutureSections"},numCompleted:{dependencyType:"stateVariable",variableName:"numCompleted"},children:{dependencyType:"child",childGroups:["anything"],variableNames:["hasCascadeMessageToShow"],variablesOptional:!0},childrenWithCascadeMessages:{dependencyType:"child",childGroups:["anything","cascadeMessages"]},revealAll:{dependencyType:"stateVariable",variableName:"revealAll"},hideChildren:{dependencyType:"stateVariable",variableName:"hideChildren"},showCascadeMessage:{dependencyType:"stateVariable",variableName:"showCascadeMessage"}}),definition({dependencyValues:Me,componentInfoObjects:Or}){const Hr=Me.childrenWithCascadeMessages.filter(as=>as.componentType==="cascadeMessage").map(as=>as.componentIdx);if(Me.revealAll)return{setValue:{childrenToHide:Hr,childrenToHideChildren:[],sectionToShowCascadeMessage:null}};const Li=[],ts=[];for(const[as,os]of Me.children.entries())as<=Me.numCompleted?Me.hideChildren&&Li.push(os.componentIdx):!Me.hideChildren&&!Me.hideFutureSections&&Or.isInheritedComponentType({inheritedComponentType:os.componentType,baseComponentType:"_sectioningComponent"})?ts.push(os.componentIdx):Li.push(os.componentIdx);const rs=Me.children[Me.numCompleted+1],ns=rs&&ts.includes(rs.componentIdx)&&rs.stateValues?.hasCascadeMessageToShow?rs.componentIdx:null,is=ns===null&&(!Me.hideChildren||Me.showCascadeMessage)?nextOwnCascadeMessage(Me):null;return Li.push(...Hr.filter(as=>as!==is)),{setValue:{childrenToHide:Li,childrenToHideChildren:ts,sectionToShowCascadeMessage:ns}}}},ae.hasCascadeMessageToShow={returnDependencies:()=>({numCompleted:{dependencyType:"stateVariable",variableName:"numCompleted"},children:{dependencyType:"child",childGroups:["anything"]},childrenWithCascadeMessages:{dependencyType:"child",childGroups:["anything","cascadeMessages"]},revealAll:{dependencyType:"stateVariable",variableName:"revealAll"}}),definition({dependencyValues:Me}){return{setValue:{hasCascadeMessageToShow:nextOwnCascadeMessage(Me)!==null}}}},ae}}function nextOwnCascadeMessage(Br){if(Br.revealAll||Br.numCompleted>Br.children.length-2)return null;const ae=Br.children[Br.numCompleted].componentIdx,Me=Br.childrenWithCascadeMessages.findIndex(Or=>Or.componentIdx===ae);return Br.childrenWithCascadeMessages.slice(Me+1).find(Or=>Or.componentType==="cascadeMessage")?.componentIdx??null}class DynamicChildren extends CompositeComponent{constructor(ae){super(ae),Object.assign(this.actions,{addChildren:this.addChildren.bind(this),deleteChildren:this.deleteChildren.bind(this)})}static componentType="_dynamicChildren";static componentDocs={summary:"Internal container for dynamically-generated children."};static treatAsComponentForRecursiveReplacements=!0;static stateVariableToEvaluateAfterReplacements="readyToExpandWhenResolved";static createAttributesObject(){let ae=super.createAttributesObject();return ae.deferUntilParentRendered={createComponentOfType:"boolean",createStateVariable:"deferUntilParentRendered",defaultValue:!1,description:"Whether to wait until the parent is rendered before creating dynamic children."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.dynamicChildren={hasEssential:!0,defaultValue:[],returnDependencies:()=>({}),definition:function(){return{useEssentialOrDefaultValue:{dynamicChildren:!0}}},inverseDefinition({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setEssentialValue:"dynamicChildren",value:Me.dynamicChildren}]}}},ae.createReplacements={stateVariablesDeterminingDependencies:["deferUntilParentRendered"],returnDependencies:({stateValues:Me})=>{const Or={deferUntilParentRendered:{dependencyType:"stateVariable",variableName:"deferUntilParentRendered"}};return Me.deferUntilParentRendered&&(Or.parentRendered={dependencyType:"parentStateVariable",variableName:"rendered"}),Or},definition({dependencyValues:Me}){return{setValue:{createReplacements:!Me.deferUntilParentRendered||Me.parentRendered!==!1}}},markStale(){return{updateReplacements:!0}}},ae.nGroups={returnDependencies:()=>({dynamicChildren:{dependencyType:"stateVariable",variableName:"dynamicChildren"}}),definition({dependencyValues:Me}){return{setValue:{nGroups:Me.dynamicChildren.length}}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({dynamicChildren:{dependencyType:"stateVariable",variableName:"dynamicChildren"},createReplacements:{dependencyType:"stateVariable",variableName:"createReplacements"}}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}},markStale(){return{updateReplacements:!0}}},ae}async addChildren({serializedComponents:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){if(ae&&ae.length>0){const Li=[...await this.stateValues.dynamicChildren];return Li.push({type:"serialized",componentType:"group",componentIdx:0,attributes:{},doenetAttributes:{},state:{},children:deepClone(ae)}),await this.coreFunctions.performUpdate({updateInstructions:[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"dynamicChildren",value:Li}],actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr})}else return}async deleteChildren({number:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){const Li=await this.stateValues.nGroups;let ts=Math.min(ae,Li);if(ts>0){const rs=(await this.stateValues.dynamicChildren).slice(0,Li-ts);return await this.coreFunctions.performUpdate({updateInstructions:[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"dynamicChildren",value:rs}],actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr})}else return}static async createSerializedReplacements({component:ae,nComponents:Me,workspace:Or}){let Hr=[];Or.replacementsCreated===void 0&&(Or.replacementsCreated=0),Or.replacementsCreatedThroughGroup=[];let Li=[];if(!await ae.stateValues.createReplacements)return Or.nGroups=0,{replacements:Li,diagnostics:Hr,nComponents:Me};const ts=await ae.stateValues.nGroups;for(let rs=0;rs<ts;rs++){let ns=await this.replacementForGroup({component:ae,groupNum:rs,nComponents:Me,workspace:Or}),is=ns.replacements;Me=ns.nComponents,Li.push(...is)}return Or.nGroups=ts,{replacements:Li,diagnostics:Hr,nComponents:Me}}static async replacementForGroup({component:ae,groupNum:Me,nComponents:Or,workspace:Hr}){let Li=[deepClone((await ae.stateValues.dynamicChildren)[Me])];const ts={prefix:`${ae.stateId}|`,num:Hr.replacementsCreated},rs=createNewComponentIndices(Li,Or,ts);return Li=rs.components,Or=rs.nComponents,Hr.replacementsCreated=ts.num,Hr.replacementsCreatedThroughGroup=[...Hr.replacementsCreatedThroughGroup,Hr.replacementsCreated],{replacements:Li,nComponents:Or}}static async calculateReplacementChanges({component:ae,nComponents:Me,workspace:Or}){const Li=await ae.stateValues.createReplacements?await ae.stateValues.nGroups:0;if(Li===Or.nGroups)return{replacementChanges:[],nComponents:Me};if(Li<Or.nGroups){const ns=[{changeType:"delete",changeTopLevelReplacements:!0,firstReplacementInd:Li,numberReplacementsToDelete:Or.nGroups-Li}];return Or.nGroups=Li,Or.replacementsCreated=Or.replacementsCreatedThroughGroup[Li-1]||0,Or.replacementsCreatedThroughGroup=Or.replacementsCreatedThroughGroup.slice(0,Li),{replacementChanges:ns,nComponents:Me}}let ts=[];for(let ns=Or.nGroups;ns<Li;ns++){let is=await this.replacementForGroup({component:ae,groupNum:ns,nComponents:Me,workspace:Or}),as=is.replacements;Me=is.nComponents,ts.push(...as)}let rs={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:Or.nGroups,numberReplacementsToReplace:0,serializedReplacements:ts,replacementsToWithhold:0};return Or.nGroups=Li,{replacementChanges:[rs],nComponents:Me}}}class ShortDescription extends TextOrInline{static componentType="shortDescription";static componentDocs={summary:"A short accessibility description (e.g. for a `<graph>`) read by screen readers"};static rendererType=void 0;static inSchemaOnlyInheritAs=[];static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.inlineChildren={returnDependencies:()=>({inlineChildren:{dependencyType:"child",childGroups:["inlines"],variableNames:["text","hidden"],variablesOptional:!0}}),definition:({dependencyValues:Me})=>({setValue:{inlineChildren:Me.inlineChildren}})},ae.value={description:"The short description text.",public:!0,shadowingInstructions:{createComponentOfType:this.componentType},stateVariablesDeterminingDependencies:["inlineChildren"],returnDependencies:({stateValues:Me})=>{const Or={inlineChildren:{dependencyType:"stateVariable",variableName:"inlineChildren"}};for(const[Hr,Li]of Me.inlineChildren.entries())typeof Li=="object"&&(Or[`adapterSource${Hr}`]={dependencyType:"adapterSource",componentIdx:Li.componentIdx});return Or},definition({dependencyValues:Me,componentInfoObjects:Or}){const Hr=textFromChildren(Me.inlineChildren);let Li;for(let rs=0;rs<Me.inlineChildren.length;rs++){const ns=Me.inlineChildren[rs];if(typeof ns!="object")continue;const is=Me[`adapterSource${rs}`]?.componentType??ns.componentType;if(Or.isInheritedComponentType({inheritedComponentType:is,baseComponentType:"math"})||Or.isInheritedComponentType({inheritedComponentType:is,baseComponentType:"m"})){Li=is;break}}const ts=[];return Li&&ts.push(codedDiagnostic({type:"accessibility",level:2,code:"doenet-a0005",args:{component:Li}})),{setValue:{value:Hr},sendDiagnostics:ts}}},ae}}const unitConversions={"":1,px:1,pixel:1,pixels:1,"%":1,em:100,in:96,inch:96,inches:96,pt:1.333333333333,mm:3.7795296,millimeter:3.7795296,millimeters:3.7795296,cm:37.795296,centimeter:37.795296,centimeters:37.795296};class ComponentSize extends InlineComponent{static componentType="componentSize";static rendererType="text";static excludeFromSchema=!0;static primaryStateVariableForDefinition="componentSize";static stateVariableToBeShadowed="componentSize";static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){let ts=Or[Or.length-1];if(typeof ts=="string"){let rs=/([a-zA-z]+|%)$/,ns=ts.trim(),is=ns.match(rs);if(is){let as=is[1];if(as in unitConversions){let os=ns.slice(0,is.index),ss=Or.slice(0,Or.length-1);return os.length>0&&ss.push(os),{success:!0,newChildren:[{type:"serialized",componentType:"number",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:ss,attributes:{},doenetAttributes:{},state:{}},as],nComponents:Hr}}}}return{success:!0,newChildren:[{componentType:"number",children:Or}]}};return ae.push({childrenRegex:/..+/,replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"strings",componentTypes:["string"]},{group:"numbers",componentTypes:["number"]},{group:"componentSizes",componentTypes:["componentSize"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnSelectedStyleStateVariableDefinition();Object.assign(ae,Me);let Or=returnTextStyleDescriptionDefinitions();return Object.assign(ae,Or),ae.componentSize={description:"The size value with its associated unit (absolute pixels or relative percent).",public:!0,shadowingInstructions:{createComponentOfType:"componentSize"},hasEssential:!0,returnDependencies:()=>({componentSizeChild:{dependencyType:"child",childGroups:["componentSizes"],variableNames:["componentSize"]},numberChild:{dependencyType:"child",childGroups:["numbers"],variableNames:["value"]},stringChild:{dependencyType:"child",childGroups:["strings"],variableNames:["value"]},parentDefaultAbsoluteSize:{dependencyType:"parentStateVariable",variableName:"defaultAbsoluteSize"}}),definition({dependencyValues:Hr}){let Li=Hr.parentDefaultAbsoluteSize===void 0?!1:Hr.parentDefaultAbsoluteSize;if(Hr.stringChild.length===0)return Hr.numberChild.length===0?Hr.componentSizeChild.length===0?{useEssentialOrDefaultValue:{componentSize:{defaultValue:{size:100,isAbsolute:Li}}}}:{setValue:{componentSize:Hr.componentSizeChild[0].stateValues.componentSize}}:{setValue:{componentSize:{size:Hr.numberChild[0].stateValues.value,isAbsolute:!0}}};{let ts,rs;if(Hr.numberChild.length>0)ts=Hr.numberChild[0].stateValues.value,rs=Hr.stringChild[0].trim();else{let os=Hr.stringChild[0].trim().match(/^(-?[\d.]+)\s*(.*)$/);if(os===null)return{setValue:{componentSize:null}};ts=os[1],rs=os[2].trim()}if(ts=Number(ts),!Number.isFinite(ts))return{setValue:{componentSize:null}};let ns=!(rs==="%"||rs==="em"),is=unitConversions[rs];return is===void 0&&(is=1),{setValue:{componentSize:{size:is*ts,isAbsolute:ns}}}}},inverseDefinition({desiredStateVariableValues:Hr,dependencyValues:Li}){if(Li.stringChild.length===0)return Li.numberChild.length===0?Li.componentSizeChild.length===0?{success:!0,instructions:[{setEssentialValue:"componentSize",value:Hr.componentSize}]}:{success:!0,instructions:[{setDependency:"componentSizeChild",desiredValue:Hr.componentSize,childIndex:0,variableIndex:0}]}:Hr.componentSize.isAbsolute?{success:!0,instructions:[{setDependency:"numberChild",desiredValue:Hr.componentSize.size,childIndex:0,variableIndex:0}]}:{success:!1};if(Li.numberChild.length>0){let ts=Li.stringChild[0].trim(),rs=!(ts==="%"||ts==="em");if(Hr.componentSize.isAbsolute!==rs)return{success:!1};let ns=unitConversions[ts];return ns===void 0&&(ns=1),{success:!0,instructions:[{setDependency:"numberChild",desiredValue:Hr.componentSize.size/ns,childIndex:0,variableIndex:0}]}}else{let ts=Hr.componentSize.size;return Hr.componentSize.isAbsolute?ts+="px":ts+="%",{success:!0,instructions:[{setDependency:"stringChild",desiredValue:ts,childIndex:0,variableIndex:0}]}}}},ae.number={description:"The numeric portion of the size.",public:!0,shadowingInstructions:{createComponentOfType:"number"},returnDependencies:()=>({componentSize:{dependencyType:"stateVariable",variableName:"componentSize"}}),definition({dependencyValues:Hr}){let Li=null;return Hr.componentSize&&(Li=Hr.componentSize.size),{setValue:{number:Li}}},inverseDefinition({desiredStateVariableValues:Hr,dependencyValues:Li}){return Li.componentSize?{success:!0,instructions:[{setDependency:"componentSize",desiredValue:{size:Hr.number,isAbsolute:Li.componentSize.isAbsolute}}]}:{success:!1}}},ae.math=mathStateVariableFromNumberStateVariable({numberVariableName:"number",mathVariableName:"math",isPublic:!0}),ae.math.description="The size as a math expression.",ae.isAbsolute={description:"Whether the size uses absolute units (pixels) rather than relative units (percent).",public:!0,shadowingInstructions:{createComponentOfType:"boolean"},returnDependencies:()=>({componentSize:{dependencyType:"stateVariable",variableName:"componentSize"}}),definition({dependencyValues:Hr}){let Li=null;return Hr.componentSize&&(Li=Hr.componentSize.isAbsolute),{setValue:{isAbsolute:Li}}}},ae.text={forRenderer:!0,returnDependencies:()=>({componentSize:{dependencyType:"stateVariable",variableName:"componentSize"}}),definition({dependencyValues:Hr}){let Li="";return Hr.componentSize&&(Li=Hr.componentSize.size,Hr.componentSize.isAbsolute?Li+="px":Li+="%"),{setValue:{text:Li}}}},ae}static adapters=["number","math"]}class ComponentSizeList extends BaseComponent{static componentType="_componentSizeList";static rendererType="asList";static renderChildren=!0;static stateVariableToBeShadowed="componentSizes";static additionalSchemaChildren=["string","number"];static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){let ts=[],rs=[],ns=function(){rs.length>0&&(ts.push({type:"serialized",componentType:"componentSize",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:rs,attributes:{},doenetAttributes:{},state:{}}),rs=[])};for(let is of Or)if(typeof is=="string"){let as=is.split(/\s+/);as[0].length===0&&(ns(),as=as.slice(1));for(let[os,ss]of as.entries())ss.length>0?(rs.push(ss),os<as.length-1&&ns()):ns()}else rs.push(is);return ns(),{success:!0,newChildren:ts,nComponents:Hr}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"componentSizes",componentTypes:["componentSize"]},{group:"componentSizeLists",componentTypes:["_componentSizeList"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.overrideChildHide={returnDependencies:()=>({}),definition:()=>({setValue:{overrideChildHide:!0}})},ae.numComponents={description:"The number of size values in the list.",public:!0,shadowingInstructions:{createComponentOfType:"number"},additionalStateVariablesDefined:["childIndexByArrayKey"],returnDependencies(){return{componentSizeListChildren:{dependencyType:"child",childGroups:["componentSizeLists"],variableNames:["numComponents"]},componentSizeAndComponentSizeListChildren:{dependencyType:"child",childGroups:["componentSizes","componentSizeLists"],skipComponentIndices:!0}}},definition:function({dependencyValues:Me,componentInfoObjects:Or}){let Hr=0,Li=[],ts=0;for(let[rs,ns]of Me.componentSizeAndComponentSizeListChildren.entries())if(Or.isInheritedComponentType({inheritedComponentType:ns.componentType,baseComponentType:"_componentSizeList"})){let is=Me.componentSizeListChildren[ts];ts++;for(let as=0;as<is.stateValues.numComponents;as++)Li[Hr+as]=[rs,as];Hr+=is.stateValues.numComponents}else Li[Hr]=[rs,0],Hr+=1;return{setValue:{numComponents:Hr,childIndexByArrayKey:Li},checkForActualChange:{numComponents:!0}}}},ae.componentSizes={description:"The list of component sizes.",public:!0,shadowingInstructions:{createComponentOfType:"componentSize"},isArray:!0,entryPrefixes:["componentSize"],stateVariablesDeterminingDependencies:["childIndexByArrayKey"],returnArraySizeDependencies:()=>({numComponents:{dependencyType:"stateVariable",variableName:"numComponents"}}),returnArraySize({dependencyValues:Me}){return[Me.numComponents]},returnArrayDependenciesByKey({arrayKeys:Me,stateValues:Or}){let Hr={},Li={childIndexByArrayKey:{dependencyType:"stateVariable",variableName:"childIndexByArrayKey"}};for(let ts of Me){let rs=[],ns="1";Or.childIndexByArrayKey[ts]&&(rs=[Or.childIndexByArrayKey[ts][0]],ns=Or.childIndexByArrayKey[ts][1]+1),Hr[ts]={componentSizeAndComponentSizeListChildren:{dependencyType:"child",childGroups:["componentSizes","componentSizeLists"],variableNames:["componentSize","componentSize"+ns],variablesOptional:!0,childIndices:rs}}}return{globalDependencies:Li,dependenciesByKey:Hr}},arrayDefinitionByKey({globalDependencyValues:Me,dependencyValuesByKey:Or,arrayKeys:Hr,componentInfoObjects:Li}){let ts={};for(let rs of Hr){let ns=Or[rs].componentSizeAndComponentSizeListChildren[0];if(ns)if(Li.isInheritedComponentType({inheritedComponentType:ns.componentType,baseComponentType:"_componentSizeList"})){let is=Me.childIndexByArrayKey[rs][1]+1;ts[rs]=ns.stateValues["componentSize"+is]}else ts[rs]=ns.stateValues.componentSize}return{setValue:{componentSizes:ts}}},inverseArrayDefinitionByKey({desiredStateVariableValues:Me,globalDependencyValues:Or,dependencyValuesByKey:Hr,dependencyNamesByKey:Li,arraySize:ts,componentInfoObjects:rs}){let ns=[];for(let is in Me.componentSizes){if(!Hr[is])continue;let as=Hr[is].componentSizeAndComponentSizeListChildren[0];as&&(rs.isInheritedComponentType({inheritedComponentType:as.componentType,baseComponentType:"_componentSizeList"})?ns.push({setDependency:Li[is].componentSizeAndComponentSizeListChildren,desiredValue:Me.componentSizes[is],childIndex:0,variableIndex:1}):ns.push({setDependency:Li[is].componentSizeAndComponentSizeListChildren,desiredValue:Me.componentSizes[is],childIndex:0,variableIndex:0}))}return{success:!0,instructions:ns}}},ae.numValues={isAlias:!0,targetVariableName:"numComponents",description:"The number of component sizes in the list."},ae.values={isAlias:!0,targetVariableName:"componentSizes",description:"The list's component sizes."},ae}}const ComponentSize$1=Object.freeze(Object.defineProperty({__proto__:null,ComponentSize,ComponentSizeList},Symbol.toStringTag,{value:"Module"}));class Copy extends CompositeComponent{static componentType="_copy";static excludeFromSchema=!0;static acceptAnyAttribute=!0;static includeBlankStringChildren=!0;static stateVariableToEvaluateAfterReplacements="needsReplacementsUpdatedWhenStale";static createAttributesObject(){let ae=super.createAttributesObject();return delete ae.disabled,delete ae.modifyIndirectly,delete ae.fixed,delete ae.styleNumber,delete ae.isResponse,delete ae.isPotentialResponse,delete ae.hide,ae.createComponentOfType={createPrimitiveOfType:"string"},ae.createComponentIdx={createPrimitiveOfType:"integer"},ae.createComponentName={createPrimitiveOfType:"string"},ae.numComponents={createPrimitiveOfType:"number"},ae.copyInChildren={createPrimitiveOfType:"boolean"},ae.uri={createPrimitiveOfType:"string",createStateVariable:"uri",defaultValue:null,public:!0},ae.link={createPrimitiveOfType:"boolean",createStateVariable:"link",defaultValue:!0},ae.removeEmptyArrayEntries={createPrimitiveOfType:"boolean",createStateVariable:"removeEmptyArrayEntries",defaultValue:!1},ae.asList={createPrimitiveOfType:"boolean",createStateVariable:"asListPreliminary",defaultValue:!0,description:"Whether to render the items separated by commas (true) or with no separator (false)."},ae}static keepChildrenSerialized({serializedComponent:ae}){return ae.children===void 0?[]:Object.keys(ae.children)}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.refResolutionIndexDependencies={returnDependencies:()=>({refResolutionIndexDependencies:{dependencyType:"refResolutionIndexDependencies"}}),definition:({dependencyValues:Me})=>({setValue:{refResolutionIndexDependencies:Me.refResolutionIndexDependencies}})},ae.refResolutionIndexDependencyValues={stateVariablesDeterminingDependencies:["refResolutionIndexDependencies"],returnDependencies:({stateValues:Me})=>{const Or={};for(const Hr of Me.refResolutionIndexDependencies)Or[Hr]={dependencyType:"stateVariable",componentIdx:Hr,variableName:"value"};return Or},definition:({dependencyValues:Me})=>({setValue:{refResolutionIndexDependencyValues:Me}})},ae.extendIdx={additionalStateVariablesDefined:["unresolvedPath","originalPath"],stateVariablesDeterminingDependencies:["refResolutionIndexDependencyValues"],returnDependencies:({stateValues:Me})=>({refResolution:{dependencyType:"refResolution",indexDependencyValues:Me.refResolutionIndexDependencyValues}}),definition:({dependencyValues:Me})=>({setValue:{extendIdx:Me.refResolution.extendIdx,unresolvedPath:Me.refResolution.unresolvedPath,originalPath:Me.refResolution.originalPath}})},ae.extendedComponent={shadowVariable:!0,stateVariablesDeterminingDependencies:["extendIdx"],returnDependencies({stateValues:Me}){return Me.extendIdx!==-1?{extendedComponent:{dependencyType:"componentIdentity",componentIdx:Me.extendIdx}}:{}},definition:function({dependencyValues:Me}){let Or=null;return Me.extendedComponent&&(Or=Me.extendedComponent),{setValue:{extendedComponent:Or}}}},ae.targetInactive={stateVariablesDeterminingDependencies:["extendedComponent"],returnDependencies({stateValues:Me}){return Me.extendedComponent?{targetIsInactiveCompositeReplacement:{dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"isInactiveCompositeReplacement"}}:{}},definition:function({dependencyValues:Me}){return{setValue:{targetInactive:!!Me.targetIsInactiveCompositeReplacement}}}},ae.cid={additionalStateVariablesDefined:["doenetId"],returnDependencies:()=>({uri:{dependencyType:"stateVariable",variableName:"uri"}}),definition:function({dependencyValues:Me}){if(!Me.uri||Me.uri.substring(0,7).toLowerCase()!=="doenet:")return{setValue:{cid:null,doenetId:null}};let Or=null,Hr=null,Li=Me.uri.match(/[:&]cid=([^&]+)/i);return Li&&(Or=Li[1]),Li=Me.uri.match(/[:&]doenetid=([^&]+)/i),Li&&(Hr=Li[1]),{setValue:{cid:Or,doenetId:Hr}}}},ae.createComponentOfType={returnDependencies:()=>({typeAttr:{dependencyType:"attributePrimitive",attributeName:"createComponentOfType"}}),definition({dependencyValues:Me}){let Or=null;return Me.typeAttr&&(Or=Me.typeAttr),{setValue:{createComponentOfType:Or}}}},ae.replacementSourceIdentities={stateVariablesDeterminingDependencies:["extendedComponent","unresolvedPath","createComponentOfType"],additionalStateVariablesDefined:["usedReplacements"],returnDependencies:function({stateValues:Me,componentInfoObjects:Or}){let Hr={numComponentsSpecified:{dependencyType:"stateVariable",variableName:"numComponentsSpecified"}},Li=!1;if(Me.extendedComponent!==null){if(Me.extendedComponent.componentType==="_copy"||Or.isCompositeComponent({componentType:Me.extendedComponent.componentType,includeNonStandard:!0})&&Me.extendedComponent.componentType!==Me.createComponentOfType){Li=!0;let ts=Me.unresolvedPath?.[0]?.name;ts===""&&(ts=null),Hr.targets={dependencyType:"replacement",compositeIdx:Me.extendedComponent.componentIdx,recursive:!0,recurseNonStandardComposites:Me.unresolvedPath!=null,stopAtListComposites:Me.unresolvedPath==null,includeWithheldReplacements:!0,stopIfHaveProp:ts}}Li||(Hr.targets={dependencyType:"stateVariable",variableName:"extendedComponent"}),Hr.usedReplacements={dependencyType:"value",value:Li}}return Hr},definition({dependencyValues:Me}){let Or=null;if(Me.targets&&(Or=Me.targets,Array.isArray(Or)||(Or=[Or]),Me.numComponentsSpecified===1&&Or.length>1)){const Hr=Or.findIndex(ts=>typeof ts!="string"||ts.trim()!==""),Li=Or.findLastIndex(ts=>typeof ts!="string"||ts.trim()!=="");Hr!==-1&&Li!==-1&&(Or=Or.slice(Hr,Li+1))}return{setValue:{replacementSourceIdentities:Or,usedReplacements:!!Me.usedReplacements}}}},ae.asList={stateVariablesDeterminingDependencies:["usedReplacements","extendedComponent"],returnDependencies({stateValues:Me}){const Or={asListPreliminary:{dependencyType:"stateVariable",variableName:"asListPreliminary"},usedReplacements:{dependencyType:"stateVariable",variableName:"usedReplacements"}};return Me.usedReplacements&&(Or.extendedComponentAsList={dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"asList",variablesOptional:!0}),Or},definition({dependencyValues:Me,usedDefault:Or}){return Or.asListPreliminary&&Me.usedReplacements&&typeof Me.extendedComponentAsList=="boolean"?{setValue:{asList:Me.extendedComponentAsList}}:{setValue:{asList:Me.asListPreliminary}}}},ae.implicitProp={stateVariablesDeterminingDependencies:["replacementSourceIdentities","unresolvedPath"],returnDependencies({stateValues:Me}){let Or={unresolvedPath:{dependencyType:"stateVariable",variableName:"unresolvedPath"},usedReplacements:{dependencyType:"stateVariable",variableName:"usedReplacements"}};return Me.unresolvedPath||(Or.replacementSourceIdentities={dependencyType:"stateVariable",variableName:"replacementSourceIdentities"},Or.typeAttr={dependencyType:"attributePrimitive",attributeName:"createComponentOfType"}),Or},definition({dependencyValues:Me,componentInfoObjects:Or}){if(Me.unresolvedPath||Me.usedReplacements||!(Me.replacementSourceIdentities?.length>0))return{setValue:{implicitProp:null}};let Hr=Me.replacementSourceIdentities[0],Li=Or.allComponentClasses[Hr.componentType]?.variableForImplicitProp;if(!Li)return{setValue:{implicitProp:null}};if(Me.typeAttr){let ts=Or.componentTypeLowerCaseMapping[Me.typeAttr.toLowerCase()];if(ts===Hr.componentType)return{setValue:{implicitProp:null}};let rs=Or.publicStateVariableInfo[Hr.componentType].stateVariableDescriptions[Li];if(rs.createComponentOfType!==void 0&&rs.createComponentOfType!==ts)return{setValue:{implicitProp:null}}}return{setValue:{implicitProp:Li}}}},ae.replacementSources={stateVariablesDeterminingDependencies:["replacementSourceIdentities","unresolvedPath","implicitProp"],additionalStateVariablesDefined:["effectivePropNameBySource"],returnDependencies:function({stateValues:Me}){let Or={replacementSourceIdentities:{dependencyType:"stateVariable",variableName:"replacementSourceIdentities"}};if(Me.replacementSourceIdentities!==null)for(let[Hr,Li]of Me.replacementSourceIdentities.entries()){let ts=Me.unresolvedPath;Me.implicitProp&&(ts=[{name:Me.implicitProp,index:[]}]);let rs;if(ts){if(ts=[...ts],Or["unresolvedPath"+Hr]={dependencyType:"value",value:ts},typeof Li=="string")continue;rs={dependencyType:"stateVariableFromUnresolvedPath",componentIdx:Li.componentIdx,unresolvedPath:ts,returnAsComponentObject:!0,variablesOptional:!0,caseInsensitiveVariableMatch:!0,publicStateVariablesOnly:!0,useMappedVariableNames:!0}}else{if(typeof Li=="string")continue;rs={dependencyType:"componentIdentity",componentIdx:Li.componentIdx}}Or["target"+Hr]=rs}return Or},definition({dependencyValues:Me}){let Or=null,Hr=null;if(Me.replacementSourceIdentities!==null){Or=[],Hr=[];for(let Li in Me.replacementSourceIdentities){let ts=Me["target"+Li];if(ts){Or.push(ts);let rs;ts.stateValues&&(rs=Object.keys(ts.stateValues)[0]),!rs&&Me["unresolvedPath"+Li]&&(rs="__prop_name_not_found"),Hr.push(rs)}else{const rs=Me.replacementSourceIdentities[Li];typeof rs=="string"?Me["unresolvedPath"+Li]?Hr.push("__prop_name_not_found"):(Or.push(rs),Hr.push(void 0)):(Or.push(void 0),Hr.push("__no_target_found"))}}}return{setValue:{replacementSources:Or,effectivePropNameBySource:Hr}}}},ae.numComponentsSpecified={returnDependencies:()=>({numComponentsAttr:{dependencyType:"attributePrimitive",attributeName:"numComponents"},typeAttr:{dependencyType:"attributePrimitive",attributeName:"createComponentOfType"}}),definition({dependencyValues:Me,componentInfoObjects:Or}){let Hr;if(Me.typeAttr){if(!(Or.componentTypeLowerCaseMapping[Me.typeAttr.toLowerCase()]in Or.allComponentClasses))return{setValue:{numComponentsSpecified:null},sendDiagnostics:[codedDiagnostic({type:"warning",code:"doenet-w0065",args:{type:Me.typeAttr}})]};Me.numComponentsAttr!==null?Hr=Me.numComponentsAttr:Hr=1}else{if(Me.numComponentsAttr!==null)throw Error("You must specify createComponentOfType when specifying numComponents for a copy.");Hr=null}return{setValue:{numComponentsSpecified:Hr}}}},ae.unlinkedDescendants={stateVariablesDeterminingDependencies:["extendIdx","link"],returnDependencies({stateValues:Me}){let Or={};return Me.link?Or.targetItself={dependencyType:"componentIdentity",componentIdx:Me.extendIdx}:Or.targetDescendants={dependencyType:"descendant",ancestorIdx:Me.extendIdx,componentTypes:["_composite"]},Or},definition(){return{setValue:{unlinkedDescendants:!0}}}},ae.unlinkedTargetsExpanded={stateVariablesDeterminingDependencies:["extendedComponent","link"],returnDependencies({stateValues:Me,componentInfoObjects:Or}){let Hr={};return!Me.link&&Me.extendedComponent&&Or.isInheritedComponentType({inheritedComponentType:Me.extendedComponent.componentType,baseComponentType:"_composite"})&&(Hr.targetReplacements={dependencyType:"replacement",compositeIdx:Me.extendedComponent.componentIdx,recursive:!0,recurseNonStandardComposites:!0}),Hr},definition(){return{setValue:{unlinkedTargetsExpanded:!0}}}},ae.readyToExpandWhenResolved={stateVariablesDeterminingDependencies:["extendedComponent","unresolvedPath","link"],returnDependencies({stateValues:Me,componentInfoObjects:Or}){let Hr={extendedComponent:{dependencyType:"stateVariable",variableName:"extendedComponent"},needsReplacementsUpdatedWhenStale:{dependencyType:"stateVariable",variableName:"needsReplacementsUpdatedWhenStale"},link:{dependencyType:"stateVariable",variableName:"link"},unlinkedTargetsExpanded:{dependencyType:"stateVariable",variableName:"unlinkedTargetsExpanded"},unlinkedDescendants:{dependencyType:"stateVariable",variableName:"unlinkedDescendants"}};return Me.extendedComponent&&Or.isCompositeComponent({componentType:Me.extendedComponent.componentType,includeNonStandard:!1})&&(Hr.targetReadyToExpandWhenResolved={dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"readyToExpandWhenResolved"}),Me.extendedComponent&&Me.unresolvedPath===null&&(Hr.extendedVariantInfo={dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"generatedVariantInfo",variablesOptional:!0}),Me.link||(Hr.replacementSources={dependencyType:"stateVariable",variableName:"replacementSources"}),Hr},definition(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae.needsReplacementsUpdatedWhenStale={stateVariablesDeterminingDependencies:["extendedComponent","replacementSourceIdentities","effectivePropNameBySource","unresolvedPath","link","removeEmptyArrayEntries"],returnDependencies:function({stateValues:Me,componentInfoObjects:Or}){if(!Me.link)return{};let Hr={extendedComponent:{dependencyType:"stateVariable",variableName:"extendedComponent"},targetInactive:{dependencyType:"stateVariable",variableName:"targetInactive"},replacementSourceIdentities:{dependencyType:"stateVariable",variableName:"replacementSourceIdentities"}};if(Me.effectivePropNameBySource!==null){for(let[Li,ts]of Me.effectivePropNameBySource.entries())if(ts){let rs=Me.replacementSourceIdentities[Li];Hr["sourceArraySize"+Li]={dependencyType:"stateVariableArraySize",componentIdx:rs.componentIdx,variableName:ts,variablesOptional:!0,caseInsensitiveVariableMatch:!0},Hr["sourceComponentType"+Li]={dependencyType:"stateVariableComponentType",componentIdx:rs.componentIdx,variableName:ts,variablesOptional:!0,caseInsensitiveVariableMatch:!0}}}return Me.extendedComponent!==null&&Or.isCompositeComponent({componentType:Me.extendedComponent.componentType,includeNonStandard:!1})&&(Hr.allReplacementIdentities={dependencyType:"replacement",compositeIdx:Me.extendedComponent.componentIdx,recursive:!0,variableNames:["isInactiveCompositeReplacement"]}),Me.removeEmptyArrayEntries&&(Hr.replacementSources={dependencyType:"stateVariable",variableName:"replacementSources"}),Hr},markStale(){return{updateReplacements:!0}},definition:()=>({setValue:{needsReplacementsUpdatedWhenStale:!0}})},ae}static async createSerializedReplacements({component:ae,components:Me,nComponents:Or,workspace:Hr,allDoenetMLs:Li,componentInfoObjects:ts,resolveItem:rs,publicCaseInsensitiveAliasSubstitutions:ns}){Hr.replacementsCreated===void 0&&(Hr.replacementsCreated=0);let is=[];await ae.stateValues.numComponentsSpecified,Hr.numReplacementsBySource=[],Hr.numNonStringReplacementsBySource=[],Hr.propVariablesCopiedBySource=[],Hr.sourceIndices=[];let as=this.createAttributesObject(),os=await ae.stateValues.replacementSourceIdentities;if(!await ae.stateValues.extendedComponent||!os){let gs=[];const ys={prefix:`${ae.stateId}|`,num:Hr.replacementsCreated};if(ae.attributes.copyInChildren?.primitive.value){let bs=ts.componentTypeLowerCaseMapping[ae.attributes.createComponentOfType.primitive.value.toLowerCase()],vs=ts.allComponentClasses[bs];const Cs=convertUnresolvedAttributesForComponentType({attributes:ae.attributes,componentType:bs,componentInfoObjects:ts,compositeAttributesObj:as,nComponents:Or,stateIdInfo:ys}),Ts=Cs.attributes;Or=Cs.nComponents;let As=deepClone(ae.serializedChildren);vs.includeBlankStringChildren||(As=As.filter(_s=>typeof _s!="string"||_s.trim()!==""));let Ns=Ts;gs=[{type:"serialized",componentType:bs,componentIdx:Or++,stateId:`${ys.prefix}${ys.num++}`,attributes:Ns,doenetAttributes:{},state:{},children:As}],Hr.numReplacementsBySource.push(gs.length),Hr.numNonStringReplacementsBySource.push(gs.filter(_s=>typeof _s!="string").length)}let xs=await verifyReplacementsMatchSpecifiedType({component:ae,replacements:gs,workspace:Hr,componentInfoObjects:ts,compositeAttributesObj:as,components:Me,nComponents:Or,stateIdInfo:ys,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...xs.diagnostics),Or=xs.nComponents,addAttributesToSingleReplacement(xs.replacements,ae),Hr.replacementsCreated=ys.num,{replacements:xs.replacements,diagnostics:is,nComponents:Or}}let ss=await rs({componentIdx:ae.componentIdx,type:"determineDependencies",stateVariable:"replacementSources",dependency:"__determine_dependencies",expandComposites:!1});if(!ss.success)throw Error(`Couldn't resolve determineDependencies of replacementSources of ${ae.componentIdx}`);let ls=await ae.stateValues.effectivePropNameBySource;for(let gs in os)if(ls[gs]&&(ss=await rs({componentIdx:ae.componentIdx,type:"recalculateDownstreamComponents",stateVariable:"replacementSources",dependency:"target"+gs,expandComposites:!1}),!ss.success))throw Error(`Couldn't resolve recalculateDownstreamComponents for target${gs} of replacementSources of ${ae.componentIdx}`);let us=[];const cs={prefix:`${ae.stateId}|`,num:Hr.replacementsCreated};let ds=[],ps=[],ms=0,fs=0;for(let gs in os){let ys;if(ae.attributes.createComponentOfType?.primitive){let vs=await ae.stateValues.numComponentsSpecified,Cs=os.length;ys=Math.floor(vs/Cs);let Ts=vs%Cs;gs<Ts&&ys++}let xs=await this.createReplacementForSource({component:ae,sourceNum:gs,components:Me,nComponents:Or,stateIdInfo:cs,allDoenetMLs:Li,numReplacementsSoFar:ms,numNonStringReplacementsSoFar:fs,compositeAttributesObj:as,componentInfoObjects:ts,numComponentsForSource:ys,publicCaseInsensitiveAliasSubstitutions:ns,copyInChildren:Number(gs)===0&&ae.attributes.copyInChildren?.primitive.value});is.push(...xs.diagnostics),Or=xs.nComponents,Hr.propVariablesCopiedBySource[gs]=xs.propVariablesCopiedByReplacement;let bs=xs.serializedReplacements;ds[gs]=bs.length,ps[gs]=bs.filter(vs=>typeof vs!="string").length,ms+=ds[gs],fs+=ps[gs],us.push(...bs)}Hr.numReplacementsBySource=ds,Hr.numNonStringReplacementsBySource=ps,Hr.sourceIndices=os.map(gs=>gs.componentIdx);let hs=await verifyReplacementsMatchSpecifiedType({component:ae,replacements:us,workspace:Hr,componentInfoObjects:ts,compositeAttributesObj:as,components:Me,nComponents:Or,stateIdInfo:cs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...hs.diagnostics),Or=hs.nComponents,us=hs.replacements,addAttributesToSingleReplacement(us,ae),Hr.replacementsCreated=cs.num,{replacements:us,diagnostics:is,nComponents:Or}}static async createReplacementForSource({component:ae,sourceNum:Me,components:Or,nComponents:Hr,stateIdInfo:Li,allDoenetMLs:ts,numReplacementsSoFar:rs,numNonStringReplacementsSoFar:ns,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss,copyInChildren:ls}){let us=[],cs=(await ae.stateValues.replacementSourceIdentities)[Me];if(typeof cs!="object")return ae.stateValues.effectivePropNameBySource[Me]?{serializedReplacements:[],diagnostics:us,nComponents:Hr}:{serializedReplacements:[cs],diagnostics:us,nComponents:Hr};const ds=Or[cs.componentIdx];if(await ds.stateValues.isInactiveCompositeReplacement)return{serializedReplacements:[],diagnostics:us,nComponents:Hr};let ps=(await ae.stateValues.effectivePropNameBySource)[Me],ms=await ae.stateValues.link;if(!ms||ps&&await ae.stateValues.removeEmptyArrayEntries){const hs=(await ae.stateValues.replacementSources)[Me];hs&&(cs=hs)}if(ps){let hs=await replacementFromProp({component:ae,components:Or,nComponents:Hr,stateIdInfo:Li,replacementSource:cs,propName:ps,allDoenetMLs:ts,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss});us.push(...hs.diagnostics),Hr=hs.nComponents;let gs=hs.serializedReplacements,ys=hs.propVariablesCopiedByReplacement;if(ls&&ae.serializedChildren.length>0)if(gs.length===0){let xs=as.componentTypeLowerCaseMapping[ae.attributes.createComponentOfType.primitive.value.toLowerCase()],bs=as.allComponentClasses[xs];const vs=convertUnresolvedAttributesForComponentType({attributes:ae.attributes,componentType:xs,componentInfoObjects:as,compositeAttributesObj:is,nComponents:Hr,stateIdInfo:Li}),Cs=vs.attributes;Hr=vs.nComponents;let Ts=deepClone(ae.serializedChildren);bs.includeBlankStringChildren||(Ts=Ts.filter(Ns=>typeof Ns!="string"||Ns.trim()!==""));let As=Cs;gs=[{type:"serialized",componentType:xs,componentIdx:Hr++,stateId:`${Li.prefix}${Li.num++}`,attributes:As,doenetAttributes:{},state:{},children:Ts}],ys=[[]]}else gs.length===1&&addChildrenFromComposite({replacements:gs,children:ae.serializedChildren,componentInfoObjects:as});return{serializedReplacements:gs,propVariablesCopiedByReplacement:ys,diagnostics:us,nComponents:Hr}}let fs;try{fs=[await ds.serialize({copyAll:!ms,componentSourceAttributesToIgnore:["labelIsName"],copyVariants:!ms,copyPrimaryEssentialIfShadow:!ms,copyEssentialStateIfShadow:!ms,errorIfEncounterComponent:[ae.componentIdx]})];let hs=createNewComponentIndices(fs,Hr,Li);fs=hs.components,Hr=hs.nComponents}catch(hs){if(hs.message?.startsWith(SERIALIZE_ENCOUNTERED_COMPONENT_PREFIX)){const ys=getSelfReferentialFallbackPropName({componentAncestors:ae.ancestors,componentInfoObjects:as,replacementSourceComponentType:ds.componentType});if(ys)try{let xs=await replacementFromProp({component:ae,components:Or,nComponents:Hr,stateIdInfo:Li,replacementSource:ds,propName:ys,allDoenetMLs:ts,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss});return us.push(...xs.diagnostics),Hr=xs.nComponents,{serializedReplacements:xs.serializedReplacements,propVariablesCopiedByReplacement:xs.propVariablesCopiedByReplacement,diagnostics:us,nComponents:Hr}}catch{}}console.error("we're calling this circular",hs);const gs=codedDiagnostic({type:"error",code:"doenet-e0005",args:{componentType:ae.attributes.createComponentOfType?.primitive?.value??"none"}});return fs=[{type:"serialized",componentType:"_error",componentIdx:Hr++,stateId:`${Li.prefix}${Li.num++}`,state:errorComponentState(gs.message,gs),attributes:{},doenetAttributes:{},children:[]}],us.push(gs),{serializedReplacements:fs,diagnostics:us,nComponents:Hr}}!ms&&fs[0].state&&(delete fs[0].state.fixed,delete fs[0].state.fixedPreliminary,delete fs[0].attributes.fixed),fs=postProcessCopy({serializedComponents:fs,componentIdx:ae.componentIdx,addShadowDependencies:ms,unlinkExternalCopies:!1});for(let hs of fs){if(typeof hs!="object")continue;hs.attributes||(hs.attributes={});const gs=convertUnresolvedAttributesForComponentType({attributes:ae.attributes,componentType:hs.componentType,componentInfoObjects:as,compositeAttributesObj:is,dontSkipAttributes:["asList"],nComponents:Hr,stateIdInfo:Li}),ys=gs.attributes;Hr=gs.nComponents,(ys.displayDigits||ys.displayDecimals)&&(delete hs.attributes.displayDigits,delete hs.attributes.displayDecimals),Object.assign(hs.attributes,ys)}return ls&&fs.length===1&&ae.serializedChildren.length>0&&addChildrenFromComposite({replacements:fs,children:ae.serializedChildren,componentInfoObjects:as}),{serializedReplacements:fs,diagnostics:us,nComponents:Hr}}static async calculateReplacementChanges({component:ae,nComponents:Me,componentChanges:Or,components:Hr,workspace:Li,componentInfoObjects:ts,resolveItem:rs,publicCaseInsensitiveAliasSubstitutions:ns}){let is=[];if(await ae.stateValues.link===!1)return{replacementChanges:[],diagnostics:is,nComponents:Me};let as=this.createAttributesObject(),os=await ae.stateValues.replacementSourceIdentities;if(!await ae.stateValues.extendedComponent||!os){let vs=[];const Cs={prefix:`${ae.stateId}|`,num:Li.replacementsCreated};if(ae.replacements.length>0){let Ns={changeType:"delete",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToDelete:ae.replacements.length};vs.push(Ns)}let Ts=Li.sourceIndices.length===0;Li.sourceIndices=[],Li.numReplacementsBySource=[],Li.numNonStringReplacementsBySource=[],Li.propVariablesCopiedBySource=[];let As=await verifyReplacementsMatchSpecifiedType({component:ae,replacementChanges:vs,workspace:Li,componentInfoObjects:ts,compositeAttributesObj:as,components:Hr,nComponents:Me,stateIdInfo:Cs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...As.diagnostics),Me=As.nComponents,Ts?{replacementChanges:[],diagnostics:is,nComponents:Me}:(addAttributesToSingleReplacementChange(ae,As.replacementChanges),Li.replacementsCreated=Cs.num,{replacementChanges:As.replacementChanges,diagnostics:is,nComponents:Me})}if(await ae.stateValues.targetInactive){let vs=[];const Cs={prefix:`${ae.stateId}|`,num:Li.replacementsCreated};let Ts=ae.replacements.length;if(Ts>0){if(ae.replacementsToWithhold!==Ts){let Ns={changeType:"changeReplacementsToWithhold",replacementsToWithhold:Ts};vs.push(Ns)}let As=await verifyReplacementsMatchSpecifiedType({component:ae,replacementChanges:vs,workspace:Li,componentInfoObjects:ts,compositeAttributesObj:as,components:Hr,nComponents:Me,stateIdInfo:Cs,publicCaseInsensitiveAliasSubstitutions:ns});is.push(...As.diagnostics),Me=As.nComponents,vs=As.replacementChanges}return addAttributesToSingleReplacementChange(ae,vs),Li.replacementsCreated=Cs.num,{replacementChanges:vs,diagnostics:is,nComponents:Me}}let ss=await rs({componentIdx:ae.componentIdx,type:"determineDependencies",stateVariable:"replacementSources",dependency:"__determine_dependencies",expandComposites:!1});if(!ss.success)throw Error(`Couldn't resolve determineDependencies of replacementSources of ${ae.componentIdx}`);let ls=await ae.stateValues.effectivePropNameBySource;for(let vs in os)if(ls[vs]&&(ss=await rs({componentIdx:ae.componentIdx,type:"recalculateDownstreamComponents",stateVariable:"replacementSources",dependency:"target"+vs,expandComposites:!1}),!ss.success))throw Error(`Couldn't resolve recalculateDownstreamComponents for target${vs} of replacementSources of ${ae.componentIdx}`);let us=[];const cs={prefix:`${ae.stateId}|`,num:Li.replacementsCreated};if(ae.replacementsToWithhold>0){let vs={changeType:"changeReplacementsToWithhold",replacementsToWithhold:0};us.push(vs)}let ds=0,ps=0,ms=[],fs=[],hs=[],gs=Math.max(os.length,Li.numReplacementsBySource.length),ys=!1;for(let vs=0;vs<gs;vs++){let Cs;if(ae.attributes.createComponentOfType?.primitive){let Os=await ae.stateValues.numComponentsSpecified,ws=os.length;Cs=Math.floor(Os/ws);let Ws=Os%ws;vs<Ws&&Cs++}let Ts=os[vs];if(!ys&&await Hr[Ts?.componentIdx]?.stateValues.isInactiveCompositeReplacement){let Os=!0;for(let ws=vs+1;ws<gs;ws++){const Ws=os[ws];if(!await Hr[Ws?.componentIdx]?.stateValues.isInactiveCompositeReplacement){Os=!1;break}}if(Os){let ws=Li.numReplacementsBySource.slice(vs).reduce((Ws,Rs)=>Ws+Rs,0);if(ws>0){let Ws={changeType:"changeReplacementsToWithhold",replacementsToWithhold:ws};us.push(Ws)}for(let Ws=vs;Ws<gs;Ws++)ms[Ws]=Li.numReplacementsBySource[Ws],fs[Ws]=Li.numNonStringReplacementsBySource[Ws],hs[Ws]=Li.propVariablesCopiedBySource[Ws];break}else Ts=void 0}if(Ts===void 0){if(Li.numReplacementsBySource[vs]>0&&!ys){let Os=Li.numReplacementsBySource.slice(vs).reduce((ws,Ws)=>ws+Ws,0);if(Os>0){let ws={changeType:"delete",changeTopLevelReplacements:!0,firstReplacementInd:ds,numberReplacementsToDelete:Os};us.push(ws)}ys=!0,Li.numReplacementsBySource.slice(vs).forEach((ws,Ws)=>Li.numReplacementsBySource[Ws]=0),Li.numNonStringReplacementsBySource.slice(vs).forEach((ws,Ws)=>Li.numNonStringReplacementsBySource[Ws]=0)}ms[vs]=0,fs[vs]=0,hs.push([]);continue}let As=Li.sourceIndices[vs],Ns=As===void 0||Ts.componentIdx!==As||ys;if(!Ns)for(let Os=0;Os<Li.numReplacementsBySource[vs];Os++){let ws=ae.replacements[ds+Os];if(ws){if(!ls[vs]&&ws.shadows?.componentIdx!==os[vs].componentIdx){Ns=!0;break}}else{Ns=!0;break}}if(Ns){let Os=0;vs in Li.numReplacementsBySource&&(Os=Li.numReplacementsBySource[vs]);let ws=Os;ys&&(ws=0);let Ws=await this.recreateReplacements({component:ae,sourceNum:vs,numReplacementsSoFar:ds,numNonStringReplacementsSoFar:ps,numReplacementsToDelete:ws,components:Hr,nComponents:Me,stateIdInfo:cs,compositeAttributesObj:as,componentInfoObjects:ts,numComponentsForSource:Cs,publicCaseInsensitiveAliasSubstitutions:ns});is.push(...Ws.diagnostics),Me=Ws.nComponents,ds+=Ws.numReplacements,ps+=Ws.numNonStringReplacements,ms[vs]=Ws.numReplacements,fs[vs]=Ws.numNonStringReplacements,hs[vs]=Ws.propVariablesCopiedByReplacement;let Rs=Ws.replacementInstruction;if(!ys&&Ws.numReplacements!==Os){let zs=Li.numReplacementsBySource.slice(vs).reduce((qs,Ms)=>qs+Ms,0);Rs.numberReplacementsToReplace=zs,ys=!0,Li.numReplacementsBySource.slice(vs).forEach((qs,Ms)=>Li.numReplacementsBySource[Ms]=0),Li.numNonStringReplacementsBySource.slice(vs).forEach((qs,Ms)=>Li.numNonStringReplacementsBySource[Ms]=0)}Rs&&us.push(Rs);continue}if(!ls[vs]&&Li.numReplacementsBySource[vs]>0){ds+=Li.numReplacementsBySource[vs],ps+=Li.numNonStringReplacementsBySource[vs],ms[vs]=Li.numReplacementsBySource[vs],fs[vs]=Li.numNonStringReplacementsBySource[vs];continue}const _s={prefix:`${ae.stateId}|`,num:cs.num};let Es=await this.createReplacementForSource({component:ae,sourceNum:vs,components:Hr,nComponents:Me,stateIdInfo:_s,numReplacementsSoFar:ds,numNonStringReplacementsSoFar:ps,compositeAttributesObj:as,componentInfoObjects:ts,numComponentsForSource:Cs,publicCaseInsensitiveAliasSubstitutions:ns,copyInChildren:Number(vs)===0&&ae.attributes.copyInChildren?.primitive.value});is.push(...Es.diagnostics);const $s=Es.nComponents;let Is=Es.propVariablesCopiedByReplacement,Ds=Es.serializedReplacements,Vs=Ds.length,Ps=Li.numReplacementsBySource[vs];if(Vs!==Ps){let Os=Li.numReplacementsBySource.slice(vs).reduce((Ws,Rs)=>Ws+Rs,0),ws={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:ds,numberReplacementsToReplace:Os,serializedReplacements:Ds};us.push(ws),ys=!0,Me=$s,cs.num=_s.num,Li.numReplacementsBySource.slice(vs).forEach((Ws,Rs)=>Li.numReplacementsBySource[Rs]=0),Li.numNonStringReplacementsBySource.slice(vs).forEach((Ws,Rs)=>Li.numNonStringReplacementsBySource[Rs]=0)}else for(let Os=0;Os<Vs;Os++){let ws=Is[Os].length!==Li.propVariablesCopiedBySource[vs][Os].length,Ws=!ws;if(ws||(Li.propVariablesCopiedBySource[vs][Os].some((Rs,zs)=>Rs!==Is[Os][zs])?(Ws=!1,ws=!0):ae.replacements[ds+Os].componentType!==Ds[Os].componentType&&(ws=!0)),Os==0&&ws&&Ws&&await ae.stateValues.numComponentsSpecified===1&&Vs===1&&!(ae.replacementsToWithhold>0)&&Li.sourceIndices.length===1&&(ws=!1),ws){Me=$s,cs.num=_s.num;let Rs={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:ds+Os,numberReplacementsToReplace:1,serializedReplacements:[Ds[Os]]};us.push(Rs)}Ds[Os]}let Gs=Ds.filter(Os=>typeof Os!="string").length;ds+=Vs,ps+=Gs,ms[vs]=Vs,fs[vs]=Gs,hs[vs]=Is}let xs=Li.sourceIndices.length===0;Li.numReplacementsBySource=ms,Li.numNonStringReplacementsBySource=fs,Li.sourceIndices=os.map(vs=>vs.componentIdx),Li.propVariablesCopiedBySource=hs;let bs=await verifyReplacementsMatchSpecifiedType({component:ae,replacementChanges:us,workspace:Li,componentInfoObjects:ts,compositeAttributesObj:as,components:Hr,nComponents:Me,stateIdInfo:cs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...bs.diagnostics),Me=bs.nComponents,us=bs.replacementChanges,xs&&Li.sourceIndices.length===0?{replacementChanges:[],diagnostics:is,nComponents:Me}:(addAttributesToSingleReplacementChange(ae,us),Li.replacementsCreated=cs.num,{replacementChanges:us,diagnostics:is,nComponents:Me})}static async recreateReplacements({component:ae,sourceNum:Me,numReplacementsSoFar:Or,numNonStringReplacementsSoFar:Hr,numReplacementsToDelete:Li,components:ts,nComponents:rs,stateIdInfo:ns,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss}){let ls=[],us=await this.createReplacementForSource({component:ae,sourceNum:Me,numReplacementsSoFar:Or,numNonStringReplacementsSoFar:Hr,components:ts,nComponents:rs,stateIdInfo:ns,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss,copyInChildren:Number(Me)===0&&ae.attributes.copyInChildren?.primitive.value});ls.push(...us.diagnostics),rs=us.nComponents;let cs=us.propVariablesCopiedByReplacement,ds=us.serializedReplacements;if(ds.length>0||Li>0){let ps={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:Or,numberReplacementsToReplace:Li,serializedReplacements:ds};return{numReplacements:ds.length,numNonStringReplacements:ds.filter(ms=>typeof ms!="string").length,propVariablesCopiedByReplacement:cs,replacementInstruction:ps,diagnostics:ls,nComponents:rs}}else return{numReplacements:0,numNonStringReplacements:0,propVariablesCopiedByReplacement:cs,replacementInstruction:null,diagnostics:ls,nComponents:rs}}}async function replacementFromProp({component:Br,components:ae,nComponents:Me,stateIdInfo:Or,replacementSource:Hr,propName:Li,allDoenetMLs:ts,compositeAttributesObj:rs,componentInfoObjects:ns,numComponentsForSource:is,publicCaseInsensitiveAliasSubstitutions:as}){let os=[],ss=[],ls=[],us=-1,cs,ds;if(Hr&&(cs=ae[Hr.componentIdx],ds=as({stateVariables:[Li],componentClass:cs.constructor})[0]),ds===void 0||ds.slice(0,12)==="__not_public"){if(Li==="__no_target_found"){const hs=await Br.stateValues.unresolvedPath,gs=hs[0].position?.start.offset,ys=hs[hs.length-1].position?.end.offset;let xs="";if(gs!=null&&ys!=null){const bs=hs[0].sourceDoc??0;xs=ts?.[bs]?.substring(gs,ys)}os.push(codedDiagnostic({type:"info",code:"doenet-i0018",args:{property:xs,component:Hr.componentType}}))}else Li!=="__prop_name_not_found"&&os.push(codedDiagnostic({type:"info",code:"doenet-i0018",args:{property:Li,component:Hr.componentType}}));return{serializedReplacements:[],propVariablesCopiedByReplacement:[],diagnostics:os,nComponents:Me}}let ps=cs.state[ds],ms=await ps.value,fs=await Br.stateValues.link;if(ps.isArray||ps.isArrayEntry){let hs,gs,ys,xs;if(ps.isArray?(hs=ps,ys=await ps.arraySize,gs=ps.getAllArrayKeys(ys,!1)):(hs=cs.state[ps.arrayStateVariable],gs=await ps.unflattenedArrayKeys,xs=await ps.arrayKeys),hs.shadowingInstructions?.hasVariableComponentType&&(await Br.stateValues.replacementSources,!hs.shadowingInstructions.createComponentOfType))return{serializedReplacements:[],propVariablesCopiedByReplacement:[],diagnostics:os,nComponents:Me};let bs=ps.wrappingComponents,vs=bs.length,Cs=is;if(ps.isArray)ys.some(Ts=>Ts===0)?Cs=0:Cs=ys.slice(0,ys.length-vs).reduce((Ts,As)=>Ts*As,1);else if(xs.length===0)Cs=0;else if(vs===0)Cs=xs.length;else if(vs>=ps.numDimensions)Cs=1;else if(vs===ps.numDimensions-1)Cs=gs.length;else{let Ts=ps.numDimensions-vs-1;Cs=flattenLevels(gs,Ts).length}if(vs===0){let Ts=flattenDeep(gs);for(let As=0;As<Cs;As++){let Ns=Ts[As];if(await Br.stateValues.removeEmptyArrayEntries){if(!Ns)continue;let $s=hs.keyToIndex(Ns);Array.isArray($s)||($s=[$s]);let Is=await hs.value;for(let Ds of $s)Is=Is[Ds];if(Is==null)continue}us++;let _s=ls[us]=[],Es=hs.shadowingInstructions.createComponentOfType;if(Array.isArray(Es)&&(Es[hs.keyToIndex(Ns)]?Es=Es[hs.keyToIndex(Ns)]:Es=Es[0]),Ns){let $s=hs.arrayVarNameFromArrayKey(Ns);_s.push($s);const Is=convertUnresolvedAttributesForComponentType({attributes:Br.attributes,componentType:Es,componentInfoObjects:ns,compositeAttributesObj:rs,nComponents:Me,stateIdInfo:Or}),Ds=Is.attributes;Me=Is.nComponents;let Vs;if(hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){Vs={};for(let Gs in hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let Os=hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables[Gs].stateVariableToShadow,ws=cs.state[Os];ws.isArray&&(Os=ws.arrayVarNameFromArrayKey(Ns)),Vs[Gs]={stateVariableToShadow:Os}}}let Ps;if(hs.shadowingInstructions.addStateVariablesShadowingStateVariables){Ps={};for(let Gs in hs.shadowingInstructions.addStateVariablesShadowingStateVariables){let Os=hs.shadowingInstructions.addStateVariablesShadowingStateVariables[Gs].stateVariableToShadow,ws=cs.state[Os];ws.isArray&&(Os=ws.arrayVarNameFromArrayKey(Ns)),Ps[Gs]={stateVariableToShadow:Os}}}if(fs){let Gs={};if(Vs){let ws=ns.allComponentClasses[Es].createAttributesObject();for(let Ws in Vs){let Rs=Vs[Ws].stateVariableToShadow,zs=ws[Ws]?.createComponentOfType;if(zs){let qs={type:"serialized",componentType:zs,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Rs}]}};Gs[Ws]={component:qs}}}}Object.assign(Gs,Ds),ss.push({type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:Gs,doenetAttributes:{},children:[],state:{},downstreamDependencies:{[Hr.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:$s,additionalStateVariableShadowing:Ps}]}})}else{let Gs={};if(Vs){let Ms=ns.allComponentClasses[Es].createAttributesObject(),Fs={};for(let Xs in Vs)if(Ms[Xs]?.createComponentOfType){let Js=Vs[Xs].stateVariableToShadow,Zs=cs.state[Js],ul=await Zs.value;Zs.isArray&&(ul=ul[Zs.keyToIndex[Ns]]),cs.state[Js].usedDefault||(Fs[Xs]=ul)}const Ls=convertAttributeValuesForComponentType({attributeValues:Fs,componentType:Es,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or}),js=Ls.attributes;if(Me=Ls.nComponents,ps.shadowingInstructions.attributesToShadow)for(let Xs of ps.shadowingInstructions.attributesToShadow)if(cs.attributes[Xs]?.component){const Js=await cs.attributes[Xs].component.serialize({copyAll:!0,copyVariants:!0});let Zs=createNewComponentIndices([Js],Me,Or);Me=Zs.nComponents,js[Xs]={component:Zs.components[0]}}else cs.attributes[Xs]?.primitive!==void 0&&(js[Xs]={primitive:JSON.parse(JSON.stringify(cs.attributes[Xs].primitive))});Object.assign(Gs,js)}Object.assign(Gs,Ds);let Os="value",ws=ns.allComponentClasses[Es];ws.primaryEssentialStateVariable?Os=ws.primaryEssentialStateVariable:ws.primaryStateVariableForDefinition&&(Os=ws.primaryStateVariableForDefinition);let Ws=hs.keyToIndex(Ns);Array.isArray(Ws)||(Ws=[Ws]);let Rs=await hs.value;for(let qs of Ws)Rs=Rs[qs];let zs={type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:Gs,doenetAttributes:{},state:{[Os]:Rs},children:[]};ss.push(zs)}}else ss.push({type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},children:[],state:{}})}}else{let Ts=async function(_s,Es,$s=!1){let Is=[],Ds=[];if(Es>1)for(let Ps of _s){let Gs=await Ts(Ps,Es-1);Is.push(...Gs.pieces),Ds.push(...Gs.propVariablesCopiedByPiece)}else for(let Ps of _s){let Gs=hs.arrayVarNameFromArrayKey(Ps),Os=[Gs],ws=hs.shadowingInstructions.createComponentOfType;Array.isArray(ws)&&(ws=ws[hs.keyToIndex(Ps)]);let Ws;if(hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){Ws={};let zs=hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables;for(let qs in zs)if(!zs[qs].addToOuterIfWrappedArray){let Ms=zs[qs].stateVariableToShadow,Fs=cs.state[Ms];Fs.isArray&&(Ms=Fs.arrayVarNameFromArrayKey(Ps)),Ws[qs]={stateVariableToShadow:Ms}}}let Rs;if(hs.shadowingInstructions.addStateVariablesShadowingStateVariables){Rs={};for(let zs in hs.shadowingInstructions.addStateVariablesShadowingStateVariables){let qs=hs.shadowingInstructions.addStateVariablesShadowingStateVariables[zs].stateVariableToShadow,Ms=cs.state[qs];Ms.isArray&&(qs=Ms.arrayVarNameFromArrayKey(Ps)),Rs[zs]={stateVariableToShadow:qs}}}if(fs){let zs={};if(Ws){let Ms=ns.allComponentClasses[ws].createAttributesObject();for(let Fs in Ws){let Ls=Ws[Fs].stateVariableToShadow,js=Ms[Fs]?.createComponentOfType;if(js){let Xs={type:"serialized",componentType:js,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Ls}]}};zs[Fs]={component:Xs}}}}Is.push({type:"serialized",componentType:ws,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:zs,doenetAttributes:{},children:[],state:{},downstreamDependencies:{[Hr.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:Gs,additionalStateVariableShadowing:Rs}]}})}else{let zs={};if(Ws){let Js=ns.allComponentClasses[ws].createAttributesObject(),Zs={};for(let nl in Ws)if(Js[nl]?.createComponentOfType){let gl=Ws[nl].stateVariableToShadow,ml=cs.state[gl],ks=await ml.value;ml.isArray&&(ks=ks[ml.keyToIndex[Ps]]),cs.state[gl].usedDefault||(Zs[nl]=ks)}const ul=convertAttributeValuesForComponentType({attributeValues:Zs,componentType:ws,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or}),ll=ul.attributes;if(Me=ul.nComponents,ps.shadowingInstructions.attributesToShadow)for(let nl of ps.shadowingInstructions.attributesToShadow)if(cs.attributes[nl]?.component){let gl=await cs.attributes[nl].component.serialize({copyAll:!0,copyVariants:!0}),ml=createNewComponentIndices([gl],Me,Or);Me=ml.nComponents,ll[nl]={component:ml.components[0]}}else cs.attributes[nl]?.primitive!==void 0&&(ll[nl]={primitive:JSON.parse(JSON.stringify(cs.attributes[nl].primitive))});Object.assign(zs,ll)}let qs="value",Ms=ns.allComponentClasses[ws];Ms.primaryEssentialStateVariable?qs=Ms.primaryEssentialStateVariable:Ms.primaryStateVariableForDefinition&&(qs=Ms.primaryStateVariableForDefinition);let Fs=hs.keyToIndex(Ps);Array.isArray(Fs)||(Fs=[Fs]);let Ls=await hs.value;for(let Xs of Fs)Ls=Ls[Xs];let js={type:"serialized",componentType:ws,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:zs,doenetAttributes:{},children:[],state:{[qs]:Ls}};Is.push(js)}Ds.push(Os)}let Vs=bs[Es-1];if(Is.length>0&&Vs&&Vs.length>0){for(let Ps=Vs.length-1;Ps>=0;Ps--){let Gs=typeof Vs[Ps]=="object"?Vs[Ps].componentType:Vs[Ps],Os=[],ws={};for(let Ws of Is)if(Ws.isAttributeNamed){let Rs=Ws.isAttributeNamed;delete Ws.isAttributeNamed,ws[Rs]={component:Ws}}else Os.push(Ws);Is=[{type:"serialized",componentType:Gs,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,children:Os,attributes:ws,doenetAttributes:{},state:{},skipSugar:!0}],typeof Vs[Ps]=="object"&&Vs[Ps].isAttributeNamed&&(Is[0].isAttributeNamed=Vs[Ps].isAttributeNamed)}Ds=[flattenDeep(Ds)]}if($s&&hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let Ps={},Gs=hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables;for(let Os in Gs)if(Gs[Os].addToOuterIfWrappedArray){let ws=Gs[Os].stateVariableToShadow;Ps[Os]={stateVariableToShadow:ws}}if(Object.keys(Ps).length>0)for(let Os of Is){let ws=Os.attributes;ws||(ws=Os.attributes={});let Rs=ns.allComponentClasses[Os.componentType].createAttributesObject();if(fs)for(let zs in Ps){let qs=Ps[zs].stateVariableToShadow,Ms=Rs[zs]?.createComponentOfType;if(Ms){let Fs={type:"serialized",componentType:Ms,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:qs}]}};ws[zs]={component:Fs}}}else{let zs={};for(let qs in Ps)if(Rs[qs]?.createComponentOfType){let Ms=Ps[qs].stateVariableToShadow,Ls=await cs.state[Ms].value;cs.state[Ms].usedDefault||(zs[qs]=Ls)}if(Object.keys(zs).length>0){const qs=convertAttributeValuesForComponentType({attributeValues:zs,componentType:Os.componentType,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or});zs=qs.attributes,Me=qs.nComponents,Object.assign(ws,zs)}}}}return{pieces:Is,propVariablesCopiedByPiece:Ds}},As=await Ts(gs,ps.numDimensions,!0),Ns=As.pieces;ls=As.propVariablesCopiedByPiece;for(let _s of Ns){if(typeof _s!="object")continue;_s.attributes||(_s.attributes={});const Es=convertUnresolvedAttributesForComponentType({attributes:Br.attributes,componentType:_s.componentType,componentInfoObjects:ns,compositeAttributesObj:rs,nComponents:Me,stateIdInfo:Or}),$s=Es.attributes;Me=Es.nComponents,Object.assign(_s.attributes,$s),fs&&(_s.downstreamDependencies={[Hr.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:ds,ignorePrimaryStateVariable:!0}]})}if(us+=Ns.length,ss.push(...Ns),Ns.length<Cs)for(let _s=Ns.length;_s<Cs;_s++){us++,ls[us]=[];let Es,$s=bs[0],Is;$s&&$s.length>0?typeof $s[0]=="object"?(Es=$s[0].componentType,Is=Object.assign({},$s[0].doenetAttributes)):Es=$s[0]:(Es=hs.shadowingInstructions.createComponentOfType,Array.isArray(Es)&&(ps.isArrayEntry?Es=Es[hs.keyToIndex(xs[_s])]:Es=Es[_s]));let Ds={type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[]};Is&&(Ds.doenetAttributes=Is),ss.push(Ds)}else if(Ns>Cs)throw Error(`Something went wrong when creating replacements for ${Br.componentIdx} as we ended up with too many replacements`)}}else{if(ps.shadowingInstructions?.hasVariableComponentType&&await ps.value,!ps.shadowingInstructions?.createComponentOfType)return{serializedReplacements:[],propVariablesCopiedByReplacement:[],diagnostics:os,nComponents:Me};if(us++,(ls[us]=[]).push(ds),ps.shadowingInstructions.createComponentOfType==="string")ss.push(await ps.value);else{const gs=convertUnresolvedAttributesForComponentType({attributes:Br.attributes,componentType:ps.shadowingInstructions.createComponentOfType,componentInfoObjects:ns,compositeAttributesObj:rs,nComponents:Me,stateIdInfo:Or}),ys=gs.attributes;if(Me=gs.nComponents,fs){let xs={};if(ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let vs=ns.allComponentClasses[ps.shadowingInstructions.createComponentOfType].createAttributesObject();for(let Cs in ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let Ts=ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables[Cs].stateVariableToShadow,As=vs[Cs]?.createComponentOfType;if(As){let Ns={type:"serialized",componentType:As,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Ts}]}};xs[Cs]={component:Ns}}}}Object.assign(xs,ys),ss.push({type:"serialized",componentType:ps.shadowingInstructions.createComponentOfType,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:xs,doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:ds,additionalStateVariableShadowing:ps.shadowingInstructions.addStateVariablesShadowingStateVariables}]}})}else{let xs={};if(ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let As=ns.allComponentClasses[ps.shadowingInstructions.createComponentOfType].createAttributesObject(),Ns={};for(let $s in ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables)if(As[$s]?.createComponentOfType&&$s!=="fixed"){let Is=ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables[$s].stateVariableToShadow,Ds=await cs.state[Is].value;cs.state[Is].usedDefault||(Ns[$s]={type:"unresolved",name:$s,children:[Ds.toString()]})}const _s=convertUnresolvedAttributesForComponentType({attributes:Ns,componentType:ps.shadowingInstructions.createComponentOfType,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or}),Es=_s.attributes;if(Me=_s.nComponents,ps.shadowingInstructions.attributesToShadow)for(let $s of ps.shadowingInstructions.attributesToShadow)if(cs.attributes[$s]?.component){let Is=await cs.attributes[$s].component.serialize({copyAll:!0,copyVariants:!0}),Ds=createNewComponentIndices([Is],Me,Or);Me=Ds.nComponents,Es[$s]={type:"component",name:$s,component:Ds.components[0]}}else cs.attributes[$s]?.primitive!==void 0&&(Es[$s]={type:"primitive",name:$s,primitive:JSON.parse(JSON.stringify(cs.attributes[$s].primitive))});Object.assign(xs,Es)}Object.assign(xs,ys);let bs="value",vs=ns.allComponentClasses[ps.shadowingInstructions.createComponentOfType];vs.primaryEssentialStateVariable?bs=vs.primaryEssentialStateVariable:vs.primaryStateVariableForDefinition&&(bs=vs.primaryStateVariableForDefinition);let Cs={type:"serialized",componentType:ps.shadowingInstructions.createComponentOfType,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:xs,doenetAttributes:{},children:[],state:{[bs]:ms}};ss.push(Cs)}}}if(await Br.stateValues.implicitProp)for(let hs of ss)hs.doenetAttributes||(hs.doenetAttributes={}),hs.doenetAttributes.fromImplicitProp=!0,hs.downstreamDependencies?.[cs.componentIdx]?.[0]&&(hs.downstreamDependencies[cs.componentIdx][0].fromImplicitProp=!0);return{serializedReplacements:ss,propVariablesCopiedByReplacement:ls,diagnostics:os,nComponents:Me}}function addChildrenFromComposite({replacements:Br,children:ae,componentInfoObjects:Me}){let Or=Br[0];Or.children||(Or.children=[]);let Hr=deepClone(ae);Me.allComponentClasses[Or.componentType].includeBlankStringChildren||(Hr=Hr.filter(ts=>typeof ts!="string"||ts.trim()!=="")),Or.children.push(...Hr)}class SegmentConstraintComponent extends BaseComponent{static componentType="_segmentConstraint";static rendererType=void 0;static inSchemaOnlyInheritAs=["_segmentConstraint"]}class VariableNameList extends MathList{static componentType="_variableNameList";static stateVariableToBeShadowed="variables";static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.variables={description:"The list of variable names.",public:!0,shadowingInstructions:{createComponentOfType:"_variableName"},isArray:!0,entryPrefixes:["var"],additionalStateVariablesDefined:["validVariables"],returnArraySizeDependencies:()=>({numComponents:{dependencyType:"stateVariable",variableName:"numComponents"}}),returnArraySize({dependencyValues:Me}){return[Me.numComponents]},returnArrayDependenciesByKey({arrayKeys:Me}){let Or={};for(let Hr of Me)Or[Hr]={math:{dependencyType:"stateVariable",variableName:"math"+(Number(Hr)+1)}};return{dependenciesByKey:Or}},arrayDefinitionByKey({dependencyValuesByKey:Me,arrayKeys:Or}){let Hr={},Li={},ts=[];for(let rs of Or){let ns=Me[rs].math,is=isValidVariable(ns);is||(ts.push(codedDiagnostic({type:"warning",code:"doenet-w0017",args:{value:ns.toString()}})),is=!1),Hr[rs]=ns,Li[rs]=is}return{setValue:{variables:Hr,validVariables:Li},sendDiagnostics:ts}}},ae}}class Variable extends MathComponent{static componentType="_variableName";static rendererType="math";static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return renameStateVariable({stateVariableDefinitions:ae,oldName:"value",newName:"valuePreValidate"}),ae.valuePreValidate.essentialVarName="value",ae.value={description:"The variable as a math expression.",public:!0,shadowingInstructions:{createComponentOfType:"_variableName"},additionalStateVariablesDefined:["validVariable"],returnDependencies:()=>({valuePreValidate:{dependencyType:"stateVariable",variableName:"valuePreValidate"}}),definition({dependencyValues:Me}){let Or=[],Hr=isValidVariable(Me.valuePreValidate);return Hr||Or.push(codedDiagnostic({type:"warning",code:"doenet-w0017",args:{value:Me.valuePreValidate.toString()}})),{setValue:{value:Me.valuePreValidate,validVariable:Hr},sendDiagnostics:Or}},inverseDefinition({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setDependency:"valuePreValidate",desiredValue:Me.value}]}}},ae}}class ListOfNumberLists extends InlineComponent{static componentType="_listOfNumberLists";static includeBlankStringChildren=!0;static removeBlankStringChildrenPostSugar=!0;static additionalSchemaChildren=["math","string"];static returnSugarInstructions(){let ae=[],Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){let ts=breakEmbeddedStringsIntoParensPieces({componentList:Or,removeParens:!0});return ts.success!==!0?{success:!1}:{success:!0,newChildren:ts.pieces.map(rs=>({type:"serialized",componentType:"numberList",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:rs,attributes:{},doenetAttributes:{},state:{}})),nComponents:Hr}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"lists",componentTypes:["numberList"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.value,ae.numLists={returnDependencies:()=>({listChildren:{dependencyType:"child",childGroups:["lists"]}}),definition({dependencyValues:Me}){return{setValue:{numLists:Me.listChildren.length}}}},ae.lists={isArray:!0,entryPrefixes:["list"],returnArraySizeDependencies:()=>({numLists:{dependencyType:"stateVariable",variableName:"numLists"}}),returnArraySize({dependencyValues:Me}){return[Me.numLists]},returnArrayDependenciesByKey({arrayKeys:Me}){let Or={};for(let Hr of Me)Or[Hr]={listChildren:{dependencyType:"child",childGroups:["lists"],variableNames:["values"],childIndices:[Hr]}};return{dependenciesByKey:Or}},arrayDefinitionByKey({dependencyValuesByKey:Me,arrayKeys:Or}){let Hr={};for(let Li of Or)if(Me[Li].listChildren&&Me[Li].listChildren.length===1){let ts=Me[Li].listChildren[0];Hr[Li]=ts.stateValues.values}return{setValue:{lists:Hr}}}},ae}}class DirectionComponent extends BaseComponent{static componentType="_directionComponent";static rendererType=void 0;static primaryStateVariableForDefinition="directionShadow";static additionalSchemaChildren=["math","string"];static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnNumberDisplayAttributes()),ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){return Or.length===0?{success:!1}:Or.length>1||typeof Or[0]=="string"?{success:!0,newChildren:[{type:"serialized",componentType:"math",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}],nComponents:Hr}:{success:!1}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae.push({group:"directions",componentTypes:["_directionComponent"]}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.directionShadow={defaultValue:Context.fromAst(["vector",1,0]),hasEssential:!0,essentialVarName:"direction",set:convertValueToMathExpression,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{directionShadow:!0}}),inverseDefinition:function({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setEssentialValue:"directionShadow",value:convertValueToMathExpression(Me.directionShadow)}]}}},ae.unnormalizedDirection={returnDependencies:()=>({directionChild:{dependencyType:"child",childGroups:["directions"],variableNames:["unnormalizedDirection"]},directionShadow:{dependencyType:"stateVariable",variableName:"directionShadow"}}),definition({dependencyValues:Me}){let Or;return Me.directionChild.length>0?Or=Me.directionChild[0].stateValues.unnormalizedDirection:Or=Me.directionShadow,Or=Or.tuples_to_vectors().expand().simplify(),{setValue:{unnormalizedDirection:Or}}},inverseDefinition({desiredStateVariableValues:Me,dependencyValues:Or}){let Hr;return Or.directionChild.length>0?Hr=[{setDependency:"directionChild",desiredValue:Me.unnormalizedDirection,childIndex:0,variableIndex:0}]:Hr=[{setDependency:"directionShadow",desiredValue:Me.unnormalizedDirection}],{success:!0,instructions:Hr}}},ae.numDimensions={returnDependencies:()=>({unnormalizedDirection:{dependencyType:"stateVariable",variableName:"unnormalizedDirection"}}),definition({dependencyValues:Me}){let Or=Me.unnormalizedDirection.tree,Hr;return Array.isArray(Or)&&vectorOperators.includes(Or[0])?Hr=Or.length-1:Hr=1,{setValue:{numDimensions:Hr}}}},ae.direction={description:"The normalized direction as a unit vector.",public:!0,shadowingInstructions:{createComponentOfType:"math",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing(),returnWrappingComponents(Me){return Me==="x"?[]:[["vector",{componentType:"mathList",isAttributeNamed:"xs"}]]}},isArray:!0,entryPrefixes:["x"],hasEssential:!0,essentialVarName:"direction2",set:convertValueToMathExpression,returnArraySizeDependencies:()=>({numDimensions:{dependencyType:"stateVariable",variableName:"numDimensions"}}),returnArraySize({dependencyValues:Me}){return[Me.numDimensions]},returnArrayDependenciesByKey(){return{globalDependencies:{unnormalizedDirection:{dependencyType:"stateVariable",variableName:"unnormalizedDirection"}}}},arrayDefinitionByKey:function({globalDependencyValues:Me,arraySize:Or}){let Hr={},Li=Me.unnormalizedDirection.tree;if(Array.isArray(Li)&&vectorOperators.includes(Li[0])){let ts=[],rs=Or[0],ns=0,is=!0;for(let as=0;as<rs;as++){let os=Me.unnormalizedDirection.get_component(as).evaluate_to_constant();if(Number.isFinite(os))ts.push(os),ns+=os*os;else{is=!1;break}}if(is){let as=Math.sqrt(ns);for(let os=0;os<rs;os++)Hr[os.toString()]=Context.fromAst(ts[os]/as)}else for(let as=0;as<rs;as++)Hr[as.toString()]=Context.fromAst("_")}else Hr[0]=Context.fromAst(1);return{setValue:{direction:Hr}}},inverseArrayDefinitionByKey({desiredStateVariableValues:Me,globalDependencyValues:Or,arraySize:Hr}){let Li=[];if(Hr[0]>1){let ts=0;for(let ns=0;ns<Hr[0];ns++){let is=Or.unnormalizedDirection.get_component(ns).evaluate_to_constant();ts+=is*is}Number.isFinite(ts)?ts=Math.sqrt(ts):ts=1;let rs=["vector"];for(let ns in Me.direction)rs[Number(ns)+1]=Me.direction[ns].tree*ts;rs.length=Hr[0]+1,Li.push({setDependency:"unnormalizedDirection",desiredValue:Context.fromAst(rs)})}return{success:!0,instructions:Li}}},ae}}class ErrorComponent extends BlockComponent{static componentType="_error";static renderChildren=!0;static createAttributesObject(){let ae=super.createAttributesObject();return ae.message={createComponentOfType:"text",createStateVariable:"message",defaultValue:"",public:!0,forRenderer:!0,description:"The error message describing what went wrong."},ae}static returnChildGroups(){return[{group:"errors",componentTypes:["_error"]},{group:"any",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.hidden={returnDependencies:()=>({}),definition:()=>({setValue:{hidden:!1}})},ae.code={forRenderer:!0,hasEssential:!0,defaultValue:null,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{code:!0}})},ae.args={forRenderer:!0,hasEssential:!0,defaultValue:null,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{args:!0}})},ae.rangeMessage={description:"A message describing where in the source document the error was found.",forRenderer:!0,public:!0,shadowingInstructions:{createComponentOfType:"text"},additionalStateVariablesDefined:[{variableName:"rangeArgs",forRenderer:!0}],returnDependencies:()=>({position:{dependencyType:"position"}}),definition({dependencyValues:Me}){let Or=Me.position;return Or?.start.line===void 0?{setValue:{rangeMessage:"",rangeArgs:null}}:{setValue:{rangeMessage:"Found on "+printDoenetMLrange(Or)+".",rangeArgs:{span:Or.start.line===Or.end.line?"line":"lines",startLine:String(Or.start.line),endLine:String(Or.end.line)}}}}},ae.showMessage={forRenderer:!0,returnDependencies:()=>({childErrors:{dependencyType:"child",childGroups:["errors"],variableNames:["message"]},message:{dependencyType:"stateVariable",variableName:"message"}}),definition({dependencyValues:Me}){return{setValue:{showMessage:!Me.childErrors.some(Hr=>Hr.stateValues.message===Me.message)}}}},ae}}class Comment extends BaseComponent{static componentType="_comment";static rendererType=void 0;static returnChildGroups(){return[{group:"any",componentTypes:["_base"]}]}}const componentTypeArray=[...Object.values(Aliases),...Object.values(MMeMen),...Object.values(MdMdnMrow),...Object.values(BooleanOperators),...Object.values(BooleanOperatorsOfMath),...Object.values(MathOperators),...Object.values(MathListOperators),...Object.values(ListIndexOperators),...Object.values(CountOperators),BarChart,...Object.values(FunctionOperators),...Object.values(TextOperatorsOfMath),...Object.values(Extrema$1),...Object.values(ParagraphMarkup),...Object.values(SingleCharacterComponents),...Object.values(Sectioning),...Object.values(Lists),...Object.values(DynamicalSystems),...Object.values(Chemistry),...Object.values(FeedbackDefinitions$1),...Object.values(StyleDefinitions$1),...Object.values(StylePalette$1),...Object.values(SideBySide$1),...Object.values(ComponentWithSelectableType$1),...Object.values(Indexing),...Object.values(Divisions),...Object.values(Verbatim),...Object.values(Paginator$1),...Object.values(MatrixInput$1),...Object.values(FractionInput$1),...Object.values(Solution$1),Document,Text,TextList$1,TextList2,P$2,BooleanComponent,BooleanList,MathComponent,MathList,TupleList,NumberList,Copy,Collect,Ref,Point,Coords,Line,LineSegment,Ray,Polyline,Polygon,Triangle,Rectangle,RegularPolygon,Circle,Parabola,Curve,BezierControls,ControlVectors,Vector,Angle,Answer,Award,When,MathInput,Textinput,BooleanInput,Choiceinput,Choice,NumberComponent,Integer,Graph$1,Annotations,Annotation,Function$1,PiecewiseFunction,Interval,Option$1,Sequence,Slider,Spreadsheet,DiscreteSimulationResultList,DiscreteSimulationResultPolyline,Cell,Row,Column,CellBlock,Tabular,Table,Figure,Markers,Panel,Repeat,RepeatForSequence,Pegboard,Constraints,ConstrainToGrid,ConstrainToGraph,AttractToGrid,ConstrainTo,AttractTo,ConstraintUnion,AttractToConstraint,ConstrainToInterior,Intersection,ConstrainToAngles,AttractToAngles,ConditionalContent,AsList,VariantControl,TextListFromString,SelectFromSequence,Select,Group,AnimateFromSequence,Evaluate,SelectRandomNumbers,SampleRandomNumbers,SampleMultivariateRandomNumber,SelectPrimeNumbers,SamplePrimeNumbers,Substitute,PeriodicSet,Image,Video,Embed,Hint,IntComma,Pluralize,Feedback,CollaborateGroups,CollaborateGroupSetup,ConsiderAsResponses,Case,Lorem,UpdateValue,CallAction,triggerSet,FunctionIterates,Module,ModuleAttributes,Setup,Footnote,Caption,Endpoint,Sort,SortIndices,Shuffle,SolveEquations,PostponeRenderContainer,SubsetOfRealsInput,SubsetOfReals,Split,BestFitLine,RegionBetweenCurveXAxis,RegionBetweenCurves,SlopeField,VectorField,RegionHalfPlane,CodeEditor,HasSameFactoring,DataFrame,SummaryStatistics,Legend,Label,MatchesPattern,Matrix,EigenDecomposition,Latex,BlockQuote,Description,StickyGroup,Pretzel,PretzelArranger,Cascade,DynamicChildren,ShortDescription,BaseComponent,InlineComponent,BlockComponent,BlockScoredComponent,GraphicalComponent,ConstraintComponent,SegmentConstraintComponent,Input,CompositeComponent,PointList,IntervalList,LineListComponent,VectorListComponent,AngleListComponent,BooleanOperator,BooleanBaseOperatorOfMath,MathOperator,MathOperatorOneInput,FunctionOperator,...Object.values(ComponentSize$1),...Object.values(SectioningComponent$1),InlineRenderInlineChildren,TextOrInline,SingleCharacter,VariableNameList,Variable,ListOfNumberLists,DirectionComponent,ErrorComponent,Comment];function allComponentClasses(){const Br={},ae=new Set;for(let Me of componentTypeArray){let Or=Me.componentType;if(Or===void 0)throw Error("Cannot create component as componentType is undefined for class "+Me);let Hr=Or.toLowerCase();if(ae.has(Hr))throw Error("component type "+Or+" defined in two classes");Br[Or]=Me,ae.add(Hr)}return Br}function componentTypesCreatingVariants(){const Br={},ae=new Set;for(let Me of componentTypeArray)if(Me.createsVariants){let Or=Me.componentType;if(Or===void 0)throw Error("Cannot create component as componentType is undefined for class "+Me);let Hr=Or.toLowerCase();if(ae.has(Hr))throw Error("component type "+Or+" defined in two classes");Br[Or]=Me,ae.add(Hr)}return Br}function createComponentInfoObjects(){const Br=allComponentClasses(),ae=componentTypesCreatingVariants(),Me={};for(const is in Br)Me[is.toLowerCase()]=is;const Or={};for(const is in Br)Object.defineProperty(Or,is,{get:(function(){const as=Br[is].returnStateVariableInfo();return delete Or[is],Or[is]=as}).bind(this),configurable:!0});const Hr={};for(const is in Br)Object.defineProperty(Hr,is,{get:(function(){const as=Br[is].returnStateVariableInfo({onlyPublic:!0});return delete Hr[is],Hr[is]=as}).bind(this),configurable:!0});function Li({inheritedComponentType:is,baseComponentType:as}){if(is===as)return!0;if(is==="string")return as==="_base"||as==="_inline";if(as==="string")return!1;let os=Br[as];return os?os.isPrototypeOf(Br[is]):!1}function ts({componentType:is,includeNonStandard:as=!0}){const os=Br[is];return os?Li({inheritedComponentType:is,baseComponentType:"_composite"})&&(as||!os.treatAsComponentForRecursiveReplacements):!1}const rs=(is,as)=>Li({inheritedComponentType:is,baseComponentType:as});return{allComponentClasses:Br,componentTypesCreatingVariants:ae,componentTypeLowerCaseMapping:Me,isInheritedComponentType:Li,isCompositeComponent:ts,stateVariableInfo:Or,publicStateVariableInfo:Hr,componentIsSpecifiedType:(is,as)=>rs(is.componentType,as)||is.attributes?.createComponentOfType?.primitive!==void 0&&rs(is.attributes?.createComponentOfType?.primitive.value,as)}}async function returnAllPossibleVariants(Br,ae,Me){let Hr=getNumVariants({serializedComponent:Br,componentInfoObjects:ae,infoDiagnostics:Me}).numVariants,Li;return Br.variants?.allPossibleVariants?Li=Br.variants.allPossibleVariants:Li=[...Array(Hr).keys()].map(ts=>indexToLowercaseLetters(ts+1)),Li}function indexToLowercaseLetters(Br){return numberToLetters(Br,!0)}class PublicDoenetMLCore{constructor(){this.core=null,this.initialized=!1,this.doenetML="",this.flags={},this.localeData=DEFAULT_LOCALE_DATA}setSource(ae){this.doenetML=ae}setFlags(ae){this.flags=ae}setLocaleData(ae){this.localeData=ae}async initializeWorker({activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr,normalizedRoot:Li,addNodesToResolver:ts,replaceIndexResolutionsInResolver:rs,deleteNodesFromResolver:ns,resolvePath:is,calculateRootNames:as}){this.addNodesToResolver=ts,this.replaceIndexResolutionsInResolver=rs,this.deleteNodesFromResolver=ns,this.resolvePath=is,this.calculateRootNames=as;let os=createComponentInfoObjects();const{document:ss,nComponents:ls,diagnostics:us,sources:cs}=await normalizedDastToSerializedComponents(Li,os,ts);this.coreBaseArgs={doenetML:this.doenetML,flags:this.flags,localeData:this.localeData,activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr,serializedDocument:ss,nComponentsInit:ls,allDoenetMLs:cs,preliminaryDiagnostics:us,componentInfoObjects:os},this.initialized=!0;let ds=await returnAllPossibleVariants(this.coreBaseArgs.serializedDocument,this.coreBaseArgs.componentInfoObjects,us);const ps=this.coreBaseArgs.serializedDocument.children.reduce((ms,fs)=>(typeof fs=="object"&&(ms[fs.componentType]=(ms[fs.componentType]??0)+1),ms),{});return{allPossibleVariants:ds,baseComponentCounts:ps}}async createCoreGenerateDast(ae,Me,Or,Hr,Li,ts,rs,ns){if(this.initialized&&!this.coreBaseArgs?.serializedDocument)return{success:!1,errMsg:"Cannot create the core a second time from the same worker; the serialized document was released after the first core was created."};let is={...this.coreBaseArgs,...ae,addNodesToResolver:this.addNodesToResolver,replaceIndexResolutionsInResolver:this.replaceIndexResolutionsInResolver,deleteNodesFromResolver:this.deleteNodesFromResolver,resolvePath:this.resolvePath,calculateRootNames:this.calculateRootNames,updateRenderersCallback:Me,reportScoreAndStateCallback:Or,requestAnimationFrame:Hr,cancelAnimationFrame:Li,copyToClipboard:ts,sendEvent:rs,requestSolutionView:ns};if(this.initialized){this.core=new Core(is),this.coreBaseArgs.serializedDocument=void 0;try{return{success:!0,...await this.core.generateDast()}}catch(as){return console.error(as),{success:!1,errMsg:typeof as=="object"&&as&&"message"in as&&typeof as.message=="string"?as.message:""}}}else return{success:!1,coreId:is.coreId,errMsg:"Internal error. Cannot create document. Core not initialized."}}async requestAction(ae){if(!this.core)return{success:!1,errMsg:"Cannot request action before core is created"};try{return await this.core.requestAction(ae)}catch(Me){return console.error(Me),{success:!1,errMsg:typeof Me=="object"&&Me&&"message"in Me&&typeof Me.message=="string"?Me.message:"",actionId:ae.args?.actionId}}}async returnAllStateVariables(ae=!1,Me=!1){if(!this.core?.components)return{};const Or={},Hr=this.core.components;ae&&console.log(Hr);for(let Li in Hr){const ts=Number(Li);let rs=Hr[ts];if(!rs)continue;Or[ts]={componentIdx:ts,componentType:rs.componentType,stateValues:{},activeChildren:[],sharedParameters:null};let ns=Or[ts];for(let is in rs.state){if(["replacements","recursiveReplacements","fullRecursiveReplacements"].includes(is)&&this.core.componentInfoObjects.isCompositeComponent({componentType:rs.componentType})&&!rs.isExpanded)continue;const as=await rs.state[is].value;ns.stateValues[is]=Me?as:removeFunctionsMathExpressionClass(as)}ns.activeChildren=rs.activeChildren.map(is=>is.componentIdx?{componentIdx:is.componentIdx,componentType:is.componentType}:is),rs.replacements&&(ns.replacements=rs.replacements.map(is=>is.componentIdx?{componentIdx:is.componentIdx,componentType:is.componentType}:is),rs.replacementsToWithhold!==void 0&&(ns.replacementsToWithhold=rs.replacementsToWithhold)),rs.replacementOf&&(ns.replacementOf=rs.replacementOf.componentIdx),ns.sharedParameters=Me?rs.sharedParameters:removeFunctionsMathExpressionClass(rs.sharedParameters)}return Or}async terminate(){this.core&&(await this.core.terminate(),this.core=null)}handleVisibilityChange(ae){this.core?.handleVisibilityChange(ae)}navigatingToComponent(ae,Me){this.core&&handleNavigatingToComponent({core:this.core,componentIdx:ae,hash:Me}).catch(reportTimerError(TimerLabels.navigateToComponent))}async submitAllAnswers(){await this.core?.requestAction({componentIdx:this.core.documentIdx,actionName:"submitAllAnswers",args:{}}),await this.core?.saveImmediately()}async saveImmediately(){await this.core?.saveImmediately()}async flushState(){return await this.core?.flushState()??!1}}var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(Br){return Br&&Br.__esModule&&Object.prototype.hasOwnProperty.call(Br,"default")?Br.default:Br}var colorName$1,hasRequiredColorName;function requireColorName(){return hasRequiredColorName||(hasRequiredColorName=1,colorName$1={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}),colorName$1}var colorNameExports=requireColorName();const colorName=getDefaultExportFromCjs(colorNameExports);var r$2={grad:.9,turn:360,rad:360/(2*Math.PI)},t$3=function(Br){return typeof Br=="string"?Br.length>0:typeof Br=="number"},n$2=function(Br,ae,Me){return ae===void 0&&(ae=0),Me===void 0&&(Me=Math.pow(10,ae)),Math.round(Me*Br)/Me+0},e$2=function(Br,ae,Me){return ae===void 0&&(ae=0),Me===void 0&&(Me=1),Br>Me?Me:Br>ae?Br:ae},u$2=function(Br){return(Br=isFinite(Br)?Br%360:0)>0?Br:Br+360},a$2=function(Br){return{r:e$2(Br.r,0,255),g:e$2(Br.g,0,255),b:e$2(Br.b,0,255),a:e$2(Br.a)}},o$3=function(Br){return{r:n$2(Br.r),g:n$2(Br.g),b:n$2(Br.b),a:n$2(Br.a,3)}},i$2=/^#([0-9a-f]{3,8})$/i,s$1=function(Br){var ae=Br.toString(16);return ae.length<2?"0"+ae:ae},h$2=function(Br){var ae=Br.r,Me=Br.g,Or=Br.b,Hr=Br.a,Li=Math.max(ae,Me,Or),ts=Li-Math.min(ae,Me,Or),rs=ts?Li===ae?(Me-Or)/ts:Li===Me?2+(Or-ae)/ts:4+(ae-Me)/ts:0;return{h:60*(rs<0?rs+6:rs),s:Li?ts/Li*100:0,v:Li/255*100,a:Hr}},b$2=function(Br){var ae=Br.h,Me=Br.s,Or=Br.v,Hr=Br.a;ae=ae/360*6,Me/=100,Or/=100;var Li=Math.floor(ae),ts=Or*(1-Me),rs=Or*(1-(ae-Li)*Me),ns=Or*(1-(1-ae+Li)*Me),is=Li%6;return{r:255*[Or,rs,ts,ts,ns,Or][is],g:255*[ns,Or,Or,rs,ts,ts][is],b:255*[ts,ts,ns,Or,Or,rs][is],a:Hr}},g=function(Br){return{h:u$2(Br.h),s:e$2(Br.s,0,100),l:e$2(Br.l,0,100),a:e$2(Br.a)}},d$1=function(Br){return{h:n$2(Br.h),s:n$2(Br.s),l:n$2(Br.l),a:n$2(Br.a,3)}},f$1=function(Br){return b$2((Me=(ae=Br).s,{h:ae.h,s:(Me*=((Or=ae.l)<50?Or:100-Or)/100)>0?2*Me/(Or+Me)*100:0,v:Or+Me,a:ae.a}));var ae,Me,Or},c$1=function(Br){return{h:(ae=h$2(Br)).h,s:(Hr=(200-(Me=ae.s))*(Or=ae.v)/100)>0&&Hr<200?Me*Or/100/(Hr<=100?Hr:200-Hr)*100:0,l:Hr/2,a:ae.a};var ae,Me,Or,Hr},l$2=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,p$2=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,v$1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,m=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,y$1={string:[[function(Br){var ae=i$2.exec(Br);return ae?(Br=ae[1]).length<=4?{r:parseInt(Br[0]+Br[0],16),g:parseInt(Br[1]+Br[1],16),b:parseInt(Br[2]+Br[2],16),a:Br.length===4?n$2(parseInt(Br[3]+Br[3],16)/255,2):1}:Br.length===6||Br.length===8?{r:parseInt(Br.substr(0,2),16),g:parseInt(Br.substr(2,2),16),b:parseInt(Br.substr(4,2),16),a:Br.length===8?n$2(parseInt(Br.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(Br){var ae=v$1.exec(Br)||m.exec(Br);return ae?ae[2]!==ae[4]||ae[4]!==ae[6]?null:a$2({r:Number(ae[1])/(ae[2]?100/255:1),g:Number(ae[3])/(ae[4]?100/255:1),b:Number(ae[5])/(ae[6]?100/255:1),a:ae[7]===void 0?1:Number(ae[7])/(ae[8]?100:1)}):null},"rgb"],[function(Br){var ae=l$2.exec(Br)||p$2.exec(Br);if(!ae)return null;var Me,Or,Hr=g({h:(Me=ae[1],Or=ae[2],Or===void 0&&(Or="deg"),Number(Me)*(r$2[Or]||1)),s:Number(ae[3]),l:Number(ae[4]),a:ae[5]===void 0?1:Number(ae[5])/(ae[6]?100:1)});return f$1(Hr)},"hsl"]],object:[[function(Br){var ae=Br.r,Me=Br.g,Or=Br.b,Hr=Br.a,Li=Hr===void 0?1:Hr;return t$3(ae)&&t$3(Me)&&t$3(Or)?a$2({r:Number(ae),g:Number(Me),b:Number(Or),a:Number(Li)}):null},"rgb"],[function(Br){var ae=Br.h,Me=Br.s,Or=Br.l,Hr=Br.a,Li=Hr===void 0?1:Hr;if(!t$3(ae)||!t$3(Me)||!t$3(Or))return null;var ts=g({h:Number(ae),s:Number(Me),l:Number(Or),a:Number(Li)});return f$1(ts)},"hsl"],[function(Br){var ae=Br.h,Me=Br.s,Or=Br.v,Hr=Br.a,Li=Hr===void 0?1:Hr;if(!t$3(ae)||!t$3(Me)||!t$3(Or))return null;var ts=(function(rs){return{h:u$2(rs.h),s:e$2(rs.s,0,100),v:e$2(rs.v,0,100),a:e$2(rs.a)}})({h:Number(ae),s:Number(Me),v:Number(Or),a:Number(Li)});return b$2(ts)},"hsv"]]},N=function(Br,ae){for(var Me=0;Me<ae.length;Me++){var Or=ae[Me][0](Br);if(Or)return[Or,ae[Me][1]]}return[null,void 0]},x$1=function(Br){return typeof Br=="string"?N(Br.trim(),y$1.string):typeof Br=="object"&&Br!==null?N(Br,y$1.object):[null,void 0]},M$2=function(Br,ae){var Me=c$1(Br);return{h:Me.h,s:e$2(Me.s+100*ae,0,100),l:Me.l,a:Me.a}},H=function(Br){return(299*Br.r+587*Br.g+114*Br.b)/1e3/255},$=function(Br,ae){var Me=c$1(Br);return{h:Me.h,s:Me.s,l:e$2(Me.l+100*ae,0,100),a:Me.a}},j=(function(){function Br(ae){this.parsed=x$1(ae)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return Br.prototype.isValid=function(){return this.parsed!==null},Br.prototype.brightness=function(){return n$2(H(this.rgba),2)},Br.prototype.isDark=function(){return H(this.rgba)<.5},Br.prototype.isLight=function(){return H(this.rgba)>=.5},Br.prototype.toHex=function(){return ae=o$3(this.rgba),Me=ae.r,Or=ae.g,Hr=ae.b,ts=(Li=ae.a)<1?s$1(n$2(255*Li)):"","#"+s$1(Me)+s$1(Or)+s$1(Hr)+ts;var ae,Me,Or,Hr,Li,ts},Br.prototype.toRgb=function(){return o$3(this.rgba)},Br.prototype.toRgbString=function(){return ae=o$3(this.rgba),Me=ae.r,Or=ae.g,Hr=ae.b,(Li=ae.a)<1?"rgba("+Me+", "+Or+", "+Hr+", "+Li+")":"rgb("+Me+", "+Or+", "+Hr+")";var ae,Me,Or,Hr,Li},Br.prototype.toHsl=function(){return d$1(c$1(this.rgba))},Br.prototype.toHslString=function(){return ae=d$1(c$1(this.rgba)),Me=ae.h,Or=ae.s,Hr=ae.l,(Li=ae.a)<1?"hsla("+Me+", "+Or+"%, "+Hr+"%, "+Li+")":"hsl("+Me+", "+Or+"%, "+Hr+"%)";var ae,Me,Or,Hr,Li},Br.prototype.toHsv=function(){return ae=h$2(this.rgba),{h:n$2(ae.h),s:n$2(ae.s),v:n$2(ae.v),a:n$2(ae.a,3)};var ae},Br.prototype.invert=function(){return w$1({r:255-(ae=this.rgba).r,g:255-ae.g,b:255-ae.b,a:ae.a});var ae},Br.prototype.saturate=function(ae){return ae===void 0&&(ae=.1),w$1(M$2(this.rgba,ae))},Br.prototype.desaturate=function(ae){return ae===void 0&&(ae=.1),w$1(M$2(this.rgba,-ae))},Br.prototype.grayscale=function(){return w$1(M$2(this.rgba,-1))},Br.prototype.lighten=function(ae){return ae===void 0&&(ae=.1),w$1($(this.rgba,ae))},Br.prototype.darken=function(ae){return ae===void 0&&(ae=.1),w$1($(this.rgba,-ae))},Br.prototype.rotate=function(ae){return ae===void 0&&(ae=15),this.hue(this.hue()+ae)},Br.prototype.alpha=function(ae){return typeof ae=="number"?w$1({r:(Me=this.rgba).r,g:Me.g,b:Me.b,a:ae}):n$2(this.rgba.a,3);var Me},Br.prototype.hue=function(ae){var Me=c$1(this.rgba);return typeof ae=="number"?w$1({h:ae,s:Me.s,l:Me.l,a:Me.a}):n$2(Me.h)},Br.prototype.isEqual=function(ae){return this.toHex()===w$1(ae).toHex()},Br})(),w$1=function(Br){return Br instanceof j?Br:new j(Br)},S=[],k=function(Br){Br.forEach(function(ae){S.indexOf(ae)<0&&(ae(j,y$1),S.push(ae))})},a$1=function(Br){return typeof Br=="string"?Br.length>0:typeof Br=="number"},t$2=function(Br,ae,Me){return ae===void 0&&(ae=0),Me===void 0&&(Me=Math.pow(10,ae)),Math.round(Me*Br)/Me+0},o$2=function(Br,ae,Me){return ae===void 0&&(ae=0),Me===void 0&&(Me=1),Br>Me?Me:Br>ae?Br:ae},r$1=function(Br){var ae=Br/255;return ae<.04045?ae/12.92:Math.pow((ae+.055)/1.055,2.4)},h$1=function(Br){return 255*(Br>.0031308?1.055*Math.pow(Br,1/2.4)-.055:12.92*Br)},n$1=96.422,p$1=100,M$1=82.521,u$1=function(Br){var ae,Me,Or={x:.9555766*(ae=Br).x+-.0230393*ae.y+.0631636*ae.z,y:-.0282895*ae.x+1.0099416*ae.y+.0210077*ae.z,z:.0122982*ae.x+-.020483*ae.y+1.3299098*ae.z};return Me={r:h$1(.032404542*Or.x-.015371385*Or.y-.004985314*Or.z),g:h$1(-.00969266*Or.x+.018760108*Or.y+41556e-8*Or.z),b:h$1(556434e-9*Or.x-.002040259*Or.y+.010572252*Or.z),a:Br.a},{r:o$2(Me.r,0,255),g:o$2(Me.g,0,255),b:o$2(Me.b,0,255),a:o$2(Me.a)}},e$1=function(Br){var ae=r$1(Br.r),Me=r$1(Br.g),Or=r$1(Br.b);return(function(Hr){return{x:o$2(Hr.x,0,n$1),y:o$2(Hr.y,0,p$1),z:o$2(Hr.z,0,M$1),a:o$2(Hr.a)}})((function(Hr){return{x:1.0478112*Hr.x+.0228866*Hr.y+-.050127*Hr.z,y:.0295424*Hr.x+.9904844*Hr.y+-.0170491*Hr.z,z:-.0092345*Hr.x+.0150436*Hr.y+.7521316*Hr.z,a:Hr.a}})({x:100*(.4124564*ae+.3575761*Me+.1804375*Or),y:100*(.2126729*ae+.7151522*Me+.072175*Or),z:100*(.0193339*ae+.119192*Me+.9503041*Or),a:Br.a}))},w=216/24389,b$1=24389/27,i$1=function(Br){var ae=Br.l,Me=Br.a,Or=Br.b,Hr=Br.alpha,Li=Hr===void 0?1:Hr;if(!a$1(ae)||!a$1(Me)||!a$1(Or))return null;var ts=(function(rs){return{l:o$2(rs.l,0,400),a:rs.a,b:rs.b,alpha:o$2(rs.alpha)}})({l:Number(ae),a:Number(Me),b:Number(Or),alpha:Number(Li)});return l$1(ts)},l$1=function(Br){var ae=(Br.l+16)/116,Me=Br.a/500+ae,Or=ae-Br.b/200;return u$1({x:(Math.pow(Me,3)>w?Math.pow(Me,3):(116*Me-16)/b$1)*n$1,y:(Br.l>8?Math.pow((Br.l+16)/116,3):Br.l/b$1)*p$1,z:(Math.pow(Or,3)>w?Math.pow(Or,3):(116*Or-16)/b$1)*M$1,a:Br.alpha})};function labPlugin(Br,ae){Br.prototype.toLab=function(){return Or=e$1(this.rgba),Li=Or.y/p$1,ts=Or.z/M$1,Hr=(Hr=Or.x/n$1)>w?Math.cbrt(Hr):(b$1*Hr+16)/116,Me={l:116*(Li=Li>w?Math.cbrt(Li):(b$1*Li+16)/116)-16,a:500*(Hr-Li),b:200*(Li-(ts=ts>w?Math.cbrt(ts):(b$1*ts+16)/116)),alpha:Or.a},{l:t$2(Me.l,2),a:t$2(Me.a,2),b:t$2(Me.b,2),alpha:t$2(Me.alpha,3)};var Me,Or,Hr,Li,ts},Br.prototype.delta=function(Me){Me===void 0&&(Me="#FFF");var Or=Me instanceof Br?Me:new Br(Me),Hr=(function(Li,ts){var rs=Li.l,ns=Li.a,is=Li.b,as=ts.l,os=ts.a,ss=ts.b,ls=180/Math.PI,us=Math.PI/180,cs=Math.pow(Math.pow(ns,2)+Math.pow(is,2),.5),ds=Math.pow(Math.pow(os,2)+Math.pow(ss,2),.5),ps=(rs+as)/2,ms=Math.pow((cs+ds)/2,7),fs=.5*(1-Math.pow(ms/(ms+Math.pow(25,7)),.5)),hs=ns*(1+fs),gs=os*(1+fs),ys=Math.pow(Math.pow(hs,2)+Math.pow(is,2),.5),xs=Math.pow(Math.pow(gs,2)+Math.pow(ss,2),.5),bs=(ys+xs)/2,vs=hs===0&&is===0?0:Math.atan2(is,hs)*ls,Cs=gs===0&&ss===0?0:Math.atan2(ss,gs)*ls;vs<0&&(vs+=360),Cs<0&&(Cs+=360);var Ts=Cs-vs,As=Math.abs(Cs-vs);As>180&&Cs<=vs?Ts+=360:As>180&&Cs>vs&&(Ts-=360);var Ns=vs+Cs;As<=180?Ns/=2:Ns=(vs+Cs<360?Ns+360:Ns-360)/2;var _s=1-.17*Math.cos(us*(Ns-30))+.24*Math.cos(2*us*Ns)+.32*Math.cos(us*(3*Ns+6))-.2*Math.cos(us*(4*Ns-63)),Es=as-rs,$s=xs-ys,Is=2*Math.sin(us*Ts/2)*Math.pow(ys*xs,.5),Ds=1+.015*Math.pow(ps-50,2)/Math.pow(20+Math.pow(ps-50,2),.5),Vs=1+.045*bs,Ps=1+.015*bs*_s,Gs=30*Math.exp(-1*Math.pow((Ns-275)/25,2)),Os=-2*Math.pow(ms/(ms+Math.pow(25,7)),.5)*Math.sin(2*us*Gs);return Math.pow(Math.pow(Es/1/Ds,2)+Math.pow($s/1/Vs,2)+Math.pow(Is/1/Ps,2)+Os*$s*Is/(1*Vs*1*Ps),.5)})(this.toLab(),Or.toLab())/100;return o$2(t$2(Hr,3))},ae.object.push([i$1,"lab"])}var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t$1=function(Br){return typeof Br=="string"?Br.length>0:typeof Br=="number"},a=function(Br,ae,Me){return ae===void 0&&(ae=0),Me===void 0&&(Me=Math.pow(10,ae)),Math.round(Me*Br)/Me+0},n=function(Br,ae,Me){return ae===void 0&&(ae=0),Me===void 0&&(Me=1),Br>Me?Me:Br>ae?Br:ae},u=function(Br){var ae=Br/255;return ae<.04045?ae/12.92:Math.pow((ae+.055)/1.055,2.4)},h=function(Br){return 255*(Br>.0031308?1.055*Math.pow(Br,1/2.4)-.055:12.92*Br)},o$1=96.422,e=100,c=82.521,i=function(Br){var ae,Me,Or={x:.9555766*(ae=Br).x+-.0230393*ae.y+.0631636*ae.z,y:-.0282895*ae.x+1.0099416*ae.y+.0210077*ae.z,z:.0122982*ae.x+-.020483*ae.y+1.3299098*ae.z};return Me={r:h(.032404542*Or.x-.015371385*Or.y-.004985314*Or.z),g:h(-.00969266*Or.x+.018760108*Or.y+41556e-8*Or.z),b:h(556434e-9*Or.x-.002040259*Or.y+.010572252*Or.z),a:Br.a},{r:n(Me.r,0,255),g:n(Me.g,0,255),b:n(Me.b,0,255),a:n(Me.a)}},l=function(Br){var ae=u(Br.r),Me=u(Br.g),Or=u(Br.b);return(function(Hr){return{x:n(Hr.x,0,o$1),y:n(Hr.y,0,e),z:n(Hr.z,0,c),a:n(Hr.a)}})((function(Hr){return{x:1.0478112*Hr.x+.0228866*Hr.y+-.050127*Hr.z,y:.0295424*Hr.x+.9904844*Hr.y+-.0170491*Hr.z,z:-.0092345*Hr.x+.0150436*Hr.y+.7521316*Hr.z,a:Hr.a}})({x:100*(.4124564*ae+.3575761*Me+.1804375*Or),y:100*(.2126729*ae+.7151522*Me+.072175*Or),z:100*(.0193339*ae+.119192*Me+.9503041*Or),a:Br.a}))},f=216/24389,b=24389/27,d=function(Br){return{l:n(Br.l,0,100),c:Br.c,h:(ae=Br.h,(ae=isFinite(ae)?ae%360:0)>0?ae:ae+360),a:Br.a};var ae},p=function(Br){return{l:a(Br.l,2),c:a(Br.c,2),h:a(Br.h,2),a:a(Br.a,3)}},v=function(Br){var ae=Br.l,Me=Br.c,Or=Br.h,Hr=Br.a,Li=Hr===void 0?1:Hr;if(!t$1(ae)||!t$1(Me)||!t$1(Or))return null;var ts=d({l:Number(ae),c:Number(Me),h:Number(Or),a:Number(Li)});return M(ts)},y=function(Br){var ae=(function(Li){var ts=l(Li),rs=ts.x/o$1,ns=ts.y/e,is=ts.z/c;return rs=rs>f?Math.cbrt(rs):(b*rs+16)/116,{l:116*(ns=ns>f?Math.cbrt(ns):(b*ns+16)/116)-16,a:500*(rs-ns),b:200*(ns-(is=is>f?Math.cbrt(is):(b*is+16)/116)),alpha:ts.a}})(Br),Me=a(ae.a,3),Or=a(ae.b,3),Hr=Math.atan2(Or,Me)/Math.PI*180;return{l:ae.l,c:Math.sqrt(Me*Me+Or*Or),h:Hr<0?Hr+360:Hr,a:ae.alpha}},M=function(Br){return ae={l:Br.l,a:Br.c*Math.cos(Br.h*Math.PI/180),b:Br.c*Math.sin(Br.h*Math.PI/180),alpha:Br.a},Or=ae.a/500+(Me=(ae.l+16)/116),Hr=Me-ae.b/200,i({x:(Math.pow(Or,3)>f?Math.pow(Or,3):(116*Or-16)/b)*o$1,y:(ae.l>8?Math.pow((ae.l+16)/116,3):ae.l/b)*e,z:(Math.pow(Hr,3)>f?Math.pow(Hr,3):(116*Hr-16)/b)*c,a:ae.alpha});var ae,Me,Or,Hr},x=/^lch\(\s*([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,s=function(Br){var ae=x.exec(Br);if(!ae)return null;var Me,Or,Hr=d({l:Number(ae[1]),c:Number(ae[2]),h:(Me=ae[3],Or=ae[4],Or===void 0&&(Or="deg"),Number(Me)*(r[Or]||1)),a:ae[5]===void 0?1:Number(ae[5])/(ae[6]?100:1)});return M(Hr)};function lchPlugin(Br,ae){Br.prototype.toLch=function(){return p(y(this.rgba))},Br.prototype.toLchString=function(){return Me=p(y(this.rgba)),Or=Me.l,Hr=Me.c,Li=Me.h,(ts=Me.a)<1?"lch("+Or+"% "+Hr+" "+Li+" / "+ts+")":"lch("+Or+"% "+Hr+" "+Li+")";var Me,Or,Hr,Li,ts},ae.string.push([s,"lch"]),ae.object.push([v,"lch"])}k([labPlugin,lchPlugin]);const canonicalColorHexByKey={black:"#000000",white:"#ffffff",gray:"#808080",red:"#ff0000",orange:"#ffa500",yellow:"#ffff00",green:"#008000",cyan:"#00ffff",blue:"#0000ff",purple:"#800080",pink:"#ffc0cb",brown:"#a52a2a"},canonicalAnchorDefinitions=Object.fromEntries(Object.entries(canonicalColorHexByKey).map(([Br,ae])=>[Br,{hex:ae,canonical:Br}])),extraAnchorDefinitions={silver:{hex:"#c0c0c0",canonical:"gray"},grayDark:{hex:"#4d4d4d",canonical:"gray"},grayCustom:{hex:"#757575",canonical:"gray"},grayLight:{hex:"#c8c8c8",canonical:"gray"},grayLighter:{hex:"#dcdcdc",canonical:"gray"},maroon:{hex:"#800000",canonical:"red"},redLight:{hex:"#f08080",canonical:"red"},redCustom:{hex:"#D4042D",canonical:"red"},redDark:{hex:"#8b0000",canonical:"red"},crimson:{hex:"#dc143c",canonical:"red"},wine:{hex:"#993355",canonical:"red"},orangeLight:{hex:"#ffa07a",canonical:"orange"},orangeCustom:{hex:"#F19143",canonical:"orange"},orangePresetAccessible:{hex:"#a6510c",canonical:"orange"},orangeDark:{hex:"#ff8c00",canonical:"orange"},yellowLight:{hex:"#ffffe0",canonical:"yellow"},yellowDark:{hex:"#bdb76b",canonical:"yellow"},yellowgreen:{hex:"#9acd32",canonical:"green"},olive:{hex:"#808000",canonical:"green"},lime:{hex:"#00ff00",canonical:"green"},greenLight:{hex:"#90ee90",canonical:"green"},greenCustom:{hex:"#2ca02c",canonical:"green"},greenDark:{hex:"#006400",canonical:"green"},teal:{hex:"#008080",canonical:"green"},aqua:{hex:"#00ffff",canonical:"cyan"},cyanLight:{hex:"#e0ffff",canonical:"cyan"},cyanMid:{hex:"#25b0c0",canonical:"cyan"},cyanDark:{hex:"#008b8b",canonical:"cyan"},navy:{hex:"#000080",canonical:"blue"},blueMid:{hex:"#4477aa",canonical:"blue"},blueSky:{hex:"#56b4e9",canonical:"blue"},blueCustom:{hex:"#648FFF",canonical:"blue"},bluePresetAccessible:{hex:"#1f5dff",canonical:"blue"},blueLight:{hex:"#add8e6",canonical:"blue"},blueDark:{hex:"#00008b",canonical:"blue"},fuchsia:{hex:"#ff00ff",canonical:"purple"},purpleCustom:{hex:"#644CD6",canonical:"purple"},purpleMuted:{hex:"#9c5686",canonical:"purple"},purpleLight:{hex:"#dda0dd",canonical:"purple"},purpleDark:{hex:"#8b008b",canonical:"purple"},hotpink:{hex:"#ff69b4",canonical:"pink"},pinkDark:{hex:"#ff1493",canonical:"pink"},brownLight:{hex:"#deb887",canonical:"brown"},brownDark:{hex:"#8b4513",canonical:"brown"}},anchorDefinitions={...canonicalAnchorDefinitions,...extraAnchorDefinitions};Object.values(anchorDefinitions).map(Br=>({color:w$1(Br.hex),canonical:Br.canonical})),[...Object.keys(colorName)];const DEFAULT_STYLE_VALUES={lineOpacity:.7,lineWidth:4,lineWidthWord:"thick",lineStyle:"solid",lineStyleWord:"",markerOpacity:.7,markerStyle:"circle",markerStyleWord:"point",markerSize:5,markerFilled:!0,fillOpacity:.3,fillPatternOpacity:1,fillStyle:"solid",fillStyleWord:"",lineColor:"#1f5dff",lineColorDarkMode:"#648FFF",markerColor:"#1f5dff",markerColorDarkMode:"#648FFF",fillColor:"#1f5dff",fillColorDarkMode:"#648FFF",textColor:"black",textColorDarkMode:"white",highContrastColor:"#2963FF",highContrastColorDarkMode:"#92B4FF"},defaultPalette={name:"default",description:"The standard Doenet styles: blue, red, orange, purple, black, and gray.",styles:{1:{...DEFAULT_STYLE_VALUES},2:{lineColor:"#D4042D",lineColorDarkMode:"#F1466A",lineOpacity:.7,lineWidth:2,lineWidthWord:"",lineStyle:"solid",lineStyleWord:"",markerColor:"#D4042D",markerColorDarkMode:"#F1466A",markerOpacity:.7,markerStyle:"square",markerStyleWord:"square",markerSize:5,fillColor:"#D4042D",fillColorDarkMode:"#F1466A",fillOpacity:.3,textColor:"#D4042D",textColorDarkMode:"#FF7A7A",highContrastColor:"#D4042D",highContrastColorDarkMode:"#FF7A7A"},3:{lineColor:"#a6510c",lineColorDarkMode:"#F19143",lineOpacity:.7,lineWidth:3,lineWidthWord:"",lineStyle:"solid",lineStyleWord:"",markerColor:"#a6510c",markerColorDarkMode:"#F19143",markerOpacity:.7,markerStyle:"triangle",markerStyleWord:"triangle",markerSize:5,fillColor:"#a6510c",fillColorDarkMode:"#F19143",fillOpacity:.3,textColor:"#BE5A0E",textColorDarkMode:"#FFA94D",highContrastColor:"#BE5A0E",highContrastColorDarkMode:"#FFA94D"},4:{lineColor:"#644CD6",lineColorDarkMode:"#9F8FE8",lineColorWordDarkMode:"purple",lineOpacity:.7,lineWidth:2,lineWidthWord:"",lineStyle:"solid",lineStyleWord:"",markerColor:"#644CD6",markerColorDarkMode:"#9F8FE8",markerColorWordDarkMode:"purple",markerOpacity:.7,markerStyle:"diamond",markerStyleWord:"diamond",markerSize:5,fillColor:"#644CD6",fillColorDarkMode:"#9F8FE8",fillColorWordDarkMode:"purple",fillOpacity:.3,textColor:"#644CD6",textColorDarkMode:"#B0A4EE",highContrastColor:"#644CD6",highContrastColorDarkMode:"#B0A4EE"},5:{lineColor:"black",lineColorDarkMode:"white",lineOpacity:1,lineWidth:1,lineWidthWord:"thin",lineStyle:"solid",lineStyleWord:"",markerColor:"black",markerColorDarkMode:"white",markerOpacity:1,markerStyle:"circle",markerStyleWord:"point",markerSize:5,fillColor:"black",fillColorDarkMode:"white",fillOpacity:.7,textColor:"black",textColorDarkMode:"white",highContrastColor:"black",highContrastColorDarkMode:"white"},6:{lineColor:"#636363",lineColorDarkMode:"#CCCCCC",lineOpacity:.7,lineWidth:1,lineWidthWord:"thin",lineStyle:"dotted",lineStyleWord:"dotted",markerColor:"#636363",markerColorDarkMode:"#CCCCCC",markerOpacity:.7,markerStyle:"circle",markerStyleWord:"point",markerSize:5,fillColor:"#636363",fillColorDarkMode:"#CCCCCC",fillOpacity:.3,textColor:"#757575",textColorDarkMode:"#B0B0B0",highContrastColor:"#757575",highContrastColorDarkMode:"#B0B0B0"}}},okabeItoPalette={name:"okabeIto",description:"Colorblind-friendly blues, oranges, greens, and purples adapted from the Okabe-Ito palette, with varied marker shapes and line styles.",styles:{1:{lineColor:"#0072b2",markerColor:"#0072b2",fillColor:"#0072b2",highContrastColor:"#0072b2",lineColorDarkMode:"#0072b2",markerColorDarkMode:"#0072b2",fillColorDarkMode:"#0072b2",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#c15400",markerColor:"#c15400",fillColor:"#c15400",textColor:"#c15400",highContrastColor:"#c15400",lineColorDarkMode:"#d55e00",markerColorDarkMode:"#d55e00",fillColorDarkMode:"#d55e00",textColorDarkMode:"#d55e00",lineWidth:2,markerStyle:"square"},3:{lineColor:"#009e73",markerColor:"#009e73",fillColor:"#009e73",textColor:"#008561",highContrastColor:"#008561",lineColorDarkMode:"#009e73",markerColorDarkMode:"#009e73",fillColorDarkMode:"#009e73",textColorDarkMode:"#009e73",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#cc79a7",markerColor:"#cc79a7",fillColor:"#cc79a7",textColor:"#a35f85",highContrastColor:"#a35f85",lineColorWord:"purple",markerColorWord:"purple",fillColorWord:"purple",lineColorDarkMode:"#cc79a7",markerColorDarkMode:"#cc79a7",fillColorDarkMode:"#cc79a7",textColorDarkMode:"#cc79a7",lineColorWordDarkMode:"purple",markerColorWordDarkMode:"purple",fillColorWordDarkMode:"purple",textColorWordDarkMode:"purple",highContrastColorWordDarkMode:"purple",lineWidth:2,markerStyle:"diamond"},5:{lineColor:"#000000",markerColor:"#000000",fillColor:"#000000",textColor:"#000000",highContrastColor:"#000000",lineColorDarkMode:"#ffffff",markerColorDarkMode:"#ffffff",fillColorDarkMode:"#ffffff",textColorDarkMode:"#ffffff",lineWidth:2,markerStyle:"triangleDown"},6:{lineColor:"#5a5513",markerColor:"#5a5513",fillColor:"#5a5513",textColor:"#5a5513",highContrastColor:"#5a5513",lineColorWord:"olive",markerColorWord:"olive",fillColorWord:"olive",textColorWord:"olive",highContrastColorWord:"olive",lineColorDarkMode:"#f0e442",markerColorDarkMode:"#f0e442",fillColorDarkMode:"#f0e442",textColorDarkMode:"#f0e442",lineWidth:2,markerStyle:"triangleLeft"},7:{lineColor:"#499bca",markerColor:"#499bca",fillColor:"#499bca",textColor:"#397ba1",highContrastColor:"#397ba1",lineColorWord:"skyblue",markerColorWord:"skyblue",fillColorWord:"skyblue",textColorWord:"skyblue",highContrastColorWord:"skyblue",lineColorDarkMode:"#56b4e9",markerColorDarkMode:"#56b4e9",fillColorDarkMode:"#56b4e9",textColorDarkMode:"#56b4e9",lineColorWordDarkMode:"skyblue",markerColorWordDarkMode:"skyblue",fillColorWordDarkMode:"skyblue",textColorWordDarkMode:"skyblue",highContrastColorWordDarkMode:"skyblue",lineWidth:3,lineStyle:"dashed",markerStyle:"triangleRight"},8:{lineColor:"#c58700",markerColor:"#c58700",fillColor:"#c58700",textColor:"#9d6b00",highContrastColor:"#9d6b00",lineColorWord:"goldenrod",markerColorWord:"goldenrod",fillColorWord:"goldenrod",textColorWord:"goldenrod",highContrastColorWord:"goldenrod",lineColorDarkMode:"#e69f00",markerColorDarkMode:"#e69f00",fillColorDarkMode:"#e69f00",textColorDarkMode:"#e69f00",lineColorWordDarkMode:"goldenrod",markerColorWordDarkMode:"goldenrod",fillColorWordDarkMode:"goldenrod",textColorWordDarkMode:"goldenrod",highContrastColorWordDarkMode:"goldenrod",lineWidth:1,lineStyle:"dotted",markerStyle:"circle"}}},tolBrightPalette={name:"tolBright",description:"Colorblind-friendly bright blues, reds, greens, and purples from Paul Tol's bright palette, with varied marker shapes and line styles.",styles:{1:{lineColor:"#4477aa",markerColor:"#4477aa",fillColor:"#4477aa",highContrastColor:"#4477aa",lineColorDarkMode:"#4477aa",markerColorDarkMode:"#4477aa",fillColorDarkMode:"#4477aa",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#ee6677",markerColor:"#ee6677",fillColor:"#ee6677",textColor:"#bf515e",highContrastColor:"#bf515e",lineColorDarkMode:"#ee6677",markerColorDarkMode:"#ee6677",fillColorDarkMode:"#ee6677",textColorDarkMode:"#ee6677",lineWidth:2,markerStyle:"square"},3:{lineColor:"#228833",markerColor:"#228833",fillColor:"#228833",textColor:"#228833",highContrastColor:"#228833",lineColorDarkMode:"#228833",markerColorDarkMode:"#228833",fillColorDarkMode:"#228833",textColorDarkMode:"#3d8e47",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#a29534",markerColor:"#a29534",fillColor:"#a29534",textColor:"#817628",highContrastColor:"#817628",lineColorWord:"olive",markerColorWord:"olive",fillColorWord:"olive",textColorWord:"olive",highContrastColorWord:"olive",lineColorDarkMode:"#ccbb44",markerColorDarkMode:"#ccbb44",fillColorDarkMode:"#ccbb44",textColorDarkMode:"#ccbb44",lineWidth:2,markerStyle:"diamond"},5:{lineColor:"#4d9db8",markerColor:"#4d9db8",fillColor:"#4d9db8",textColor:"#3c7d94",highContrastColor:"#3c7d94",textColorWord:"cyan",highContrastColorWord:"cyan",lineColorDarkMode:"#66ccee",markerColorDarkMode:"#66ccee",fillColorDarkMode:"#66ccee",textColorDarkMode:"#66ccee",lineColorWordDarkMode:"cyan",markerColorWordDarkMode:"cyan",fillColorWordDarkMode:"cyan",textColorWordDarkMode:"cyan",highContrastColorWordDarkMode:"cyan",lineWidth:2,markerStyle:"triangleDown"},6:{lineColor:"#aa3377",markerColor:"#aa3377",fillColor:"#aa3377",textColor:"#aa3377",highContrastColor:"#aa3377",lineColorDarkMode:"#aa3377",markerColorDarkMode:"#aa3377",fillColorDarkMode:"#aa3377",textColorDarkMode:"#b5648c",lineWidth:2,markerStyle:"triangleLeft"},7:{lineColor:"#939393",markerColor:"#939393",fillColor:"#939393",textColor:"#757575",highContrastColor:"#757575",lineColorDarkMode:"#bbbbbb",markerColorDarkMode:"#bbbbbb",fillColorDarkMode:"#bbbbbb",textColorDarkMode:"#bbbbbb",lineWidth:3,lineStyle:"dashed",markerStyle:"triangleRight"}}},tolMutedPalette={name:"tolMuted",description:"Nine colorblind-friendly muted styles from Paul Tol's muted palette, with varied marker shapes and line styles.",styles:{1:{lineColor:"#332288",markerColor:"#332288",fillColor:"#332288",highContrastColor:"#332288",lineColorWord:"indigo",markerColorWord:"indigo",fillColorWord:"indigo",highContrastColorWord:"indigo",lineColorDarkMode:"#8a86e8",markerColorDarkMode:"#8a86e8",fillColorDarkMode:"#8a86e8",lineColorWordDarkMode:"indigo",markerColorWordDarkMode:"indigo",fillColorWordDarkMode:"indigo",highContrastColorWordDarkMode:"indigo",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#669ab5",markerColor:"#669ab5",fillColor:"#669ab5",textColor:"#507a90",highContrastColor:"#507a90",lineColorDarkMode:"#88ccee",markerColorDarkMode:"#88ccee",fillColorDarkMode:"#88ccee",textColorDarkMode:"#88ccee",lineWidth:2,markerStyle:"square"},3:{lineColor:"#41a393",markerColor:"#41a393",fillColor:"#41a393",textColor:"#328175",highContrastColor:"#328175",lineColorWord:"teal",markerColorWord:"teal",fillColorWord:"teal",textColorWord:"teal",highContrastColorWord:"teal",lineColorDarkMode:"#44aa99",markerColorDarkMode:"#44aa99",fillColorDarkMode:"#44aa99",textColorDarkMode:"#44aa99",lineColorWordDarkMode:"teal",markerColorWordDarkMode:"teal",fillColorWordDarkMode:"teal",textColorWordDarkMode:"teal",highContrastColorWordDarkMode:"teal",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#117733",markerColor:"#117733",fillColor:"#117733",textColor:"#117733",highContrastColor:"#117733",lineColorDarkMode:"#117733",markerColorDarkMode:"#117733",fillColorDarkMode:"#117733",textColorDarkMode:"#548a5f",lineWidth:2,markerStyle:"diamond"},5:{lineColor:"#989833",markerColor:"#989833",fillColor:"#989833",textColor:"#787827",highContrastColor:"#787827",lineColorWord:"olive",markerColorWord:"olive",fillColorWord:"olive",textColorWord:"olive",highContrastColorWord:"olive",lineColorDarkMode:"#999933",markerColorDarkMode:"#999933",fillColorDarkMode:"#999933",textColorDarkMode:"#999933",lineColorWordDarkMode:"olive",markerColorWordDarkMode:"olive",fillColorWordDarkMode:"olive",textColorWordDarkMode:"olive",highContrastColorWordDarkMode:"olive",lineWidth:2,markerStyle:"triangleDown"},6:{lineColor:"#867c46",markerColor:"#867c46",fillColor:"#867c46",textColor:"#7f7542",highContrastColor:"#7f7542",lineColorWord:"tan",markerColorWord:"tan",fillColorWord:"tan",textColorWord:"tan",highContrastColorWord:"tan",lineColorDarkMode:"#ddcc77",markerColorDarkMode:"#ddcc77",fillColorDarkMode:"#ddcc77",textColorDarkMode:"#ddcc77",lineColorWordDarkMode:"tan",markerColorWordDarkMode:"tan",fillColorWordDarkMode:"tan",textColorWordDarkMode:"tan",highContrastColorWordDarkMode:"tan",lineWidth:2,markerStyle:"triangleLeft"},7:{lineColor:"#cc6677",markerColor:"#cc6677",fillColor:"#cc6677",textColor:"#b35968",highContrastColor:"#b35968",lineColorWord:"pink",markerColorWord:"pink",fillColorWord:"pink",textColorWord:"pink",highContrastColorWord:"pink",lineColorDarkMode:"#cc6677",markerColorDarkMode:"#cc6677",fillColorDarkMode:"#cc6677",textColorDarkMode:"#cc6677",lineColorWordDarkMode:"pink",markerColorWordDarkMode:"pink",fillColorWordDarkMode:"pink",textColorWordDarkMode:"pink",highContrastColorWordDarkMode:"pink",lineWidth:3,lineStyle:"dashed",markerStyle:"triangleRight"},8:{lineColor:"#882255",markerColor:"#882255",fillColor:"#882255",textColor:"#882255",highContrastColor:"#882255",lineColorWord:"maroon",markerColorWord:"maroon",fillColorWord:"maroon",textColorWord:"maroon",highContrastColorWord:"maroon",lineColorDarkMode:"#924b69",markerColorDarkMode:"#924b69",fillColorDarkMode:"#924b69",textColorDarkMode:"#a17083",lineColorWordDarkMode:"maroon",markerColorWordDarkMode:"maroon",fillColorWordDarkMode:"maroon",textColorWordDarkMode:"maroon",highContrastColorWordDarkMode:"maroon",lineWidth:1,lineStyle:"dotted",markerStyle:"circle"},9:{lineColor:"#aa4499",markerColor:"#aa4499",fillColor:"#aa4499",textColor:"#aa4499",highContrastColor:"#aa4499",lineColorDarkMode:"#aa4499",markerColorDarkMode:"#aa4499",fillColorDarkMode:"#aa4499",textColorDarkMode:"#b262a3",lineWidth:2,lineStyle:"dashed",markerStyle:"square"}}},tolHighContrastPalette={name:"tolHighContrast",description:"Four maximum-distinction styles from Paul Tol's high-contrast palette, distinguishable even in grayscale.",styles:{1:{lineColor:"#004488",markerColor:"#004488",fillColor:"#004488",highContrastColor:"#004488",lineColorDarkMode:"#496194",markerColorDarkMode:"#496194",fillColorDarkMode:"#496194",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#b88d29",markerColor:"#b88d29",fillColor:"#b88d29",textColor:"#92701f",highContrastColor:"#92701f",lineColorWord:"gold",markerColorWord:"gold",fillColorWord:"gold",textColorWord:"gold",highContrastColorWord:"gold",lineColorDarkMode:"#ddaa33",markerColorDarkMode:"#ddaa33",fillColorDarkMode:"#ddaa33",textColorDarkMode:"#ddaa33",lineColorWordDarkMode:"gold",markerColorWordDarkMode:"gold",fillColorWordDarkMode:"gold",textColorWordDarkMode:"gold",highContrastColorWordDarkMode:"gold",lineWidth:2,markerStyle:"square"},3:{lineColor:"#bb5566",markerColor:"#bb5566",fillColor:"#bb5566",textColor:"#bb5566",highContrastColor:"#bb5566",lineColorDarkMode:"#c06976",markerColorDarkMode:"#c06976",fillColorDarkMode:"#c06976",textColorDarkMode:"#c06976",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#000000",markerColor:"#000000",fillColor:"#000000",textColor:"#000000",highContrastColor:"#000000",lineColorDarkMode:"#ffffff",markerColorDarkMode:"#ffffff",fillColorDarkMode:"#ffffff",textColorDarkMode:"#ffffff",lineWidth:2,markerStyle:"diamond"}}},ibmPalette={name:"ibm",description:"Five colorblind-friendly styles from the IBM Design Library accessible palette, with varied marker shapes.",styles:{1:{lineColor:"#648fff",markerColor:"#648fff",fillColor:"#648fff",highContrastColor:"#4f71cb",lineColorDarkMode:"#648fff",markerColorDarkMode:"#648fff",fillColorDarkMode:"#648fff",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#6a53d5",markerColor:"#6a53d5",fillColor:"#6a53d5",textColor:"#6a53d5",highContrastColor:"#6a53d5",lineColorDarkMode:"#785ef0",markerColorDarkMode:"#785ef0",fillColorDarkMode:"#785ef0",textColorDarkMode:"#7f69f0",lineWidth:2,markerStyle:"square"},3:{lineColor:"#dc267f",markerColor:"#dc267f",fillColor:"#dc267f",textColor:"#dc267f",highContrastColor:"#dc267f",lineColorWord:"magenta",markerColorWord:"magenta",fillColorWord:"magenta",textColorWord:"magenta",highContrastColorWord:"magenta",lineColorDarkMode:"#dc267f",markerColorDarkMode:"#dc267f",fillColorDarkMode:"#dc267f",textColorDarkMode:"#dd4186",lineColorWordDarkMode:"magenta",markerColorWordDarkMode:"magenta",fillColorWordDarkMode:"magenta",textColorWordDarkMode:"magenta",highContrastColorWordDarkMode:"magenta",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#fe6100",markerColor:"#fe6100",fillColor:"#fe6100",textColor:"#cb4b00",highContrastColor:"#cb4b00",lineColorDarkMode:"#fe6100",markerColorDarkMode:"#fe6100",fillColorDarkMode:"#fe6100",textColorDarkMode:"#fe6100",lineWidth:2,markerStyle:"diamond"},5:{lineColor:"#865a00",markerColor:"#865a00",fillColor:"#865a00",textColor:"#865a00",highContrastColor:"#865a00",lineColorWord:"gold",markerColorWord:"gold",fillColorWord:"gold",textColorWord:"gold",highContrastColorWord:"gold",lineColorDarkMode:"#ffb000",markerColorDarkMode:"#ffb000",fillColorDarkMode:"#ffb000",textColorDarkMode:"#ffb000",lineColorWordDarkMode:"gold",markerColorWordDarkMode:"gold",fillColorWordDarkMode:"gold",textColorWordDarkMode:"gold",highContrastColorWordDarkMode:"gold",lineWidth:2,markerStyle:"triangleDown"}}},grayscalePalette={name:"grayscale",description:"Four grays with maximum luminance separation, for readers who distinguish styles by lightness alone.",styles:{1:{lineColor:"#000000",markerColor:"#000000",fillColor:"#000000",highContrastColor:"#000000",lineColorDarkMode:"#ffffff",markerColorDarkMode:"#ffffff",fillColorDarkMode:"#ffffff",highContrastColorDarkMode:"#ffffff",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#323232",markerColor:"#323232",fillColor:"#323232",textColor:"#323232",highContrastColor:"#323232",lineColorWord:"dark gray",markerColorWord:"dark gray",fillColorWord:"dark gray",textColorWord:"dark gray",highContrastColorWord:"dark gray",lineColorDarkMode:"#c7c7c7",markerColorDarkMode:"#c7c7c7",fillColorDarkMode:"#c7c7c7",textColorDarkMode:"#c7c7c7",highContrastColorDarkMode:"#c7c7c7",lineColorWordDarkMode:"light gray",markerColorWordDarkMode:"light gray",fillColorWordDarkMode:"light gray",textColorWordDarkMode:"light gray",highContrastColorWordDarkMode:"light gray",lineWidth:2,markerStyle:"square"},3:{lineColor:"#616161",markerColor:"#616161",fillColor:"#616161",textColor:"#616161",highContrastColor:"#616161",lineColorDarkMode:"#929292",markerColorDarkMode:"#929292",fillColorDarkMode:"#929292",textColorDarkMode:"#929292",highContrastColorDarkMode:"#929292",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#939393",markerColor:"#939393",fillColor:"#939393",textColor:"#767676",highContrastColor:"#767676",lineColorWord:"light gray",markerColorWord:"light gray",fillColorWord:"light gray",textColorWord:"light gray",highContrastColorWord:"light gray",lineColorDarkMode:"#626262",markerColorDarkMode:"#626262",fillColorDarkMode:"#626262",textColorDarkMode:"#7d7d7d",highContrastColorDarkMode:"#7d7d7d",lineColorWordDarkMode:"dark gray",markerColorWordDarkMode:"dark gray",fillColorWordDarkMode:"dark gray",textColorWordDarkMode:"dark gray",highContrastColorWordDarkMode:"dark gray",lineWidth:2,markerStyle:"diamond"}}},categoricalPalette={name:"categorical",description:"Ten maximally varied hues adapted from the Category10 sequence, for documents needing many obviously distinct styles.",styles:{1:{lineColor:"#1f77b4",markerColor:"#1f77b4",fillColor:"#1f77b4",highContrastColor:"#1f77b4",lineColorDarkMode:"#5ba3dd",markerColorDarkMode:"#5ba3dd",fillColorDarkMode:"#5ba3dd",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#e7730c",markerColor:"#e7730c",fillColor:"#e7730c",textColor:"#b95b07",highContrastColor:"#b95b07",lineColorDarkMode:"#ff9d3c",markerColorDarkMode:"#ff9d3c",fillColorDarkMode:"#ff9d3c",textColorDarkMode:"#ff9d3c",lineWidth:2,markerStyle:"square"},3:{lineColor:"#217a21",markerColor:"#217a21",fillColor:"#217a21",textColor:"#217a21",highContrastColor:"#217a21",lineColorDarkMode:"#2ca02c",markerColorDarkMode:"#2ca02c",fillColorDarkMode:"#2ca02c",textColorDarkMode:"#2ca02c",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#d62728",markerColor:"#d62728",fillColor:"#d62728",textColor:"#d62728",highContrastColor:"#d62728",lineColorDarkMode:"#e2494a",markerColorDarkMode:"#e2494a",fillColorDarkMode:"#e2494a",textColorDarkMode:"#e2494a",lineWidth:2,markerStyle:"diamond"},5:{lineColor:"#9467bd",markerColor:"#9467bd",fillColor:"#9467bd",textColor:"#8e62b5",highContrastColor:"#8e62b5",lineColorDarkMode:"#b48fd6",markerColorDarkMode:"#b48fd6",fillColorDarkMode:"#b48fd6",textColorDarkMode:"#b48fd6",lineWidth:2,markerStyle:"triangleDown"},6:{lineColor:"#7a4a41",markerColor:"#7a4a41",fillColor:"#7a4a41",textColor:"#7a4a41",highContrastColor:"#7a4a41",lineColorDarkMode:"#a9705f",markerColorDarkMode:"#a9705f",fillColorDarkMode:"#a9705f",textColorDarkMode:"#a9705f",lineColorWordDarkMode:"brown",markerColorWordDarkMode:"brown",fillColorWordDarkMode:"brown",textColorWordDarkMode:"brown",highContrastColorWordDarkMode:"brown",lineWidth:2,markerStyle:"triangleLeft"},7:{lineColor:"#d670b7",markerColor:"#d670b7",fillColor:"#d670b7",textColor:"#ab5892",highContrastColor:"#ab5892",textColorWord:"pink",highContrastColorWord:"pink",lineColorDarkMode:"#e377c2",markerColorDarkMode:"#e377c2",fillColorDarkMode:"#e377c2",textColorDarkMode:"#e377c2",lineWidth:3,lineStyle:"dashed",markerStyle:"triangleRight"},8:{lineColor:"#7f7f7f",markerColor:"#7f7f7f",fillColor:"#7f7f7f",textColor:"#757575",highContrastColor:"#757575",lineColorDarkMode:"#a8a8a8",markerColorDarkMode:"#a8a8a8",fillColorDarkMode:"#a8a8a8",textColorDarkMode:"#a8a8a8",lineWidth:1,lineStyle:"dotted",markerStyle:"circle"},9:{lineColor:"#6e6e12",markerColor:"#6e6e12",fillColor:"#6e6e12",textColor:"#6e6e12",highContrastColor:"#6e6e12",lineColorWord:"olive",markerColorWord:"olive",fillColorWord:"olive",textColorWord:"olive",highContrastColorWord:"olive",lineColorDarkMode:"#bcbd22",markerColorDarkMode:"#bcbd22",fillColorDarkMode:"#bcbd22",textColorDarkMode:"#bcbd22",lineColorWordDarkMode:"olive",markerColorWordDarkMode:"olive",fillColorWordDarkMode:"olive",textColorWordDarkMode:"olive",highContrastColorWordDarkMode:"olive",lineWidth:2,lineStyle:"dashed",markerStyle:"square"},10:{lineColor:"#12a2b1",markerColor:"#12a2b1",fillColor:"#12a2b1",textColor:"#0c818e",highContrastColor:"#0c818e",textColorWord:"cyan",highContrastColorWord:"cyan",lineColorDarkMode:"#17becf",markerColorDarkMode:"#17becf",fillColorDarkMode:"#17becf",textColorDarkMode:"#17becf",lineWidth:2,lineStyle:"dotted",markerStyle:"diamond"}}},grumpyNarwhalPalette={name:"grumpyNarwhal",description:"Six saturated hues — burnt orange, forest green, deep pink, arctic teal, gold, and purple — going neon in dark mode.",styles:{1:{lineColor:"#b34700",markerColor:"#b34700",fillColor:"#b34700",highContrastColor:"#b34700",lineColorDarkMode:"#ff5f00",markerColorDarkMode:"#ff5f00",fillColorDarkMode:"#ff5f00",lineColorWordDarkMode:"orange",markerColorWordDarkMode:"orange",fillColorWordDarkMode:"orange",lineWidth:4,markerStyle:"circle"},2:{lineColor:"#1b7a1b",markerColor:"#1b7a1b",fillColor:"#1b7a1b",textColor:"#1b7a1b",highContrastColor:"#1b7a1b",lineColorDarkMode:"#39ff14",markerColorDarkMode:"#39ff14",fillColorDarkMode:"#39ff14",textColorDarkMode:"#39ff14",lineWidth:2,markerStyle:"square"},3:{lineColor:"#c20e67",markerColor:"#c20e67",fillColor:"#c20e67",textColor:"#c20e67",highContrastColor:"#c20e67",lineColorWord:"pink",markerColorWord:"pink",fillColorWord:"pink",textColorWord:"pink",highContrastColorWord:"pink",lineColorDarkMode:"#ff1493",markerColorDarkMode:"#ff1493",fillColorDarkMode:"#ff1493",textColorDarkMode:"#ff1493",lineWidth:3,markerStyle:"triangle"},4:{lineColor:"#007a8c",markerColor:"#007a8c",fillColor:"#007a8c",textColor:"#007a8c",highContrastColor:"#007a8c",lineColorWord:"teal",markerColorWord:"teal",fillColorWord:"teal",textColorWord:"teal",highContrastColorWord:"teal",lineColorDarkMode:"#00e5ff",markerColorDarkMode:"#00e5ff",fillColorDarkMode:"#00e5ff",textColorDarkMode:"#00e5ff",lineWidth:2,markerStyle:"diamond"},5:{lineColor:"#8a6d00",markerColor:"#8a6d00",fillColor:"#8a6d00",textColor:"#8a6d00",highContrastColor:"#8a6d00",lineColorWord:"gold",markerColorWord:"gold",fillColorWord:"gold",textColorWord:"gold",highContrastColorWord:"gold",lineColorDarkMode:"#ffea00",markerColorDarkMode:"#ffea00",fillColorDarkMode:"#ffea00",textColorDarkMode:"#ffea00",lineWidth:2,markerStyle:"triangleDown"},6:{lineColor:"#b026ff",markerColor:"#b026ff",fillColor:"#b026ff",textColor:"#b026ff",highContrastColor:"#b026ff",lineColorDarkMode:"#b026ff",markerColorDarkMode:"#b026ff",fillColorDarkMode:"#b026ff",textColorDarkMode:"#b445ff",highContrastColorDarkMode:"#b445ff",lineWidth:2,markerStyle:"triangleLeft"}}};function deepFreezePalette(Br){for(const ae of Object.values(Br.styles)){for(const Me of Object.values(ae))typeof Me=="object"&&Me!==null&&Object.freeze(Me);Object.freeze(ae)}return Object.freeze(Br.styles),Object.freeze(Br)}function registerByKey(Br){return[Br.name.toLowerCase(),deepFreezePalette(Br)]}const STYLE_PALETTES=Object.assign(Object.create(null),Object.fromEntries([defaultPalette,okabeItoPalette,tolBrightPalette,tolMutedPalette,tolHighContrastPalette,ibmPalette,grayscalePalette,categoricalPalette,grumpyNarwhalPalette].map(registerByKey)));Object.freeze(STYLE_PALETTES),defaultPalette.name.toLowerCase(),Object.freeze(Object.keys(STYLE_PALETTES));var o=function(Br){var ae=Br/255;return ae<.04045?ae/12.92:Math.pow((ae+.055)/1.055,2.4)},t=function(Br){return .2126*o(Br.r)+.7152*o(Br.g)+.0722*o(Br.b)};function a11yPlugin(Br){Br.prototype.luminance=function(){return ae=t(this.rgba),(Me=2)===void 0&&(Me=0),Or===void 0&&(Or=Math.pow(10,Me)),Math.round(Or*ae)/Or+0;var ae,Me,Or},Br.prototype.contrast=function(ae){ae===void 0&&(ae="#FFF");var Me,Or,Hr,Li,ts,rs,ns,is=ae instanceof Br?ae:new Br(ae);return Li=this.rgba,ts=is.toRgb(),rs=t(Li),ns=t(ts),Me=rs>ns?(rs+.05)/(ns+.05):(ns+.05)/(rs+.05),(Or=2)===void 0&&(Or=0),Hr===void 0&&(Hr=Math.pow(10,Or)),Math.floor(Hr*Me)/Hr+0},Br.prototype.isReadable=function(ae,Me){return ae===void 0&&(ae="#FFF"),Me===void 0&&(Me={}),this.contrast(ae)>=(rs=(ts=(Or=Me).size)===void 0?"normal":ts,(Li=(Hr=Or.level)===void 0?"AA":Hr)==="AAA"&&rs==="normal"?7:Li==="AA"&&rs==="large"?3:4.5);var Or,Hr,Li,ts,rs}}function namesPlugin(Br,ae){var Me={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},Or={};for(var Hr in Me)Or[Me[Hr]]=Hr;var Li={};Br.prototype.toName=function(ts){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var rs,ns,is=Or[this.toHex()];if(is)return is;if(ts?.closest){var as=this.toRgb(),os=1/0,ss="black";if(!Li.length)for(var ls in Me)Li[ls]=new Br(Me[ls]).toRgb();for(var us in Me){var cs=(rs=as,ns=Li[us],Math.pow(rs.r-ns.r,2)+Math.pow(rs.g-ns.g,2)+Math.pow(rs.b-ns.b,2));cs<os&&(os=cs,ss=us)}return ss}},ae.string.push([function(ts){var rs=ts.toLowerCase(),ns=rs==="transparent"?"#0000":Me[rs];return ns?new Br(ns).toRgb():null},"name"])}k([a11yPlugin,namesPlugin]);let styleAttributes={lineColor:{componentType:"text",description:"Color used for line strokes (light mode)."},lineColorWord:{componentType:"text",description:"Human-readable name of the line color (light mode)."},lineColorDarkMode:{componentType:"text",description:"Color used for line strokes (dark mode)."},lineColorWordDarkMode:{componentType:"text",description:"Human-readable name of the line color (dark mode)."},lineOpacity:{componentType:"number",description:"Opacity of line strokes, 0 to 1."},lineWidth:{componentType:"number",description:"Stroke width for lines, in pixels."},lineWidthWord:{componentType:"text",description:"Human-readable name of the line width."},lineStyle:{componentType:"text",description:"Stroke style for lines.",toLowerCase:!0,validValues:[{value:"solid",description:"Continuous, unbroken stroke."},{value:"dashed",description:"Stroke composed of evenly-spaced dashes."},{value:"dotted",description:"Stroke composed of evenly-spaced dots."}]},lineStyleWord:{componentType:"text",description:"Human-readable name of the line style."},markerColor:{componentType:"text",description:"Color used for markers/points (light mode)."},markerColorWord:{componentType:"text",description:"Human-readable name of the marker color (light mode)."},markerColorDarkMode:{componentType:"text",description:"Color used for markers/points (dark mode)."},markerColorWordDarkMode:{componentType:"text",description:"Human-readable name of the marker color (dark mode)."},markerOpacity:{componentType:"number",description:"Opacity of markers/points, 0 to 1."},markerStyle:{componentType:"text",description:"Marker shape.",toLowerCase:!0,validValues:[{value:"circle",description:"Circular marker."},{value:"square",description:"Square marker."},{value:"triangle",description:'Triangular marker pointing up (alias for "triangleUp").'},{value:"triangleUp",description:"Triangular marker pointing up."},{value:"triangleDown",description:"Triangular marker pointing down."},{value:"triangleLeft",description:"Triangular marker pointing left."},{value:"triangleRight",description:"Triangular marker pointing right."},{value:"diamond",description:"Diamond-shaped marker."},{value:"cross",description:"Cross-shaped marker (×)."},{value:"plus",description:"Plus-shaped marker (+)."}]},markerStyleWord:{componentType:"text",description:"Human-readable name of the marker style."},markerSize:{componentType:"number",description:"Marker size in pixels."},markerFilled:{componentType:"boolean",description:"Whether the marker is rendered filled (true) or open (false). Has no effect when markerStyle is cross or plus, which have no interior."},fillColor:{componentType:"text",description:"Fill color used inside closed shapes (light mode)."},fillColorWord:{componentType:"text",description:"Human-readable name of the fill color (light mode)."},fillColorDarkMode:{componentType:"text",description:"Fill color used inside closed shapes (dark mode)."},fillColorWordDarkMode:{componentType:"text",description:"Human-readable name of the fill color (dark mode)."},fillOpacity:{componentType:"number",description:"Opacity of solid fills, 0 to 1."},fillPatternOpacity:{componentType:"number",description:"Opacity of pattern fills (non-solid fillStyle), 0 to 1."},fillStyle:{componentType:"text",description:"Fill pattern used inside closed shapes.",toLowerCase:!0,validValues:[{value:"solid",description:"Solid fill."},{value:"horizontal",description:"Horizontal line pattern."},{value:"vertical",description:"Vertical line pattern."},{value:"diagonal",description:"Diagonal line pattern (/)."},{value:"backDiagonal",description:"Back-diagonal line pattern (\\)."},{value:"dots",description:"Dots pattern."},{value:"diamonds",description:"Filled diamonds pattern."}]},fillStyleWord:{componentType:"text",description:"Human-readable name of the fill style."},textColor:{componentType:"text",description:"Text color (light mode)."},textColorWord:{componentType:"text",description:"Human-readable name of the text color (light mode)."},textColorDarkMode:{componentType:"text",description:"Text color (dark mode)."},textColorWordDarkMode:{componentType:"text",description:"Human-readable name of the text color (dark mode)."},highContrastColor:{componentType:"text",description:"High-contrast accent color (light mode)."},highContrastColorWord:{componentType:"text",description:"Human-readable name of the high-contrast accent color (light mode)."},highContrastColorDarkMode:{componentType:"text",description:"High-contrast accent color (dark mode)."},highContrastColorWordDarkMode:{componentType:"text",description:"Human-readable name of the high-contrast accent color (dark mode)."},backgroundColor:{componentType:"text",description:"Background color (light mode)."},backgroundColorWord:{componentType:"text",description:"Human-readable name of the background color (light mode)."},backgroundColorDarkMode:{componentType:"text",description:"Background color (dark mode)."},backgroundColorWordDarkMode:{componentType:"text",description:"Human-readable name of the background color (dark mode)."}};styleAttributes.markerStyle.validValues.filter(Br=>Br.value!=="cross"&&Br.value!=="plus");const MARKER_OVERRIDE_KEYS=["markerStyle","markerSize","markerFilled"],LINE_OVERRIDE_KEYS=["lineStyle","lineWidth"],FILL_OVERRIDE_KEYS=["fillOpacity","fillPatternOpacity","fillStyle"],markerOverrideAttributes=Object.fromEntries(MARKER_OVERRIDE_KEYS.map(Br=>[Br,styleAttributes[Br]])),lineOverrideAttributes=Object.fromEntries(LINE_OVERRIDE_KEYS.map(Br=>[Br,styleAttributes[Br]])),fillOverrideAttributes=Object.fromEntries(FILL_OVERRIDE_KEYS.map(Br=>[Br,styleAttributes[Br]]));({...markerOverrideAttributes,...lineOverrideAttributes,...fillOverrideAttributes});const STYLE_OVERRIDE_CATEGORIES={marker:markerOverrideAttributes,line:lineOverrideAttributes,fill:fillOverrideAttributes};for(const[Br,ae]of Object.entries(STYLE_OVERRIDE_CATEGORIES))for(const[Me,Or]of Object.entries(ae)){if(Me.toLowerCase().includes("color"))throw new Error(`Style override category "${Br}" contains color-related key "${Me}"; colors stay <styleDefinition>-only so per-styleNumber WCAG contrast diagnostics remain authoritative. If this is intentional, also reconcile the lowercase asymmetry in returnSelectedStyleStateVariableDefinition.`);if(Me.endsWith("Opacity")&&Me!=="fillOpacity"&&Me!=="fillPatternOpacity")throw new Error(`Style override category "${Br}" contains contrast-feeding opacity key "${Me}"; lineOpacity and markerOpacity feed the WCAG contrast diagnostic as an opacityMultiplier on the foreground alpha, so they stay <styleDefinition>-only alongside colors. Only fillOpacity and fillPatternOpacity are contrast-irrelevant and overridable.`);if(Or.componentType==="text"&&!Or.toLowerCase)throw new Error(`Style override key "${Me}" in category "${Br}" is text-typed but missing toLowerCase: true. Add toLowerCase: true to its styleAttributes entry, or move it out of the override surface.`)}Object.entries(styleAttributes).filter(([,Br])=>Br.toLowerCase).map(([Br])=>Br);var base32$1={exports:{}},hasRequiredBase32;function requireBase32(){return hasRequiredBase32||(hasRequiredBase32=1,(function(Br){(function(){var ae=typeof window=="object"?window:{},Me=!ae.HI_BASE32_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;Me&&(ae=commonjsGlobal);var Or=!ae.HI_BASE32_NO_COMMON_JS&&!0&&Br.exports,Hr="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".split(""),Li={A:0,B:1,C:2,D:3,E:4,F:5,G:6,H:7,I:8,J:9,K:10,L:11,M:12,N:13,O:14,P:15,Q:16,R:17,S:18,T:19,U:20,V:21,W:22,X:23,Y:24,Z:25,2:26,3:27,4:28,5:29,6:30,7:31},ts=[0,0,0,0,0,0,0,0],rs=function(ds,ps){ps.length>10&&(ps="..."+ps.substr(-10));var ms=new Error("Decoded data is not valid UTF-8. Maybe try base32.decode.asBytes()? Partial data after reading "+ds+" bytes: "+ps+" <-");throw ms.position=ds,ms},ns=function(ds){for(var ps="",ms=ds.length,fs=0,hs=0,gs,ys;fs<ms;){if(gs=ds[fs++],gs<=127){ps+=String.fromCharCode(gs);continue}else gs>191&&gs<=223?(ys=gs&31,hs=1):gs<=239?(ys=gs&15,hs=2):gs<=247?(ys=gs&7,hs=3):rs(fs,ps);for(var xs=0;xs<hs;++xs)gs=ds[fs++],(gs<128||gs>191)&&rs(fs,ps),ys<<=6,ys+=gs&63;ys>=55296&&ys<=57343&&rs(fs,ps),ys>1114111&&rs(fs,ps),ys<=65535?ps+=String.fromCharCode(ys):(ys-=65536,ps+=String.fromCharCode((ys>>10)+55296),ps+=String.fromCharCode((ys&1023)+56320))}return ps},is=function(ds){if(ds==="")return[];if(!/^[A-Z2-7=]+$/.test(ds))throw new Error("Invalid base32 characters");ds=ds.replace(/=/g,"");for(var ps,ms,fs,hs,gs,ys,xs,bs,vs=[],Cs=0,Ts=ds.length,As=0,Ns=Ts>>3<<3;As<Ns;)ps=Li[ds.charAt(As++)],ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],ys=Li[ds.charAt(As++)],xs=Li[ds.charAt(As++)],bs=Li[ds.charAt(As++)],vs[Cs++]=(ps<<3|ms>>>2)&255,vs[Cs++]=(ms<<6|fs<<1|hs>>>4)&255,vs[Cs++]=(hs<<4|gs>>>1)&255,vs[Cs++]=(gs<<7|ys<<2|xs>>>3)&255,vs[Cs++]=(xs<<5|bs)&255;var _s=Ts-Ns;return _s===2?(ps=Li[ds.charAt(As++)],ms=Li[ds.charAt(As++)],vs[Cs++]=(ps<<3|ms>>>2)&255):_s===4?(ps=Li[ds.charAt(As++)],ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],vs[Cs++]=(ps<<3|ms>>>2)&255,vs[Cs++]=(ms<<6|fs<<1|hs>>>4)&255):_s===5?(ps=Li[ds.charAt(As++)],ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],vs[Cs++]=(ps<<3|ms>>>2)&255,vs[Cs++]=(ms<<6|fs<<1|hs>>>4)&255,vs[Cs++]=(hs<<4|gs>>>1)&255):_s===7&&(ps=Li[ds.charAt(As++)],ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],ys=Li[ds.charAt(As++)],xs=Li[ds.charAt(As++)],vs[Cs++]=(ps<<3|ms>>>2)&255,vs[Cs++]=(ms<<6|fs<<1|hs>>>4)&255,vs[Cs++]=(hs<<4|gs>>>1)&255,vs[Cs++]=(gs<<7|ys<<2|xs>>>3)&255),vs},as=function(ds){for(var ps,ms,fs,hs,gs,ys="",xs=ds.length,bs=0,vs=parseInt(xs/5)*5;bs<vs;)ps=ds.charCodeAt(bs++),ms=ds.charCodeAt(bs++),fs=ds.charCodeAt(bs++),hs=ds.charCodeAt(bs++),gs=ds.charCodeAt(bs++),ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[(fs<<1|hs>>>7)&31]+Hr[hs>>>2&31]+Hr[(hs<<3|gs>>>5)&31]+Hr[gs&31];var Cs=xs-vs;return Cs===1?(ps=ds.charCodeAt(bs),ys+=Hr[ps>>>3]+Hr[ps<<2&31]+"======"):Cs===2?(ps=ds.charCodeAt(bs++),ms=ds.charCodeAt(bs),ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[ms<<4&31]+"===="):Cs===3?(ps=ds.charCodeAt(bs++),ms=ds.charCodeAt(bs++),fs=ds.charCodeAt(bs),ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[fs<<1&31]+"==="):Cs===4&&(ps=ds.charCodeAt(bs++),ms=ds.charCodeAt(bs++),fs=ds.charCodeAt(bs++),hs=ds.charCodeAt(bs),ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[(fs<<1|hs>>>7)&31]+Hr[hs>>>2&31]+Hr[hs<<3&31]+"="),ys},os=function(ds){var ps,ms,fs,hs,gs,ys,xs=!1,bs="",vs=0,Cs,Ts=0,As=ds.length;if(ds==="")return bs;do{for(ts[0]=ts[5],ts[1]=ts[6],ts[2]=ts[7],Cs=Ts;vs<As&&Cs<5;++vs)ys=ds.charCodeAt(vs),ys<128?ts[Cs++]=ys:ys<2048?(ts[Cs++]=192|ys>>6,ts[Cs++]=128|ys&63):ys<55296||ys>=57344?(ts[Cs++]=224|ys>>12,ts[Cs++]=128|ys>>6&63,ts[Cs++]=128|ys&63):(ys=65536+((ys&1023)<<10|ds.charCodeAt(++vs)&1023),ts[Cs++]=240|ys>>18,ts[Cs++]=128|ys>>12&63,ts[Cs++]=128|ys>>6&63,ts[Cs++]=128|ys&63);Ts=Cs-5,vs===As&&++vs,vs>As&&Cs<6&&(xs=!0),ps=ts[0],Cs>4?(ms=ts[1],fs=ts[2],hs=ts[3],gs=ts[4],bs+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[(fs<<1|hs>>>7)&31]+Hr[hs>>>2&31]+Hr[(hs<<3|gs>>>5)&31]+Hr[gs&31]):Cs===1?bs+=Hr[ps>>>3]+Hr[ps<<2&31]+"======":Cs===2?(ms=ts[1],bs+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[ms<<4&31]+"===="):Cs===3?(ms=ts[1],fs=ts[2],bs+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[fs<<1&31]+"==="):(ms=ts[1],fs=ts[2],hs=ts[3],bs+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[(fs<<1|hs>>>7)&31]+Hr[hs>>>2&31]+Hr[hs<<3&31]+"=")}while(!xs);return bs},ss=function(ds){for(var ps,ms,fs,hs,gs,ys="",xs=ds.length,bs=0,vs=parseInt(xs/5)*5;bs<vs;)ps=ds[bs++],ms=ds[bs++],fs=ds[bs++],hs=ds[bs++],gs=ds[bs++],ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[(fs<<1|hs>>>7)&31]+Hr[hs>>>2&31]+Hr[(hs<<3|gs>>>5)&31]+Hr[gs&31];var Cs=xs-vs;return Cs===1?(ps=ds[bs],ys+=Hr[ps>>>3]+Hr[ps<<2&31]+"======"):Cs===2?(ps=ds[bs++],ms=ds[bs],ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[ms<<4&31]+"===="):Cs===3?(ps=ds[bs++],ms=ds[bs++],fs=ds[bs],ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[fs<<1&31]+"==="):Cs===4&&(ps=ds[bs++],ms=ds[bs++],fs=ds[bs++],hs=ds[bs],ys+=Hr[ps>>>3]+Hr[(ps<<2|ms>>>6)&31]+Hr[ms>>>1&31]+Hr[(ms<<4|fs>>>4)&31]+Hr[(fs<<1|hs>>>7)&31]+Hr[hs>>>2&31]+Hr[hs<<3&31]+"="),ys},ls=function(ds,ps){var ms=typeof ds!="string";return ms&&ds.constructor===ArrayBuffer&&(ds=new Uint8Array(ds)),ms?ss(ds):ps?as(ds):os(ds)},us=function(ds,ps){if(!ps)return ns(is(ds));if(ds==="")return"";if(!/^[A-Z2-7=]+$/.test(ds))throw new Error("Invalid base32 characters");var ms,fs,hs,gs,ys,xs,bs,vs,Cs="",Ts=ds.indexOf("=");Ts===-1&&(Ts=ds.length);for(var As=0,Ns=Ts>>3<<3;As<Ns;)ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],ys=Li[ds.charAt(As++)],xs=Li[ds.charAt(As++)],bs=Li[ds.charAt(As++)],vs=Li[ds.charAt(As++)],Cs+=String.fromCharCode((ms<<3|fs>>>2)&255)+String.fromCharCode((fs<<6|hs<<1|gs>>>4)&255)+String.fromCharCode((gs<<4|ys>>>1)&255)+String.fromCharCode((ys<<7|xs<<2|bs>>>3)&255)+String.fromCharCode((bs<<5|vs)&255);var _s=Ts-Ns;return _s===2?(ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],Cs+=String.fromCharCode((ms<<3|fs>>>2)&255)):_s===4?(ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],Cs+=String.fromCharCode((ms<<3|fs>>>2)&255)+String.fromCharCode((fs<<6|hs<<1|gs>>>4)&255)):_s===5?(ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],ys=Li[ds.charAt(As++)],Cs+=String.fromCharCode((ms<<3|fs>>>2)&255)+String.fromCharCode((fs<<6|hs<<1|gs>>>4)&255)+String.fromCharCode((gs<<4|ys>>>1)&255)):_s===7&&(ms=Li[ds.charAt(As++)],fs=Li[ds.charAt(As++)],hs=Li[ds.charAt(As++)],gs=Li[ds.charAt(As++)],ys=Li[ds.charAt(As++)],xs=Li[ds.charAt(As++)],bs=Li[ds.charAt(As++)],Cs+=String.fromCharCode((ms<<3|fs>>>2)&255)+String.fromCharCode((fs<<6|hs<<1|gs>>>4)&255)+String.fromCharCode((gs<<4|ys>>>1)&255)+String.fromCharCode((ys<<7|xs<<2|bs>>>3)&255)),Cs},cs={encode:ls,decode:us};us.asBytes=is,Or?Br.exports=cs:ae.base32=cs})()})(base32$1)),base32$1.exports}requireBase32();function groupCompositeRanges({children:Br,ranges:ae,isAbsent:Me=()=>!1,isBlank:Or=()=>!1,skipRange:Hr=()=>!1,trimEnd:Li=is=>is,startInd:ts=0,endInd:rs=Br.length-1,removedInd:ns=null}){const is=(ae??[]).flatMap(us=>{const cs=shiftForRemovedChild(us,ns);return cs&&cs.firstInd>=ts&&cs.lastInd<=rs?[{range:us,...cs}]:[]}).sort((us,cs)=>us.firstInd-cs.firstInd||cs.lastInd-us.lastInd),as={range:null,firstInd:ts,lastInd:rs,nextInd:ts,eligibility:null,items:[],eligible:[]},os=[as];function ss(us,cs){for(;us.nextInd<cs;us.nextInd++){const ds=Br[us.nextInd];Me(ds)||(us.items.push({kind:"child",value:ds,index:us.nextInd}),us.eligibility&&us.eligible.push(us.eligibility[us.nextInd-us.firstInd]??!1))}}function ls(){const us=os.pop();if(ss(us,us.lastInd+1),us.items.length===0)return;const cs=os[os.length-1],ds=us.items.filter(fs=>!isBlankGroup(fs,Or)),ps=us.eligible.every((fs,hs)=>fs||isBlankGroup(us.items[hs],Or)),ms=!!us.range.asList&&ps&&ds.length>1;cs.items.push({kind:"composite",range:us.range,asList:ms,items:ms?prepareListItems(us.items,Or,Li):us.items}),cs.eligibility&&cs.eligible.push(ps)}for(const{range:us,firstInd:cs,lastInd:ds}of is){for(;os.length>1&&ds>os[os.length-1].lastInd;)ls();const ps=os[os.length-1];cs<ps.nextInd||(ss(ps,cs),ps.nextInd=ds+1,!Hr(us)&&os.push({range:us,firstInd:cs,lastInd:ds,nextInd:cs,eligibility:us.potentialListComponents??null,items:[],eligible:[]}))}for(;os.length>1;)ls();return ss(as,rs+1),as.items}function shiftForRemovedChild(Br,ae){let{firstInd:Me,lastInd:Or}=Br;if(ae===null)return{firstInd:Me,lastInd:Or};if(!(Me===ae||Or===ae))return Me>ae&&(Me-=1),Or>ae&&(Or-=1),{firstInd:Me,lastInd:Or}}function isBlankGroup(Br,ae){return Br.kind==="child"?ae(Br.value):Br.items.every(Me=>isBlankGroup(Me,ae))}function prepareListItems(Br,ae,Me){const Or=Br.findIndex(ts=>!isBlankGroup(ts,ae));let Hr=Br.length-1;for(;Hr>Or&&isBlankGroup(Br[Hr],ae);)Hr--;const Li=[];for(const[ts,rs]of Br.entries())ts<Or||ts>=Hr?Li.push(rs):isBlankGroup(rs,ae)?rs.kind==="composite"&&Li.push(withoutBlankChildren(rs)):Li.push(trimItemEnd(rs,ae,Me));return Li}function withoutBlankChildren(Br){return{...Br,items:Br.items.flatMap(ae=>ae.kind==="composite"?[withoutBlankChildren(ae)]:[])}}function trimItemEnd(Br,ae,Me){if(Br.kind==="child"){const Li=Me(Br.value);return Li===Br.value?Br:{...Br,value:Li}}let Or=Br.items.length;for(;isBlankGroup(Br.items[Or-1],ae);)Or--;const Hr=Br.items.slice(Or).flatMap(Li=>Li.kind==="composite"?[withoutBlankChildren(Li)]:[]);return{...Br,items:[...Br.items.slice(0,Or-1),trimItemEnd(Br.items[Or-1],ae,Me),...Hr]}}const{gcd,lcm}=Context.math,{mod}=Context.math,{dopri}=Context.math,defaultCreativeCommonsVersion="4.0";function creativeCommonsLicense(Br,ae,Me,Or){return{code:Br,name:`Creative Commons ${ae}`,description:Or,kind:"creative-commons",url:(Hr=defaultCreativeCommonsVersion)=>`https://creativecommons.org/licenses/${Me}/${Hr}/`}}function fixedUrlLicense(Br,ae,Me,Or,Hr){return{code:Br,name:ae,description:Or,kind:Hr,url:()=>Me}}const mediaLicenses=[creativeCommonsLicense("CC-BY","Attribution","by","Creative Commons Attribution: reuse with credit, including commercially."),creativeCommonsLicense("CC-BY-SA","Attribution-ShareAlike","by-sa","Creative Commons Attribution-ShareAlike: reuse with credit; adaptations keep the same license."),creativeCommonsLicense("CC-BY-ND","Attribution-NoDerivatives","by-nd","Creative Commons Attribution-NoDerivatives: reuse unchanged, with credit."),creativeCommonsLicense("CC-BY-NC","Attribution-NonCommercial","by-nc","Creative Commons Attribution-NonCommercial: reuse with credit for noncommercial purposes."),creativeCommonsLicense("CC-BY-NC-SA","Attribution-NonCommercial-ShareAlike","by-nc-sa","Creative Commons Attribution-NonCommercial-ShareAlike: noncommercial reuse with credit; adaptations keep the same license."),creativeCommonsLicense("CC-BY-NC-ND","Attribution-NonCommercial-NoDerivatives","by-nc-nd","Creative Commons Attribution-NonCommercial-NoDerivatives: reuse unchanged for noncommercial purposes, with credit."),fixedUrlLicense("CC0","CC0 1.0 Public Domain Dedication","https://creativecommons.org/publicdomain/zero/1.0/","Creative Commons Zero: the creator has dedicated the work to the public domain.","public-domain"),fixedUrlLicense("PDM","Public Domain Mark 1.0","https://creativecommons.org/publicdomain/mark/1.0/","Public Domain Mark: the work is free of known copyright restrictions.","public-domain"),fixedUrlLicense("GFDL","GNU Free Documentation License","https://www.gnu.org/licenses/fdl-1.3.html","GNU Free Documentation License: copyleft license common on Wikimedia.","license"),fixedUrlLicense("FAL","Free Art License 1.3","https://artlibre.org/licence/lal/en/","Free Art License: copyleft license for artistic works.","license"),fixedUrlLicense("OGL","Open Government Licence v3.0 (UK)","https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/","UK Open Government Licence: reuse government material with attribution.","license"),fixedUrlLicense("MIT","MIT License","https://opensource.org/license/mit","MIT License: permissive license common for icon and illustration sets.","license"),fixedUrlLicense("APACHE-2.0","Apache License 2.0","https://www.apache.org/licenses/LICENSE-2.0","Apache License 2.0: permissive license common for icon and illustration sets.","license")];Object.fromEntries(mediaLicenses.map(Br=>[Br.code.toLowerCase(),Br]));var cssesc_1,hasRequiredCssesc;function requireCssesc(){if(hasRequiredCssesc)return cssesc_1;hasRequiredCssesc=1;var Br={},ae=Br.hasOwnProperty,Me=function(ns,is){if(!ns)return is;var as={};for(var os in is)as[os]=ae.call(ns,os)?ns[os]:is[os];return as},Or=/[ -,\.\/:-@\[-\^`\{-~]/,Hr=/[ -,\.\/:-@\[\]\^`\{-~]/,Li=/(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g,ts=function rs(ns,is){is=Me(is,rs.options),is.quotes!="single"&&is.quotes!="double"&&(is.quotes="single");for(var as=is.quotes=="double"?'"':"'",os=is.isIdentifier,ss=ns.charAt(0),ls="",us=0,cs=ns.length;us<cs;){var ds=ns.charAt(us++),ps=ds.charCodeAt(),ms=void 0;if(ps<32||ps>126){if(ps>=55296&&ps<=56319&&us<cs){var fs=ns.charCodeAt(us++);(fs&64512)==56320?ps=((ps&1023)<<10)+(fs&1023)+65536:us--}ms="\\"+ps.toString(16).toUpperCase()+" "}else is.escapeEverything?Or.test(ds)?ms="\\"+ds:ms="\\"+ps.toString(16).toUpperCase()+" ":/[\t\n\f\r\x0B]/.test(ds)?ms="\\"+ps.toString(16).toUpperCase()+" ":ds=="\\"||!os&&(ds=='"'&&as==ds||ds=="'"&&as==ds)||os&&Hr.test(ds)?ms="\\"+ds:ms=ds;ls+=ms}return os&&(/^-[-\d]/.test(ls)?ls="\\-"+ls.slice(1):/\d/.test(ss)&&(ls="\\3"+ss+" "+ls.slice(1))),ls=ls.replace(Li,function(hs,gs,ys){return gs&&gs.length%2?hs:(gs||"")+ys}),!os&&is.wrap?as+ls+as:ls};return ts.options={escapeEverything:!1,isIdentifier:!1,quotes:"single",wrap:!1},ts.version="3.0.0",cssesc_1=ts,cssesc_1}requireCssesc();function isBlankChild(Br){return typeof Br=="string"&&Br.trim()===""}function makeWrapperElement(Br,ae,Me){return{type:"element",name:ae,attributes:{},children:Me,data:{id:Br}}}function materializeGroups(Br,ae,Me){const Or=[];for(const Hr of Br){if(Hr.kind==="child"){Hr.value!==null&&Or.push(Hr.value);continue}if(Hr.asList){const ts=Hr.items.map(as=>isBlankGroup(as,isBlankChild)),rs=ts.indexOf(!1),ns=ts.lastIndexOf(!1),is=Hr.items.slice(rs,ns+1).filter((as,os)=>!ts[rs+os]);ae||Or.push(...materializeGroups(Hr.items.slice(0,rs),!1,Me)),Me.push(makeWrapperElement(Hr.range.compositeIdx,"asList",materializeGroups(is,!0,Me))),Or.push({id:Hr.range.compositeIdx,annotation:"original"}),ae||Or.push(...materializeGroups(Hr.items.slice(ns+1),!1,Me));continue}const Li=materializeGroups(Hr.items,!1,Me);ae&&Li.length>1?(Me.push(makeWrapperElement(Hr.range.compositeIdx,"_fragment",Li)),Or.push({id:Hr.range.compositeIdx,annotation:"original"})):Or.push(...Li)}return Or}function applyCompositeListWrapping(Br,ae){const Me=groupCompositeRanges({children:Br,ranges:ae,isAbsent:Li=>Li===null,isBlank:isBlankChild,trimEnd:Li=>typeof Li=="string"?Li.trimEnd():Li}),Or=[];return{children:materializeGroups(Me,!1,Or),wrapperElements:Or}}function propRename(Br,ae){for(const[Me,Or]of Object.entries(ae))Br.hasOwnProperty(Me)&&(Br[Or]=Br[Me],delete Br[Me])}function elementRename(Br,ae){Br.name=ae}function booleanInputJsToRust(Br){Br.immediateValue=Br.value}function pointJsToRust(Br){const ae=Br.numericalXs;Br.x={math_object:ae[0].toString()},ae.length>=2&&(Br.y={math_object:ae[1].toString()}),ae.length>=3&&(Br.z={math_object:ae[2].toString()}),Br.coordsLatex=Br.latex}function refJsToRust(Br,ae){Br.referent=ae[Br.targetRendererId]}function sectionJsToRust(Br,ae){Br.divisionType=ae.name,Br.divisionDepth=Br.level;const Me=Br.titleChildName!=null?Number(Br.titleChildName):void 0,Or=Me!==void 0&&Number.isInteger(Me);if(Br.xrefLabel={label:(Or?Br.titlePrefix:Br.title)??"",global_ident:Br.sectionNumber??"",local_ident:Br.sectionNumber??"",preferred_form:"Global"},Br.codeNumber="",Or){Br.title=Me;const Hr=ae.children.findIndex(Li=>typeof Li!="string"&&Li.id===Me);Hr!==-1&&ae.children.splice(Hr,1)}else Br.title=null}function tableJsToRust(Br,ae){Br.xrefLabel={label:Br.tableName??"",global_ident:Br.tableEnumeration??"",local_ident:Br.tableEnumeration??"",preferred_form:"Global"},Br.codeNumber=Br.tableEnumeration??"",Br.titlePrefix=Br.suppressTableNameInTitle?"":Br.tableNamePrefix??"",Br.divisionType="table",Br.divisionDepth=3;const Me=Br.titleChildName!=null?Number(Br.titleChildName):void 0;if(Me!==void 0&&Number.isInteger(Me)){Br.title=Me;const Hr=ae.children.findIndex(Li=>typeof Li!="string"&&Li.id===Me);Hr!==-1&&ae.children.splice(Hr,1)}else Br.title=null;delete Br.tableEnumeration,delete Br.titleChildName,delete Br.tableName,delete Br.tableNamePrefix}function textJsToRust(Br){Br.value=Br.text}function childInstructionToContent(Br,ae){return typeof Br=="string"?Br:(ae[Br.id]=Br.componentIdx,{id:Br.componentIdx,annotation:"original"})}function applyElementJsToRustFixups(Br,ae){if(!(Br?.type!=="element"||!Br.data.props))switch(Br.name){case"angle":propRename(Br.data.props,{latexForRenderer:"latex"});break;case"cell":propRename(Br.data.props,{inHeader:"header"});break;case"booleanInput":booleanInputJsToRust(Br.data.props);break;case"text":textJsToRust(Br.data.props);break;case"aside":case"article":case"section":sectionJsToRust(Br.data.props,Br),Br.name==="section"&&elementRename(Br,"division");break;case"table":tableJsToRust(Br.data.props,Br);break;case"point":pointJsToRust(Br.data.props);break;case"ref":refJsToRust(Br.data.props,ae);break;case"coords":elementRename(Br,"math");break}}function flatDastFromJS(Br,ae){const Me=ae[0].rendererStatesToUpdate,Or=[],Hr={[Br.id]:Br.componentIdx};Or[Br.componentIdx]={type:"element",name:Br.componentType,attributes:{},children:[],data:{id:Br.componentIdx,action_names:Object.keys(Br.actions)}};for(const ts of Me){let rs=Or[ts.componentIdx];if(rs||(rs=Or[ts.componentIdx]={type:"element",name:"",attributes:{},children:[],data:{id:ts.componentIdx}}),rs.type==="element"&&(rs.data.props=ts.stateValues,ts.childrenInstructions)){const ns=[];for(const os of ts.childrenInstructions){if(os==null){ns.push(null);continue}if(ns.push(childInstructionToContent(os,Hr)),typeof os=="string")continue;const ss=Or[os.componentIdx];ss?ss.type==="element"&&(ss.name=os.componentType,ss.data.id=os.componentIdx,ss.data.action_names=Object.keys(os.actions)):Or[os.componentIdx]={type:"element",name:os.componentType,attributes:{},children:[],data:{id:os.componentIdx,action_names:Object.keys(os.actions)}}}const{children:is,wrapperElements:as}=applyCompositeListWrapping(ns,ts.stateValues?._compositeReplacementActiveRange);rs.children=is;for(const os of as)Or[os.data.id]=os}}for(const ts of Or)applyElementJsToRustFixups(ts,Hr);return{type:"root",children:[{id:Br.componentIdx,annotation:"original"}],elements:Or,warnings:[]}}function collectInstructionMaps(Br,ae={},Me={}){for(const Or of Br)for(const Hr of Or.rendererStatesToUpdate)for(const Li of Hr.childrenInstructions??[])Li!=null&&typeof Li!="string"&&(ae[Li.componentIdx]=Li.componentType,Me[Li.id]=Li.componentIdx);return{componentIdxToName:ae,doenetIdToComponentIdx:Me}}function seedInstructionMaps(Br,ae){const Me={[Br.componentIdx]:Br.componentType},Or={[Br.id]:Br.componentIdx};return collectInstructionMaps(ae,Me,Or),{componentIdxToName:Me,doenetIdToComponentIdx:Or}}function flatDastUpdateFromJS(Br,ae,Me={}){const Or={};function Hr(Li,ts){const rs=Or[Li];rs?(rs.changedState={...rs.changedState,...ts.changedState},ts.newChildren&&(rs.newChildren=ts.newChildren),ts.newFlatDastElement&&(rs.newFlatDastElement=ts.newFlatDastElement)):Or[Li]=ts}for(const Li of Br)for(const ts of Li.rendererStatesToUpdate){const{componentIdx:rs,stateValues:ns,childrenInstructions:is}=ts,as=[];if(is)for(const cs of is){if(cs==null){as.push(null);continue}as.push(childInstructionToContent(cs,Me))}const{children:os,wrapperElements:ss}=applyCompositeListWrapping(as,ns?._compositeReplacementActiveRange),ls={type:"element",name:ae[rs]??"",children:os,data:{id:rs,props:{...ns}}};applyElementJsToRustFixups(ls,Me);const us={changedState:ls.data.props};is&&(us.newChildren=ls.children),Hr(rs,us);for(const cs of ss)Hr(cs.data.id,{newFlatDastElement:cs})}return Or}async function resolvePathImmediatelyToNodeIdx(Br,ae,Me,Or=0){if(!Me.core)return-1;const Hr=Br.match(/^([\w-]+)((\[\d+\])*)/);if(!Hr)throw Error(`Invalid name to resolve: ${Br}`);const Li=[{type:"flatPathPart",name:Hr[1],index:extractIndex(Hr[2])}];let ts=Br.slice(Hr[0].length);for(;ts.length>0;){const rs=ts.match(/^\.([\w-]+)((\[\d+\])*)/);if(!rs)throw Error(`Invalid name to resolve: ${Br}`);Li.push({type:"flatPathPart",name:rs[1],index:extractIndex(rs[2])}),ts=ts.slice(rs[0].length)}try{let rs=ae.resolve_path({path:Li},Or,!1);for(;rs.unresolvedPath!==null;){if(rs.unresolvedPath[0].name!=="")return-1;const ns=Me.core._components[rs.nodeIdx];if(!Me.core.componentInfoObjects.isCompositeComponent({componentType:ns.componentType,includeNonStandard:!0})||ns.isExpanded)return-1;const as=rs.unresolvedPath[0].index;if(as.length===0)throw Error("Something went wrong as we have a ref resolution without a name or an index");if(typeof as[0].value[0]!="string")throw Error("Not implemented: we have not implemented `resolvePathImmediatelyToNodeIdx` for paths that contain references to nodes.");await ns.stateValues.readyToExpandWhenResolved,await expandCompositeComponent({core:Me.core,component:ns}),rs=ae.resolve_path({path:Li},Or,!1)}return rs.nodeIdx}catch(rs){return console.error(rs),-1}}function extractIndex(Br){const ae=[];for(const Me of Br.matchAll(/\[(\d+)\]/g))ae.push({value:[Me[1]]});return ae}const JS_CORE_ACTION_NAME_OVERRIDES={point:{move:"movePoint"},graph:{changeBoundingBox:"changeAxisLimits"}};function translateJsCoreActionName(Br,ae){return Br==null?ae:JS_CORE_ACTION_NAME_OVERRIDES[Br]?.[ae]??ae}const WASM_FILE_NAME="lib_doenetml_worker_bg.wasm";function injectedGlobal(Br){const ae=globalThis[Br];return typeof ae=="string"?ae:void 0}function decodeWasmDataUrl(Br){try{const ae=Br.split(",")[1],Me=atob(ae),Or=new Uint8Array(Me.length);for(let Hr=0;Hr<Me.length;Hr++)Or[Hr]=Me.charCodeAt(Hr);return Or.buffer}catch(ae){return console.warn("Error while decoding the WASM data URL:",ae),null}}function wasmUrlCandidates(){const Br=[];function ae(Hr){Br.includes(Hr)||Br.push(Hr)}const Me=injectedGlobal("__doenetWorkerWasmUrl");Me!==void 0&&ae(Me);const Or=[injectedGlobal("__doenetWorkerScriptUrl"),typeof location<"u"?location.href:void 0];for(const Hr of Or)if(Hr!==void 0)try{ae(new URL(WASM_FILE_NAME,Hr).href)}catch{}return ae(`https://cdn.jsdelivr.net/npm/@doenet/standalone@0.7.26-dev.560/doenetml-worker/${WASM_FILE_NAME}`),Br}async function resolveWasmInput(){const Br=injectedGlobal("__doenetWorkerWasmUrl");if(Br!==void 0&&/^data:.*;base64,/.test(Br)){const Me=decodeWasmDataUrl(Br);if(Me)return Me}let ae;for(const Me of wasmUrlCandidates())if(!Me.startsWith("data:"))try{const Or=await fetch(Me);if(!Or.ok)throw Error(`HTTP ${Or.status} fetching ${Me}`);const Hr=Or.headers.get("Content-Type")??"";if(/^text\/html\b/i.test(Hr))throw Error(`Fetching ${Me} returned ${Hr}, an HTML page rather than WebAssembly`);return Or}catch(Or){ae=Or}throw ae??Error("No URL to load the core WASM from")}if(typeof globalThis<"u"&&!globalThis.document){const Br=new URL(typeof location<"u"?location.href:"http://localhost"),ae=Br.protocol+"//"+Br.host+Br.pathname;globalThis.document={URL:ae,baseURI:ae}}let wasmInitPromise=null;function ensureWasmInitialized(){return wasmInitPromise||(wasmInitPromise=(async()=>{const Br=await resolveWasmInput();return await __wbg_init({module_or_path:Br})})().catch(Br=>{throw wasmInitPromise=null,Br})),wasmInitPromise}const RELEASED_INITIALIZATION_DATA_MESSAGE="Cannot initialize from the document DAST: it was released when the previous initialization completed. Call setSource again before re-initializing.";class CoreWorker{constructor(){this.wasm_initialized=!1,this.javascript_initialized=!1,this.source_set=!1,this._initializationDataReleased=!1,this.flags_set=!1,this.core_type="rust",this._javascriptUpdateBuffer=[],this._capturingJavascriptUpdates=!1,this._componentIdxToName={},this._doenetIdToComponentIdx={},this._javascriptInitialRenderDone=!1,this.isProcessingPromise=Promise.resolve(),this._hostedCores=new Map,this._nextHostedCoreId=1,this._isHostedCore=!1}async createCore(ae){const Me=new CoreWorker;Me._isHostedCore=!0,expose(Me,ae);const Or=this._nextHostedCoreId++;return this._hostedCores.set(Or,{core:Me,port:ae}),Or}async destroyCore(ae){const Me=this._hostedCores.get(ae);if(Me){this._hostedCores.delete(ae);try{await Me.core.terminate()}catch(Or){console.error("Error terminating hosted core",Or)}finally{Me.port.close()}}}setCoreType(ae){this.core_type=ae}async setSource(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{this.wasm_initialized||(await ensureWasmInitialized(),this.wasm_initialized=!0),this.doenetCore||(this.doenetCore=PublicDoenetMLCore$1.new()),this.core_type==="javascript"&&(this.javascriptCore||(this.javascriptCore=new PublicDoenetMLCore),this.javascriptCore.setSource(ae.source)),this.doenetCore.set_source(ae.dast,ae.source),this.source_set=!0,this._initializationDataReleased=!1}catch(Li){throw console.error("Error when setting source",Li),Li}finally{Hr()}}async setFlags(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{this.wasm_initialized||(await ensureWasmInitialized(),this.wasm_initialized=!0),this.doenetCore||(this.doenetCore=PublicDoenetMLCore$1.new()),this.core_type==="javascript"&&(this.javascriptCore||(this.javascriptCore=new PublicDoenetMLCore),this.javascriptCore.setFlags(ae.flags)),this.doenetCore.set_flags(JSON.stringify(ae.flags)),this.flags_set=!0}finally{Hr()}}async setLocaleData(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{this.core_type==="javascript"&&(this.javascriptCore||(this.javascriptCore=new PublicDoenetMLCore),this.javascriptCore.setLocaleData(ae.localeData))}finally{Hr()}}async initializeJavascriptCore({activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr}){const Li=this.isProcessingPromise;let{promise:ts,resolve:rs}=promiseWithResolver();this.isProcessingPromise=ts,await Li;try{let ns=function(){return us.calculate_root_names()},is=function(ds,ps,ms){return us.resolve_path(ds,ps,ms)},as=function(ds,ps){us.add_nodes_to_resolver(ds,ps)},os=function(ds,ps){us.replace_index_resolutions_in_resolver(ds,ps)},ss=function(ds){us.delete_nodes_from_resolver(ds)};if(!this.source_set||!this.flags_set||!this.javascriptCore||!this.doenetCore)throw Error("Cannot initialize javascript core before setting source and flags");if(this._initializationDataReleased)throw Error(RELEASED_INITIALIZATION_DATA_MESSAGE);let ls=this.doenetCore.return_normalized_dast_root();const us=this.doenetCore,cs=await this.javascriptCore.initializeWorker({activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr,normalizedRoot:ls,addNodesToResolver:as,replaceIndexResolutionsInResolver:os,deleteNodesFromResolver:ss,resolvePath:is,calculateRootNames:ns});return this.javascript_initialized=!0,this.doenetCore.release_initialization_data(),this._initializationDataReleased=!0,cs}catch(ns){throw console.error(ns),ns}finally{rs()}}async generateJavascriptDast(ae,Me,Or,Hr,Li,ts,rs,ns){const is=this.isProcessingPromise;let{promise:as,resolve:os}=promiseWithResolver();if(this.isProcessingPromise=as,await is,!this.javascript_initialized||!this.javascriptCore)throw Error("Cannot return javascript dast before initializing javascript core");try{return await this.javascriptCore?.createCoreGenerateDast(ae,Me,Or,Hr,Li,ts,rs,ns)}catch(ss){throw console.error(ss),ss}finally{os()}}async returnDast(){const ae=this.isProcessingPromise;let{promise:Me,resolve:Or}=promiseWithResolver();if(this.isProcessingPromise=Me,await ae,!this.source_set||!this.flags_set||!this.doenetCore)throw Error("Cannot return dast before setting source and flags");try{return this.core_type==="javascript"?await this.returnFlatDastFromJS():this.doenetCore.return_dast()}catch(Hr){throw console.error(Hr),Hr}finally{Or()}}async returnNormalizedDastRoot(){if(!this.source_set||!this.doenetCore)throw Error("Cannot return normalized dast root before setting source");if(this.core_type==="javascript")return{nodes:[]};if(this._initializationDataReleased)throw Error(RELEASED_INITIALIZATION_DATA_MESSAGE);return this.doenetCore.return_normalized_dast_root()}async returnFlatDastFromJS(){if(!this.javascriptCore||!this.doenetCore)throw Error("Cannot return dast before setting source and flags");if(this._initializationDataReleased)throw Error(RELEASED_INITIALIZATION_DATA_MESSAGE);let ae=this.doenetCore.return_normalized_dast_root();const Me=this.doenetCore;function Or(){return Me.calculate_root_names()}function Hr(ys,xs,bs){return Me.resolve_path(ys,xs,bs)}function Li(ys,xs){Me.add_nodes_to_resolver(ys,xs)}function ts(ys,xs){Me.replace_index_resolutions_in_resolver(ys,xs)}function rs(ys){Me.delete_nodes_from_resolver(ys)}await this.javascriptCore.initializeWorker({activityId:"a",docId:"a",requestedVariantIndex:1,attemptNumber:1,normalizedRoot:ae,addNodesToResolver:Li,replaceIndexResolutionsInResolver:ts,deleteNodesFromResolver:rs,resolvePath:Hr,calculateRootNames:Or}),this.javascript_initialized=!0,this.doenetCore.release_initialization_data(),this._initializationDataReleased=!0;const ns={coreId:"a",cid:null,initializeCounters:{}};let is=null;this._javascriptUpdateBuffer=[];const as=ys=>{ys.init?is=ys.updateInstructions:this._capturingJavascriptUpdates&&ys.updateInstructions&&this._javascriptUpdateBuffer.push(...ys.updateInstructions)},os=ys=>{},ss=ys=>{},ls=ys=>{},us=ys=>{},cs=ys=>{},ds=ys=>Promise.resolve({allowView:!0}),ps=await this.javascriptCore.createCoreGenerateDast(ns,as,os,ss,ls,us,cs,ds);if(!ps.success)throw console.error(ps.errMsg),Error(ps.errMsg);if(is===null)throw Error("Need to address case where do not get updateRenderersCallback before dast");const ms=ps.coreInfo.documentToRender,{componentIdxToName:fs,doenetIdToComponentIdx:hs}=seedInstructionMaps(ms,is);return this._componentIdxToName=fs,this._doenetIdToComponentIdx=hs,this._javascriptInitialRenderDone=!0,flatDastFromJS(ms,is)}async dispatchActionJavascript(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();if(this.isProcessingPromise=Or,await Me,!this.source_set||!this.flags_set||!this.javascriptCore)throw Error("Cannot handle action before setting source and flags");try{return await this.javascriptCore.requestAction(ae)}catch(Li){throw console.error(Li),Li}finally{Hr()}}async dispatchActionJavascriptFlat(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{if(!this.source_set||!this.flags_set||!this.javascriptCore)throw Error("Cannot handle action before setting source and flags");if(!this._javascriptInitialRenderDone)throw Error("Cannot dispatch a flat action before the initial render (returnDast) has run");this._javascriptUpdateBuffer=[],this._capturingJavascriptUpdates=!0;const Li=ae.componentIdx!=null?this._componentIdxToName[ae.componentIdx]:void 0,ts=translateJsCoreActionName(Li,ae.actionName),rs=await this.javascriptCore.requestAction({...ae,actionName:ts});if(rs&&typeof rs=="object"&&"success"in rs&&rs.success===!1){const is=ts===ae.actionName?`"${ae.actionName}"`:`"${ae.actionName}" (translated to "${ts}")`;throw Error(`Action ${is} failed: ${rs.errMsg??"unknown error"}`)}this._capturingJavascriptUpdates=!1;const ns=this._javascriptUpdateBuffer;return this._javascriptUpdateBuffer=[],collectInstructionMaps(ns,this._componentIdxToName,this._doenetIdToComponentIdx),flatDastUpdateFromJS(ns,this._componentIdxToName,this._doenetIdToComponentIdx)}catch(Li){throw console.error(Li),Li}finally{this._capturingJavascriptUpdates=!1,Hr()}}async resolvePath(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();if(this.isProcessingPromise=Or,await Me,!this.source_set||!this.flags_set||!this.doenetCore)throw Error("Cannot resolve a path before setting source and flags");try{return this.doenetCore.resolve_path(ae.path,ae.origin,ae.skipParentSearch)}finally{Hr()}}async dispatchAction(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();if(this.isProcessingPromise=Or,await Me,!this.source_set||!this.flags_set||!this.doenetCore)throw Error("Cannot handle action before setting source and flags");try{return this.doenetCore.dispatch_action(ae)}catch(Li){throw console.error(Li),Li}finally{Hr()}}async resolvePathJavascript(ae,Me=0){const Or=this.isProcessingPromise;let{promise:Hr,resolve:Li}=promiseWithResolver();if(this.isProcessingPromise=Hr,await Or,!this.source_set||!this.flags_set||!this.doenetCore||!this.javascriptCore)throw Error("Cannot resolve path before setting source and flags");try{return await resolvePathImmediatelyToNodeIdx(ae,this.doenetCore,this.javascriptCore,Me)}catch(ts){throw console.error(ts),ts}finally{Li()}}async terminate(){const ae=this.isProcessingPromise;let{promise:Me,resolve:Or}=promiseWithResolver();if(this.isProcessingPromise=Me,await ae,this.doenetCore?.free(),this.doenetCore=void 0,this.source_set=!1,this.flags_set=!1,this.javascriptCore)try{await this.javascriptCore.terminate()}catch(Hr){throw console.error(Hr),Hr}finally{Or()}else Or();this._isHostedCore||close()}async returnAllStateVariables(ae=!1){return this.javascriptCore?this.javascriptCore.returnAllStateVariables(ae):{}}handleVisibilityChange(ae){this.javascriptCore&&this.javascriptCore.handleVisibilityChange(ae)}async submitAllAnswers(){this.javascriptCore&&this.javascriptCore.submitAllAnswers()}async saveImmediately(){this.javascriptCore&&this.javascriptCore.saveImmediately()}async flushState(){return this.javascriptCore?await this.javascriptCore.flushState():!1}async _getTests(){return this.doenetCore?._get_tests()}async _runTest(ae){return this.doenetCore?._run_test(ae)}}function promiseWithResolver(){let Br,ae;return{promise:new Promise((Or,Hr)=>{Br=Or,ae=Hr}),resolve:Br,reject:ae}}expose(new CoreWorker);function _mergeNamespaces$1(Br,ae){for(var Me=0;Me<ae.length;Me++){const Or=ae[Me];if(typeof Or!="string"&&!Array.isArray(Or)){for(const Hr in Or)if(Hr!=="default"&&!(Hr in Br)){const Li=Object.getOwnPropertyDescriptor(Or,Hr);Li&&Object.defineProperty(Br,Hr,Li.get?Li:{enumerable:!0,get:()=>Or[Hr]})}}}return Object.freeze(Object.defineProperty(Br,Symbol.toStringTag,{value:"Module"}))}var sha256$3={exports:{}},convertHex$1={exports:{}},convertHex=convertHex$1.exports,hasRequiredConvertHex;function requireConvertHex(){return hasRequiredConvertHex||(hasRequiredConvertHex=1,(function(Br){(function(ae){var Me={bytesToHex:function(Li){return Or(Li)},hexToBytes:function(Li){if(Li.length%2===1)throw new Error("hexToBytes can't have a string with an odd number of characters.");return Li.indexOf("0x")===0&&(Li=Li.slice(2)),Li.match(/../g).map(function(ts){return parseInt(ts,16)})}};function Or(Li){return Li.map(function(ts){return Hr(ts.toString(16),2)}).join("")}function Hr(Li,ts){return Li.length>ts?Li:Array(ts-Li.length+1).join("0")+Li}Br.exports?Br.exports=Me:ae.convertHex=Me})(convertHex)})(convertHex$1)),convertHex$1.exports}var convertString$1={exports:{}},convertString=convertString$1.exports,hasRequiredConvertString;function requireConvertString(){return hasRequiredConvertString||(hasRequiredConvertString=1,(function(Br){(function(ae){var Me={bytesToString:function(Or){return Or.map(function(Hr){return String.fromCharCode(Hr)}).join("")},stringToBytes:function(Or){return Or.split("").map(function(Hr){return Hr.charCodeAt(0)})}};Me.UTF8={bytesToString:function(Or){return decodeURIComponent(escape(Me.bytesToString(Or)))},stringToBytes:function(Or){return Me.stringToBytes(unescape(encodeURIComponent(Or)))}},Br.exports?Br.exports=Me:ae.convertString=Me})(convertString)})(convertString$1)),convertString$1.exports}var sha256$2=sha256$3.exports,hasRequiredSha256;function requireSha256(){return hasRequiredSha256||(hasRequiredSha256=1,(function(Br){(function(ae){var Me={};Br.exports?(Me.bytesToHex=requireConvertHex().bytesToHex,Me.convertString=requireConvertString(),Br.exports=ns):(Me.bytesToHex=ae.convertHex.bytesToHex,Me.convertString=ae.convertString,ae.sha256=ns);var Or=[];(function(){function is(ls){for(var us=Math.sqrt(ls),cs=2;cs<=us;cs++)if(!(ls%cs))return!1;return!0}function as(ls){return(ls-(ls|0))*4294967296|0}for(var os=2,ss=0;ss<64;)is(os)&&(Or[ss]=as(Math.pow(os,.3333333333333333)),ss++),os++})();var Hr=function(is){for(var as=[],os=0,ss=0;os<is.length;os++,ss+=8)as[ss>>>5]|=is[os]<<24-ss%32;return as},Li=function(is){for(var as=[],os=0;os<is.length*32;os+=8)as.push(is[os>>>5]>>>24-os%32&255);return as},ts=[],rs=function(is,as,os){for(var ss=is[0],ls=is[1],us=is[2],cs=is[3],ds=is[4],ps=is[5],ms=is[6],fs=is[7],hs=0;hs<64;hs++){if(hs<16)ts[hs]=as[os+hs]|0;else{var gs=ts[hs-15],ys=(gs<<25|gs>>>7)^(gs<<14|gs>>>18)^gs>>>3,xs=ts[hs-2],bs=(xs<<15|xs>>>17)^(xs<<13|xs>>>19)^xs>>>10;ts[hs]=ys+ts[hs-7]+bs+ts[hs-16]}var vs=ds&ps^~ds&ms,Cs=ss&ls^ss&us^ls&us,Ts=(ss<<30|ss>>>2)^(ss<<19|ss>>>13)^(ss<<10|ss>>>22),As=(ds<<26|ds>>>6)^(ds<<21|ds>>>11)^(ds<<7|ds>>>25),Ns=fs+As+vs+Or[hs]+ts[hs],_s=Ts+Cs;fs=ms,ms=ps,ps=ds,ds=cs+Ns|0,cs=us,us=ls,ls=ss,ss=Ns+_s|0}is[0]=is[0]+ss|0,is[1]=is[1]+ls|0,is[2]=is[2]+us|0,is[3]=is[3]+cs|0,is[4]=is[4]+ds|0,is[5]=is[5]+ps|0,is[6]=is[6]+ms|0,is[7]=is[7]+fs|0};function ns(is,as){is.constructor===String&&(is=Me.convertString.UTF8.stringToBytes(is));var os=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],ss=Hr(is),ls=is.length*8;ss[ls>>5]|=128<<24-ls%32,ss[(ls+64>>9<<4)+15]=ls;for(var us=0;us<ss.length;us+=16)rs(os,ss,us);var cs=Li(os);return as&&as.asBytes?cs:as&&as.asString?Me.convertString.bytesToString(cs):Me.bytesToHex(cs)}ns.x2=function(is,as){return ns(ns(is,{asBytes:!0}),as)}})(sha256$2)})(sha256$3)),sha256$3.exports}var sha256Exports=requireSha256();const sha256=getDefaultExportFromCjs$1(sha256Exports),sha256$1=_mergeNamespaces$1({__proto__:null,default:sha256},[sha256Exports]),sha256DT5xJ2HvHNAN6Jrk=Object.freeze(Object.defineProperty({__proto__:null,s:sha256$1},Symbol.toStringTag,{value:"Module"}));return exports.CoreWorker=CoreWorker,Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),exports})({});
2867
2867
  //# sourceMappingURL=index.js.map