diff --git a/src/frontend/apps/e2e/__tests__/app-impress/assets/doc-export-PDF-browser-regressions.pdf b/src/frontend/apps/e2e/__tests__/app-impress/assets/doc-export-PDF-browser-regressions.pdf index fa19d24cc..5133801ec 100644 Binary files a/src/frontend/apps/e2e/__tests__/app-impress/assets/doc-export-PDF-browser-regressions.pdf and b/src/frontend/apps/e2e/__tests__/app-impress/assets/doc-export-PDF-browser-regressions.pdf differ diff --git a/src/frontend/apps/e2e/__tests__/app-impress/assets/doc-export-regressions.pdf b/src/frontend/apps/e2e/__tests__/app-impress/assets/doc-export-regressions.pdf index 66ae7a17f..48bbeedc1 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/assets/doc-export-regressions.pdf +++ b/src/frontend/apps/e2e/__tests__/app-impress/assets/doc-export-regressions.pdf @@ -6,7 +6,7 @@ /ca 1 >> endobj -12 0 obj +14 0 obj << /Type /ExtGState /CA 1 @@ -27,48 +27,44 @@ endobj /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /ExtGState << /Gs1 9 0 R -/Gs2 12 0 R +/Gs2 14 0 R >> /Font << /F2 10 0 R /F3 11 0 R -/F10 13 0 R -/F24 14 0 R +/F10 15 0 R +>> +/XObject << +/I1 12 0 R +/I2 13 0 R >> /ColorSpace << >> >> endobj -22 0 obj +18 0 obj << -/S /URI -/URI (http://localhost:3000/docs/022d048c-6d07-4e58-b3fc-9c43a28712e9/) +/Type /Page +/Parent 1 0 R +/MediaBox [0 0 595.280029 841.890015] +/Contents 16 0 R +/Resources 17 0 R +/UserUnit 1.388889 >> endobj -23 0 obj +17 0 obj << -/Subtype /Link -/A 22 0 R -/Type /Annot -/Rect [35 490.995483 38.292969 508.995483] -/Border [0 0 0] -/F 4 +/ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/ExtGState << +/Gs2 14 0 R +/Gs1 9 0 R >> -endobj -24 0 obj -<< -/S /URI -/URI (http://localhost:3000/docs/022d048c-6d07-4e58-b3fc-9c43a28712e9/) +/Font << +/F24 19 0 R +/F2 10 0 R +>> +/ColorSpace << >> -endobj -25 0 obj -<< -/Subtype /Link -/A 24 0 R -/Type /Annot -/Rect [38.292969 491.490015 50.292969 509.490015] -/Border [0 0 0] -/F 4 >> endobj 27 0 obj @@ -82,7 +78,7 @@ endobj /Subtype /Link /A 27 0 R /Type /Annot -/Rect [50.292969 490.995483 53.585938 508.995483] +/Rect [35 490.995483 38.292969 508.995483] /Border [0 0 0] /F 4 >> @@ -98,89 +94,94 @@ endobj /Subtype /Link /A 29 0 R /Type /Annot -/Rect [53.585938 490.995483 142.367188 508.995483] +/Rect [38.292969 491.490015 50.292969 509.490015] /Border [0 0 0] /F 4 >> endobj -31 0 obj +32 0 obj << /S /URI /URI (http://localhost:3000/docs/022d048c-6d07-4e58-b3fc-9c43a28712e9/) >> endobj -32 0 obj +33 0 obj << /Subtype /Link -/A 31 0 R +/A 32 0 R +/Type /Annot +/Rect [50.292969 490.995483 53.585938 508.995483] +/Border [0 0 0] +/F 4 +>> +endobj +34 0 obj +<< +/S /URI +/URI (http://localhost:3000/docs/022d048c-6d07-4e58-b3fc-9c43a28712e9/) +>> +endobj +35 0 obj +<< +/Subtype /Link +/A 34 0 R +/Type /Annot +/Rect [53.585938 490.995483 142.367188 508.995483] +/Border [0 0 0] +/F 4 +>> +endobj +36 0 obj +<< +/S /URI +/URI (http://localhost:3000/docs/022d048c-6d07-4e58-b3fc-9c43a28712e9/) +>> +endobj +37 0 obj +<< +/Subtype /Link +/A 36 0 R /Type /Annot /Rect [142.367188 490.995483 145.660156 508.995483] /Border [0 0 0] /F 4 >> endobj -17 0 obj +22 0 obj << /Type /Page /Parent 1 0 R /MediaBox [0 0 595.280029 841.890015] -/Contents 15 0 R -/Resources 16 0 R +/Contents 20 0 R +/Resources 21 0 R /UserUnit 1.388889 -/Annots [23 0 R 25 0 R 28 0 R 30 0 R 32 0 R] +/Annots [28 0 R 30 0 R 33 0 R 35 0 R 37 0 R] >> endobj -16 0 obj +21 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /ExtGState << /Gs1 9 0 R -/Gs2 12 0 R +/Gs2 14 0 R >> /Font << /F2 10 0 R -/F1 19 0 R +/F1 24 0 R /F3 11 0 R -/F37 20 0 R -/F42 21 0 R ->> -/XObject << -/I1 18 0 R -/I2 26 0 R -/I3 33 0 R -/I4 34 0 R -/I5 35 0 R -/I6 36 0 R -/I7 37 0 R -/I8 38 0 R -/I9 39 0 R ->> -/ColorSpace << ->> ->> -endobj -42 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [0 0 595.280029 841.890015] -/Contents 40 0 R -/Resources 41 0 R -/UserUnit 1.388889 ->> -endobj -41 0 obj -<< -/ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/ExtGState << -/Gs1 9 0 R +/F37 25 0 R +/F42 26 0 R >> /XObject << +/I3 23 0 R +/I4 31 0 R +/I5 38 0 R +/I6 39 0 R +/I7 40 0 R +/I8 41 0 R +/I9 42 0 R /I10 43 0 R >> -/Font << -/F2 10 0 R ->> /ColorSpace << >> >> @@ -192,10 +193,10 @@ endobj (react-pdf) endobj 55 0 obj -(D:20260505110445Z) +(D:20260519193319Z) endobj 56 0 obj -(chromium-4903-0-doc-export-override-content) +(chromium-2538-0-doc-export-override-content) endobj 52 0 obj << @@ -205,7 +206,7 @@ endobj /Title 56 0 R >> endobj -19 0 obj +24 0 obj << /Type /Font /BaseFont /Helvetica @@ -216,7 +217,7 @@ endobj 58 0 obj << /Type /FontDescriptor -/FontName /HRJUFI+Inter18pt-Regular +/FontName /ICGQIN+Inter18pt-Regular /Flags 4 /FontBBox [-742.1875 -323.242187 2579.589844 1109.375] /ItalicAngle 0 @@ -232,7 +233,7 @@ endobj << /Type /Font /Subtype /CIDFontType2 -/BaseFont /HRJUFI+Inter18pt-Regular +/BaseFont /ICGQIN+Inter18pt-Regular /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) @@ -247,7 +248,7 @@ endobj << /Type /Font /Subtype /Type0 -/BaseFont /HRJUFI+Inter18pt-Regular +/BaseFont /ICGQIN+Inter18pt-Regular /Encoding /Identity-H /DescendantFonts [59 0 R] /ToUnicode 60 0 R @@ -256,7 +257,7 @@ endobj 62 0 obj << /Type /FontDescriptor -/FontName /XKLDZR+Inter18pt-Bold +/FontName /COFOOE+Inter18pt-Bold /Flags 4 /FontBBox [-790.527344 -334.472656 2580.566406 1114.746094] /ItalicAngle 0 @@ -272,7 +273,7 @@ endobj << /Type /Font /Subtype /CIDFontType2 -/BaseFont /XKLDZR+Inter18pt-Bold +/BaseFont /COFOOE+Inter18pt-Bold /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) @@ -287,7 +288,7 @@ endobj << /Type /Font /Subtype /Type0 -/BaseFont /XKLDZR+Inter18pt-Bold +/BaseFont /COFOOE+Inter18pt-Bold /Encoding /Identity-H /DescendantFonts [63 0 R] /ToUnicode 64 0 R @@ -296,7 +297,7 @@ endobj 66 0 obj << /Type /FontDescriptor -/FontName /QHBJWW+Inter18pt-Italic +/FontName /SIECWW+Inter18pt-Italic /Flags 68 /FontBBox [-747.558594 -323.242187 2595.703125 1109.375] /ItalicAngle -9.398804 @@ -312,7 +313,7 @@ endobj << /Type /Font /Subtype /CIDFontType2 -/BaseFont /QHBJWW+Inter18pt-Italic +/BaseFont /SIECWW+Inter18pt-Italic /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) @@ -323,11 +324,11 @@ endobj /CIDToGIDMap /Identity >> endobj -13 0 obj +15 0 obj << /Type /Font /Subtype /Type0 -/BaseFont /QHBJWW+Inter18pt-Italic +/BaseFont /SIECWW+Inter18pt-Italic /Encoding /Identity-H /DescendantFonts [67 0 R] /ToUnicode 68 0 R @@ -336,7 +337,7 @@ endobj 70 0 obj << /Type /FontDescriptor -/FontName /NBHLIK+GeistMono-Regular +/FontName /XUXSGJ+GeistMono-Regular /Flags 5 /FontBBox [-1738 -247 654 1012] /ItalicAngle 0 @@ -352,22 +353,22 @@ endobj << /Type /Font /Subtype /CIDFontType2 -/BaseFont /NBHLIK+GeistMono-Regular +/BaseFont /XUXSGJ+GeistMono-Regular /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> /FontDescriptor 70 0 R -/W [0 [500 600 600 600 600 600]] +/W [0 [500 600 600 600 600 600 600 600 600 600 600 600]] /CIDToGIDMap /Identity >> endobj -14 0 obj +19 0 obj << /Type /Font /Subtype /Type0 -/BaseFont /NBHLIK+GeistMono-Regular +/BaseFont /XUXSGJ+GeistMono-Regular /Encoding /Identity-H /DescendantFonts [71 0 R] /ToUnicode 72 0 R @@ -376,7 +377,7 @@ endobj 74 0 obj << /Type /FontDescriptor -/FontName /VMRKYJ+Inter18pt-BoldItalic +/FontName /GRLMEW+Inter18pt-BoldItalic /Flags 68 /FontBBox [-795.898437 -334.472656 2596.191406 1114.746094] /ItalicAngle -9.398804 @@ -392,7 +393,7 @@ endobj << /Type /Font /Subtype /CIDFontType2 -/BaseFont /VMRKYJ+Inter18pt-BoldItalic +/BaseFont /GRLMEW+Inter18pt-BoldItalic /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) @@ -403,17 +404,17 @@ endobj /CIDToGIDMap /Identity >> endobj -20 0 obj +25 0 obj << /Type /Font /Subtype /Type0 -/BaseFont /VMRKYJ+Inter18pt-BoldItalic +/BaseFont /GRLMEW+Inter18pt-BoldItalic /Encoding /Identity-H /DescendantFonts [75 0 R] /ToUnicode 76 0 R >> endobj -21 0 obj +26 0 obj << /Type /Font /BaseFont /Helvetica-Bold @@ -449,7 +450,7 @@ endobj endobj 47 0 obj << -/Dest [17 0 R /XYZ 595.280029 828.640015 0] +/Dest [22 0 R /XYZ 595.280029 828.640015 0] /Parent 4 0 R /Title (Hello Title Toggle) /Prev 46 0 R @@ -458,7 +459,7 @@ endobj endobj 48 0 obj << -/Dest [17 0 R /XYZ 595.280029 833.640015 0] +/Dest [22 0 R /XYZ 595.280029 833.640015 0] /Parent 4 0 R /Title (Hello title 4) /Prev 47 0 R @@ -467,7 +468,7 @@ endobj endobj 49 0 obj << -/Dest [17 0 R /XYZ 595.280029 833.640015 0] +/Dest [22 0 R /XYZ 595.280029 833.640015 0] /Parent 4 0 R /Title (Hello title 5) /Prev 48 0 R @@ -476,7 +477,7 @@ endobj endobj 50 0 obj << -/Dest [17 0 R /XYZ 595.280029 833.640015 0] +/Dest [22 0 R /XYZ 595.280029 833.640015 0] /Parent 4 0 R /Title (Hello title 6) /Prev 49 0 R @@ -485,7 +486,7 @@ endobj endobj 51 0 obj << -/Dest [17 0 R /XYZ 595.280029 828.640015 0] +/Dest [22 0 R /XYZ 595.280029 828.640015 0] /Parent 4 0 R /Title (copy/pasting out of doc) /Prev 50 0 R @@ -512,7 +513,7 @@ endobj << /Type /Pages /Count 3 -/Kids [8 0 R 17 0 R 42 0 R] +/Kids [8 0 R 18 0 R 22 0 R] >> endobj 2 0 obj @@ -626,27 +627,34 @@ endstream endobj 69 0 obj << -/Length 2894 +/Length 3564 /Filter /FlateDecode >> stream -x湱W_lG熧>;踘邼輑觐ym邱韂R;򠉻届拶塢铅籌C頱;IC挦!-)%)WBH>OH}璎CK奝Am 捚蚏S儭^郗諿裑嵎S&屌祺Xa鞧c锫)黟k3(\s┛X酐3侣V魌 X牢"鎀屽!bp[F碮Ss,眣杉碇詫;u8許o沏栂跍y護ks"枽#囋昌z碘%x睈{锁4鸴c壑仈塱u瑖r殏揕#,檧勑g効瘤瓲F袹X蘥Rim擠3襬硥敵嵤:;9奯;砿<噷W齲$-^K胼pW6&補鶞贜鴽贕,_嬪+躁柉R徽5j迭j,?B韈栠Hm2膻Z6崿嗲璐d劦N榎> -3雱}k聥⌒皹hI?蠳鮲h*俟蘧3燱7欤謩}增>j{a祡皬趍皬趡谿韛谿欤6k awX囟砨犺駣0K9挥;襜毋8 -VGL*e鑔齚=膥砎*O擻E瞨h漿馁e脕婷X-鋽>'庬}u桙i瘐]躦庿粁俵土0帼癟G2b窌砣g娜"@邇眃瘧5&$赖棗' .nqxx+):@SPN{e敦浃棖肠a錀辨迧4#'4赢 QR榪o(唈7>u媑SB6鎥Eh'弅叒]x+)NeI塊b农昀猼煖S卝8blb噏罕殰`瑆烳贪("唺凷?*V$%zI 颶%椒!_鲄丵弹 37嵀塂S 7'hS娾51¨泂矲:i_4H痁(勚嬣刘.a飾淼h檾騉末嚝B84闓柤8.:番鉔5騘诌摄8符7Hg躜﹠吖涐Xb4 嫋貨^唍攃0陙T4+vbF)0欜/魘hvh:%▔銚派 伏&5)cJO矘l:7Q錕诗9<毊{z{)虫棜5k.8$耤彲滒霈柔擮>`| -笋x回 %鰻&/栢nco輀,Jh1 鴶德8@槺Vx02 &q嚴g圕鄆jy  -菐z唜:F}杧:N{*'*鞩鞩`8塁`8N嚴〡"虚@/Bz:鐴鑣乛勎z:鐴鑭$嚆黌/=Q|>匊/捰優嵽鐀字8桞H痲^匿钡U魝桟H3^ -!芽坲j/厫WBH剹凛范+A/9凞B3k劘啇_ !k虢7BH鬿啇枳0矲鳹壈B"糵璴 -緇叇(抃?M(優%!鲾//胩钮 +x湱WolWro憯)墧HQ6y┱[\也$R碙9魭攍蒖(YN杤\憱d;疂'u\'Ms5蔗屸p(P\姦!(r頠nR]P0妦h佫!@=燛q@Q#\f棓暥@%炀y3筠厅f藜屙[0{嬌,peズ誊亏黏瘈Q-灋k_[jO柞隄顢囸覘^画诅#x阒JC>絴眭K頫鷲1蠉+護遯鏜蔦簈鵽}>蟈嫙qZz閺 s5琔I樾3?<介擃藷c񠝱茦黲+鱿觃?c;Z 佰靋蘼_骐|]-/齌.錹入庉 +k庐x麽撿H6﨣$=?m宮^>蔹L贲鼃*雝$k;<z刄応,黦Y栯涳颃惋4嬉#灄䴕c与/珥琪藗兴糽镕峺瑥O芓6@摐J睌!o熤镼涥琘iB覮鍊臧徻j9Σ=避?駘PX≈眠澇E頬涙藚贏毌{櫵`卹粗O琌紀1轢Zh/?-頎睴U[柱;B鵙Mb瓴 +鋋h*sY"弱)Yb騟&q.嚼$/*狓s(.MU&U-c赁X06w銂苘锷bjH灖Z欂黒/u(;査0IVeI}嫨姮*o2Y鎁迄 SV諓l柍綕徬芒<犟u恼罹驹H:=<耵軿81<峢泎9泒yj丽O:s嬖鸫碱/急皃X諶G_z衽棽Y途姅1焃酻"7鹉 昁*g憄 屄廣蕺眙#掖tjゎ7O]蟜療珂!无+顫]x"/. pD!v#橩2?=-B%;oX暶呇U$)%虵a"寴奂m垷.蒆矵{3D!2BFP箜#u鲀F衭=0#/寧 ,宔窍Jm嬮T鷟f沱||jffj/(%`鎱縬'強蔝叄$@&SU +肴#岱暻螪鱁>j%毋<鰪vP陘[_R氫蛽現$B枾嬎G;俦z甌堊鰸H廵'缦鯇.鐔#欘濰W俯逍駒顸釞6怤v祧7蕷圀=n轣> .毾牳鍂T帄FYK鹩4V窭!习賠.説撓K嘇fA"耎w*hS冕岚 圌葸~恺o篝越{Sur姎4K>`谕爝蒴7麟璣E鍽螫戻萅 +娑箓y轨.輯訩Ud`|疲JTE&9櫒o芋D=蟲釜钚%tb;t*hYOo鬷:櫇:詗"=gF'训_g{羞暮y7!q弦瑷S厼~,胻畤脷演罪瘮G2鴹r顓雕#驱逯涚*W侇纞s^<27鹘衾翱鏒0)XG挒 麮[藬詓pj轏闙嘼絿躃$/拈s噑&c灾Geа蓩*G鰺CWb奊A倽f"聆T,)聃崜港牺挽琜cYl稪3+(顑1庼y鴮蘌_Q+J﹢o7aFEu谔殐m盽秀嬈QPTV'8滮'暎G&>\酂L e扛緻鰁麸螾O煝疎鯶巫鮈{"K訹8 =::漇0zl+鏰r借搂駶苕邝vr謞`飦幮-RE)另t潲e瓷櫅凫蜋凫嵡{?=觞鸖蟽滬嘀+?+>8莖-O?w懵w烤2眖1竟o.螳R?罘蛊ɑ鵭 yx[も攦莤]ew伷暉R硤+導8倅2蚿嘬'e磴{w:裹 懂`峐槤v 俤婸I(颠-^α+琏8_LZ0:銘Q.禊;暇鬓輐拤腺恉 肠5k*嶜蜌F3f虲c梇笠x垃鵫寷F础'緻%!蘭聨-酠W権&燠農吅蒁k|8訥n琏鴅圤嘷輬廎裱貎鴋霦|4!>崌垙皮ゞ潅=l耹gEG鱼暭揜$侦)桥a溓#8 +擔.4鸚jD)F妅-Z*Nī<\囱)梳m痨3b)求vsu娍l泅┚焨鼔箅紁苋訤x榖M餿qX獧5搼lBd'U詮"EWO険愆照Ic=钠艊畫)脃8勄谢:Dj +趇V3K焐荳V搯甮W辩睗jz逸Oh喺兄E厇Jn蝵犺}狋u&4m肶aLT剸騫璓穝o%%_YFQ釸匵蒞+蚤炯 +仔 湄 罕汄祺#嗃S54$CE俩看+v$'z 飠'}b 厫m`毡0瞼i|K$鶆1IF)嬊 \[皳z:y_g赇W=B肱煸鰋7塐z *鵪穣抩かB8_箲鶪扨懠]娾N粘錮m悋pnO鞇蜧K;ぶS讆諍)柒_e癭奵馯鳩5啝vUEB揵+奛萒焳.騏|燳n鑄嶰'陷卢5岙i,?桇WSL郧Z斩z墪雫N徟撵X 垴P}G1奅拉O噔m5kRA愊檏孧(佮D虣k茚虄p8gHgq杢坸瀟坸羭^e冣U6p梬斔;Oz湪I稀.悶C +9",偍怣"猟搱媎搱%9 b檛圶!". +牣8~鯍QW繄鶸/9~u蓠嫧繄0蝞%饐397]萚򒏨{wm]缍K捨珟紗陪[箕3sV躴IZ窈K掹]霺W鴘$厈.I +o@鼬謣o:3G7\捲遰IRM+柬挙饀$呥傤砙闾鮫$禟掹籜YW$匲$卭歬{/[I.釭赻賷 飱恵Jw梪饪o肚c endstream endobj 72 0 obj << -/Length 245 +/Length 273 /Filter /FlateDecode >> stream -x淽惲n 嗭<厪怼活E毢K荭e{&CZr熔L諭硠ハ鰋c髃鬈Y伩'{尃峌g0鄅,玧PF茘人Ix茡竉鐖Sg祪=ョV=)7>荿兟`幌kO憕颃'幀mA韓驴 亾粜⿺7q=$誣徘j猹|I:叧儼#叉槵mt矕覘"袋岱絴f(儀弒伓-树恀价`(虉w1鲫:'貆^ 8vp(市顧6#$蓣"鋾喏A鮓癖Y剼窲#q#p睂z垄=動2湲@-6%b罘歗*漏IP &8F8绮{俢係:w;摝J .9瞗$i> stream -x渳Q -1 界+v抝 .鑝むA<7p瘥mg闤棻$鋏5e${,!b叜[W宂nL哼脉繟瓐GX瞴蓌(晋Zc谽蹣N異{*仟 刵谮V鲡楨縡成額r徽|尞寬K -蜎6渡$e橠杊靼!m.ajF粣F毦 +*綹櫭JyoG +x溳VMo 襟+al!U=d赢訡-逍衜)瓟巑Xc>l6q.2~藜1p +X.8㑳9gU %U-y褏/p毶顕譞軒拤訝皖(椠-牏肹"卍鮻字]艑m'7^w_鋫A褋4戗9顬脟{8Cu賆N=9蜟?滏 奤`桶" XK軻篍 胼g +反鵉43K澅嶠绎,谓Y楸asd蚜Y1蕠M nuQ嚩鑜忬亟獼玢”杺L厩葨+帴 ]>淺淟遬佐 uJJ=皾{M覝$f5u1晬6#qw悻, endstream endobj 6 0 obj << -/Length 1393 +/Length 1322 /Filter /FlateDecode >> stream -x滍薾6甬,冕汙郈6@R!!戫6@k例 II+q*癌礶J趁醜8) --Z1)N酐钕r0廅KGE*ˉ.  }凭纩怇孀woD)Ω肟v輥GG6dxs5:牒B?iZ\輛^+Db迂Li浢/D2乁"B櫞 .鹜Q:g} 寜B}W?w?^U绀&陥縋戴,{妑A6TΑ+] UIe 槧滿 -扺!Z′缦#=㏎菾%〤0植<)扵 狾咗sS4.蒳]貑*U遂'|w3鈟翟返d<筈 -a嫋\Xk)稊dP馯仕áV4隃fe溠勮Ro價1j仓44粂 nQ<漡Z!Tn鳇2諑塨觽U觌霆M谯癹 $[y磥5g堿 综 s詇X钿髤憋痦Z 1輟B`,蕇~飍$w馽乎蘱鄘m}鳐鸐|滽A"`%鉭MN vLtq嘲hI═璈V磢菱4淝}Gu2@ -. 摗稍a|F膦E欒躻4偭。 f鷔]吉8b3d怷梐UHfG+笩6牉蓥Y娞幜<&榿權 ;y燿6觋>S.a 29C6鸷8?亠-uh楣 -I飢≡95@觨b籆硤h9鎬釯9徟园# )/v.鸦矫%ホ 6t隠$髍剭囇D_|8怊s鼘]裠垲殼7*篺瀔公脥凪)苂溝#,sDu朡 藚鶠b Ox″筹蘃硢朞⑽紘Z>4j-5斖e>F筫6|{I%2m倨喯 標房t^]v>"腚┒黖槕=#穝砂a踋 -g踨沪z' X攵斖茦g飂迄厸=4JD 9翅#9>辀馑`R傞倞劊 -!h/L革礈脵蝐s飕Чs鄥L錘k疘垽Eq>f:雸5彽d~諴庢穐5結洢!燞8挌枋LtPyv个g饾Lg赴u荫娉6陹l韷軁器J隻癕樨勭煄璟︺鉸鈇 -@鴙%旾牯q 濎x>樹 dwX晟t!繧0>@嬏O睨,[L屺醮,Ho搔徛傯Q  轋 &&援p泥禯愝R<8敕鋻G%韽.^:苋殦煰衳鎰<>;垰窨 み 樯溷;9c蘈Z椌砟馏呙:程 en7hR ̄u錮e9趸煆pf$#h砙嘩hCus\梎-?z琒)b閇鞻-琙)}斀=8: /-#臅-i塿2% 檼=秅辞mk橱`攠钷泫;霰僔,x〡;黏-廈嵀y莔琉qSe1俴`Is死┫┐樟崕s躐丬I烗Q3硈湖乱. +x滍薾7>_XE擠=绹$m +6蠧怌2稉)R铒棨4)嘣^菫請CQ")j 市%:ecU宽菊 擟i斦禸g团鯚飋_3Bq韃冀貔奻經f6dxu多:#?[V漖v颻BR吃\mR '*澚涏e澪cAzs覉>(榯⑻u鰇饔7 +ńu&z"艳夓愕c(尯a*p [筩*m-鷏 揥F镡崧結)Z7Y濛b怖哾観#嗘c%4%抹覓%o樢窜.拀鈝; 莜曻稌\􆑛欺VJ-#9 岠l卶L猩$k[Q齷q9S格GRHe儚S察瓂~tH貌$黽^O3稤23弄┫郢6[o弄e锈钛&VljII嬛;:Zr,<╟6捷t蟓g鍌■藍O3eH葫 茿頲牖/觌R +.;縓ri`Γ孾%O"貌掞 炘$P弘嶲'T\$&C%e矺瀌釽0p蓠 噹gX瑙ivf1洝毯Nv,娂倎隮穪$|) +;B  驏?@=丞荴鏀饓pM 缭.織<`u悺盤: 曇柤显透IQ[幫"<NG<灦 [恷盗田HK史餸]b鰾&;0嚿E焎駧X滒%~A岔p:8摪瓜德 醩N 镧塲杻:~稘G顕/锝鄝,骅夕J碄荦(ik9泾嚲+梜Lk车媽l雧l炔縺z骔笛^)腟r卫婨瘠沷=#7詞鵦峝h9♀kK厕L砐1籎1っ钡--硿讯.㈠0A粆吖夋6篡3u=L衝郡1窢輣4蔙鎪攌碮箅S>-耖}:褂Ns.河铨b}^?3鴓2姈翌+ +纠3攐e鄁2 +x弅NPqElw婆渧蚂鴭纇箽銃G贁*?)rh 罶 T纋斝E桥b碅 +p輞c 瑗篅e%X┕A*Uuh榰,D丢蒐笎 +滸f-s谨J鴜清毤泞敚黤雦憜*∴XjΛ氊h妚傣#窝;呂I9冁*痴焆i\iBhk蒎攓{蜵鬪1e(邯2#{騳"韝瀤X].沟q2mrK8@狦媩B酡"溟捡qミ咚a<(M俳侽緳n窹窤鴥籔 愂d5凳q缳k鰭G% ;鵁Lr%胍1"裏4M綦b!海購燒sf]'习| 摊* endstream endobj -15 0 obj +20 0 obj << -/Length 5410 +/Length 5364 /Filter /FlateDecode >> stream -x滍][忋副~颻? -oX鬋'翞 Af439焋忱蛇IQ;e氽輀垭鲍,弄廳e灡礼2(sy:(2 -壄B艰珢82.呎葪 迕?}┧9 帘 Z.簃}剠悽斒7镃r%F務H[|HG6`晒鄌貒_钺C.c蕠劝庘W绲1;:EW9,澰訐D楇尤袬2蚍@.I簐辗XUWL鎆栿讞駤蒥7黛;=觃/洆 J2姪 #Sz0☉(啽郘燪J=) <覯o6筛\43昨/O_8忮2騊俅R呰醡萗gG7鵜+灄%示壃n迭緗O鹀谐峑G -椀∥7屴雀y嘏樄幪S焳07輽憧铛fj-揜H|跚 Qr{萏瞐}菨鉩9v筮硻⑻bC2峧鵞 棨?朻c[+&s-所胨洚鶝{.6郦bW炒熘j爕)B-M6聅#險[W峮捥8佶v檫笻 7御蟴+9憄2pf耖綄YZ耊6皽Pp修惤鋕騌oq矅?选r?qiS??懰繜~z啧u~秔胤u=m寈揿l*擰觓恲b-愻!/嵩 #U北DDv葹-B)駻悵浕鎏 鬚*|濶D,忢溿鑯痨}遽&k; 輚'嘀f蚾ブ啊L勻}n[n%k[蜀_椌h0鲦D鲖g恢 '膆仓 テ #偐逯韵普W窓呡钞0u[,(rm斶繗"W尣棆1粭f鬣.泏_"侦 j荒I蹉搤L揠蠜ol暬扃×nn糊<右薊9非g渿Y襥1<^h侪蟦鵤痸乼踭C湐n 蒋t{閇お+v櫴fgS駥x汩鲡 馍)扄ホ7A悵浕\_/鞙睝E玳D尿匚9庮限W箃7鉂凨醑5瞱N=K冯`C妍稕禹B/寵鴨翼_c圮*0R6愦鱈-cコ5.螭藑'躇V3Y幱 '莹`. 56泰鎄{K趂痑讷峚 觼aa鐾 蒬畟 6鶂|唧6>猱J;x諝R?,╥?=vcqg蕱暄扭-挙+敂凍8T<aay.吨ON竎主臬惠(-gr蘌XO,^ r円S#a募II嗗 0駅LT!,錦+粰妝wx0tHzo@/ ^扄懟潟O髚磴烟蹌h#Eg鱺L^1S$勷l2n>t>齑甊聧<汾樹辆鱥|鋘!骉`鈒9貺膡o滇e4绁q0;9梙;](_桛k痑jG揘Zp:头0KL蜀S3I[B匨<赍狦捦忲rI汓c=e偶p&5R9)琐*顣gg縖>}9监滄麧8鵀排经k猳應畼ov6狮陫0<謏HzP梡i希ql*嵞鍷!=泺π?畐咀yZqlG鰾9w3c;闧kT击9階谁_-k^9鲲纾6]簴!7; t蚲鍇M -d罃H滭饴>僳瘄'傯QI樈\&XdOEY1/$扚O ヅ逜鞻讣 #,鳣吢r60λk瀙Q 隣蓉 / 扮w8碨钹-a剧己o霘陒お+&|洕M2b: sO瑓.&|賕6`汱%9*軉~>=铀MXx~钹09L+2Yg1丏a昖L'9'h絧,{菹J&7>侰}> 9鳝簜驸醅g]*葷估9##Y軠昢覄 轖殤澯:'皀\<Z}57娨[珊`S虔fRf_絕櫖雼ab皃f;$M6Gc<+o}S.阵募0鵠佶坖删\捴OV璞诪4^) 賱嬺 韲x蝆x~>=棵ro 骫3籡[譚#U]1垤l*擰觪榦b-煺愻5嵊>壺d",蒕犰邈3杰剠醱KJ#逨b7紼iAUWL'9'h輕,z軬d芼恻:#惎 84i潉滬栤As夣琯]诶筄炕s亾F啩jBV{T横WI鷕&xGiFvN霚篮q駱$h貂V&烱晧@鯯渙2q胨(\猔>緝敭|vrI汓c4V 埴6 -楆yb^橖)廛砅.I踘菊 岉Gy琚|C县 舷 扮w8碨钹-a倦B穔霘陒お+&|洕M2b:驧瑓>&|佥耏 KrT8{鯨/7a酇捯确應Moa赺R訅C伷v Z7媈𬃜+MZ'!缇衆b=隮6p钜稔\啶戓愓昻鳸覄 轖殤澯:'皀\<2俜鷍+买 怲 9o2q q洏擩焓Z_式灦lR/氛尭-g_ 醻BH-蹪\挅9倸a)韓LRhf?3致3揩r讕勼 欉5頾(嬘麰亽姴8u僿J,:{懛Z犁/wyw'表l#6!岆C%崙#U]睕惵醇お+`-皿o P淌霰𤗆篕;{y2頪 -团kL蟴醽o楟霪午 遅5々=*綈+/輂珇 牐?;_uNN輼xPU皁跽V篦煠To*p+圱n慗螳TrWT铄4诂J椰5蘚谄,鎱娠姉怨瀰rIZg 庻╊Z鉶灕C!鑴Ye盹0f构猤f陭䞍陫]/番_L鹲鷤 #{麿剔【XV1(&"xt噙%i驈禉棤Y1/l s&錨O^/鼫-舐:OrL策;<搆$H2謧丑n蘺蕉黛柊5C鄣uM;R锻桅BU]1圂&諦^ IP>瓋者+G%5湽|t{&摏愷 鬾if栀PS擙,L囿殮<潏9'V ,8蹏a芵|v白殾N@藑 鑮k窈占瓁苠詝k 僠4`50+]yC 喢!7W跆L}L}眔趱紉蹅1剔媏酅钋r)銳咏\&X+0%鎱m酈%n灅&+~聡2|}$-艌衻夦陡+你H旿辅行~dg靺B~嘋;鍳 "羜閧お+&|洕M2b: sO瑓.&|賕=豍l2栦ㄘ3&廑3杰剠醱K8#逨b7絽鵿IUWL'9'h絧,{軬d赿恻蠫 _@pㄏg!缇衆紴醅K8w9w.p稳餟M萰廕/黬iBW幯(腿蝘X7.T橃[}綍墄▕i軘2N峰y?0伹M鸶鸶徾 -兜鄎-w 虒棘髝峭~;J喁馤獪FM=P羔H +x滍]蹘涓憓(7 炅灥1鸴`< 餋藩嘶@挚o挗$妛*9U519贂)艌C2偸虄/H?炳G2<;剱#T/鬝磕销烸朋_臒. +3拈艤D.妼BbO*0帉Ka5蜷傼~鮅_阹1BHp,垨~秐緩R擱9.}HN鳌D脠i槿,9-|朾L0諵6&{G*惀搝z掕蝥0r4┹⿲-怟忆甝-V摴栧e黚r妄岑椡葾%臫悜)=|魓訦肵p&(iMo6筛\43昨/^駌y╨Z!zxr仲褝鐴~詩莈壊o"玔-@/优鬺z閬芉{薳m鸐2n顅1f#笤g熖Mw骧椊轑嵐cR +澂$Jnt榊6竤|,莕~<),6/莹柨rI汓c 6隹弄篵2撞溈緦_L顨抗傀张f[U靔b枛軿C4/EH弗蒄xn`$b絡胧u寡M'辉."墆a`:?嘘紥 'g熮烁_灔%|e  貹~M^5N鲂駠4:tB'.m獰r肙疚g 噠[/罌滿2b: 2O瑓>%淶#ad*6枅俪H6E 瞫s=3= +N'"柷v蝢t?x鼍騪5鉂凨恘褐pk3蚾ブ啊L勻}n[n%k[蜀_椌h0鲦D穻g恢 '膆仓 テ #偐;逯韵普嬠搪畀0u[,(rm斶練"W尣1粭f鬣.泏_"侦 j荒I燉髬~N揠缤7妒]點鲶衊77輣瀒殚"轀坫3蚊,4S墭][/挫謌伏癢籃簃!NJ拂>V航-R籐e吵﹛FUW俭t{qF 剰馾茢埲硪慝'任徒\_/鞙睝E坑増灞漵灲痳槎o; 阓kdo渘{@;杗琢2树=lWй咗疜_43#ホ科豆5T`苅餀竅气矺g鮧俔鍵楙(Nf蟓fN羂jl楽捅鰱赐^么W:寐鞗/6捝\攎;l|腯"襴05ゾ[P觺哼:.6阄-越婭[$IW()韖.òyN笥漫y.吨ON竎主襞輓螌39Wmf(' /N咾笰)F壽寫0b蓼$胷]橒5&*杛畷軱偶;荚M:$7牀屓菸蕳y决駂鎚B4垜⒊{?'瘶〢B禫vz檅7:EvZW)酕瀃mL騚啕2S5>r疯恲*扒u稖l 饨汾p 押2汅8脢X槤淜礉./K康0担I' 8濇[槬X&屮)鶛き!嚶& 躜K #涉G{$M葹姴b^竢F霐e{魇吵攮M熅^pN簖蝛|蒜b咧k猳應畼ov6狮陫0<謏HzP梡i彛ql*嵞鍷!=泺 7咀yZqlG鰾1w3c;闧kT击9階谁_-k^9缃6]簴!7; t蚲鍇郡K2`J$N~qa熷鞼咀傯QI樈\&XdOEY1/$扚O ヅ逜鞻讣 #,鳣吢r60λk瀙Q 隣蓉 / 扮w8碨钹5a惧己o5征HUWL>6; +eTu舤鏋X {5$]xM矎l*6KrT 齶|{p'黱9N避羇r榁d参b壜*瓨N +8秙N衵醁龊煏&蝟}圍|rn[u团隮虾T(;s乻FF哺9'*金 ]9F迹4#;N`莞窸-代fkdoシ抲力$bw鋉Q-ぬ緕2Y鱝!履`崽䎱rI汓cm幤xV 搡墆a蚧睰2拀$瓱c3=i糔 R 駵金鼃{~嘋;^鏇fv欢^S}廡u配僶吵㏄FUWL莂緣蛋WC覈讋O 鸋$b搲$G叧棌o萧r顒-)峾╆娸U]18Dl鐪爑帽鑥搲箅爮@緜嘈rn[%殖瀠i>N灙 Y鞶閱_%M杷1氞9璼肫舽*摖辗[<*侅8遾e庵桻窽羭|)]9:鋻4趇D懍鄂m.阵募0鵠馭墓g挾蟶獳H蹚蛐E鶈!灡灍A`巷phк羕聕訁n字k應畼|餸v6狮陫87鰆H氿idw g1,蒕犰邈3絓厖;醱KJ#逨b7絽iIUWL'9'h輕,z軬d芼恻:#惎 84i潉溮栤As夣琯]诶筀葵s亾F啩jBV{T横WI鷕&xGiFvN霚篮qqd哧洯L薟&|@R/浼沫/膍bR*u+k})鱶趲?蘒ERH寇V3舛渳1/L䥇 !Y秎wrIZjn凲ご积1絯H齪蝀 舷;6蔧;蝃.d~K痲EY6xm/ +擳斉极P +f奄貗颊>顾;塵g+倍 醏\飩-i尲╆娸﹀%U]1k]鷃V霭彽戳涅(衇B葙顺恞跼8h.^cz |霍u> M鞶閰\y轭Z鮗-sr昶臐獋}玱*樋蠠$ィzU乕A圱歘轄捇/棨?謋U抐偶爱a鎾6^f1/L~W激熙,擪:cp b>﹁蝽筞赲xz>9炕r鳟 騇3禲[綠b颉焚賂(*+︺ 吣Z孬!锽k楼u李捑bP扖聶薌穏j + wB飽咶畭Tu舗j 楴,秙N衵裍t却拍閡菺_!ph: 7-瘍kY蠚碅覱d' O!teM鄮岇|9yub>I嘘洯H鞆-?AE%櫩?+抏m櫝F攩 薽菇\&XdO昚1/xK汯6)髭[V鱥2=1/,33繌裳雀SJ#Z騽g矋靽u芞pv另,醬舻絞讋鯑经譚#U]1鵣垤l*擰觓X{b-湔恡5嵊>釧嘭b"*┭嗵澹3橽厔;?C蠁殮霴fQj熣凿镈匚9标a少> 愠p{ 焷栛重珁陴窸著仹i繮k:aVY鹻騿& 嚈Cn櫃Шb阻-+'幽䴗i`萌7/膤 α鴚rI汓cm%hV 芢I棺撟 ?鏲瞿及搫祺"箱 R秾掂旒s^G_踸vMXo殹碲zM;R锻桅BU]1圂&諦^ IP>瓋者+G%5湽|t{&摣恜'鬾if栀PS擙,L囿殮<潏9'V ,8蹏a芵|v白殾N@薽 鑮k窈占瓁苠詝k 僠4`50+]yC 喢!7W跆L}芽O}眔繇紉蹅1剔m媏酅钋r)銳咏\&X+0%鎱m酈%n灅&+~聡2|}$-艌衻夦陡+你H旿辅行~dg靺B~嘋;^鎨 "羜閧お+&|洕M2b: sO瑓.&|貵=豍l2栦ㄘ3&廑3絓厖;醱K8#逨b7絽鵿IUWL'9'h絧,{軬d赿恻蠫 _@pㄏg!缍衆紴醅K8w9w.p稳餟M萰廕/黬iBW幯(腿蝘X7.頣橃[}粫夬▕i軘2N峰飤`彌7鄎7鄎lk3楞朳睥AyY彌1v斃/馤獪FM=P羔H 访a 穩逢虂-6爌 稬衻马8r马鹑 -7爌{袼/鏮?1煹"O贏Z郔+x襽' x襽' x襽' xGx襽'韅鶲>昵?狮lH亴,拃 热軅dd@Fdd鞢热 热 热顨﨩颧孠16励宊励兝宊励宊 #縺耠暐辷捉攝S←陵7衘衘 碯衘衘衘衘=誉蟦=涼艽訳PWヂ -訳@]訳@]第*牣*牣戟c_暸頠,C6熠5云`訮┌5PC5PC璿 -ā* PCe洤唺騱R+$Bb!v郹聭 L懒LaqL懒t覲&郹&郹鳆畢锛妬汷R慣 a馋◣諔#:#:lk3@u擺睥AyY諔亡渌呺趢a箫f#Du'鐟D撻 G#UX#?r_#?觥麲麲麲麇?z0]#踢4_$/卩燜妷U`, (抍3R,30#逛槕 槕趪0#30#5E槕03宜呺_夐RP5 >銼,鄡R1裀cR$c0&箙搥1 撢0&c0&c0&輻1It`倧軙s瓙綞0qo> 钃> > 钃> 钃NA'F>'}+嗣盂顱G軔qkR,kR!壤惻k&k&k&k&輹5殄2H鳈|骙湞<>宑姽6@Т?)ヂ -tJ@tJ@Т:%燬:%燬:钄Z縫構n%郪芬k躂Y稲z窚笗 -笗[ 笗[橻╅K:鳫R%[hR乫)拃f h杅,鸵Q黱I,,鸵>*@4K7,E繜擙FIM耶娓棬-苉揥4&;獵巄覃G j[全隱齜j9董峐傌図W匹?愃 忁钹;絓9J}尨鲣U辊/e3秚_偦uHD縼橇PL魿Y-`蒂p徬3%䴗斓旑~酷>厡<9E庠JA鍈Z[麌"▄0&ee懫8搶呅厠a髶4 袠隼蘛e4){瀌槾O苚p盿tL"E㳠箌睭A軭aiq效S芜7唫2;XP:-w{巭$躨8絎=褹"AYv筵埖囂諔鲖崙d鷺聡0繅|電 l腌桼?狮lH亴,拃 热軅dd@Fdd鞢热 热 热n汘O颧孠16励宊励兝宊励宊 #縺耠崶辷捉攝S←陵7衘衘 碯衘衘衘衘-誉g冯濵 n趐戟峚ǐRa*牣*牣ZuPWuPWu毡b,|] !Bv韥jc0j═X +ā +āV;@ 訮@ }ā惭蚐CE;)邥!秉;p0酘&郹Π&郹簀(p0p0迎K鹽茁w^爬'〩埳0Y TG䜩闔PP昭 +兜:-w 虒棘髝耆f{蜷聈m0庸鵺3:鯎庴如?⑸t悾乻倯Q,/Q鸓#?#?垓=]槷鎜]/h'mpP#拍*0IX 杀Z)杸 槕\蘃缹蘃鞢槕 槕殺蘃缹t殚聈/壞t) 熕%]餉)墭h( 1)拃1 撥B孖罉孖鞢搥1 搥1 搉藰に:0罣钍偣VH"韽7@鬒@焺傽鬒@鬒 钃#钃>閸遽轫w。n雀5)杸5d`M +萣5 X搥5 X搥5 X搥5 X搉蕷魌 L均,蜰瀝1跑H燬Z钄Ra:%燬:%燬Z))澮UtJ璤刚卣v蘀p+][i徔5 n,X乕 絒N躂嘽躂拉躂拉詠痒汰贼%Y|$⿸-4〡I@4K +h杸f(~$h杸f h杸fi燳殽玥枹呦蓗QV$&iWs躃T愕縹徤涴摑!RDG1W淡渫醐~1壑,A煊鯭公枕阋劐顔Gow疒倿.>@FZ{颚躾遗皈嬩2v[簩:$g ⑦楞 +s(┈S.摆l哥驦蓙煋綎襺里7傠'淶)娶-C ak癈uO胬 ,g1粈zt1l~R槅S熭樄珜喡=e蠐 擌渗.6寧Iと_>桹)),M3鷗*殸砾菃俆蚉PfG_ JЬe4鑞涎飪; 狦:H$(祟U{~宾惞:騫124圠S7戭9燻]q亶鍗F,噺簖崉5けuU魬嫋QOg-:習脉凸PX-0经2醲G鳪閳(#辏t7論X憭檵{[F[穑y懙淮闅揿歘膋Y(9&o竧5蚨:m詉廛憣氾"辎蹐s伩蜧=辘Z豅襫?槠湽戋ru敫9跃啡项祊rf[U皝襋Q兮m.?VMcU煐 endstream endobj 77 0 obj @@ -746,7 +756,7 @@ stream x渕薃 D褧兤 uB 憘凧B居熒tz1A╦淅龃M:xVZ吞io邶m}[靔nA.!c'z@ endstream endobj -26 0 obj +31 0 obj << /Type /XObject /Subtype /Image @@ -780,7 +790,7 @@ x Q旃A偡&0.D鳌,畛!;q."!z醒虖閿罪`~佲B, 芑E-滓碠#1|H敖F诸奎緲/ >敚}Y亖彺镑 诏{=< 0tD瘢!蘷(熽<<,慵遴吡龓9柳8亮撃|浖w睐.諂O3毞泫Q畽5窽L┸=X6鹐轊r陟3hL顸劑彅'x>館鰴+<y4}讀倔 Еg蜃y摞Z鰺<軙钚鷠跬W忹咟髈3嗣葁 薨-悉[x 稞pS頰/槠徴/=逯飺5n}怹刈qn}铬=?C潈肟蟭魿涀阴w]薫1譶#7V謂%O,N棆(嶕 endstream endobj -18 0 obj +23 0 obj << /Type /XObject /Subtype /Image @@ -833,7 +843,7 @@ x |冁>{w嘊q慙澟禲[2鬺g鼻W酻>C烦棊+萆犰7藧Ы汳螦9>@瓢g鑸悞?!魅Z P.粒眑蘯傭+廉1y&uI&庅 endstream endobj -33 0 obj +38 0 obj << /Type /XObject /Subtype /Image @@ -894,7 +904,7 @@ x "歈餂眎:墘5<艿(&& 證 毇1=>轃1嵝q# 醥粌y檘j國丵(d輐l緓9J峰癙祅<%2>趂舷埱砣N`b`1O澊妩'/_>絳a蹟 +Qfbt#宍d`釕T56諹曗abX$毩,湚qv繿f碘*\W endstream endobj -34 0 obj +39 0 obj << /Type /XObject /Subtype /Image @@ -954,7 +964,7 @@ LF =蓵Xg较緳 #鞟a6鬱7剕襷!*6C薻指R9*Δ鱎輎h嘫趋?殺.mEc鷋K4鈊婣>胿洖凼^i忇+XiL珵铗ヶ敗宛|'練棈鸲(搤#1R鱉Ro牠へ眸qJ埄榕龗烆.K(鴰嗩9鰜誒^*鶡"C賌0汪f碝嗡蟅鉞oHq皬 endstream endobj -35 0 obj +40 0 obj << /Type /XObject /Subtype /Image @@ -1020,7 +1030,7 @@ stream x湞護Ha饹N3i贌蜋?硐偍^7慉 懫 #悎 "蒦E(d-ddI撊爤dh 脤J∪@'1Q耺掭痕磺韓蟤象|_锍粄铟{炦q淎铂宓W>觎lo>絯E堆橡1君'/肻d裣@籹e筤圬m勏锥迍絘X喸D-t_c鸨6/穃0衧 觭k洂H輐襮跜)-忓u1/枥-./K寈蜺KN疵b喃 8迍濂僁`l帥or''伢涁嚌<>1鑉氣w疳c):.衠鹻*?綴琪蚉y㎞硋麧鳍T^T譴汍燮$偮譊ョ嫄?鶑R3頏 嚳冗`蜥#确2y懮娩t}7撶"吣銫暼粯N浍fYU券F5<$[oR肩5-P襦A]=rE:蠞i|摓sE|T魁膔朾[0脤 1釮灞*";㧏嶃聁.譓v`=W#釩[駵闶?UF湷4轨Y喦Σ o'恶檗喺bq齪瀑I4X棷缗n谔顿弟諩w~蒦 檚擔黬Me+(9捞J|夨竰捔ut檨蹵M拣擏[U_:落'帆"蠕#'T嗹瀚iV=埒鹭煑痒*c触囇驱>F]Z頶簦斵%'癚X絩屫^x陥#彪 n endstream endobj -36 0 obj +41 0 obj << /Type /XObject /Subtype /Image @@ -1100,7 +1110,7 @@ S 箉樦榢"42讪⒗A搶%譅t幘罌D盬茛.朁%+Oq endstream endobj -37 0 obj +42 0 obj << /Type /XObject /Subtype /Image @@ -1170,7 +1180,7 @@ T 䴙E巭圩阿r示Z个唿I孜辁賅#閛 ]?$匂块るg堹 覝 G帔憰傑`嵷S:鋒g`t 絔杤 r痟头&W(QR] endstream endobj -38 0 obj +43 0 obj << /Type /XObject /Subtype /Image @@ -1206,7 +1216,7 @@ Fp '1焥' 1<貧8pi攔sB+唺帧>幇q茜-z<腕j!凴!轛腚;B 暲皆跣艗鶆  鈿s莙莙軣 碅gx endstream endobj -39 0 obj +13 0 obj << /Type /XObject /Subtype /Image @@ -1258,7 +1268,7 @@ P邌 貯臋鹛t2荂#EV8沣伒 脔>擓敾墤eM妹H凔繁豌A|`刉L'K睃"鎿f$1r!渭彋;决啾穬kw宐S;蓗孳啄 枣啠 崇]v灋d謂汔1#醖m鐈`5r.6瀴怡.崔8懨絩侶`摅0鶀`礼,岻褻珴92瀊髫5N?_8,"摨珨R[5&[砠吸8i蘧#SJu主弙蠹歭鮶9蟆嚻}7R!^M秡綖y烵!嫌63飬睘V蟠挖7瀣av?掱N駄舱她n鄫;\户K毢w<秏k`本V陫沲 endstream endobj -43 0 obj +12 0 obj << /Type /XObject /Subtype /Image @@ -1305,99 +1315,99 @@ endobj xref 0 87 0000000000 65535 f -0000008523 00000 n -0000008594 00000 n -0000008383 00000 n -0000008335 00000 n -0000008641 00000 n -0000024800 00000 n +0000008559 00000 n +0000008630 00000 n +0000008419 00000 n +0000008371 00000 n +0000008677 00000 n +0000025882 00000 n 0000000241 00000 n 0000000104 00000 n 0000000015 00000 n -0000003718 00000 n -0000004833 00000 n +0000003730 00000 n +0000004845 00000 n +0000092261 00000 n +0000083109 00000 n 0000000059 00000 n -0000005563 00000 n -0000006178 00000 n -0000026266 00000 n -0000001770 00000 n -0000001585 00000 n -0000033112 00000 n -0000002627 00000 n -0000007053 00000 n -0000007208 00000 n -0000000424 00000 n -0000000526 00000 n -0000000650 00000 n -0000000752 00000 n -0000032021 00000 n -0000000883 00000 n -0000000985 00000 n -0000001116 00000 n -0000001218 00000 n -0000001350 00000 n -0000001452 00000 n -0000037963 00000 n -0000045282 00000 n -0000054167 00000 n -0000062512 00000 n -0000071755 00000 n -0000080234 00000 n -0000082144 00000 n -0000024508 00000 n -0000002219 00000 n -0000002079 00000 n -0000091296 00000 n -0000007311 00000 n -0000007428 00000 n -0000007558 00000 n -0000007688 00000 n -0000007822 00000 n -0000007951 00000 n -0000008080 00000 n -0000008209 00000 n -0000002537 00000 n -0000002383 00000 n -0000002411 00000 n -0000002439 00000 n -0000002475 00000 n -0000008684 00000 n -0000002725 00000 n -0000002987 00000 n -0000012480 00000 n -0000012978 00000 n -0000003870 00000 n -0000004134 00000 n -0000016770 00000 n -0000017262 00000 n -0000004982 00000 n -0000005254 00000 n -0000018328 00000 n -0000018663 00000 n -0000005714 00000 n -0000005932 00000 n -0000021631 00000 n -0000021949 00000 n -0000006330 00000 n -0000006609 00000 n -0000024118 00000 n -0000031750 00000 n -0000032318 00000 n -0000036934 00000 n -0000044366 00000 n -0000052448 00000 n -0000061654 00000 n -0000070833 00000 n -0000079514 00000 n -0000081440 00000 n -0000083230 00000 n +0000005575 00000 n +0000025242 00000 n +0000000589 00000 n +0000000449 00000 n +0000006214 00000 n +0000027277 00000 n +0000002096 00000 n +0000001911 00000 n +0000034077 00000 n +0000002639 00000 n +0000007089 00000 n +0000007244 00000 n +0000000750 00000 n +0000000852 00000 n +0000000976 00000 n +0000001078 00000 n +0000032986 00000 n +0000001209 00000 n +0000001311 00000 n +0000001442 00000 n +0000001544 00000 n +0000001676 00000 n +0000001778 00000 n +0000038928 00000 n +0000046247 00000 n +0000055132 00000 n +0000063477 00000 n +0000072720 00000 n +0000081199 00000 n +0000007347 00000 n +0000007464 00000 n +0000007594 00000 n +0000007724 00000 n +0000007858 00000 n +0000007987 00000 n +0000008116 00000 n +0000008245 00000 n +0000002549 00000 n +0000002395 00000 n +0000002423 00000 n +0000002451 00000 n +0000002487 00000 n +0000008720 00000 n +0000002737 00000 n +0000002999 00000 n +0000012516 00000 n +0000013014 00000 n +0000003882 00000 n +0000004146 00000 n +0000016806 00000 n +0000017298 00000 n +0000004994 00000 n +0000005266 00000 n +0000018364 00000 n +0000018699 00000 n +0000005726 00000 n +0000005944 00000 n +0000022337 00000 n +0000022683 00000 n +0000006366 00000 n +0000006645 00000 n +0000024852 00000 n +0000032715 00000 n +0000033283 00000 n +0000037899 00000 n +0000045331 00000 n +0000053413 00000 n +0000062619 00000 n +0000071798 00000 n +0000080479 00000 n +0000082405 00000 n +0000084195 00000 n trailer << /Size 87 /Root 3 0 R /Info 52 0 R -/ID [ ] +/ID [ ] >> startxref -101711 +102676 %%EOF diff --git a/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts index 52f67e87e..c3e1370d3 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts @@ -3,6 +3,7 @@ import path from 'path'; import { expect, test } from '@playwright/test'; import { CONFIG, createDoc, overrideConfig } from './utils-common'; +import { openSuggestionMenu, writeInEditor } from './utils-editor'; test.describe('Config', () => { if (process.env.IS_INSTANCE !== 'true') { @@ -35,9 +36,16 @@ test.describe('Config', () => { const fileChooserPromise = page.waitForEvent('filechooser'); - await page.locator('.bn-block-outer').last().fill('Anything'); - await page.locator('.bn-block-outer').last().fill('/'); - await page.getByText('Resizable image with caption').click(); + await writeInEditor({ + page, + text: 'Anything', + }); + + await openSuggestionMenu({ + page, + suggestion: 'Resizable image with caption', + }); + await page.getByText('Upload image').click(); const fileChooser = await fileChooserPromise; diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-ai.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-ai.spec.ts index 89c904540..33be316f7 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-ai.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-ai.spec.ts @@ -119,7 +119,9 @@ if (process.env.IS_INSTANCE !== 'true') { await expect(editor.getByText('Bonjour le monde')).toBeVisible(); // Check Suggestion menu - await page.locator('.bn-block-outer').last().fill('/'); + await openSuggestionMenu({ + page, + }); await expect(page.getByText('Write with AI')).toBeVisible(); // Reload the page to check that the AI change is still there @@ -364,7 +366,9 @@ if (process.env.IS_INSTANCE !== 'true') { await editor.getByText('Hello').selectText(); await expect(page.getByRole('button', { name: 'Ask AI' })).toBeHidden(); - await page.locator('.bn-block-outer').last().fill('/'); + await openSuggestionMenu({ + page, + }); await expect(page.getByText('Write with AI')).toBeHidden(); }); }); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-collaboration.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-collaboration.spec.ts index f17624f45..909609bc1 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-collaboration.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-collaboration.spec.ts @@ -3,7 +3,7 @@ import path from 'path'; import { expect, test } from '@playwright/test'; import { createDoc, overrideConfig, verifyDocName } from './utils-common'; -import { writeInEditor } from './utils-editor'; +import { openSuggestionMenu, writeInEditor } from './utils-editor'; import { connectOtherUserToDoc, updateShareLink } from './utils-share'; import { createRootSubPage } from './utils-sub-pages'; @@ -101,8 +101,10 @@ test.describe('Doc Collaboration', () => { // Owner add a image const fileChooserPromise = page.waitForEvent('filechooser'); - await page.locator('.bn-block-outer').last().fill('/'); - await page.getByText('Resizable image with caption').click(); + await openSuggestionMenu({ + page, + suggestion: 'Resizable image with caption', + }); await page.getByText('Upload image').click(); const fileChooser = await fileChooserPromise; diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-create.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-create.spec.ts index 9c506d79f..bc759eddd 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-create.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-create.spec.ts @@ -6,6 +6,7 @@ import { randomName, verifyDocName, } from './utils-common'; +import { openSuggestionMenu } from './utils-editor'; import { connectOtherUserToDoc } from './utils-share'; import { SignIn } from './utils-signin'; @@ -38,12 +39,10 @@ test.describe('Doc Create', () => { await verifyDocName(page, title); - await page.locator('.bn-block-outer').last().fill('/'); - await page - .getByText('New sub-doc', { - exact: true, - }) - .click(); + await openSuggestionMenu({ + page, + suggestion: 'New sub-doc', + }); const input = page.getByRole('textbox', { name: 'Document title' }); await expect(input).toHaveText('', { timeout: 10000 }); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-editor.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-editor.spec.ts index 9a055253b..375e52395 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-editor.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-editor.spec.ts @@ -74,8 +74,10 @@ test.describe('Doc Editor', () => { await page.keyboard.press('Enter'); const fileChooserPromise = page.waitForEvent('filechooser'); - await page.locator('.bn-block-outer').last().fill('/'); - await page.getByText('Resizable image with caption').click(); + await openSuggestionMenu({ + page, + suggestion: 'Resizable image with caption', + }); await page.getByText('Upload image').click(); const fileChooser = await fileChooserPromise; @@ -87,8 +89,6 @@ test.describe('Doc Editor', () => { .locator('.--docs--editor-container img.bn-visual-media') .first(); - await expect(image).toHaveAttribute('role', 'presentation'); - await image.click(); await expect( @@ -219,9 +219,10 @@ test.describe('Doc Editor', () => { await writeInEditor({ page, text: 'Hello World' }); - await page.keyboard.press('Enter'); - await page.locator('.bn-block-outer').last().fill('/'); - await page.getByText('Resizable image with caption').click(); + await openSuggestionMenu({ + page, + suggestion: 'Resizable image with caption', + }); await page.getByText('Upload image').click(); const fileChooser = await fileChooserPromise; @@ -244,11 +245,6 @@ test.describe('Doc Editor', () => { expect(await image.getAttribute('src')).toMatch( /media\/.*\/attachments\/.*.png/, ); - - await expect(image).toHaveAttribute('role', 'presentation'); - await expect(image).toHaveAttribute('alt', ''); - await expect(image).toHaveAttribute('tabindex', '-1'); - await expect(image).toHaveAttribute('aria-hidden', 'true'); }); if (process.env.IS_INSTANCE !== 'true') { @@ -266,12 +262,11 @@ test.describe('Doc Editor', () => { await verifyDocName(page, randomDoc); - await page.locator('.ProseMirror.bn-editor').click(); - await page.locator('.ProseMirror.bn-editor').fill('Hello World'); - - await page.keyboard.press('Enter'); - await page.locator('.bn-block-outer').last().fill('/'); - await page.getByText('Embedded file').click(); + await writeInEditor({ page, text: 'Hello World' }); + await openSuggestionMenu({ + page, + suggestion: 'Embedded file', + }); await page.getByText('Upload file').click(); const fileChooser = await fileChooserPromise; @@ -506,7 +501,7 @@ test.describe('Doc Editor', () => { }) => { const [randomDoc] = await createDoc(page, 'doc-scroll', browserName, 1); - for (let i = 0; i < 15; i++) { + for (let i = 0; i < 30; i++) { await page.keyboard.press('Enter'); await writeInEditor({ page, text: 'Hello Parent ' + i }); } @@ -515,7 +510,7 @@ test.describe('Doc Editor', () => { await expect( editor.getByText('Hello Parent 1', { exact: true }), ).not.toBeInViewport(); - await expect(editor.getByText('Hello Parent 14')).toBeInViewport(); + await expect(editor.getByText('Hello Parent 29')).toBeInViewport(); const { name: docChild } = await createRootSubPage( page, @@ -523,7 +518,7 @@ test.describe('Doc Editor', () => { 'doc-scroll-child', ); - for (let i = 0; i < 15; i++) { + for (let i = 0; i < 30; i++) { await page.keyboard.press('Enter'); await writeInEditor({ page, text: 'Hello Child ' + i }); } @@ -531,21 +526,21 @@ test.describe('Doc Editor', () => { await expect( editor.getByText('Hello Child 1', { exact: true }), ).not.toBeInViewport(); - await expect(editor.getByText('Hello Child 14')).toBeInViewport(); + await expect(editor.getByText('Hello Child 29')).toBeInViewport(); await navigateToPageFromTree({ page, title: randomDoc }); await expect( editor.getByText('Hello Parent 1', { exact: true }), ).toBeInViewport(); - await expect(editor.getByText('Hello Parent 14')).not.toBeInViewport(); + await expect(editor.getByText('Hello Parent 29')).not.toBeInViewport(); await navigateToPageFromTree({ page, title: docChild }); await expect( editor.getByText('Hello Child 1', { exact: true }), ).toBeInViewport(); - await expect(editor.getByText('Hello Child 14')).not.toBeInViewport(); + await expect(editor.getByText('Hello Child 29')).not.toBeInViewport(); }); test('it embeds PDF', async ({ page, browserName }) => { @@ -556,8 +551,7 @@ test.describe('Doc Editor', () => { await page.getByRole('button', { name: 'Close the share modal' }).click(); - await openSuggestionMenu({ page }); - await page.getByText('Embed a PDF file').click(); + await openSuggestionMenu({ page, suggestion: 'Embed a PDF file' }); const pdfBlock = page.locator('div[data-content-type="pdf"]').last(); @@ -579,8 +573,7 @@ test.describe('Doc Editor', () => { await expect(page.getByText('Invalid or missing PDF file')).toBeVisible(); - await openSuggestionMenu({ page }); - await page.getByText('Embed a PDF file').click(); + await openSuggestionMenu({ page, suggestion: 'Embed a PDF file' }); // Now with a valid PDF await page.getByText(/Add (PDF|file)/).click(); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts index b9d66c781..ba2945eae 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts @@ -116,12 +116,11 @@ test.describe('Doc Export', () => { await verifyDocName(page, randomDoc); // Add some content and at least one image so that the ZIP contains media files. - await page.locator('.ProseMirror.bn-editor').click(); - await page.locator('.ProseMirror.bn-editor').fill('Hello HTML ZIP'); - - await page.keyboard.press('Enter'); - await page.locator('.bn-block-outer').last().fill('/'); - await page.getByText('Resizable image with caption').click(); + await writeInEditor({ page, text: 'Hello HTML ZIP' }); + await openSuggestionMenu({ + page, + suggestion: 'Resizable image with caption', + }); const fileChooserPromise = page.waitForEvent('filechooser'); await page.getByText('Upload image').click(); @@ -222,8 +221,10 @@ test.describe('Doc Export', () => { await expect(image).toBeVisible(); - await page.locator('.bn-block-outer').last().fill('/'); - await page.getByText('Resizable image with caption').click(); + await openSuggestionMenu({ + page, + suggestion: 'Resizable image with caption', + }); await page.getByRole('tab', { name: 'Embed' }).click(); await page .getByRole('textbox', { name: 'Enter URL' }) diff --git a/src/frontend/apps/e2e/__tests__/app-impress/utils-editor.ts b/src/frontend/apps/e2e/__tests__/app-impress/utils-editor.ts index 56b6b2dbe..d441ddd36 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/utils-editor.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/utils-editor.ts @@ -8,11 +8,34 @@ export const getEditor = async ({ page }: { page: Page }) => { return editor; }; -export const openSuggestionMenu = async ({ page }: { page: Page }) => { - const editor = await writeInEditor({ page, text: '/' }); +export const openSuggestionMenu = async ({ + page, + suggestion, +}: { + page: Page; + suggestion?: string; +}) => { + const editor = await getEditor({ page }); + if ( + (await editor.locator('.bn-trailing-block.ProseMirror-widget').count()) > 0 + ) { + await editor.locator('.bn-trailing-block.ProseMirror-widget').click(); + } else { + await editor.click(); + } + await page.keyboard.press('Enter'); + await page.keyboard.type('/'); const suggestionMenu = page.locator('.bn-suggestion-menu'); + if (suggestion) { + await suggestionMenu + .getByText(suggestion, { + exact: true, + }) + .click(); + } + return { editor, suggestionMenu }; }; @@ -24,6 +47,13 @@ export const writeInEditor = async ({ text: string; }) => { const editor = await getEditor({ page }); + if ( + (await editor.locator('.bn-trailing-block.ProseMirror-widget').count()) > 0 + ) { + await editor.locator('.bn-trailing-block.ProseMirror-widget').click(); + } else { + await editor.click(); + } await editor .locator('.bn-block-outer:last-child') .last() diff --git a/src/frontend/apps/e2e/__tests__/app-impress/utils-export.ts b/src/frontend/apps/e2e/__tests__/app-impress/utils-export.ts index c952866ce..2704a40d6 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/utils-export.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/utils-export.ts @@ -55,9 +55,10 @@ export const overrideDocContent = async ({ await page.waitForTimeout(1000); // Add Image SVG - await page.keyboard.press('Enter'); - const { suggestionMenu } = await openSuggestionMenu({ page }); - await suggestionMenu.getByText('Resizable image with caption').click(); + await openSuggestionMenu({ + page, + suggestion: 'Resizable image with caption', + }); const fileChooserPromise = page.waitForEvent('filechooser'); await page.getByText('Upload image').click(); const fileChooser = await fileChooserPromise; @@ -73,8 +74,10 @@ export const overrideDocContent = async ({ await page.waitForTimeout(1000); // Add Image PNG - await openSuggestionMenu({ page }); - await suggestionMenu.getByText('Resizable image with caption').click(); + await openSuggestionMenu({ + page, + suggestion: 'Resizable image with caption', + }); const fileChooserPNGPromise = page.waitForEvent('filechooser'); await page.getByText('Upload image').click(); const fileChooserPNG = await fileChooserPNGPromise; diff --git a/src/frontend/apps/impress/package.json b/src/frontend/apps/impress/package.json index 9886eca2b..ab00985df 100644 --- a/src/frontend/apps/impress/package.json +++ b/src/frontend/apps/impress/package.json @@ -24,15 +24,15 @@ "dependencies": { "@ag-media/react-pdf-table": "2.0.3", "@ai-sdk/openai": "3.0.63", - "@blocknote/code-block": "0.50.0", - "@blocknote/core": "0.50.0", - "@blocknote/mantine": "0.50.0", - "@blocknote/react": "0.50.0", - "@blocknote/xl-ai": "0.50.0", - "@blocknote/xl-docx-exporter": "0.50.0", - "@blocknote/xl-multi-column": "0.50.0", - "@blocknote/xl-odt-exporter": "0.50.0", - "@blocknote/xl-pdf-exporter": "0.50.0", + "@blocknote/code-block": "0.51.1", + "@blocknote/core": "0.51.1", + "@blocknote/mantine": "0.51.1", + "@blocknote/react": "0.51.1", + "@blocknote/xl-ai": "0.51.1", + "@blocknote/xl-docx-exporter": "0.51.1", + "@blocknote/xl-multi-column": "0.51.1", + "@blocknote/xl-odt-exporter": "0.51.1", + "@blocknote/xl-pdf-exporter": "0.51.1", "@dnd-kit/core": "6.3.1", "@dnd-kit/modifiers": "9.0.0", "@emoji-mart/data": "1.2.1", diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx index 6faf7651f..3f5dbef9c 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx @@ -42,12 +42,7 @@ import BlockNoteAI from './AI'; import { BlockNoteSuggestionMenu } from './BlockNoteSuggestionMenu'; import { BlockNoteToolbar } from './BlockNoteToolBar/BlockNoteToolbar'; import { DocsCommentsStyle, useComments } from './comments/'; -import { - AccessibleImageBlock, - CalloutBlock, - PdfBlock, - UploadLoaderBlock, -} from './custom-blocks'; +import { CalloutBlock, PdfBlock, UploadLoaderBlock } from './custom-blocks'; const AIMenu = BlockNoteAI?.AIMenu; const AIMenuController = BlockNoteAI?.AIMenuController; const useAI = BlockNoteAI?.useAI; @@ -64,7 +59,6 @@ const baseBlockNoteSchema = withPageBreak( ...defaultBlockSpecs, callout: CalloutBlock(), codeBlock: createCodeBlockSpec(codeBlockOptions), - image: AccessibleImageBlock(), pdf: PdfBlock(), uploadLoader: UploadLoaderBlock(), }, diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/AccessibleImageBlock.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/AccessibleImageBlock.tsx deleted file mode 100644 index 3410cc401..000000000 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/AccessibleImageBlock.tsx +++ /dev/null @@ -1,121 +0,0 @@ -/** - * AccessibleImageBlock.tsx - * - * This file defines a custom BlockNote block specification for an accessible image block. - * It extends the default image block to ensure compliance with accessibility standards, - * specifically RGAA 1.9.1, by using
and
elements when a caption is provided. - * - * The accessible image block ensures that: - * - Images with captions are wrapped in
and
elements. - * - The element has an appropriate alt attribute based on the caption. - * - Accessibility attributes such as role and aria-label are added for better screen reader support. - * - Images without captions have alt="" and are marked as decorative with aria-hidden="true". - * - * This implementation leverages BlockNote's existing image block functionality while enhancing it for accessibility. - * https://github.com/TypeCellOS/BlockNote/blob/main/packages/core/src/blocks/Image/block.ts - */ - -import { - BlockFromConfig, - BlockNoteEditor, - ImageOptions, - InlineContentSchema, - InlineContentSchemaFromSpecs, - StyleSchema, - createBlockSpec, - createImageBlockConfig, - defaultInlineContentSpecs, - imageParse, - imageRender, - imageToExternalHTML, -} from '@blocknote/core'; -import { t } from 'i18next'; - -type CreateImageBlockConfig = ReturnType; - -export const accessibleImageRender = - (config: ImageOptions) => - ( - block: BlockFromConfig< - CreateImageBlockConfig, - InlineContentSchema, - StyleSchema - >, - editor: BlockNoteEditor< - Record<'image', CreateImageBlockConfig>, - InlineContentSchemaFromSpecs, - StyleSchema - >, - ) => { - const imageRenderComputed = imageRender(config); - const dom = imageRenderComputed(block, editor).dom; - const imgSelector = dom.querySelector('img'); - - // Fix RGAA 1.9.1: Convert to figure/figcaption structure if caption exists - const accessibleImageWithCaption = () => { - imgSelector?.setAttribute('alt', block.props.caption); - imgSelector?.removeAttribute('aria-hidden'); - imgSelector?.setAttribute('tabindex', '0'); - - const originalCaption = dom.querySelector('.bn-file-caption'); - - if (imgSelector?.parentNode && originalCaption) { - const figureElement = document.createElement('figure'); - figureElement.style.setProperty('margin', '0'); - - // Wrap only the img inside figure, preserving the rest of the dom tree - imgSelector.parentNode.insertBefore(figureElement, imgSelector); - figureElement.appendChild(imgSelector); - - // Replace the

caption with

inside the figure - const figcaptionElement = document.createElement('figcaption'); - figcaptionElement.className = originalCaption.className; - figcaptionElement.textContent = originalCaption.textContent; - figureElement.appendChild(figcaptionElement); - originalCaption.parentNode?.removeChild(originalCaption); - - // Add explicit role and aria-label for better screen reader support - figureElement.setAttribute('role', 'img'); - figureElement.setAttribute( - 'aria-label', - t(`Image: {{title}}`, { title: figcaptionElement.textContent }), - ); - } - - return { - ...imageRenderComputed, - dom, - }; - }; - - const accessibleImage = () => { - imgSelector?.setAttribute('alt', ''); - imgSelector?.setAttribute('role', 'presentation'); - imgSelector?.setAttribute('aria-hidden', 'true'); - imgSelector?.setAttribute('tabindex', '-1'); - - return { - ...imageRenderComputed, - dom, - }; - }; - - const withCaption = - block.props.caption && dom.querySelector('.bn-file-caption'); - - // Set accessibility attributes for the image - return withCaption ? accessibleImageWithCaption() : accessibleImage(); - }; - -export const AccessibleImageBlock = createBlockSpec( - createImageBlockConfig, - (config) => ({ - meta: { - fileBlockAccept: ['image/*'], - }, - render: accessibleImageRender(config), - parse: imageParse(config), - toExternalHTML: imageToExternalHTML(config), - runsBefore: ['file'], - }), -); diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/CalloutBlock.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/CalloutBlock.tsx index 56914f2aa..0bcaa409d 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/CalloutBlock.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/CalloutBlock.tsx @@ -133,7 +133,24 @@ const CalloutComponent = ({ /> )} - + { + contentRef(node); + + /** + * BlockNote's CSS uses `.bn-block:has(> .bn-block-content[...])` (direct child). + * For custom blocks, `.react-renderer` sits between `.bn-block` and `.bn-block-content`, + * so background/text-color selectors never match. Adding `bn-block` to the intermediate + * wrapper makes it the direct parent of `.bn-block-content`, fixing all those selectors. + * TODO: Remove this patch once BlockNote issue is resolved: https://github.com/TypeCellOS/BlockNote/issues/2732 + */ + node + ?.closest('.bn-react-node-view-renderer') + ?.classList.add('bn-block'); + }} + /> ); }; diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/index.ts b/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/index.ts index 961483883..e9276a7af 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/index.ts +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/index.ts @@ -1,4 +1,3 @@ -export * from './AccessibleImageBlock'; export * from './CalloutBlock'; export * from './PdfBlock'; export * from './UploadLoaderBlock'; diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/xl-multi-column/index.ts b/src/frontend/apps/impress/src/features/docs/doc-editor/components/xl-multi-column/index.ts index bbcf06b1f..e72b30194 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/xl-multi-column/index.ts +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/xl-multi-column/index.ts @@ -16,6 +16,8 @@ import * as XLMultiColumn from '@blocknote/xl-multi-column'; * from ColumnBlock. * This prevents dragging a block onto another block from * automatically creating a multi-column layout. + * + * TODO: This is a temporary workaround until BlockNote provides a built-in way to disable the drop handler for specific blocks. * @param schema * @returns */ diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/styles.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/styles.tsx index 81ec49823..66f15e44e 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/styles.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/styles.tsx @@ -1,9 +1,10 @@ import { createGlobalStyle } from 'styled-components'; export const DocsEditorStyle = createGlobalStyle` - .bn-root { + .bn-container { height: 100%; - + } + .bn-root { .bn-editor { height: 100%; } @@ -193,6 +194,7 @@ export const DocsEditorStyle = createGlobalStyle` */ [data-content-type='heading'] { --level: 1.875rem; + padding-top: 3px; &[data-level='2'] { --level: 1.5rem; } @@ -236,7 +238,7 @@ export const DocsEditorStyle = createGlobalStyle` & .bn-default-styles h6 { font-size: 0.875rem; } - & .bn-block-outer:not(:first-child) { + & .bn-block-outer:not(:first-child):not(:has([data-content-type="toggleListItem"])) { &:has(h1) { margin-top: 32px; } diff --git a/src/frontend/servers/y-provider/package.json b/src/frontend/servers/y-provider/package.json index 6b405cd1a..da2017455 100644 --- a/src/frontend/servers/y-provider/package.json +++ b/src/frontend/servers/y-provider/package.json @@ -16,7 +16,7 @@ "node": ">=22" }, "dependencies": { - "@blocknote/server-util": "0.50.0", + "@blocknote/server-util": "0.51.1", "@hocuspocus/server": "3.4.4", "@sentry/node": "10.52.0", "@sentry/profiling-node": "10.52.0", @@ -30,7 +30,7 @@ "yjs": "*" }, "devDependencies": { - "@blocknote/core": "0.50.0", + "@blocknote/core": "0.51.1", "@hocuspocus/provider": "3.4.4", "@types/cors": "2.8.19", "@types/express": "5.0.6", diff --git a/src/frontend/yarn.lock b/src/frontend/yarn.lock index 6c8889c87..ba392297d 100644 --- a/src/frontend/yarn.lock +++ b/src/frontend/yarn.lock @@ -1206,22 +1206,22 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@blocknote/code-block@0.50.0": - version "0.50.0" - resolved "https://registry.yarnpkg.com/@blocknote/code-block/-/code-block-0.50.0.tgz#992e867080e3c3b5626ad23815280aa4eab39116" - integrity sha512-QCOePMx2HBDkLOYBPkPmJyITBhWaT7bfeQzjMVJOVMx72wR+v2HCejbKPLDIPIX2ZeqYgBliETHn/O8pOJvpIA== +"@blocknote/code-block@0.51.1": + version "0.51.1" + resolved "https://registry.yarnpkg.com/@blocknote/code-block/-/code-block-0.51.1.tgz#871084395377ce78229a35269c025596615b91a9" + integrity sha512-0GCwN7+rPn+ka322oAS4ub5bi5R9uJ2z3WghpH/xMwv516BdrJ0DvHDuOPlfCnnc7+x2nwVNcJeH+IxHoE/rjA== dependencies: - "@blocknote/core" "0.50.0" + "@blocknote/core" "0.51.1" "@shikijs/core" "^4" "@shikijs/engine-javascript" "^4" "@shikijs/langs-precompiled" "^4" "@shikijs/themes" "^4" "@shikijs/types" "^4" -"@blocknote/core@0.50.0": - version "0.50.0" - resolved "https://registry.yarnpkg.com/@blocknote/core/-/core-0.50.0.tgz#f8878e6729962974a7cb7a675348d99816473d74" - integrity sha512-joscwdeB/yVO/2jZQRuoss2uIUQO3Aco5gfvRrTJH3qGNdD+DmY2iSu35kqRucRC0EqzJoN7R0vHY/B8t9YIgA== +"@blocknote/core@0.51.1": + version "0.51.1" + resolved "https://registry.yarnpkg.com/@blocknote/core/-/core-0.51.1.tgz#dfb7fb9a59c1482d4f85836bfc0c56eea5b54bfe" + integrity sha512-hn9FLOTcKeahjfSUxYl11lAQkuLN+9bfKjpAAunyf34CD5+Aj4DXuXjMkqEuExj/fsY7OhgOamAj8qy6soExAw== dependencies: "@emoji-mart/data" "^1.2.1" "@handlewithcare/prosemirror-inputrules" "^0.1.4" @@ -1240,7 +1240,6 @@ "@tiptap/pm" "^3.13.0" emoji-mart "^5.6.0" fast-deep-equal "^3.1.3" - hast-util-from-dom "^5.0.1" lib0 "^0.2.99" prosemirror-highlight "^0.15.1" prosemirror-model "^1.25.4" @@ -1248,35 +1247,25 @@ prosemirror-tables "^1.8.3" prosemirror-transform "^1.11.0" prosemirror-view "^1.41.4" - rehype-format "^5.0.1" - rehype-parse "^9.0.1" - rehype-remark "^10.0.1" - rehype-stringify "^10.0.1" - remark-gfm "^4.0.1" - remark-parse "^11.0.0" - remark-rehype "^11.1.2" - remark-stringify "^11.0.0" - unified "^11.0.5" - unist-util-visit "^5.0.0" y-prosemirror "^1.3.7" y-protocols "^1.0.6" yjs "^13.6.27" -"@blocknote/mantine@0.50.0": - version "0.50.0" - resolved "https://registry.yarnpkg.com/@blocknote/mantine/-/mantine-0.50.0.tgz#0dc0739838fb0b88d916b4f246f569c1edfde60e" - integrity sha512-FGCWrS/r7rKRhec9LNCrjU4TSH9nfDttSC/7U14yrzTCmC2m3mF6TxuhcqRkoWFVgQ+qmP2JRkTfhU6QTYEZSg== +"@blocknote/mantine@0.51.1": + version "0.51.1" + resolved "https://registry.yarnpkg.com/@blocknote/mantine/-/mantine-0.51.1.tgz#b5012af9922fd10493bb07f5cb2afbbdfaafcdfc" + integrity sha512-n6/ijszcQHkAmNbcOvkgx0LUQlLr8DJ80knqepvxiW8bUVUqXkcivL7UCUx8DZsCnZD39Qf+5S1S2WBHVXZT+w== dependencies: - "@blocknote/core" "0.50.0" - "@blocknote/react" "0.50.0" + "@blocknote/core" "0.51.1" + "@blocknote/react" "0.51.1" react-icons "^5.5.0" -"@blocknote/react@0.50.0": - version "0.50.0" - resolved "https://registry.yarnpkg.com/@blocknote/react/-/react-0.50.0.tgz#2847457034c5584805945dbee6f030220a4ffe0e" - integrity sha512-8RWrJat4gyyojGUXE5mH2dPRxUEe94qvX3birqpwPP3E5LyIDo24YuvaCMBXcu/K4q5Tuexs8BXQwTvbR8tpTg== +"@blocknote/react@0.51.1": + version "0.51.1" + resolved "https://registry.yarnpkg.com/@blocknote/react/-/react-0.51.1.tgz#6006f40c6dec63de2fd3310c95be54e617ea022c" + integrity sha512-xnB9ISU2M6RMqqgvg942/G++lAf96a6RJQUvFVvy2fPNxlLPoAUCoKjTmeYjWXZtIT1shu0AT1o1Ax3SN61+dQ== dependencies: - "@blocknote/core" "0.50.0" + "@blocknote/core" "0.51.1" "@emoji-mart/data" "^1.2.1" "@floating-ui/react" "^0.27.18" "@floating-ui/utils" "^0.2.10" @@ -1291,13 +1280,13 @@ react-icons "^5.5.0" use-sync-external-store "1.6.0" -"@blocknote/server-util@0.50.0": - version "0.50.0" - resolved "https://registry.yarnpkg.com/@blocknote/server-util/-/server-util-0.50.0.tgz#2cc6561e8e8e5277db6ca529d520d95c6236665f" - integrity sha512-CZzdCja3nnPje9xsODEGWdT8YIhz1iI83BEKUsJx0fxEexrmwG+qfaAuwJMX/N+XVMjW++XfTOsrS1UkveruhA== +"@blocknote/server-util@0.51.1": + version "0.51.1" + resolved "https://registry.yarnpkg.com/@blocknote/server-util/-/server-util-0.51.1.tgz#870f32441f9b9b4fde1d3df0580d3244aee59bd1" + integrity sha512-Ut5br0TJajAb4Ybm+yypBW+4gqm34dO3ABb5HaMXJJkU7ZcFhdSi0ipHmzRf2QezpyzutvWgf/IsCUtfzb0ZVw== dependencies: - "@blocknote/core" "0.50.0" - "@blocknote/react" "0.50.0" + "@blocknote/core" "0.51.1" + "@blocknote/react" "0.51.1" "@tiptap/core" "^3.13.0" "@tiptap/pm" "^3.13.0" jsdom "^25.0.1" @@ -1305,16 +1294,16 @@ y-protocols "^1.0.6" yjs "^13.6.27" -"@blocknote/xl-ai@0.50.0": - version "0.50.0" - resolved "https://registry.yarnpkg.com/@blocknote/xl-ai/-/xl-ai-0.50.0.tgz#efec63f62f9ef5c6a68e0ad2b4e4d86f9c4d4e82" - integrity sha512-llpoFuzpHv/DeqxrytuBAf129PFQAOigWh1ksoFkvsuH+9LzzEYs22NtixWpv3RRvnyoAq8E1OqsH/C60LBegg== +"@blocknote/xl-ai@0.51.1": + version "0.51.1" + resolved "https://registry.yarnpkg.com/@blocknote/xl-ai/-/xl-ai-0.51.1.tgz#6c18adcef83d101f1b2aa7092d1532392030c4f8" + integrity sha512-NyDmc4ajH7ULUEfusGnR9TEz662KCA0YQmKbwN9xn2FE9bV2u4jrbL/eRgORcjiUF7j0wOBuV3JwUlFTIRPw0Q== dependencies: "@ai-sdk/provider-utils" "^4.0.2" "@ai-sdk/react" "^3.0.5" - "@blocknote/core" "0.50.0" - "@blocknote/mantine" "0.50.0" - "@blocknote/react" "0.50.0" + "@blocknote/core" "0.51.1" + "@blocknote/mantine" "0.51.1" + "@blocknote/react" "0.51.1" "@floating-ui/react" "^0.27.18" "@handlewithcare/prosemirror-suggest-changes" "^0.1.8" "@tiptap/core" "^3.13.0" @@ -1330,29 +1319,26 @@ react "^19.2.5" react-dom "^19.2.5" react-icons "^5.5.0" - remark-parse "^11.0.0" - remark-stringify "^11.0.0" - unified "^11.0.5" y-prosemirror "^1.3.7" -"@blocknote/xl-docx-exporter@0.50.0": - version "0.50.0" - resolved "https://registry.yarnpkg.com/@blocknote/xl-docx-exporter/-/xl-docx-exporter-0.50.0.tgz#0524afd3e3d8676c89d9bf498a7b9bbdf9e064f2" - integrity sha512-S5f7uu+USarGyrS9tZLOs8wYAApxNQ9BCoa1JPjTOSmJleNSxtZByAlMQ5WEukVqRCFY8VGaG0QTLmFpa1bT0A== +"@blocknote/xl-docx-exporter@0.51.1": + version "0.51.1" + resolved "https://registry.yarnpkg.com/@blocknote/xl-docx-exporter/-/xl-docx-exporter-0.51.1.tgz#77bac3e43208665ef3a98e85707ed285ab2a1100" + integrity sha512-SNJHdMfID3g58cwyiE6oJXH9gZ7F2hyWP5ZC02A47fwxtSaju3550fJaGbP7RPxub3Fy0yIz3Pcfr0WEV9qXLQ== dependencies: - "@blocknote/core" "0.50.0" - "@blocknote/xl-multi-column" "0.50.0" + "@blocknote/core" "0.51.1" + "@blocknote/xl-multi-column" "0.51.1" buffer "^6.0.3" docx "^9.6.1" image-meta "^0.2.2" -"@blocknote/xl-multi-column@0.50.0": - version "0.50.0" - resolved "https://registry.yarnpkg.com/@blocknote/xl-multi-column/-/xl-multi-column-0.50.0.tgz#68dc91442291fb8fc3ac85de9b222ab05c4c285d" - integrity sha512-rP60/ZpMJKRld/6hhBX9PLV1dtbVeSfvVhGRMpLYz5sB8Rh8aXyYk+PnNRmoA9Ete5q1opf/EGHxddprYrJQFQ== +"@blocknote/xl-multi-column@0.51.1": + version "0.51.1" + resolved "https://registry.yarnpkg.com/@blocknote/xl-multi-column/-/xl-multi-column-0.51.1.tgz#7ed0bb3637879116ccf30afe87666437ea076e54" + integrity sha512-bFt+F3GwR6eAO8lXtzInP4R81kBDr4AylmhoYQ38X88q+CRvhjLEaeQJhJFDEQsX1Y3NTdA954xAOEPFKe8Kgw== dependencies: - "@blocknote/core" "0.50.0" - "@blocknote/react" "0.50.0" + "@blocknote/core" "0.51.1" + "@blocknote/react" "0.51.1" "@tiptap/core" "^3.13.0" prosemirror-model "^1.25.4" prosemirror-state "^1.4.4" @@ -1361,25 +1347,25 @@ prosemirror-view "^1.41.4" react-icons "^5.5.0" -"@blocknote/xl-odt-exporter@0.50.0": - version "0.50.0" - resolved "https://registry.yarnpkg.com/@blocknote/xl-odt-exporter/-/xl-odt-exporter-0.50.0.tgz#87834c1ed6bc784c72e34c5a66cf774a3edced3c" - integrity sha512-0j80ss1ZfV5q8U+HagalAVDTtu0D2SIKfL3RiwjmLdXaJtP5YtnphGFxDy3nzOjZyAE0pDYbmUyRGbmw+s4cCQ== +"@blocknote/xl-odt-exporter@0.51.1": + version "0.51.1" + resolved "https://registry.yarnpkg.com/@blocknote/xl-odt-exporter/-/xl-odt-exporter-0.51.1.tgz#5ae37f5251ecd11ab4315372603bdca89898e513" + integrity sha512-MX4F1+p4bPd6weZT+ObkEYPT6kIGxIK4GdaA87NzL42l4ce3oIt87TMSTQZBGy7bb8c6cW+EVwaJOApO4BXHVw== dependencies: - "@blocknote/core" "0.50.0" - "@blocknote/xl-multi-column" "0.50.0" + "@blocknote/core" "0.51.1" + "@blocknote/xl-multi-column" "0.51.1" "@zip.js/zip.js" "^2.8.8" buffer "^6.0.3" image-meta "^0.2.2" -"@blocknote/xl-pdf-exporter@0.50.0": - version "0.50.0" - resolved "https://registry.yarnpkg.com/@blocknote/xl-pdf-exporter/-/xl-pdf-exporter-0.50.0.tgz#ecaf0f8096f9d9efd9d3967b518ec8f97c58c920" - integrity sha512-7AqJWNIzCVk1OUqdd0u3XuNEVH8K1YKEH2xvwW10Cz4tvmFqaZUbHM1AU6WP6PUdYExmsKeMU5Cna8SDOTfvSg== +"@blocknote/xl-pdf-exporter@0.51.1": + version "0.51.1" + resolved "https://registry.yarnpkg.com/@blocknote/xl-pdf-exporter/-/xl-pdf-exporter-0.51.1.tgz#0de4a7c3d16a995d917c321fe72d8ab660bf7a2d" + integrity sha512-UGJf0W3YVwz47KATjea1GM7AcB5p71c6B+d4cp55U6rX0Im/Bx7PjiYcSR+G6K9COSpccxcdeEp1gk5S060jTg== dependencies: - "@blocknote/core" "0.50.0" - "@blocknote/react" "0.50.0" - "@blocknote/xl-multi-column" "0.50.0" + "@blocknote/core" "0.51.1" + "@blocknote/react" "0.51.1" + "@blocknote/xl-multi-column" "0.51.1" "@react-pdf/renderer" "^4.3.0" buffer "^6.0.3" docx "^9.5.1" @@ -6465,13 +6451,6 @@ dependencies: "@types/node" "*" -"@types/debug@^4.0.0": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== - dependencies: - "@types/ms" "*" - "@types/deep-eql@*": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/deep-eql/-/deep-eql-4.0.2.tgz#334311971d3a07121e7eb91b684a605e7eea9cbd" @@ -6644,11 +6623,6 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/ms@*": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" - integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== - "@types/mysql@2.15.27": version "2.15.27" resolved "https://registry.yarnpkg.com/@types/mysql/-/mysql-2.15.27.tgz#fb13b0e8614d39d42f40f381217ec3215915f1e9" @@ -8028,11 +8002,6 @@ babel-preset-jest@30.4.0: babel-plugin-jest-hoist "30.4.0" babel-preset-current-node-syntax "^1.2.0" -bail@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" - integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -8354,11 +8323,6 @@ character-entities-legacy@^3.0.0: resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== -character-entities@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" - integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== - cheerio-select@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" @@ -8895,7 +8859,7 @@ data-view-byte-offset@^1.0.1: es-errors "^1.3.0" is-data-view "^1.0.1" -debug@4, debug@^4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.7, debug@^4.4.0, debug@^4.4.1, debug@^4.4.3: +debug@4, debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.7, debug@^4.4.0, debug@^4.4.1, debug@^4.4.3: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -8921,13 +8885,6 @@ decimal.js@^10.4.3, decimal.js@^10.6.0: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a" integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== -decode-named-character-reference@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz#25c32ae6dd5e21889549d40f676030e9514cc0ed" - integrity sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q== - dependencies: - character-entities "^2.0.0" - dedent@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.7.0.tgz#c1f9445335f0175a96587be245a282ff451446ca" @@ -8991,7 +8948,7 @@ detect-node-es@^1.1.0: resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== -devlop@^1.0.0, devlop@^1.1.0: +devlop@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== @@ -9451,11 +9408,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escape-string-regexp@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" - integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== - eslint-config-next@16.2.6: version "16.2.6" resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-16.2.6.tgz#1a04578efe6fde5cdb6265e98e88c9f61927e2c7" @@ -9897,11 +9849,6 @@ express@5.2.1: type-is "^2.0.1" vary "^1.1.2" -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -10581,113 +10528,7 @@ hasown@^2.0.2: dependencies: function-bind "^1.1.2" -hast-util-embedded@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz#be4477780fbbe079cdba22982e357a0de4ba853e" - integrity sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA== - dependencies: - "@types/hast" "^3.0.0" - hast-util-is-element "^3.0.0" - -hast-util-format@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hast-util-format/-/hast-util-format-1.1.0.tgz#373e77382e07deb04f6676f1b4437e7d8549d985" - integrity sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA== - dependencies: - "@types/hast" "^3.0.0" - hast-util-embedded "^3.0.0" - hast-util-minify-whitespace "^1.0.0" - hast-util-phrasing "^3.0.0" - hast-util-whitespace "^3.0.0" - html-whitespace-sensitive-tag-names "^3.0.0" - unist-util-visit-parents "^6.0.0" - -hast-util-from-dom@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz#c3c92fbd8d4e1c1625edeb3a773952b9e4ad64a8" - integrity sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q== - dependencies: - "@types/hast" "^3.0.0" - hastscript "^9.0.0" - web-namespaces "^2.0.0" - -hast-util-from-html@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz#485c74785358beb80c4ba6346299311ac4c49c82" - integrity sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw== - dependencies: - "@types/hast" "^3.0.0" - devlop "^1.1.0" - hast-util-from-parse5 "^8.0.0" - parse5 "^7.0.0" - vfile "^6.0.0" - vfile-message "^4.0.0" - -hast-util-from-parse5@^8.0.0: - version "8.0.3" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz#830a35022fff28c3fea3697a98c2f4cc6b835a2e" - integrity sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg== - dependencies: - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - devlop "^1.0.0" - hastscript "^9.0.0" - property-information "^7.0.0" - vfile "^6.0.0" - vfile-location "^5.0.0" - web-namespaces "^2.0.0" - -hast-util-has-property@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz#4e595e3cddb8ce530ea92f6fc4111a818d8e7f93" - integrity sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA== - dependencies: - "@types/hast" "^3.0.0" - -hast-util-is-body-ok-link@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz#ef63cb2f14f04ecf775139cd92bda5026380d8b4" - integrity sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ== - dependencies: - "@types/hast" "^3.0.0" - -hast-util-is-element@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz#6e31a6532c217e5b533848c7e52c9d9369ca0932" - integrity sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g== - dependencies: - "@types/hast" "^3.0.0" - -hast-util-minify-whitespace@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz#7588fd1a53f48f1d30406b81959dffc3650daf55" - integrity sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw== - dependencies: - "@types/hast" "^3.0.0" - hast-util-embedded "^3.0.0" - hast-util-is-element "^3.0.0" - hast-util-whitespace "^3.0.0" - unist-util-is "^6.0.0" - -hast-util-parse-selector@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz#352879fa86e25616036037dd8931fb5f34cb4a27" - integrity sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== - dependencies: - "@types/hast" "^3.0.0" - -hast-util-phrasing@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz#fa284c0cd4a82a0dd6020de8300a7b1ebffa1690" - integrity sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ== - dependencies: - "@types/hast" "^3.0.0" - hast-util-embedded "^3.0.0" - hast-util-has-property "^3.0.0" - hast-util-is-body-ok-link "^3.0.0" - hast-util-is-element "^3.0.0" - -hast-util-to-html@^9.0.0, hast-util-to-html@^9.0.5: +hast-util-to-html@^9.0.5: version "9.0.5" resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz#ccc673a55bb8e85775b08ac28380f72d47167005" integrity sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw== @@ -10704,36 +10545,6 @@ hast-util-to-html@^9.0.0, hast-util-to-html@^9.0.5: stringify-entities "^4.0.0" zwitch "^2.0.4" -hast-util-to-mdast@^10.0.0: - version "10.1.2" - resolved "https://registry.yarnpkg.com/hast-util-to-mdast/-/hast-util-to-mdast-10.1.2.tgz#bc76f7f5f72f2cde4d6a66ad4cd0aba82bb79909" - integrity sha512-FiCRI7NmOvM4y+f5w32jPRzcxDIz+PUqDwEqn1A+1q2cdp3B8Gx7aVrXORdOKjMNDQsD1ogOr896+0jJHW1EFQ== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - "@ungap/structured-clone" "^1.0.0" - hast-util-phrasing "^3.0.0" - hast-util-to-html "^9.0.0" - hast-util-to-text "^4.0.0" - hast-util-whitespace "^3.0.0" - mdast-util-phrasing "^4.0.0" - mdast-util-to-hast "^13.0.0" - mdast-util-to-string "^4.0.0" - rehype-minify-whitespace "^6.0.0" - trim-trailing-lines "^2.0.0" - unist-util-position "^5.0.0" - unist-util-visit "^5.0.0" - -hast-util-to-text@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz#57b676931e71bf9cb852453678495b3080bfae3e" - integrity sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A== - dependencies: - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - hast-util-is-element "^3.0.0" - unist-util-find-after "^5.0.0" - hast-util-whitespace@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" @@ -10741,17 +10552,6 @@ hast-util-whitespace@^3.0.0: dependencies: "@types/hast" "^3.0.0" -hastscript@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-9.0.1.tgz#dbc84bef6051d40084342c229c451cd9dc567dff" - integrity sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w== - dependencies: - "@types/hast" "^3.0.0" - comma-separated-tokens "^2.0.0" - hast-util-parse-selector "^4.0.0" - property-information "^7.0.0" - space-separated-tokens "^2.0.0" - heimdalljs-logger@^0.1.10, heimdalljs-logger@^0.1.7: version "0.1.10" resolved "https://registry.yarnpkg.com/heimdalljs-logger/-/heimdalljs-logger-0.1.10.tgz#90cad58aabb1590a3c7e640ddc6a4cd3a43faaf7" @@ -10839,11 +10639,6 @@ html-void-elements@^3.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== -html-whitespace-sensitive-tag-names@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.1.tgz#c35edd28205f3bf8c1fd03274608d60b923de5b2" - integrity sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA== - htmlparser2@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-10.0.0.tgz#77ad249037b66bf8cc99c6e286ef73b83aeb621d" @@ -12313,11 +12108,6 @@ long@^5.0.0: resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== -longest-streak@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" - integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== - loose-envify@^1.0.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -12426,11 +12216,6 @@ markdown-it@^14.0.0: punycode.js "^2.3.1" uc.micro "^2.1.0" -markdown-table@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.4.tgz#fe44d6d410ff9d6f2ea1797a3f60aa4d2b631c2a" - integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw== - matcher-collection@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/matcher-collection/-/matcher-collection-2.0.1.tgz#90be1a4cf58d6f2949864f65bb3b0f3e41303b29" @@ -12449,107 +12234,6 @@ mathml-tag-names@^2.1.3: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -mdast-util-find-and-replace@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz#70a3174c894e14df722abf43bc250cbae44b11df" - integrity sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg== - dependencies: - "@types/mdast" "^4.0.0" - escape-string-regexp "^5.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - -mdast-util-from-markdown@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz#4850390ca7cf17413a9b9a0fbefcd1bc0eb4160a" - integrity sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - mdast-util-to-string "^4.0.0" - micromark "^4.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-decode-string "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - unist-util-stringify-position "^4.0.0" - -mdast-util-gfm-autolink-literal@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz#abd557630337bd30a6d5a4bd8252e1c2dc0875d5" - integrity sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ== - dependencies: - "@types/mdast" "^4.0.0" - ccount "^2.0.0" - devlop "^1.0.0" - mdast-util-find-and-replace "^3.0.0" - micromark-util-character "^2.0.0" - -mdast-util-gfm-footnote@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz#7778e9d9ca3df7238cc2bd3fa2b1bf6a65b19403" - integrity sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.1.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - -mdast-util-gfm-strikethrough@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16" - integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38" - integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - markdown-table "^3.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm-task-list-item@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936" - integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz#2cdf63b92c2a331406b0fb0db4c077c1b0331751" - integrity sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ== - dependencies: - mdast-util-from-markdown "^2.0.0" - mdast-util-gfm-autolink-literal "^2.0.0" - mdast-util-gfm-footnote "^2.0.0" - mdast-util-gfm-strikethrough "^2.0.0" - mdast-util-gfm-table "^2.0.0" - mdast-util-gfm-task-list-item "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-phrasing@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz#7cc0a8dec30eaf04b7b1a9661a92adb3382aa6e3" - integrity sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w== - dependencies: - "@types/mdast" "^4.0.0" - unist-util-is "^6.0.0" - mdast-util-to-hast@^13.0.0: version "13.2.1" resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz#d7ff84ca499a57e2c060ae67548ad950e689a053" @@ -12565,28 +12249,6 @@ mdast-util-to-hast@^13.0.0: unist-util-visit "^5.0.0" vfile "^6.0.0" -mdast-util-to-markdown@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz#f910ffe60897f04bb4b7e7ee434486f76288361b" - integrity sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - longest-streak "^3.0.0" - mdast-util-phrasing "^4.0.0" - mdast-util-to-string "^4.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-decode-string "^2.0.0" - unist-util-visit "^5.0.0" - zwitch "^2.0.0" - -mdast-util-to-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814" - integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== - dependencies: - "@types/mdast" "^4.0.0" - mdn-data@2.0.28: version "2.0.28" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" @@ -12662,154 +12324,6 @@ methods@^1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromark-core-commonmark@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz#c691630e485021a68cf28dbc2b2ca27ebf678cd4" - integrity sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg== - dependencies: - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-factory-destination "^2.0.0" - micromark-factory-label "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-factory-title "^2.0.0" - micromark-factory-whitespace "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-html-tag-name "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-autolink-literal@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz#6286aee9686c4462c1e3552a9d505feddceeb935" - integrity sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-footnote@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz#4dab56d4e398b9853f6fe4efac4fc9361f3e0750" - integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== - dependencies: - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-strikethrough@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz#86106df8b3a692b5f6a92280d3879be6be46d923" - integrity sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw== - dependencies: - devlop "^1.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-table@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz#fac70bcbf51fe65f5f44033118d39be8a9b5940b" - integrity sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-tagfilter@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57" - integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== - dependencies: - micromark-util-types "^2.0.0" - -micromark-extension-gfm-task-list-item@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz#bcc34d805639829990ec175c3eea12bb5b781f2c" - integrity sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b" - integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== - dependencies: - micromark-extension-gfm-autolink-literal "^2.0.0" - micromark-extension-gfm-footnote "^2.0.0" - micromark-extension-gfm-strikethrough "^2.0.0" - micromark-extension-gfm-table "^2.0.0" - micromark-extension-gfm-tagfilter "^2.0.0" - micromark-extension-gfm-task-list-item "^2.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-destination@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz#8fef8e0f7081f0474fbdd92deb50c990a0264639" - integrity sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-label@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz#5267efa97f1e5254efc7f20b459a38cb21058ba1" - integrity sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg== - dependencies: - devlop "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-space@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz#36d0212e962b2b3121f8525fc7a3c7c029f334fc" - integrity sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-title@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz#237e4aa5d58a95863f01032d9ee9b090f1de6e94" - integrity sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw== - dependencies: - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-whitespace@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz#06b26b2983c4d27bfcc657b33e25134d4868b0b1" - integrity sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ== - dependencies: - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - micromark-util-character@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" @@ -12818,71 +12332,11 @@ micromark-util-character@^2.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromark-util-chunked@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz#47fbcd93471a3fccab86cff03847fc3552db1051" - integrity sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-classify-character@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz#d399faf9c45ca14c8b4be98b1ea481bced87b629" - integrity sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-combine-extensions@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz#2a0f490ab08bff5cc2fd5eec6dd0ca04f89b30a9" - integrity sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg== - dependencies: - micromark-util-chunked "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-decode-numeric-character-reference@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz#fcf15b660979388e6f118cdb6bf7d79d73d26fe5" - integrity sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-decode-string@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz#6cb99582e5d271e84efca8e61a807994d7161eb2" - integrity sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ== - dependencies: - decode-named-character-reference "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-encode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== -micromark-util-html-tag-name@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz#e40403096481986b41c106627f98f72d4d10b825" - integrity sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA== - -micromark-util-normalize-identifier@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz#c30d77b2e832acf6526f8bf1aa47bc9c9438c16d" - integrity sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-resolve-all@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz#e1a2d62cdd237230a2ae11839027b19381e31e8b" - integrity sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg== - dependencies: - micromark-util-types "^2.0.0" - micromark-util-sanitize-uri@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" @@ -12892,16 +12346,6 @@ micromark-util-sanitize-uri@^2.0.0: micromark-util-encode "^2.0.0" micromark-util-symbol "^2.0.0" -micromark-util-subtokenize@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz#d8ade5ba0f3197a1cf6a2999fbbfe6357a1a19ee" - integrity sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA== - dependencies: - devlop "^1.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - micromark-util-symbol@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" @@ -12912,29 +12356,6 @@ micromark-util-types@^2.0.0: resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.2.tgz#f00225f5f5a0ebc3254f96c36b6605c4b393908e" integrity sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA== -micromark@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.2.tgz#91395a3e1884a198e62116e33c9c568e39936fdb" - integrity sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA== - dependencies: - "@types/debug" "^4.0.0" - debug "^4.0.0" - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - micromatch@^4.0.4, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" @@ -14619,93 +14040,6 @@ regjsparser@^0.13.0: dependencies: jsesc "~3.1.0" -rehype-format@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/rehype-format/-/rehype-format-5.0.1.tgz#e255e59bed0c062156aaf51c16fad5a521a1f5c8" - integrity sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ== - dependencies: - "@types/hast" "^3.0.0" - hast-util-format "^1.0.0" - -rehype-minify-whitespace@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/rehype-minify-whitespace/-/rehype-minify-whitespace-6.0.2.tgz#7dd234ce0775656ce6b6b0aad0a6093de29b2278" - integrity sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw== - dependencies: - "@types/hast" "^3.0.0" - hast-util-minify-whitespace "^1.0.0" - -rehype-parse@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-9.0.1.tgz#9993bda129acc64c417a9d3654a7be38b2a94c20" - integrity sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag== - dependencies: - "@types/hast" "^3.0.0" - hast-util-from-html "^2.0.0" - unified "^11.0.0" - -rehype-remark@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/rehype-remark/-/rehype-remark-10.0.1.tgz#f669fa68cfb8b5baaf4fa95476a923516111a43b" - integrity sha512-EmDndlb5NVwXGfUa4c9GPK+lXeItTilLhE6ADSaQuHr4JUlKw9MidzGzx4HpqZrNCt6vnHmEifXQiiA+CEnjYQ== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - hast-util-to-mdast "^10.0.0" - unified "^11.0.0" - vfile "^6.0.0" - -rehype-stringify@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-10.0.1.tgz#2ec1ebc56c6aba07905d3b4470bdf0f684f30b75" - integrity sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA== - dependencies: - "@types/hast" "^3.0.0" - hast-util-to-html "^9.0.0" - unified "^11.0.0" - -remark-gfm@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.1.tgz#33227b2a74397670d357bf05c098eaf8513f0d6b" - integrity sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-gfm "^3.0.0" - micromark-extension-gfm "^3.0.0" - remark-parse "^11.0.0" - remark-stringify "^11.0.0" - unified "^11.0.0" - -remark-parse@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1" - integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-from-markdown "^2.0.0" - micromark-util-types "^2.0.0" - unified "^11.0.0" - -remark-rehype@^11.1.2: - version "11.1.2" - resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.2.tgz#2addaadda80ca9bd9aa0da763e74d16327683b37" - integrity sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - mdast-util-to-hast "^13.0.0" - unified "^11.0.0" - vfile "^6.0.0" - -remark-stringify@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3" - integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-to-markdown "^2.0.0" - unified "^11.0.0" - remove-trailing-separator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -16032,16 +15366,6 @@ trim-lines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== -trim-trailing-lines@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-2.1.0.tgz#9aac7e89b09cb35badf663de7133c6de164f86df" - integrity sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg== - -trough@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" - integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== - ts-api-utils@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8" @@ -16314,19 +15638,6 @@ unicode-trie@^2.0.0: pako "^0.2.5" tiny-inflate "^1.0.0" -unified@^11.0.0, unified@^11.0.5: - version "11.0.5" - resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.5.tgz#f66677610a5c0a9ee90cab2b8d4d66037026d9e1" - integrity sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA== - dependencies: - "@types/unist" "^3.0.0" - bail "^2.0.0" - devlop "^1.0.0" - extend "^3.0.0" - is-plain-obj "^4.0.0" - trough "^2.0.0" - vfile "^6.0.0" - unique-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" @@ -16334,14 +15645,6 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -unist-util-find-after@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz#3fccc1b086b56f34c8b798e1ff90b5c54468e896" - integrity sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - unist-util-is@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.1.tgz#d0a3f86f2dd0db7acd7d8c2478080b5c67f9c6a9" @@ -16514,14 +15817,6 @@ vary@^1, vary@^1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -vfile-location@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-5.0.3.tgz#cb9eacd20f2b6426d19451e0eafa3d0a846225c3" - integrity sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg== - dependencies: - "@types/unist" "^3.0.0" - vfile "^6.0.0" - vfile-message@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.3.tgz#87b44dddd7b70f0641c2e3ed0864ba73e2ea8df4" @@ -16692,11 +15987,6 @@ watchpack@^2.5.1: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -web-namespaces@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" - integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== - web-vitals@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-5.1.0.tgz#2f117e92c8c4eeb107cb163cbb482ac20d685ebd" @@ -17260,7 +16550,7 @@ zustand@5.0.13: resolved "https://registry.yarnpkg.com/zustand/-/zustand-5.0.13.tgz#06995c126e8903cd27100af04da91c36ae3051ed" integrity sha512-efI2tVaVQPqtOh114loML/Z80Y4NP3yc+Ff0fYiZJPauNeWZeIp/bRFD7I9bfmCOYBh/PHxlglQ9+wvlwnPikQ== -zwitch@^2.0.0, zwitch@^2.0.4: +zwitch@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==