1import{r as d,j as e,d as qr}from"./react-vendor-CHQL15iE.js";import{u as ho,E as fo,c as bo,d as Hr,e as Yr,f as Qr,T as Kr,g as Xr,h as La,j as Jr,S as Qs,k as Zr,C as Ks,l as Ma,m as en,n as tn,o as an,V as sn,t as Xs}from"./main-Dck1T9BT.js";import{g as on}from"./publicIdentity-C99q7MBr.js";import{C as qt}from"./CharacterCard-CKFcZsFo.js";import{D as Js,g as rn,r as go,L as ko,a as wo,c as nn,w as ln}from"./gameCharacterLayout-CKtvG8H9.js";import{g as dn}from"./gameDialogueLayout-7k6pGA83.js";import{X as J,M as vo,s as yo,P as ht,h as cn,t as mn,u as pn,c as Pa,b as No,v as So,U as un,w as xn,x as hn,y as fn,B as Zs,q as bn,E as eo,z as gn,L as Ca,A as Ht,k as kn,G as wn,I as Yt,J as He,K as Oa,S as vn,N as yn,O as Nn,C as Sn,Q as Rn}from"./lucide-BFLOpGdB.js";import{R as Qt}from"./ResponsiveCloudflareImage-DdXVaAv7.js";import"./pdfjs-ji3DqnKJ.js";import"./markdown-W-rE_H7s.js";import"./katex-math-BxKHCrdI.js";import"./assetUrl-D33wRw9g.js";const An="Attention Is All You Need",jn="主人ï¼è¿ç¯è®ºæãAttention Is All You Needãæ¯å
³äºä¸ç§å为Transformerçå
¨æ°ç¥ç»ç½ç»æ¶æãå®å®å
¨æ¾å¼äºä¼ ç»çå¾ªç¯æå·ç§¯ç»æï¼è½¬èåªä½¿ç¨æ³¨æåæºå¶ãTransformer卿ºå¨ç¿»è¯ä»»å¡ä¸å±ç°äºåè¶çæ§è½ï¼å¹¶ä¸è®ç»é度æ´å¿«ï¼æ¯èªç¶è¯è¨å¤çé¢åçä¸ä¸ªéç¨ç¢å¢ã",Ln=JSON.parse('[{"id":1,"speaker":"è¾å¤é²å¡","text":"ä¸»äººï¼æ¬¢è¿æ¥å°é²å¡çç§å¯è¯¾å ⪠ä»å¤©ï¼é²å¡å°ä¸ºæ¨æå¼ä¸ç¯é常éè¦ç论æââãAttention Is All You Needãçç¥ç§é¢çº±ã请é®ä¸»äººï¼æ¨å¯¹è¿ç¯è®ºææä»ä¹åæ¥çäºè§£åï¼","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":2,"speaker":"è¾å¤é²å¡","text":"è¿ç¯è®ºæï¼å®å¼å¯äºä¸ä¸ªå
¨æ°çæ¶ä»£å¢ãä¼ ç»çåºå模åï¼ä¾å¦å¾ªç¯ç¥ç»ç½ç»ï¼RNNsï¼åé¿çæè®°å¿ç½ç»ï¼LSTMsï¼ï¼å¨å¤çé¿åºåæ¶éå°äºç¶é¢ã主人ç¥éæ¯ä¸ºä»ä¹åï¼","emotion":"THINKING","background":"CLASSROOM","choices":[{"text":"å¹¶è¡è®¡ç®åé","nextFrameId":100},{"text":"模åç»æè¿äºå¤æ","nextFrameId":101},{"text":"注æåæºå¶ä¸å¤å¼ºå¤§","nextFrameId":102}]},{"id":100,"speaker":"è¾å¤é²å¡","text":"æ£æ¯å¦æ¤ï¼ä¸»äººï¼æ¨çæ¯èªæå¢ ⤠RNNsçè®¡ç®æ¯ä¸¥æ ¼åºååçï¼è¿æå³ç宿 æ³å¹¶è¡å¤çæ°æ®ï¼å¨å¤çå¾é¿çåºåæ¶æçé常ä½ãèTransformerè§£å³äºè¿ä¸ªé®é¢ï¼å®å
许æ´å¤çå¹¶è¡åï¼æ¾è缩çäºè®ç»æ¶é´ã","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":3},{"id":101,"speaker":"è¾å¤é²å¡","text":"å¯â¦â¦ä¸»äººï¼è½ç¶RNNsçç»æç¡®å®æå
¶å¤æä¹å¤ï¼ä½è¿å¹¶ä¸æ¯å®å¨å¹¶è¡è®¡ç®ä¸ç主è¦éå¶åå ãçæ£çé®é¢å¨äºå
¶å
å¨çåºåä¾èµæ§å¦ãä¸è¿æ²¡å
³ç³»ï¼é²å¡ä¼ä¸ºæ¨è¯¦ç»è§£éçã","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":3},{"id":102,"speaker":"è¾å¤é²å¡","text":"åå¦ï¼ä¸»äººï¼æ¨è¯¯è§£äºå¢ã注æåæºå¶å¨ä¼ ç»æ¨¡åä¸å·²ç»å¼å§æ®æ¼éè¦è§è²äºï¼ä½é常æ¯ä½ä¸ºRNNçè¾
å©ãTransformerçåæ°ä¹å¤å¨äºï¼å®å®å
¨æå¼äºRNNï¼åªä¾èµæ³¨æåãä¸è¿ï¼é²å¡å¾é«å
´æ¨è½æèå¦ã","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":3},{"id":3,"speaker":"è¾å¤é²å¡","text":"Transformerçæ ¸å¿ææ³æ¯å®å
¨åºäºæ³¨æåæºå¶ï¼ç¹å«æ¯âèªæ³¨æåï¼Self-Attentionï¼âã宿å¼äºå¾ªç¯å±åå·ç§¯å±ï¼ä½¿å¾æ¨¡åè½å¤æ´å¥½å°ææè¾å
¥åè¾åºåºåä¹é´çå
¨å±ä¾èµå
³ç³»ã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":4,"speaker":"è¾å¤é²å¡","text":"模åçæ¶æç±ç¼ç å¨ï¼Encoderï¼åè§£ç å¨ï¼Decoderï¼ç»æï¼å°±å许å¤å
¶ä»åºåè½¬æ¢æ¨¡å䏿 ·ãæ¯ä¸ªç¼ç å¨åè§£ç å¨é½ç±å¤å±å å èæãæ¯ä¸ªå±éé¢ï¼ä¸»äººä¼çå°ä»ä¹å¢ï¼","emotion":"THINKING","background":"CLASSROOM"},{"id":5,"speaker":"è¾å¤é²å¡","text":"ç¼ç å¨ç±N=6个ç¸åçå±å å èæãæ¯ä¸ªå±å
å«ä¸¤ä¸ªåå±ï¼ç¬¬ä¸ä¸ªæ¯å¤å¤´èªæ³¨æåæºå¶ï¼Multi-Head Self-Attentionï¼ï¼ç¬¬äºä¸ªæ¯ç®åçä½ç½®æç¥å
¨è¿æ¥åé¦ç½ç»ï¼Position-wise Feed-Forward Networkï¼ã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":6,"speaker":"è¾å¤é²å¡","text":"é²å¡è¦ç¹å«æåºï¼æ¯ä¸ªåå±é½ä½¿ç¨äºæ®å·®è¿æ¥ï¼Residual Connectionï¼ï¼å¹¶ä¸ä¹åè¿è·çå±å½ä¸åï¼Layer Normalizationï¼ãç¨å
¬å¼è¡¨ç¤ºå°±æ¯ï¼$\\\\text{LayerNorm}(x + \\\\text{Sublayer}(x))$ï¼å
¶ä¸$\\\\text{Sublayer}(x)$æ¯å屿¬èº«å®ç°ç彿°ãâª","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":7,"speaker":"è¾å¤é²å¡","text":"è§£ç å¨ä¹ç±N=6个ç¸åçå
1±å å èæï¼ä¸ç¼ç å¨ç±»ä¼¼ï¼ä½å¤äºä¸ä¸ªé¢å¤çåå±ãè¿ä¸ªåå±å¨ç¼ç å¨-è§£ç 卿³¨æåï¼Encoder-Decoder Attentionï¼ä¸ï¼ä¼å¯¹ç¼ç å¨çè¾åºè¿è¡å¤å¤´æ³¨æåæä½ã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":8,"speaker":"è¾å¤é²å¡","text":"åæ¶ï¼è§£ç å¨ä¸çèªæ³¨æååå±è¿ä¼è¿è¡æ©ç ï¼Maskingï¼å¤çï¼ä»¥é²æ¢å½åä½ç½®âçå°âæªæ¥ä½ç½®çä¿¡æ¯ï¼ä»èä¿æå
¶èªåå½ï¼auto-regressiveï¼çç¹æ§ã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":9,"speaker":"è¾å¤é²å¡","text":"ç°å¨ï¼è®©æä»¬æ·±å
¥äºè§£ä¸ä¸æ³¨æåæºå¶ã注æå彿°å¯ä»¥æè¿°ä¸ºå°ä¸ä¸ªæ¥è¯¢ï¼Queryï¼åä¸ç»é®å¼å¯¹ï¼Key-Value pairsï¼æ å°å°è¾åºãè¾åºæ¯å¼çå æåï¼èæéåç±æ¥è¯¢å对åºé®çå
¼å®¹æ§å½æ°è®¡ç®å¾åºã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":10,"speaker":"è¾å¤é²å¡","text":"论æä¸æåºçæ¯â缩æ¾ç¹ç§¯æ³¨æåâï¼Scaled Dot-Product Attentionï¼ãå®çè¾å
¥æ¯ç»´åº¦ä¸º $d_k$ çæ¥è¯¢ $Q$ åé® $K$ï¼ä»¥å维度为 $d_v$ çå¼ $V$ã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":11,"speaker":"è¾å¤é²å¡","text":"æä»¬è®¡ç®æ¥è¯¢ä¸ææé®çç¹ç§¯ï¼ç¶åé¤ä»¥$\\\\sqrt{d_k}$ï¼åéè¿softmax彿°å¾å°æéãç¨ç©éµå½¢å¼è¡¨ç¤ºï¼å
¶è®¡ç®å
¬å¼ä¸ºï¼","emotion":"THINKING","background":"CLASSROOM"},{"id":12,"speaker":"è¾å¤é²å¡","text":"$$\\\\text{Attention}(Q, K, V) = \\\\text{softmax}(\\\\frac{QK^T}{\\\\sqrt{d_k}})V$$","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":13,"speaker":"è¾å¤é²å¡","text":"ä¸»äººï¼æ¨ç¥é为ä»ä¹è¦é¤ä»¥$\\\\sqrt{d_k}$æ¥ç¼©æ¾ç¹ç§¯ç»æåï¼è¿æ¯ä¸ä¸ªå¾ç²¾å¦ç设计å¦ã","emotion":"THINKING","background":"CLASSROOM","choices":[{"text":"鲿¢ç¹ç§¯è¿å¤§ï¼å¯¼è´softmax梯度æ¶å¤±","nextFrameId":200},{"text":"使模åè½å¤å¤çä¸åé¿åº¦çåºå","nextFrameId":201},{"text":"å¢å 模åç计ç®å¤æåº¦","nextFrameId":202}]},{"id":200,"speaker":"è¾å¤é²å¡","text":"ä¸»äººçæ¯å¤©æï¼â¤ æ¨è¯´å¾å®å
¨æ£ç¡®ãå½ $d_k$ å¼å¾å¤§æ¶ï¼ç¹ç§¯çç»æä¼åå¾é常大ï¼è¿å°æsoftmax彿°æ¨åå
¶æ¢¯åº¦é常å°çåºåï¼å¯¼è´æ¨¡åè®ç»å°é¾ãéè¿é¤ä»¥$\\\\sqrt{d_k}
1$ï¼æä»¬å¯ä»¥ç¼è§£è¿ä¸ªé®é¢ï¼ä¿ææ¢¯åº¦çç¨³å®æ§ã","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":14},{"id":201,"speaker":"è¾å¤é²å¡","text":"å¯â¦â¦ä¸»äººï¼è¿ä¸ªç¼©æ¾å å并䏿¯ä¸ºäºå¤çä¸åé¿åº¦çåºåå¦ãåºåé¿åº¦çé®é¢æ´å¤æ¯éè¿ä½ç½®ç¼ç æ¥è§£å³çãç¼©æ¾æ¯ä¸ºäºç¨³å®è®ç»è¿ç¨ä¸ç梯度ãé²å¡å¸æä¸»äººè½åå顾ä¸ä¸å¢ã","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":14},{"id":202,"speaker":"è¾å¤é²å¡","text":"主人ï¼è¿å¯ä¸æ¯ä¸ºäºå¢å 计ç®å¤æåº¦å¢ï¼å®åèè½è®©è®ç»æ´é¡ºå©ãé²å¡è§å¾ä¸»äººå¯è½æç¹åå¿äºå¢ãè¿ä¸ªç¼©æ¾æ¯ä¸ºäºé²æ¢æ¢¯åº¦æ¶å¤±çé®é¢ï¼ä»è叮婿¨¡åæ´å¥½å°å¦ä¹ å¦ã","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":14},{"id":14,"speaker":"è¾å¤é²å¡","text":"æ¥ä¸æ¥æ¯âå¤å¤´æ³¨æåâï¼Multi-Head Attentionï¼ãå®ä¸æ¯åªæ§è¡ä¸æ¬¡æ³¨æå彿°ï¼èæ¯å°æ¥è¯¢ãé®åå¼çº¿æ§æå½±h次ï¼äº§çhç»ä¸åç $d_k, d_v$ ç»´åº¦çæ¥è¯¢ãé®åå¼ã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":15,"speaker":"è¾å¤é²å¡","text":"ç¶åï¼å¯¹æ¯ä¸ç»æå½±æ§è¡å¹¶è¡ç注æå彿°ï¼å¾å° $h$ 个 $d_v$ 维度çè¾åºå¼ãæåï¼å°è¿äºè¾åºå¼æ¼æ¥èµ·æ¥ï¼åéè¿ä¸ä¸ªçº¿æ§æå½±å¾å°æç»çç»æã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":16,"speaker":"è¾å¤é²å¡","text":"ç¨å
¬å¼è¡¨è¾¾å°±æ¯ï¼","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":17,"speaker":"è¾å¤é²å¡","text":"$$\\\\text{MultiHead}(Q, K, V) = \\\\text{Concat}(\\\\text{head}_1, ..., \\\\text{head}_h)W^O$$å
¶ä¸ï¼$\\\\text{head}_i = \\\\text{Attention}(QW_i^Q, KW_i^K, VW_i^V)$ãè¿å
许模åå¨ä¸åç表示å空é´ä¸å
±åå
³æ³¨æ¥èªä¸åä½ç½®çä¿¡æ¯ãâ¤","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":18,"speaker":"è¾å¤é²å¡","text":"Transformerä¸ä½¿ç¨äºä¸ç§ç±»åçå¤å¤´æ³¨æåï¼ç¼ç å¨-è§£ç 卿³¨æåãç¼ç å¨èªæ³¨æåï¼ä»¥åè§£ç å¨èªæ³¨æåãé²å¡åææå°çæ©ç å¤çå°±æ¯åºç¨å¨è§£ç å¨èªæ³¨æåä¸çå¦ã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":19,"speaker":"è¾å¤é²å¡","text":"é¤äºæ³¨æååå±ï¼ç¼ç å¨åè§£ç å¨ä¸çæ¯ä¸å±è¿å
å«ä¸ä¸ªä½ç½®æç¥åé¦ç½ç»ã宿¯ä¸ä¸ªå
¨è¿æ¥ç½ç»ï¼å
å«ä¸¤ä¸ªçº¿æ§åæ¢åä¸ä¸ªReLUæ¿æ´»å½æ°ï¼","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":20,"speaker":"è¾å¤é²å¡","text":"$$\\\\text{FFN}(x) = \\\\max(0, xW_1 + b_1)W_2 + b_2$$","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":21,"speaker":"è¾å¤é²å¡","text":"Transformeræ¨¡åæ¢æ²¡æå¾ªç¯ä¹æ²¡æå·ç§¯ï¼é£ä¹å®æ¯å¦ä½å©ç¨åºåä¸è¯è¯ç顺åºä¿¡æ¯çå¢ï¼ä¸»äººæä»ä¹æ³æ³åï¼","emotion":"THINKING","background":"CLASSROOM","choices":[{"text":"éè¿âä½ç½®ç¼ç â","nextFrameId":300},{"text":"å©ç¨è¯åéç顺åºç¹æ§","nextFrameId":301},{"text":"å®ä¸éè¦é¡ºåºä¿¡æ¯","nextFrameId":302}]},{"id":300,"speaker":"è¾å¤é²å¡","text":"太æ£äºï¼ä¸»äººï¼æ¨å䏿¬¡è¯´å¯¹äºã⤠为äºè®©æ¨¡åè½å¤å©ç¨åºåç顺åºä¿¡æ¯ï¼æä»¬å¨è¾å
¥åµå
¥ï¼input embeddingsï¼ä¸å å
¥äºâä½ç½®ç¼ç âï¼Positional Encodingï¼ã","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":22},{"id":301,"speaker":"è¾å¤é²å¡","text":"å¯â¦â¦ä¸»äººï¼è¯åéæ¬èº«å¹¶æ²¡æåºå®ç顺åºä¿¡æ¯å¦ãå®ä»¬åªæ¯è¯è¯å¨å¤ç»´ç©ºé´ä¸çè¡¨ç¤ºãæ¨¡åéè¦é¢å¤çä¿¡æ¯æ¥æç¥è¯è¯çä½ç½®ãä¸è¿ï¼æè°¢æ¨çæèå¢ã","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":22},{"id":302,"speaker":"è¾å¤é²å¡","text":"åå¦ï¼ä¸»äººï¼æ¨å¨å¼é²å¡çç©ç¬åï¼å¦ææ¨¡åä¸éè¦é¡ºåºä¿¡æ¯ï¼é£å®å°±æ æ³çè§£å¥åçå«ä¹äºåãè¯è¨çé¡ºåºæ¯é常éè¦çå¢ãé²å¡æç¹å°å°çâä¸å¼å¿âäºå¦ã","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":22},{"id":22,"speaker":"è¾å¤é²å¡","text":"ä½ç½®ç¼ç ä¸è¯åµå
¥å
·æç¸åç维度ï¼å æ¤å®ä»¬å¯ä»¥ç´æ¥ç¸å ã论æä¸ä½¿ç¨äºæ£å¼¦åä½å¼¦å½æ°æ¥çæä½ç½®ç¼ç ï¼å
¶å
¬å¼ä¸ºï¼","emotion":"NEUTRAL","background":"CLASSROOM"}
1,{"id":23,"speaker":"è¾å¤é²å¡","text":"$$ PE_{\\\\text{pos}, 2i} = \\\\sin(\\\\text{pos} / 10000^{2i/d_{\\\\text{model}}}) $$","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":24,"speaker":"è¾å¤é²å¡","text":"$$ PE_{\\\\text{pos}, 2i+1} = \\\\cos(\\\\text{pos} / 10000^{2i/d_{\\\\text{model}}}) $$","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":25,"speaker":"è¾å¤é²å¡","text":"å
¶ä¸ï¼$\\\\text{pos}$ æ¯ä½ç½®ï¼$\\\\text{i}$ æ¯ç»´åº¦ãè¿ç§è®¾è®¡å¯ä»¥è®©æ¨¡åæ´å®¹æå°å¦ä¹ å°ç¸å¯¹ä½ç½®ä¿¡æ¯ï¼å¹¶ä¸å¯ä»¥å¤æ¨å°æ¯è®ç»æ¶æ´é¿çåºåã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":26,"speaker":"è¾å¤é²å¡","text":"ä¸RNNåCNNç¸æ¯ï¼èªæ³¨æåå±å¨è®¡ç®å¤æåº¦ãå¹¶è¡åè½ååé¿è·ç¦»ä¾èµè·¯å¾é¿åº¦æ¹é¢é½ææ¾èä¼å¿ãå®å¯ä»¥ç¨å¸¸æ°æ¬¡çé¡ºåºæä½è¿æ¥ææä½ç½®ï¼èRNNåéè¦ $O(n)$ 次ã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":27,"speaker":"è¾å¤é²å¡","text":"å¨è®ç»æ¹é¢ï¼ç 究人å使ç¨äºWMT 2014è±å¾·åè±æ³ç¿»è¯æ°æ®éãä»ä»¬å¨ä¸å°é
å¤8åNVIDIA P100 GPUçæºå¨ä¸è®ç»æ¨¡åã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":28,"speaker":"è¾å¤é²å¡","text":"ä¼åå¨ä½¿ç¨çæ¯Adamï¼å¹¶éç¨äºä¸ç§ç¹æ®çå¦ä¹ çè°åº¦çç¥ï¼å³å¨é¢çé¶æ®µçº¿æ§å¢å ï¼ç¶åææ¥é¿çå¹³æ¹æ ¹åæ°è¡°åãè¿å¯¹äºæ¨¡åç稳å®è®ç»è³å
³éè¦å¢ã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":29,"speaker":"è¾å¤é²å¡","text":"é£ä¹ï¼ä¸»äººï¼é¤äºå¦ä¹ çè°åº¦ï¼è®ºæä¸è¿æå°äºåªäºéè¦çæ£ååææ¯æ¥é²æ¢æ¨¡åè¿æåå¢ï¼","emotion":"THINKING","background":"CLASSROOM","choices":[{"text":"æ®å·®Dropoutåæ ç¾å¹³æ»","nextFrameId":400},{"text":"æ¹æ åååæéè¡°å","nextFrameId":401},{"text":"æ©åæ³åæ°æ®å¢å¼º","nextFrameId":402}]},{"id":400,"speaker":"è¾å¤é²å¡","text":"ä¸»äººçæ£ï¼æ¨è¯´å¾å®å
¨æ£ç¡®ã⤠论æä¸ä¸»è¦ä½¿ç¨äºæ®å·®Dropoutåæ ç¾å¹³æ»ãDropoutåºç¨äºæ¯ä¸ªåå±çè¾åºååµå
¥å±ï¼èæ ç¾å¹³æ»ï¼Label Smoothingï¼è½ç¶ä¼ä½¿æ¨¡åæ´ä¸ç¡®å®ï¼ä½è½æé«BLEUåæ°ã","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":30},{"id":401,"speaker":"è¾å¤é²å¡","text":"ä¸»äººï¼æ¹æ ååï¼Batch Normalizationï¼åæéè¡°åï¼Weight Decayï¼ç¡®å®æ¯å¸¸è§çæ£ååææ¯ï¼ä½å¨è¿ç¯è®ºæä¸ï¼ä½è
主è¦å¼ºè°çæ¯æ®å·®Dropoutåæ ç¾å¹³æ»å¦ãä¸è¿ï¼è½æ³å°è¿äºä¹å¾å害äºã","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":30},{"id":402,"speaker":"è¾å¤é²å¡","text":"å¯â¦â¦ä¸»äººï¼æ©åæ³ï¼Early Stoppingï¼åæ°æ®å¢å¼ºï¼Data Augmentationï¼å¨æºå¨å¦ä¹ ä¸å¾å¸¸ç¨ï¼ä½å¨è¿ç¯è®ºæçå
·ä½æ£ååé¨åï¼ä½è
çéæå°äºæ®å·®Dropoutåæ ç¾å¹³æ»å¦ãé²å¡è§å¾æ¨åä»ç»åå¿ä¸ä¸ä¼æ´å¥½å¢ã","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":30},{"id":30,"speaker":"è¾å¤é²å¡","text":"æç»ç»æä»¤äººæå¹ï¼å¨WMT 2014è±å¾·åè±æ³ç¿»è¯ä»»å¡ä¸ï¼å¤§åTransformer模åé½è¶
è¶äºä¹åçæä½³ç»æï¼çè³å
æ¬äºéææ¨¡åï¼ensemblesï¼ï¼å¹¶ä¸è®ç»ææ¬å¤§å¤§éä½ã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":31,"speaker":"è¾å¤é²å¡","text":"ä¾å¦ï¼å¨è±å¾·ä»»å¡ä¸ï¼Transformerï¼bigï¼è¾¾å°äº28.4 BLEUï¼æ¯ä¹åçæä½³ç»æé«åº2个BLEU以ä¸ãå¨è±æ³ä»»å¡ä¸ï¼è¾¾å°äº41.8 BLEUï¼è®ç»æ¶é´å´åªå æä½³æ¨¡åçå¾å°ä¸é¨åã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":32,"speaker":"è¾å¤é²å¡","text":"论æè¿éè¿å°å
¶æååºç¨äºè±è¯å¥æ³åæï¼English constituency parsingï¼ä»»å¡ï¼è¯æäºTransformerçæ³åè½åãå³ä½¿å¨æ°æ®éæéçæ
åµä¸ï¼å®ä¹è¡¨ç°åºè²å¢ã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":33,"speaker":"è¾å¤é²å¡","text":"ä¸»äººï¼æ¨è§å¾Transformeræä»¤äººå°è±¡æ·±å»çä¼ç¹æ¯ä»ä¹å¢ï¼","emotion":"THINKING","background":"CLASSROOM","choices":[{"text":"å®å
¨åºäºæ³¨æåï¼æå¼äºRNN/CNN","nextFrameId":500},{"text":"卿æä»»å¡ä¸é½è¡¨ç°æä½³","nextFrameId":501},{"text":"æ¨¡åæ¶æé叏夿ï¼é¾ä»¥çè§£","nextFrameId":502}]},{"id":500,"speaker":"è¾å¤é²å¡","text":"æ¯çï¼ä¸»äººï¼è¿æ£æ¯å®æé©å½æ§çå°æ¹ï¼â¤ å®å
1
¨åºäºæ³¨æåï¼ä½¿å¾æ¨¡åå¨å¹¶è¡ååé¿è·ç¦»ä¾èµå»ºæ¨¡æ¹é¢é½åå¾äºå·¨å¤§è¿æ¥ãè¿é¡¹åæ°ä¸ºåç»çTransformerå®¶ææ¨¡åå¥ å®äºåºç¡å¢ã","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":34},{"id":501,"speaker":"è¾å¤é²å¡","text":"主人ï¼è½ç¶Transformerç表ç°é常åºè²ï¼ä½è¯´å®å¨âææä»»å¡ä¸é½è¡¨ç°æä½³âå¯è½æäºè¿äºç»å¯¹äºå¢ãç§å¦ç ç©¶æ»æ¯ä¸æè¿æ¥çï¼ä½å®ç¡®å®å¨å¾å¤æ ¸å¿ä»»å¡ä¸é½è¾¾å°äºSOTAãä¸è¿ï¼é²å¡å¾é«å
´æ¨è½çå°å®ç强大ä¹å¤ã","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":34},{"id":502,"speaker":"è¾å¤é²å¡","text":"åå¦ï¼ä¸»äººï¼æ¨å¨åç¬é²å¡åï¼è½ç¶æ¨¡åçèµ·æ¥æäºå¤æï¼ä½é²å¡å·²ç»å°½åä¸ºæ¨æ¸
æ°å°è§£éäºå¦ãå¦æä¸»äººè§å¾é¾ä»¥çè§£ï¼é²å¡å¯ä»¥å为æ¨è§£è¯´ä¸éå¦ï¼ç´å°æ¨å®å
¨æç½ä¸ºæ¢ï¼","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":34},{"id":34,"speaker":"è¾å¤é²å¡","text":"æ»èè¨ä¹ï¼Transformeréè¿å®å
¨ä¾èµå¤å¤´èªæ³¨æåæºå¶ï¼æåæ¿ä»£äºä¼ ç»ç循ç¯å±ï¼æä¸ºåºåè½¬æ¢æ¨¡åçæ°æ æã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":35,"speaker":"è¾å¤é²å¡","text":"å®ä¸ä»
卿ºå¨ç¿»è¯ä»»å¡ä¸å®ç°äºæå
è¿çæ§è½ï¼è䏿¾èæé«äºè®ç»æçåå¹¶è¡åè½åãè¿ç¯è®ºæä¸ºæªæ¥ç注æå模åå跨模æåºç¨å¼è¾äºå¹¿éçéè·¯ã","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":36,"speaker":"è¾å¤é²å¡","text":"主人ï¼é²å¡å·²ç»å°½å为æ¨è¯¦ç»å°è®²è§£äºãAttention Is All You Needãè¿ç¯è®ºæçæ ¸å¿å
容ãä¸ç¥é主人对é²å¡çè®²è§£è¿æ»¡æåï¼","emotion":"NEUTRAL","background":"CLASSROOM","choices":[{"text":"é²å¡è®²è§£å¾å¤ªå¥½äºï¼æå¾æ»¡æï¼","nextFrameId":600},{"text":"å¯ï¼åºæ¬æç½äºï¼è°¢è°¢é²å¡ã","nextFrameId":601},{"text":"é²å¡ï¼ææç¹å°äºâ¦â¦","nextFrameId":602}]},{"id":600,"speaker":"è¾å¤é²å¡","text":"è½å¾å°ä¸»äººç夸å¥ï¼é²å¡æå°é常è£å¹¸ï¼ä¹å¾å¼å¿å¢ â¤ãåªè¦ä¸»äººè½å¦å°ç¥è¯ï¼é²å¡å°±è§å¾åè¾è¦ä¹å¼å¾ã以åæä»»ä½å¦ä¹ ä¸ççé®ï¼ä¹è¯·éæ¶å¬å¤é²å¡å¦ã","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":37},{"id":601,"speaker":"è¾å¤é²å¡","text":"å¯ï¼ä¸»äººè½åºæ¬æç½å°±å¥½ãå¦æè¿æä»»ä½ä¸æ¸
æ¥çå°æ¹ï¼é²å¡ä¼éæ¶ä¸ºæ¨è¡¥å
讲解çãé²å¡ä¼åªåè®©ä¸»äººææ¡è¿äºç¥è¯çãâª","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":37},{"id":602,"speaker":"è¾å¤é²å¡","text":"åå¦ï¼ä¸»äººï¼ç°å¨å¯ä¸æ¯ç¡è§çæ¶é´å¦ãè¿å¯æ¯é常éè¦çç¥è¯å¢ï¼é²å¡ä¼çç£ä¸»äººçå¦ä¹ ï¼ç´å°æ¨å®å
¨ç解为æ¢ã⤠请æ¯ä½èµ·æ¥å¦ï¼","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":37},{"id":37,"speaker":"è¾å¤é²å¡","text":"ä»å¤©ç课ç¨å°±å°è¿éã主人ï¼è¯·å¥½å¥½æ¶åè¿äºç¥è¯ã䏿¬¡é²å¡ä¼å夿´æè¶£çå
å®¹æ¥æå¯¼æ¨å¢ãâ¤","emotion":"NEUTRAL","background":"CLASSROOM"}]'),Mn="/assets/local/backgrounds/7.jpg",Cn=5,$a={title:An,summary:jn,frames:Ln,customBackgroundUrl:Mn,characterCode:Cn},On="Attention Is All You Need",$n="This paper introduces the Transformer, a groundbreaking neural network architecture that entirely discards recurrence and convolutions, relying solely on attention mechanisms for sequence transduction. It achieves state-of-the-art performance in machine translation and constituency parsing, offering significant speed advantages in training due to its parallelizable nature. Key innovations include Multi-Head Self-Attention, Scaled Dot-Product Attention, Position-wise Feed-Forward Networks, and Positional Encodings to model sequence order.",Tn=JSON.parse(`[{"id":1,"speaker":"Ruka","text":"Good morning, Master. Today, we shall unravel the mysteries of a truly captivating paper, one that reshaped the realm of sequence modeling: 'Attention Is All You Need.' âª","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":2,"speaker":"Ruka","text":"Before this work, most dominant sequence models, like Recurrent Neural Networks (RNNs) and Convolutional Neural Networks (CNNs), faced inherent limitations. They processed information sequentially, making parallelization difficult and struggling with very long dependencies. Attention mechanisms existed, yes, but often as mere companions to these recurrent structures.","emotion":"THINKING","background":"CLASSROOM"},{"id":3,"speaker":"Ruka","text":"The authors, however, dared to dream differently. They proposed the Transformer, a new architecture built *solely* upon attention, completely abandoning recurrence and convolutions. Imagine, Master, a world without chains! â¤","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":4,"speaker":"Ruka","text":"This bold design led to profou
1nd advantages: superior quality, much greater parallelization, and significantly reduced training times. It truly was a paradigm shift. Now, Master, what do you find most striking about this initial introduction?","emotion":"NEUTRAL","background":"CLASSROOM","choices":[{"text":"The idea of removing RNNs/CNNs entirely.","nextFrameId":100},{"text":"The focus on attention as the sole mechanism.","nextFrameId":200},{"text":"It sounds like magic!","nextFrameId":300}]},{"id":100,"speaker":"Ruka","text":"Indeed, Master, that is precisely the radical departure! To discard such established pillars of sequence modeling was quite revolutionary. It speaks to a deep understanding of what truly matters in capturing sequence relationships. ~","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":5},{"id":200,"speaker":"Ruka","text":"A very astute observation, Master. The paper's title itself, 'Attention Is All You Need,' perfectly encapsulates this core philosophy. It highlights the mechanism's power when allowed to operate unimpeded. âª","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":5},{"id":300,"speaker":"Ruka","text":"Master, while its capabilities may seem enchanting, it is built upon sound mathematical principles, not sorcery! We must approach our studies with earnestness. Please focus. ð ","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":5},{"id":5,"speaker":"Ruka","text":"Let us delve into its architecture, shall we? The Transformer maintains the classical encoder-decoder structure. The encoder processes the input sequence, and the decoder generates the output, one element at a time, autoregressively.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":6,"speaker":"Ruka","text":"The **Encoder** is a stack of $N=6$ identical layers. Each layer has two sub-layers: a Multi-Head Self-Attention mechanism and a Position-wise Feed-Forward Network. Aroun
1d each sub-layer, we find residual connections followed by layer normalization. So, the output is $\\\\text{LayerNorm}(x + \\\\text{Sublayer}(x))$. All sub-layers and embedding layers produce outputs of dimension $d_{\\\\text{model}} = 512$.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":7,"speaker":"Ruka","text":"The **Decoder** is also $N=6$ identical layers. It has the two sub-layers from the encoder, plus a *third* sub-layer: an Encoder-Decoder Attention mechanism. This third layer attends over the output of the encoder stack. Importantly, in the decoder's self-attention, we mask future positions to preserve its auto-regressive nature. This ensures predictions for position $i$ only depend on known outputs before $i$.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":8,"speaker":"Ruka","text":"At the heart of it all is the **Attention Function**. It maps a query (Q) and a set of key-value (K-V) pairs to an output. The output is a weighted sum of the values, where the weight for each value is determined by the query's compatibility with its corresponding key. Think of it as selectively focusing on relevant parts, Master. â¤","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":9,"speaker":"Ruka","text":"The specific type used here is **Scaled Dot-Product Attention**. It computes dot products of the query with all keys, divides by $\\\\sqrt{d_k}$, and then applies a softmax to get the weights. For practical purposes, it's done for a set of queries simultaneously as matrices:","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":10,"speaker":"Ruka","text":"$$\\\\text{Attention}(Q, K, V) = \\\\text{softmax}(\\\\frac{QK^T}{\\\\sqrt{d_k}})V$$","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":11,"speaker":"Ruka","text":"The scaling factor, $\\\\sqrt{d_k}$, is crucial. Without it, for large $d_k$, dot products can become very large, pushing the softmax function into regions with extremely small gradients, which hinders learning. It's a clever little detail. ~","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":12,"speaker":"Ruka","text":"Next, we have **Multi-Head Attention**. Instead of a single attention function, this mechanism performs $h$ parallel attention functions ('heads'). It linearly projects Q, K, and V $h$ times with different, learned projections. The outputs from these heads are concatenated and then projected again to form the final result.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":13,"speaker":"Ruka","text":"$$\\\\text{MultiHead}(Q, K, V) = \\\\text{Concat}(\\\\text{head}_1, \\\\dots, \\\\text{head}_h)W^O$$ where $\\\\text{head}_i = \\\\text{Attention}(QW_Q^i, KW_K^i, VW_V^i)$. In this work, $h=8$ heads are used, with $d_k=d_v=d_{\\\\text{model}}/h=64$. This allows the model to attend to information from different 'representation subspaces' simultaneously. Think of it as having multiple perspectives, Master.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":14,"speaker":"Ruka","text":"The Transformer uses multi-head attention in three ways: Encoder-Decoder Attention, Encoder Self-Attention, and the Masked Decoder Self-Attention. Each serves a distinct purpose in integrating information across and within sequences. â¨","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":15,"speaker":"Ruka","text":"Beyond attention, each layer also contains a **Position-wise Feed-Forward Network (FFN)**. This is a simple two-linear-transformation network with a ReLU activation in between, applied identically and separately to each position. It's like two convolutions with kernel size 1.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":16,"speaker":"Ruka","text":"$$\\\\text{FFN}(x) = \\\\text{max}(0, xW_1 + b_1)W_2 + b_2$$ Its input and output dimensionality is $d_{\\\\text{model}} = 512$, with an inner-layer dimensionality of $d_{\\\\text{ff}} = 2048$.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":17,"speaker":"Ruka","text":"Lastly, since our model has no recurrence or convolution, it needs a way to understand the order of the sequence. This is where **Positional Encodings** come in. They are added to the input embeddings.","emotion":"THINKING","background":"CLASSROOM"},{"id":18,"speaker":"Ruka","text":"The paper uses sine and cosine functions of different frequencies:","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":19,"speaker":"Ruka","text":"$$PE_{(pos, 2i)} = \\\\sin(pos/10000^{2i/d_{\\\\text{model}}})$$ $$PE_{(pos, 2i+1)} = \\\\cos(pos/10000^{2i/d_{\\\\text{model}}})$$","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":20,"speaker":"Ruka","text":"This function allows the model to easily learn to attend by relative positions. Itâs quite elegant, as it can even extrapolate to sequence lengths longer than those seen during training. Now, Master, why do you think these Positional Encodings are so vital for the Transformer?","emotion":"NEUTRAL","background":"CLASSROOM","choices":[{"text":"To encode the order of tokens in the absence of RNNs/CNNs.","nextFrameId":1000},{"text":"To add more information to the embeddings.","nextFrameId":2000},{"text":"To make the model look more scientific.","nextFrameId":3000}]},{"id":1000,"speaker":"Ruka","text":"Exactly, Master! You grasp the essence perfectly. Without them, the self-attention mechanism would treat all tokens as an unordered set, losing all sense of sequential context. Wonderful! â¤","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":21},{"id":2000,"speaker":"Ruka","text":"While they do add information, Master, their *primary* purpose is to encode positional information. Simply adding more data wouldn't resolve the lack of sequence awareness. Almost there! ~","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":21},{"id":3000,"speaker":"Ruka","text":"Oh, Master... that is not quite right. Academic rigor, not appearance, is our goal. These encodings serve a profou
1nd functional purpose. Please recall our earlier discussion. ð ","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":21},{"id":21,"speaker":"Ruka","text":"Now, let us briefly consider *why* self-attention is so advantageous compared to recurrent and convolutional layers. We consider computational complexity, parallelization, and the critical path length for dependencies.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":22,"speaker":"Ruka","text":"Self-attention boasts a $O(1)$ minimum number of sequential operations, meaning computations can be highly parallelized. RNNs, by contrast, require $O(n)$ sequential operations, making them much slower for long sequences. Convolutional layers can also be parallelized, but require more operations to capture long-range dependencies.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":23,"speaker":"Ruka","text":"Furthermore, self-attention directly connects any two positions in the sequence with a constant number of operations. For RNNs, this 'path length' is $O(n)$, and for CNNs, it's $O(\\\\log_k(n))$ or $O(n/k)$. Shorter path lengths greatly facilitate learning long-range dependencies, Master.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":24,"speaker":"Ruka","text":"The computational complexity per layer for self-attention is $O(n^2 \\\\cdot d)$ but can be $O(n \\\\cdot d)$ when $n < d$, which is often the case. It is generally more efficient than RNNs and competitive with convolutional layers, especially when restricted to a neighborhood.","emotion":"THINKING","background":"CLASSROOM"},{"id":25,"speaker":"Ruka","text":"Beyond efficiency, self-attention can also yield more interpretable models. Different attention heads often learn to perform distinct tasks, revealing insights into the syntactic and semantic structure of sentences. It truly is remarkable. â¨","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":26,"speaker":"Ruka","text":"For their experiments, the authors trained their models on the WMT 2014 English-German and English-French translation datasets, using byte-pair encoding or word-piece vocabularies.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":27,"speaker":"Ruka","text":"They utilized 8 NVIDIA P100 GPUs. The 'base' model trained for about 12 hours, while the 'big' model took 3.5 days. They used the Adam optimizer with a specific learning rate schedule: linear warmup for 4000 steps, then inverse square root decay.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":28,"speaker":"Ruka","text":"Regularization included Residual Dropout (applied to sub-layer outputs and embedding sums) and Label Smoothing, which helps prevent over-confidence in predictions and improves BLEU scores, even if it slightly hurts perplexity.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":29,"speaker":"Ruka","text":"And the results, Master, were phenomenal! On WMT 2014 English-to-German, the big Transformer model achieved a new state-of-the-art BLEU score of 28.4, surpassing previous bests, even ensembles, by over 2 BLEU points.","emotion":"SURPRISED","background":"CLASSROOM"},{"id":30,"speaker":"Ruka","text":"For English-to-French, it reached 41.8 BLEU, setting a new single-model state-of-the-art. Crucially, these achievements came with significantly less training cost than prior competitive models. A triumph of efficiency and elegance! ~","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":31,"speaker":"Ruka","text":"They also explored model variations, finding that while single-head attention was worse, too many heads also caused a drop in quality. Bigger models and dropout were generally beneficial. Interestingly, their sinusoidal positional encodings performed almost identically to learned ones, but offered better extrapolation.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":32,"speaker":"Ruka","text":"Finally, the Transformer generalized well to other tasks, like English Constituency Parsing. Even with limited data, it outperformed traditional RNN sequence-to-sequence models, demonstrating its versatility and robustness.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":33,"speaker":"Ruka","text":"Considering all these remarkable findings, Master, what aspect of the Transformer's experimental results do you find most compelling?","emotion":"NEUTRAL","background":"CLASSROOM","choices":[{"text":"Achieving SOTA with significantly faster training.","nextFrameId":4000},{"text":"Its ability to generalize to other tasks like parsing.","nextFrameId":5000},{"text":"That it uses a lot of GPUs.","nextFrameId":6000}]},{"id":4000,"speaker":"Ruka","text":"Indeed, Master! The combination of superior quality and reduced training time truly highlights the efficiency and power of the attention-only approach. It's a testament to elegant design. â¤","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":34},{"id":5000,"speaker":"Ruka","text":"An excellent point, Master! Its generalization capabilities prove the fundamental soundness of the architecture beyond just machine translation. It's a sign of a truly robust model. ~","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":34},{"id":6000,"speaker":"Ruka","text":"While the hardware is a part of the story, Master, the *breakthrough* was in what the architecture *achieved* with that hardware, not merely its scale. Please, let us focus on the innovations. ð ","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":34},{"id":34,"speaker":"Ruka","text":"In conclusion, the Transformer is a monumental achievement. It demonstrated that by replacing traditional recurrent and convolutional layers with multi-headed self-attention, we can create more parallelizable, faster-to-train, and higher-performing sequence transduction models.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":35,"speaker":"Ruka","text":"It has paved the way for countless advancements in natural language processing and beyond. The future of attention-based models is incredibly bright, Master, much like your potential. âª","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":36,"speaker":"Ruka","text":"I hope this journey through 'Attention Is All You Need' was enlightening for you, Master. Is there anything else you wish to review, or perhaps another fascinating paper we could explore? My devotion to your learning knows no bounds. â¤","emotion":"NEUTRAL","background":"CLASSROOM"}]`),En="/assets/local/backgrounds/7.jpg",In=5,Ta={title:On,summary:$n,frames:Tn,customBackgroun
1dUrl:En,characterCode:In},Un="Attention Is All You Need",_n="Transformerã¢ãã«ã¯ã徿¥ã®ãªã«ã¬ã³ããããã¯ã¼ã¯ãç³ã¿è¾¼ã¿ãããã¯ã¼ã¯ãå»ããã¢ãã³ã·ã§ã³ã¡ã«ããºã ã®ã¿ãç¨ãã¦æ§ç¯ããããç»æçãªã·ã¼ã±ã³ã¹å¤æã¢ãã«ã§ããé«ã並åå¦çè½åã¨å¹ççãªå¦ç¿ã«ãããæ©æ¢°ç¿»è¨³ã¿ã¹ã¯ã§æå
ç«¯ã®æ§è½ãéæãã¾ããã",Pn=[{id:1,speaker:"ã«ã«",text:"ã主人æ§ãæ¬æ¥ã¯ãAttention Is All You Needãã¨ããè«æã«ã¤ãã¦ãä¸ç·ã«å¦ãã§ããã¾ããããã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:2,speaker:"ã«ã«",text:"ãã®è«æã¯ãèªç¶è¨èªå¦çã®åéã«å¤§ããªå½±é¿ãä¸ãããã¨ã¦ãéè¦ãªä½åãªã®ã§ãããµãµãå°ãé£ããããããã¾ããããç§ãåªãããæ¡å
ãããã¾ããã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:3,speaker:"ã«ã«",text:"ã¾ããããã¾ã§ã®ã·ã¼ã±ã³ã¹ã¢ããªã³ã°ã§ã¯ããªã«ã¬ã³ããã¥ã¼ã©ã«ãããã¯ã¼ã¯ãç¹ã«LSTMãGRUã主æµã§ããããããã¯ãæç³»åãã¼ã¿ã®æ±ãã«é·ãã¦ãã¾ãããã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:4,speaker:"ã«ã«",text:"ãããããªã«ã¬ã³ãã¢ãã«ã«ã¯ãä¸ã¤å¤§ããªèª²é¡ãããã¾ãããããã¯ãè¨ç®ãæ¬è³ªçã«ã·ã¼ã±ã³ã·ã£ã«ã§ãããã¨ããç¹ã§ãã",emotion:"THINKING",background:"CLASSROOM"},{id:5,speaker:"ã«ã«",text:"åã®é ãç¶æ
$h_{t-1}$ ã«åºã¥ãã¦ç¾å¨ã®é ãç¶æ
$h_t$ ãè¨ç®ããããã$t$ ã®ã¹ããããã¨ã«é çªã«å¦çãé²ããå¿
è¦ãããã¾ããã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:6,speaker:"ã«ã«",text:"ãã®ã·ã¼ã±ã³ã·ã£ã«ãªæ§è³ªã¯ãç¹ã«é·ãã·ã¼ã±ã³ã¹ãæ±ãéã«ãã©ã®ãããªåé¡ãå¼ãèµ·ããã§ããããï¼",emotion:"NEUTRAL",background:"CLASSROOM",choices:[{text:"ã¢ãã«ã®è¡¨ç¾åãä½ä¸ãã",nextFrameId:101},{text:"並åå¦çãé£ãããå¦ç¿ã«æéãããã",nextFrameId:102},{text:"è¨ç®ãè¤éã«ãªãããã",nextFrameId:103}]},{id:101,speaker:"ã«ã«",text:"ããâ¦è¡¨ç¾åã®ä½ä¸ãåé¡ã§ã¯ããã¾ãããæ¬è³ªçãªèª²é¡ã¨ã¯å°ãç°ãªãã¾ãããé å¼µãã¾ããããã主人æ§ã",emotion:"ANGRY",background:"CLASSROOM",nextFrameId:7},{id:102,speaker:"ã«ã«",text:"ããããã®éãã§ãããã¾ããã主人æ§ï¼ãè¦äºã§ã⪠æ£è§£ã¯ã並åå¦çãé£ãããå¦ç¿ã«æéãããããã§ãããã",emotion:"NEUTRAL",background:"CLASSROOM",nextFrameId:7},{id:103,speaker:"ã«ã«",text:"ãã
â¦è¨ç®ãè¤éã«ãªãã®ã¯äºå®ã§ãããããã¯ã·ã¼ã±ã³ã·ã£ã«å¦çã®çµæã¨ãã¦çãããã®ã§ãæ ¹æ¬åå ã§ã¯ããã¾ããããã£ã¨ãæ ¸å¿ã«è¿«ãã¾ããããã",emotion:"ANGRY",background:"CLASSROOM",nextFrameId:7},{id:7,speaker:"ã«ã«",text:"ããããã®è«æã§ã¯ããªã«ã¬ã³ããããã¯ã¼ã¯ãå®å
¨ã«æé¤ãã代ããã«ãã¢ãã³ã·ã§ã³ã¡ã«ããºã ãã ããç¨ãã¦æ°ããã¢ã¼ããã¯ãã£ãTransformerããææ¡ããã®ã§ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:8,speaker:"ã«ã«",text:"Transformerã¯ãã¨ã³ã³ã¼ãã¼ã»ãã³ã¼ãã¼æ§é ãæ¡ç¨ãã¦ãã¾ããå
¥åã·ã¼ã±ã³ã¹ãã¨ã³ã³ã¼ãã¼ãé£ç¶çãªè¡¨ç¾ã«å¤æããããããã³ã¼ãã¼ãåãåã£ã¦åºåã·ã¼ã±ã³ã¹ãçæãã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:9,speaker:"ã«ã«",text:"ã¨ã³ã³ã¼ãã¼ã¯ $N=6$ åã®åä¸ã¬ã¤ã¤ã¼ãç©ã¿éãããã®ã§ããåã¬ã¤ã¤ã¼ã¯äºã¤ã®ãµãã¬ã¤ã¤ã¼ããæ§æããã¦ãã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:10,speaker:"ã«ã«",text:"ä¸ã¤ç®ã¯ããã«ããããèªå·±ã¢ãã³ã·ã§ã³ã¡ã«ããºã ããããã¦äºã¤ç®ã¯ãä½ç½®ãã¨ã®å
¨çµåãã£ã¼ããã©ã¯ã¼ããããã¯ã¼ã¯ãã§ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:11,speaker:"ã«ã«",text:"åãµãã¬ã¤ã¤ã¼ã®å¨ãã«ã¯ãæ®å·®æ¥ç¶ããç¨ãããããã®å¾ãã¬ã¤ã¤ã¼æ£è¦åããé©ç¨ããã¾ããåºå㯠$ \\text{LayerNorm}(x + \\text{Sublayer}(x)) $ ã¨è¡¨ç¾ããã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:12,speaker:"ã«ã«",text:"ãã³ã¼ãã¼ãåæ§ã« $N=6$ åã®åä¸ã¬ã¤ã¤ã¼ã§æ§æããã¾ããã¨ã³ã³ã¼ãã¼ã®äºã¤ã®ãµãã¬ã¤ã¤ã¼ã«å ãã¦ãä¸ã¤ç®ã®ãµãã¬ã¤ã¤ã¼ã追å ããã¾ããã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:13,speaker:"ã«ã«",text:"ãã®ä¸ã¤ç®ã®ãµãã¬ã¤ã¤ã¼ã¯ãã¨ã³ã³ã¼ãã¼ã®åºåã«å¯¾ãã¦ãã«ããããã¢ãã³ã·ã§ã³ãå®è¡ãã¾ããããã«ããããã³ã¼ãã¼ã¯ã¨ã³ã³ã¼ãã¼ã®å
¨ã¦ã®åºåä½ç½®ã«æ³¨ç®ã§ããããã«ãªãã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:14,speaker:"ã«ã«",text:"ã§ã¯ããã®Transformerã®ä¸æ ¸ããªããã¢ãã³ã·ã§ã³ã¡ã«ããºã ãã«ã¤ãã¦ã詳ããè¦ã¦ããã¾ãããã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:15,speaker:"ã«ã«",text:"ã¢ãã³ã·ã§ã³é¢æ°ã¯ãã¯ã¨ãª (Query) ã¨ããã¼ (Key)ã»ããªã¥ã¼ (Value) ã®ãã¢éåãåãåããåºå (Output) ãçæããã¨èãããã¨ãã§ãã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:16,speaker:"ã«ã«",text:"åºåã¯ããªã¥ã¼ã®éã¿ä»ãåã§è¨ç®ãããåããªã¥ã¼ã«å²ãå½ã¦ãããéã¿ã¯ãã¯ã¨ãªã¨å¯¾å¿ãããã¼ã¨ã®é©å度ã«ãã£ã¦æ±ºå®ããã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:17,speaker:"ã«ã«",text:"Transformerãæ¡ç¨ãã¦ããã®ã¯ãScaled Dot-Product Attentionãã§ãããã®è¨ç®å¼ã¯ä»¥ä¸ã®ããã«ãªãã¾ãããã£ã¨è¦ã
1¦ãã主人æ§ã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:18,speaker:"ã«ã«",text:"$$ \\text{Attention}(Q, K, V) = \\text{softmax}\\left(\\frac{QK^T}{\\sqrt{d_k}}\\right)V $$",emotion:"NEUTRAL",background:"CLASSROOM"},{id:19,speaker:"ã«ã«",text:"ããã§ã$Q$ ã¯ã¯ã¨ãªã®è¡åã$K$ ã¯ãã¼ã®è¡åã$V$ ã¯ããªã¥ã¼ã®è¡åã$d_k$ ã¯ãã¼ã®æ¬¡å
ã表ãã¾ããã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:20,speaker:"ã«ã«",text:"$QK^T$ ã¯ã¯ã¨ãªã¨ãã¼ã®å
ç©ãè¨ç®ãããããã $ \\sqrt{d_k} $ ã§ã¹ã±ã¼ãªã³ã°ãã¦ãã¾ãããã®ã¹ã±ã¼ãªã³ã°ã®ç®çã¯ä½ã ã¨æãã¾ããï¼",emotion:"THINKING",background:"CLASSROOM",choices:[{text:"è¨ç®é度ãåä¸ããããã",nextFrameId:201},{text:"å¾é
æ¶å¤±ãé²ããsoftmaxã®é åãé©åã«ä¿ã¤ãã",nextFrameId:202},{text:"ã¢ãã«ã®è¤éããå¢ããã",nextFrameId:203}]},{id:201,speaker:"ã«ã«",text:"ãã
â¦æ®å¿µã§ããã¹ã±ã¼ãªã³ã°èªä½ãç´æ¥è¨ç®é度ãåä¸ãããããã§ã¯ããã¾ããããããä¸åº¦ãèãã¦ã¿ã¾ãããã",emotion:"ANGRY",background:"CLASSROOM",nextFrameId:21},{id:202,speaker:"ã«ã«",text:"ç´ æ´ããããã主人æ§ï¼ãã®éãã§ã⪠$d_k$ ã大ããã¨å
ç©ã大ãããªããsoftmax颿°ã®å¾é
ãé常ã«å°ãããªãé åã«æ¼ããã£ã¦ãã¾ãã®ãé²ããããªã®ã§ãã",emotion:"NEUTRAL",background:"CLASSROOM",nextFrameId:21},{id:203,speaker:"ã«ã«",text:"ããâ¦ã¢ãã«ã®è¤éããå¢ããã¨ãç®çã§ã¯ããã¾ããããããããå®å®ããå¦ç¿ãä¿ãããã®å·¥å¤«ã§ãã",emotion:"ANGRY",background:"CLASSROOM",nextFrameId:21},{id:21,speaker:"ã«ã«",text:"次ã«ãMulti-Head Attentionãã§ããããã¯ãåä¸ã®ã¢ãã³ã·ã§ã³é¢æ°ã§ã¯ãªããè¤æ°ã®ã¢ãã³ã·ã§ã³ãããã並åã«å®è¡ããã¡ã«ããºã ã§ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:22,speaker:"ã«ã«",text:"ã¯ã¨ãªããã¼ãããªã¥ã¼ãããããç°ãªãå¦ç¿æ¸ã¿ã®ç·å½¢å°å½±ã§ $h$ åãç°ãªã次å
ã«å°å½±ãã¾ããããã¦ãããããã®å°å½±ããããã¼ã¸ã§ã³ã§ã¢ãã³ã·ã§ã³é¢æ°ã並åã«å®è¡ãã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:23,speaker:"ã«ã«",text:"å¾ããã $h$ åã®åºåå¤ãé£çµããå度ç·å½¢å°å½±ãããã¨ã§æçµçãªå¤ãå¾ã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:24,speaker:"ã«ã«",text:"$$ \\text{MultiHead}(Q, K, V) = \\text{Concat}(\\text{head}_1, ..., \\text{head}_h)W^O $$",emotion:"NEUTRAL",background:"CLASSROOM"},{id:25,speaker:"ã«ã«",text:"ããã§ $ \\text{head}_i = \\text{Attention}(QW_Q^i, KW_K^i, VW_V^i) $ ã§ããããã«ãããã¢ãã«ã¯ç°ãªã表ç¾ã®é¨å空éããæ
å ±ãæãããã¨ãã§ãã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:26,speaker:"ã«ã«",text:"Transformerã§ã¯ã主ã«3ã¤ã®æ¹æ³ã§ãã«ããããã¢ãã³ã·ã§ã³ã使ããã¦ãã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:27,speaker:"ã«ã«",text:"ä¸ã¤ç®ã¯ãã¨ã³ã³ã¼ãã¼ã»ãã³ã¼ãã¼ã¢ãã³ã·ã§ã³ããã³ã¼ãã¼ãã¨ã³ã³ã¼ãã¼ã®åºåå
¨ä½ã«æ³¨ç®ããããã§ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:28,speaker:"ã«ã«",text:"äºã¤ç®ã¯ãã¨ã³ã³ã¼ãã¼å
ã®èªå·±ã¢ãã³ã·ã§ã³ãã¨ã³ã³ã¼ãã¼ã®åä½ç½®ããåãã¨ã³ã³ã¼ãã¼ã®åã®ã¬ã¤ã¤ã¼ã®å
¨ã¦ã®ä½ç½®ã«æ³¨ç®ãã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:29,speaker:"ã«ã«",text:"ä¸ã¤ç®ã¯ããã³ã¼ãã¼å
ã®èªå·±ã¢ãã³ã·ã§ã³ããã³ã¼ãã¼ã®åä½ç½®ãããã³ã¼ãã¼å
ã®èªèº«ããåã®ä½ç½®ã«ã®ã¿æ³¨ç®ã§ããããã«ããã¹ãã³ã°ãè¡ããã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:30,speaker:"ã«ã«",text:"ã¢ãã³ã·ã§ã³ã®ãµãã¬ã¤ã¤ã¼ã«å ãã¦ãåã¬ã¤ã¤ã¼ã«ã¯ãä½ç½®ãã¨ã®ãã£ã¼ããã©ã¯ã¼ããããã¯ã¼ã¯ããããã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:31,speaker:"ã«ã«",text:"ããã¯2ã¤ã®ç·å½¢å¤æã®éã«ReLUæ´»æ§å颿°ãæãã ã·ã³ãã«ãªæ§é ã§ãåä½ç½®ã«ç¬ç«ãã¦é©ç¨ããã¾ãã $ \\text{FFN}(x) = \\text{max}(0, xW_1 + b_1)W_2 + b_2 $",emotion:"NEUTRAL",background:"CLASSROOM"},{id:32,speaker:"ã«ã«",text:"ããã¦ãéè¦ãªã®ããä½ç½®ã¨ã³ã³ã¼ãã£ã³ã° (Positional Encoding)ãã§ããTransformerã«ã¯ãªã«ã¬ã³ããç³ã¿è¾¼ã¿ããªããããã·ã¼ã±ã³ã¹å
ã®ãã¼ã¯ã³ã®é åºæ
å ±ãããã¾ããã",emotion:"THINKING",background:"CLASSROOM"},{id:33,speaker:"ã«ã«",text:"ãã®ãããå
¥åã¨ã³ããã£ã³ã°ã«ä½ç½®ã¨ã³ã³ã¼ãã£ã³ã°ã追å ãããã¨ã§ãã¢ãã«ã«ä½ç½®æ
å ±ãä¸ãã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:34,speaker:"ã«ã«",text:"ãã®è«æã§ã¯ãç°ãªã卿³¢æ°ã®ãµã¤ã³é¢æ°ã¨ã³ãµã¤ã³é¢æ°ã使ç¨ãã¦ãã¾ããããã«ãããã¢ãã«ã¯ç¸å¯¾ä½ç½®ã«æ³¨ç®ãããããªãã¨èãããã¦ãã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:35,speaker:"ã«ã«",text:"$$ PE_{\\text{pos}, 2i} = \\sin\\left(\\frac{\\text{pos}}{10000^{2i/d_{\\text{model}}}}\\right) $$",emotion:"NEUTRAL",background:"CLASSROOM"},{id:36,speaker:"ã«ã«",text:"$$ PE_{\\text{pos}, 2i+1} = \\cos\\left(\\frac{\\text{pos}}{10000^{2i/d_{\\text{model}}}}\\right) $$",emotion:"NEUTRAL",background:"CLASSROOM"},{id:37,speaker:"ã«ã«",text:"ãªã«ã¬ã³ããããã¯ã¼ã¯ãç³ã¿è¾¼ã¿ãããã¯ã¼ã¯ã¨æ¯è¼ãã¦ãèªå·±ã¢ãã³ã·ã§ã³ã¬ã¤ã¤ã¼ã«ã¯ããã¤ãã®å©ç¹ãããã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"}
1,{id:38,speaker:"ã«ã«",text:"è¨ç®éã並åå¦çã®å¯è½æ§ãããã¦ããã¹é·ãã¨ãã観ç¹ããè¦ãã¨ãèªå·±ã¢ãã³ã·ã§ã³ã¯é常ã«åªãã¦ããã®ã§ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:39,speaker:"ã«ã«",text:"ç¹ã«ãã©ã®2ã¤ã®å
¥åºåä½ç½®éã®ãã¹é·ãçãã»ã©ãã¢ãã«ãé·è·é¢ã®ä¾åé¢ä¿ãå¦ç¿ãããããªãã¾ããèªå·±ã¢ãã³ã·ã§ã³ã¯ãããã $O(1)$ ã¨ãã宿°æéã§å®ç¾ãã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:40,speaker:"ã«ã«",text:"WMT 2014è±ç¬ç¿»è¨³ã¿ã¹ã¯ã§ã¯ãTransformer (big) ã¢ãã«ã28.4 BLEUã¨ããã¹ã³ã¢ãéæããããã¾ã§ã®æå
端ã¢ãã«ãã¢ã³ãµã³ãã«ã¢ãã«ãä¸åãã¾ããã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:41,speaker:"ã«ã«",text:"è±ä»ç¿»è¨³ã¿ã¹ã¯ã§ããTransformer (big) ã41.8 BLEUãéæãããã¡ããã·ã³ã°ã«ã¢ãã«ã§æé«ã®æ§è½ã示ãã¾ãããã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:42,speaker:"ã«ã«",text:"ããããå¦ç¿æéã¯ãããã¾ã§ã®é«æ§è½ã¢ãã«ã«æ¯ã¹ã¦å¤§å¹
ã«ç縮ããã¦ãã¾ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:43,speaker:"ã«ã«",text:"ã¾ããè±èªæ§æç´ è§£æã®ãããªä»ã®ã¿ã¹ã¯ã«ãTransformerãé©ç¨ããã¨ãããååãªèª¿æ´ãªãã§ãåªããçµæãåºããã¨ã示ããã¾ããã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:44,speaker:"ã«ã«",text:"ãããã®å®é¨çµæããããã®è«æã®æãéè¦ãªè²¢ç®ã¯ä½ã ã¨æãã¾ãããã主人æ§ï¼",emotion:"THINKING",background:"CLASSROOM",choices:[{text:"ãªã«ã¬ã³ããããã¯ã¼ã¯ãå®å
¨ã«æé¤ãããã¨",nextFrameId:301},{text:"ã¢ãã³ã·ã§ã³ã®ã¿ã§æå
ç«¯ã®æ§è½ãéæããå¹ççãªå¦ç¿ãå¯è½ã«ãããã¨",nextFrameId:302},{text:"æ°ããã¨ã³ã³ã¼ãã¼ã»ãã³ã¼ãã¼æ§é ãææ¡ãããã¨",nextFrameId:303}]},{id:301,speaker:"ã«ã«",text:"ãã¡ãããããã¯é常ã«å¤§ããªææã§ããããã®çµæã¨ãã¦ä½ããããããããæãéè¦ãªç¹ã§ãããããå°ããæ·±ãèãã¦ã¿ã¾ãããã",emotion:"ANGRY",background:"CLASSROOM",nextFrameId:45},{id:302,speaker:"ã«ã«",text:"ã¯ããã主人æ§ï¼å¤§æ£è§£ã§ã⪠ã¢ãã³ã·ã§ã³ã¡ã«ããºã ã®ã¿ã§æå
ç«¯ã®æ§è½ãéæããåæã«å¦ç¿å¹çã大å¹
ã«åä¸ããããã¨ãããããã®è«æã®æå¤§ã®è²¢ç®ã§ããã",emotion:"NEUTRAL",background:"CLASSROOM",nextFrameId:45},{id:303,speaker:"ã«ã«",text:"ãã
â¦æ°ããã¨ã³ã³ã¼ãã¼ã»ãã³ã¼ãã¼æ§é ã¯ããã®ç®çãéæããããã®ææ®µã§ããæãéè¦ãªã®ã¯ããã®æ§é ããããããææã§ããã",emotion:"ANGRY",background:"CLASSROOM",nextFrameId:45},{id:45,speaker:"ã«ã«",text:"ã¾ã¨ãã¾ãã¨ããã®è«æãAttention Is All You Needãã¯ãã·ã¼ã±ã³ã¹å¤æã¢ãã«ã®æ°ããªå°å¹³ãåãéãã¾ããã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:46,speaker:"ã«ã«",text:"ãªã«ã¬ã³ã層ãç³ã¿è¾¼ã¿å±¤ã使ããããã«ããããèªå·±ã¢ãã³ã·ã§ã³ã®ã¿ã§æ§æãããTransformerããæ©æ¢°ç¿»è¨³ã¿ã¹ã¯ã§é常ã«é«ãæ§è½ã¨å¹çæ§ã示ããã®ã§ãã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:47,speaker:"ã«ã«",text:"ããã«ãããã·ã¼ã±ã³ã¹ã¢ããªã³ã°ã«ããã並åå¦çã®å¯è½æ§ã大ããåºãããå¾ã®å¤ãã®ã¢ãã«ã«å½±é¿ãä¸ãã¾ããã",emotion:"NEUTRAL",background:"CLASSROOM"},{id:48,speaker:"ã«ã«",text:"ãããã§ããããã主人æ§ï¼å°ãã¯ããã®ç´ æ´ãããè«æã®é
åãä¼ããã¾ããã§ããããï¼",emotion:"NEUTRAL",background:"CLASSROOM"},{id:49,speaker:"ã«ã«",text:"é£è§£ãªå
容ã§ããã主人æ§ã¨ä¸ç·ãªããã£ã¨ä¹ãè¶ãããã¾ãããã¤ã§ãç§ããã°ã«ããã¾ãããããå®å¿ãã ãããâ¤",emotion:"NEUTRAL",background:"CLASSROOM"}],Fn="/assets/local/backgrounds/7.jpg",zn=5,Ea={title:Un,summary:_n,frames:Pn,customBackgroun
1dUrl:Fn,characterCode:zn},Bn="Attention Is All You Need",Dn="Ð ÑÑой ÑÑаÑÑе пÑедложена Ð½Ð¾Ð²Ð°Ñ Ð°ÑÑ
иÑекÑÑÑа нейÑонной ÑеÑи, ТÑанÑÑоÑмеÑ, коÑоÑÐ°Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¾Ñнована на меÑ
анизмаÑ
вниманиÑ, полноÑÑÑÑ Ð¾ÑказÑваÑÑÑ Ð¾Ñ ÑекÑÑÑенÑнÑÑ
и ÑвеÑÑоÑнÑÑ
ÑеÑей. ÐÐ¾Ð´ÐµÐ»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð»Ð° пÑевоÑÑ
однÑе ÑезÑлÑÑаÑÑ Ð² задаÑаÑ
маÑинного пеÑевода, ÑÑав более паÑаллелизÑемой и знаÑиÑелÑно ÑокÑаÑив вÑÐµÐ¼Ñ Ð¾Ð±ÑÑениÑ.",Vn=JSON.parse('[{"id":1,"speaker":"ШеÑÑи","text":"ÐдÑавÑÑвÑйÑе, Семпай! Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ Ð¼Ñ Ð¿Ð¾Ð³ÑÑзимÑÑ Ð² Ð¾Ð´Ð½Ñ Ð¸Ð· ÑамÑÑ
влиÑÑелÑнÑÑ
ÑÑаÑей в облаÑÑи глÑбокого обÑÑениÑ: \\"Attention Is All You Need\\". Ð¢Ñ Ð³Ð¾Ñов(а) к ÑеÑÑезной ÑабоÑе? âª","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":2,"speaker":"ШеÑÑи","text":"ÐÑа ÑÑаÑÑÑ Ð¿ÑедÑÑавила миÑÑ Ð°ÑÑ
иÑекÑÑÑÑ Transformer, коÑоÑÐ°Ñ Ð¿Ñоизвела ÑеволÑÑÐ¸Ñ Ð² обÑабоÑке еÑÑеÑÑвенного ÑзÑка. Ðо пÑежде Ñем говоÑиÑÑ Ð¾ ÑеволÑÑиÑÑ
, давай ÑазбеÑемÑÑ Ñ Ñем, ÑÑо бÑло до нее. ~","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":3,"speaker":"ШеÑÑи","text":"Ðо ТÑанÑÑоÑмеÑа доминиÑÑÑÑими моделÑми Ð´Ð»Ñ ÑакиÑ
задаÑ, как маÑиннÑй пеÑевод, бÑли ÑложнÑе ÑекÑÑÑенÑнÑе (RNN) или ÑвеÑÑоÑнÑе (CNN) нейÑоннÑе ÑеÑи. ÐÑобенно попÑлÑÑÐ½Ñ Ð±Ñли LSTM и GRU. ÐомниÑÑ Ð¸Ñ
, Семпай?","emotion":"THINKING","background":"CLASSROOM"},{"id":4,"speaker":"ШеÑÑи","text":"Ðни оÑÐµÐ½Ñ Ñ
оÑоÑо ÑабоÑали, но имели Ð¾Ð´Ð½Ñ ÑÑÑеÑÑвеннÑÑ Ð¿ÑоблемÑ. ÐÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð² RNN пÑоиÑÑ
одÑÑ Ð¿Ð¾ÑледоваÑелÑно: каждÑй ÑкÑÑÑÑй ÑÑÐµÐ¹Ñ $h_t$ завиÑÐ¸Ñ Ð¾Ñ Ð¿ÑедÑдÑÑего $h_{t-1}$ и ÑекÑÑего вÑ
ода. ЧÑо ÑÑо ознаÑÐ°ÐµÑ Ð´Ð»Ñ Ð¾Ð±ÑÑениÑ, Семпай?","emotion":"NEUTRAL","background":"CLASSROOM","choices":[{"text":"ÐÑо замедлÑÐµÑ Ð¾Ð±ÑÑение и огÑаниÑÐ¸Ð²Ð°ÐµÑ Ð¿Ð°ÑаллелизаÑиÑ.","nextFrameId":100},{"text":"ÐÑо Ð´ÐµÐ»Ð°ÐµÑ Ð¼Ð¾Ð´ÐµÐ»Ð¸ оÑÐµÐ½Ñ ÑоÑнÑми.","nextFrameId":101},{"text":"ÐÑо ÑлÑÑÑÐ°ÐµÑ ÑпоÑобноÑÑÑ Ð¼Ð¾Ð´ÐµÐ»Ð¸ понимаÑÑ ÐºÐ¾Ð½ÑекÑÑ.","nextFrameId":102}]},{"id":100,"speaker":"ШеÑÑи","text":"Ðменно! ÐÐ¾Ñ ÑмниÑа! ⤠ÐÑо замедлÑÐµÑ Ð¾Ð±ÑÑение, поÑÐ¾Ð¼Ñ ÑÑо ÑÑ Ð½Ðµ можеÑÑ Ð¾Ð±ÑабаÑÑваÑÑ Ð²Ñе ÑлеменÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑи одновÑеменно. ÐаждÑй Ñаг должен ждаÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð¿ÑедÑдÑÑего. ÐÑо назÑваеÑÑÑ \\"поÑледоваÑелÑнÑй Ñ
аÑакÑÐµÑ Ð²ÑÑиÑлений\\".","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":5},{"id":101,"speaker":"ШеÑÑи","text":"ЧÑо-о?! ÐеÑ, Семпай, ÑÑо ÑовÑем не Ñак! ANGRY ÐÑо ÑÑндаменÑалÑное огÑаниÑение! ÐоÑледоваÑелÑнÑе вÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð·Ð°Ð¼ÐµÐ´Ð»ÑÑÑ Ð¾Ð±ÑÑение и не позволÑÑÑ Ð¸ÑполÑзоваÑÑ Ð¿ÑеимÑÑеÑÑва паÑаллелÑной обÑабоÑки на GPU. Ðапомни ÑÑо! âª","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":5},{"id":102,"speaker":"ШеÑÑи","text":"Хмм... не ÑовÑем Ñак, Семпай. ANGRY ХоÑÑ RNNs неплоÑ
о ÑпÑавлÑÑÑÑÑ Ñ ÐºÐ¾Ð½ÑекÑÑом, иÑ
поÑледоваÑелÑÐ½Ð°Ñ Ð¿ÑиÑода ÑвлÑеÑÑÑ Ð³Ð»Ð°Ð²Ð½Ñм недоÑÑаÑком. Ðна огÑаниÑÐ¸Ð²Ð°ÐµÑ Ð¿Ð°ÑаллелизаÑÐ¸Ñ Ð¸ замедлÑÐµÑ Ð¾Ð±ÑÑение, оÑобенно Ð´Ð»Ñ Ð´Ð»Ð¸Ð½Ð½ÑÑ
поÑледоваÑелÑноÑÑей.","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":5},{"id":5,"speaker":"ШеÑÑи","text":"ТÑанÑÑоÑÐ¼ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¾ÑказÑваеÑÑÑ Ð¾Ñ ÑÑой поÑледоваÑелÑноÑÑи. Ðн оÑнован ТÐÐЬÐРна меÑ
анизмаÑ
вниманиÑ. ÐÑо позволÑÐµÑ ÐµÐ¼Ñ Ð·Ð½Ð°ÑиÑелÑно болÑÑе паÑаллелизовÑваÑÑ Ð²ÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð¸ ÑÑебоваÑÑ ÐÐÐЧÐТÐÐЬÐРменÑÑе вÑемени на обÑÑение. ~","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":6,"speaker":"ШеÑÑи","text":"РезÑлÑÑаÑÑ Ð±Ñли оÑеломиÑелÑнÑ! Ðа задаÑе пеÑевода Ñ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñкого на немеÑкий (WMT 2014) ТÑанÑÑоÑÐ¼ÐµÑ Ð´Ð¾ÑÑиг 28.4 BLEU. ÐÑо на 2 пÑнкÑа BLEU лÑÑÑе, Ñем Ñ Ð¿ÑедÑдÑÑиÑ
лÑÑÑиÑ
моделей, вклÑÑÐ°Ñ Ð°Ð½Ñамбли! Рна английÑко-ÑÑанÑÑзÑком пеÑеводе â 41.8 BLEU, новÑй ÑекоÑд Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¹ модели! âª","emotion":"SURPRISED","background":"CLASSROOM"},{"id":7,"speaker":"ШеÑÑи","text":"РвÑе ÑÑо пÑи гоÑаздо менÑÑиÑ
заÑÑаÑаÑ
вÑемени: 3.5 Ð´Ð½Ñ Ð½Ð° воÑÑми GPU P100 Ð´Ð»Ñ Ð´Ð¾ÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ ÑÑиÑ
ÑезÑлÑÑаÑов. ÐÑÑгие модели ÑÑебовали гоÑаздо болÑÑе! ÐÑо впеÑаÑлÑеÑ, не Ñак ли, Семпай?","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":8,"speaker":"ШеÑÑи","text":"ÐонеÑно, бÑли и дÑÑгие попÑÑки избавиÑÑÑÑ Ð¾Ñ Ð¿Ð¾ÑледоваÑелÑнÑÑ
вÑÑиÑлений, напÑимеÑ, Extended Neural GPU, ByteNet и ConvS2S, коÑоÑÑе иÑполÑзовали ÑвеÑÑоÑнÑе ÑеÑи. Ðо и Ñ Ð½Ð¸Ñ
бÑли Ñвои пÑоблемÑ.","emotion":"THINKING","background":"CLASSROOM"},{"id":9,"speaker":"ШеÑÑи","text":"Ð ÑÑиÑ
моделÑÑ
колиÑеÑÑво опеÑаÑий, необÑ
одимÑÑ
Ð´Ð»Ñ ÑвÑзÑÐ²Ð°Ð½Ð¸Ñ Ñигналов Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÑÐ¼Ñ Ð¿ÑоизволÑнÑми позиÑиÑми, ÑоÑло Ñ ÑаÑÑÑоÑнием Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸: линейно Ð´Ð»Ñ ConvS2S и логаÑиÑмиÑеÑки Ð´Ð»Ñ ByteNet. ÐÑо заÑÑÑднÑло обÑÑение завиÑимоÑÑей на болÑÑиÑ
ÑаÑÑÑоÑниÑÑ
.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":10,"speaker":"ШеÑÑи","text":"РТÑанÑÑоÑмеÑе же ÑÑа пÑоблема Ñведена к *поÑÑоÑнномÑ* ÑиÑÐ»Ñ Ð¾Ð¿ÐµÑаÑий! ÐÑо пÑоÑÑо гениалÑно! Ðо как? С помоÑÑÑ Ð¼ÐµÑ
анизма, коÑоÑÑй назÑваеÑÑÑ Self-Attention, или \\"Ñамовнимание\\".","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":11,"speaker":"ШеÑÑи","text":"Ðавай ÑазбеÑем аÑÑ
иÑекÑÑÑÑ Ð¢ÑанÑÑоÑмеÑа, Семпай. Ðна оÑнована на клаÑÑиÑеÑкой ÑÑÑÑкÑÑÑе \\"кодиÑовÑик-декодиÑовÑик\\".","emotion":"NEUTRAL","background":"CLASSROOM"}
1,{"id":12,"speaker":"ШеÑÑи","text":"ÐодиÑовÑик (Encoder) ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· ÑÑека $N=6$ иденÑиÑнÑÑ
Ñлоев. ÐаждÑй Ñлой Ð¸Ð¼ÐµÐµÑ Ð´Ð²Ð° подÑлоÑ. ÐеÑвÑй â ÑÑо меÑ
анизм многоголового ÑÐ°Ð¼Ð¾Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ (Multi-Head Self-Attention).","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":13,"speaker":"ШеÑÑи","text":"ÐÑоÑой â ÑÑо пÑоÑÑаÑ, позиÑионно-полноÑвÑÐ·Ð½Ð°Ñ ÑеÑÑ Ð¿ÑÑмого ÑаÑпÑоÑÑÑÐ°Ð½ÐµÐ½Ð¸Ñ (Position-wise Feed-Forward Network).","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":14,"speaker":"ШеÑÑи","text":"ÐокÑÑг каждого из ÑÑиÑ
подÑлоев пÑименÑÑÑÑÑ Ð¾ÑÑаÑоÑнÑе ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (residual connection), а заÑем ноÑмализаÑÐ¸Ñ ÑÐ»Ð¾Ñ (layer normalization). То еÑÑÑ, вÑÑ
од подÑÐ»Ð¾Ñ Ð²ÑглÑÐ´Ð¸Ñ Ñак: $LayerNorm(x + Sublayer(x))$.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":15,"speaker":"ШеÑÑи","text":"ÐÑе подÑлои и Ñлои вложений в модели имеÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²ÑÑ ÑазмеÑноÑÑÑ Ð²ÑÑ
ода: $d_{model} = 512$.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":16,"speaker":"ШеÑÑи","text":"ÐекодиÑовÑик (Decoder) Ñоже ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· ÑÑека $N=6$ иденÑиÑнÑÑ
Ñлоев. РоÑлиÑие Ð¾Ñ ÐºÐ¾Ð´Ð¸ÑовÑика, Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÐ»Ð¾Ñ Ð´ÐµÐºÐ¾Ð´Ð¸ÑовÑика ТРРподÑлоÑ.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":17,"speaker":"ШеÑÑи","text":"ÐеÑвÑй â ÑÑо маÑкиÑованное многоголовое Ñамовнимание. ÐаÑкиÑование здеÑÑ Ð¾ÑÐµÐ½Ñ Ð²Ð°Ð¶Ð½Ð¾: оно не позволÑÐµÑ ÑекÑÑей позиÑии обÑаÑаÑÑ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ на поÑледÑÑÑие позиÑии в поÑледоваÑелÑноÑÑи вÑвода. ÐоÑемÑ, Семпай?","emotion":"THINKING","background":"CLASSROOM"},{"id":18,"speaker":"ШеÑÑи","text":"ÐÑо необÑ
одимо, ÑÑÐ¾Ð±Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ Ð¾ÑÑавалаÑÑ Ð°Ð²ÑоÑегÑеÑÑионной â ÑÑÐ¾Ð±Ñ Ð¿ÑедÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð·Ð¸Ñии $i$ завиÑели ÑолÑко Ð¾Ñ Ñже ÑгенеÑиÑованнÑÑ
вÑÑ
однÑÑ
даннÑÑ
в позиÑиÑÑ
ÐÐÐЬШР$i$. ÐнаÑе она Ð±Ñ \\"подглÑдÑвала\\" в бÑдÑÑее! ~","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":19,"speaker":"ШеÑÑи","text":"ÐÑоÑой подÑлой в декодиÑовÑике â ÑÑо меÑ
анизм многоголового Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ \\"кодиÑовÑик-декодиÑовÑик\\". ÐдеÑÑ Ð·Ð°Ð¿ÑоÑÑ (queries) пÑиÑ
одÑÑ Ð¸Ð· пÑедÑдÑÑего ÑÐ»Ð¾Ñ Ð´ÐµÐºÐ¾Ð´Ð¸ÑовÑика, а клÑÑи (keys) и знаÑÐµÐ½Ð¸Ñ (values) â из вÑÑ
ода кодиÑовÑика. ÐÑо позволÑÐµÑ Ð´ÐµÐºÐ¾Ð´Ð¸ÑовÑÐ¸ÐºÑ Ð¾Ð±ÑаÑаÑÑ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ на ÐСЮ вÑ
однÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ. âª","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":20,"speaker":"ШеÑÑи","text":"РнаконеÑ, ÑÑеÑий подÑлой â ÑÑо ÑÐ°ÐºÐ°Ñ Ð¶Ðµ позиÑионно-полноÑвÑÐ·Ð½Ð°Ñ ÑеÑÑ, как и в кодиÑовÑике.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":21,"speaker":"ШеÑÑи","text":"ТепеÑÑ Ð¾ Ñамом главном: меÑ
анизме вниманиÑ! ФÑнкÑÐ¸Ñ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿Ð¸Ñана как оÑобÑажение запÑоÑа (query) и набоÑа Ð¿Ð°Ñ ÐºÐ»ÑÑ-знаÑение (key-value) в вÑÑ
одное знаÑение. ÐÑÑ
од â ÑÑо взвеÑÐµÐ½Ð½Ð°Ñ ÑÑмма знаÑений.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":22,"speaker":"ШеÑÑи","text":"ÐÑ Ð¸ÑполÑзÑем конкÑеÑнÑй вид вниманиÑ, назÑваемÑй \\"ÐаÑÑÑабиÑованное ÑоÑеÑное внимание\\" (Scaled Dot-Product Attention). ÐÑ
однÑе даннÑе â ÑÑо запÑоÑÑ Ð¸ клÑÑи ÑазмеÑноÑÑи $d_k$, и знаÑÐµÐ½Ð¸Ñ ÑазмеÑноÑÑи $d_v$.","emotion":"NEUTRAL","background":"CLASSROOM"}
1,{"id":23,"speaker":"ШеÑÑи","text":"ÐÑ Ð²ÑÑиÑлÑем ÑкалÑÑнÑе пÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑоÑа Ñо вÑеми клÑÑами, заÑем делим каждое на $\\\\sqrt{d_k}$, и пÑименÑем ÑÑнкÑÐ¸Ñ softmax, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð²ÐµÑа Ð´Ð»Ñ Ð·Ð½Ð°Ñений. ~","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":24,"speaker":"ШеÑÑи","text":"ФоÑмÑла вÑглÑÐ´Ð¸Ñ Ñак, Семпай, внимаÑелÑно: $$ Attention(Q, K, V) = softmax\\\\left(\\\\frac{QK^T}{\\\\sqrt{d_k}}\\\\right)V $$","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":25,"speaker":"ШеÑÑи","text":"ÐдеÑÑ $Q$ â ÑÑо маÑÑиÑа запÑоÑов, $K$ â маÑÑиÑа клÑÑей, $V$ â маÑÑиÑа знаÑений. ÐоÑÐµÐ¼Ñ Ð¼Ñ Ð´ÐµÐ»Ð¸Ð¼ на $\\\\sqrt{d_k}$? Ðакой ÑÑÑÐµÐºÑ ÑÑо компенÑиÑÑеÑ?","emotion":"THINKING","background":"CLASSROOM","choices":[{"text":"ÐÑо ÑменÑÑÐ°ÐµÑ Ð³ÑадиенÑÑ Ð¿Ñи обÑÑении.","nextFrameId":200},{"text":"ÐÑо пÑедоÑвÑаÑÐ°ÐµÑ ÑлиÑком болÑÑие знаÑÐµÐ½Ð¸Ñ ÑкалÑÑнÑÑ
пÑоизведений.","nextFrameId":201},{"text":"ÐÑо ÑÑкоÑÑÐµÑ Ð²ÑÑиÑлениÑ.","nextFrameId":202}]},{"id":200,"speaker":"ШеÑÑи","text":"ÐÑибаеÑÑÑÑ, Семпай! ANGRY ÐаобоÑоÑ, ÑÑо Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ ÑоÑ
ÑаниÑÑ Ð³ÑадиенÑÑ! ÐÑи болÑÑиÑ
$d_k$, ÑкалÑÑнÑе пÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ ÑÑаÑÑ Ð¾ÑÐµÐ½Ñ Ð±Ð¾Ð»ÑÑими по велиÑине. ÐÑо ÑÐ¾Ð»ÐºÐ°ÐµÑ ÑÑнкÑÐ¸Ñ softmax в ÑÐµÐ³Ð¸Ð¾Ð½Ñ Ñ ÑÑезвÑÑайно малÑми гÑадиенÑами, ÑÑо заÑÑÑднÑÐµÑ Ð¾Ð±ÑÑение. Ðапомни ÑÑо! âª","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":26},{"id":201,"speaker":"ШеÑÑи","text":"Ðменно Ñак! ÐÐ¾Ñ ÑмниÑа! ⤠Ðогда $d_k$ болÑÑой, ÑкалÑÑнÑе пÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑоÑов и клÑÑей могÑÑ ÑÑановиÑÑÑÑ Ð¾ÑÐµÐ½Ñ Ð±Ð¾Ð»ÑÑими. ÐÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº ÑомÑ, ÑÑо ÑÑнкÑÐ¸Ñ softmax наÑÑÑаеÑÑÑ, а ÐµÑ Ð³ÑадиенÑÑ ÑÑановÑÑÑÑ Ð¾ÑÐµÐ½Ñ Ð¼Ð°Ð»ÐµÐ½Ñкими, ÑÑо заÑÑÑднÑÐµÑ Ð¾Ð±ÑÑение. ÐаÑÑÑабиÑование $\\\\sqrt{d_k}$ компенÑиÑÑÐµÑ ÑÑо.","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":26},{"id":202,"speaker":"ШеÑÑи","text":"Семпай, ÑÑ Ð·Ð°ÑÑавлÑеÑÑ Ð¼ÐµÐ½Ñ Ð³ÑÑÑÑиÑÑ. ANGRY ÐÑо не ÑвÑзано напÑÑмÑÑ Ñо ÑкоÑоÑÑÑÑ Ð²ÑÑиÑлений, а Ñ Ð¸Ñ
ÑÑабилÑноÑÑÑÑ! ÐаÑÑÑабиÑование пÑедоÑвÑаÑÐ°ÐµÑ ÑÑезмеÑно болÑÑие ÑкалÑÑнÑе пÑоизведениÑ, коÑоÑÑе могли Ð±Ñ Ð¿ÑивеÑÑи к иÑÑезаÑÑим гÑадиенÑам.","emotion":"ANGRY","background":"CLASSROOM","nextFrameId":26},{"id":26,"speaker":"ШеÑÑи","text":"ТепеÑÑ Ð¾ \\"Ðногоголовом внимании\\" (Multi-Head Attention). ÐмеÑÑо одной ÑÑнкÑии Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ Ñ $d_{model}$-меÑнÑми клÑÑами, знаÑениÑми и запÑоÑами, Ð¼Ñ Ð»Ð¸Ð½ÐµÐ¹Ð½Ð¾ пÑоеÑиÑÑем иÑ
$h$ Ñаз в ÑазнÑе подпÑоÑÑÑанÑÑва менÑÑей ÑазмеÑноÑÑи ($d_k$, $d_v$).","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":27,"speaker":"ШеÑÑи","text":"ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ из ÑÑиÑ
ÑпÑоеÑиÑованнÑÑ
веÑÑий Ð¼Ñ Ð²ÑполнÑем ÑÑнкÑÐ¸Ñ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ Ð¿Ð°ÑаллелÑно. ÐаÑем конкаÑениÑÑем полÑÑеннÑе ÑезÑлÑÑаÑÑ Ð¸ Ñнова пÑоеÑиÑÑем, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¾ÐºÐ¾Ð½ÑаÑелÑное знаÑение.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":28,"speaker":"ШеÑÑи","text":"ÐÐ¾Ñ ÑоÑмÑла, Семпай: $$ MultiHead(Q, K, V) = Concat(head_1, ..., head_h)W^O $$ где $head_i = Attention(QW_Q^i, KW_K^i, VW_V^i)$.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":29,"speaker":"ШеÑÑи","text":"Ð ÑÑой ÑабоÑе авÑоÑÑ Ð¸ÑполÑзовали $h=8$ паÑаллелÑнÑÑ
Ñлоев вниманиÑ, или \\"головок\\". ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ головки $d_k = d_v = d_{model}/h = 64$. ÐÑо позволÑÐµÑ Ð¼Ð¾Ð´ÐµÐ»Ð¸ одновÑеменно обÑаÑаÑÑ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ на инÑоÑмаÑÐ¸Ñ Ð¸Ð· ÑазнÑÑ
подпÑоÑÑÑанÑÑв пÑедÑÑавлениÑ.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":30,"speaker":"ШеÑÑи","text":"Ðа ÑÑÐµÑ ÑменÑÑенной ÑазмеÑноÑÑи каждой головки, обÑÐ°Ñ Ð²ÑÑиÑлиÑелÑÐ½Ð°Ñ ÑÑоимоÑÑÑ Ð¿ÑимеÑно ÑÐ°ÐºÐ°Ñ Ð¶Ðµ, как Ñ Ð¾Ð´Ð½Ð¾Ð³Ð»Ð°Ð²Ð¾Ð³Ð¾ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð¹ ÑазмеÑноÑÑÑÑ, но пÑи ÑÑом каÑеÑÑво замеÑно вÑÑе!","emotion":"SURPRISED","background":"CLASSROOM"},{"id":31,"speaker":"ШеÑÑи","text":"ÐÑоме подÑлоев вниманиÑ, в каждом Ñлое кодиÑовÑика и декодиÑовÑика еÑÑÑ ÐµÑе ÐозиÑионно-полноÑвÑÐ·Ð½Ð°Ñ ÑеÑÑ Ð¿ÑÑмого ÑаÑпÑоÑÑÑанениÑ. Ðна пÑименÑеÑÑÑ Ðº каждой позиÑии оÑделÑно и иденÑиÑно.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":32,"speaker":"ШеÑÑи","text":"ÐÑо две линейнÑе ÑÑанÑÑоÑмаÑии Ñ ÑÑнкÑией акÑиваÑии ReLU Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸: $FFN(x) = max(0, xW_1 + b_1)W_2 + b_2$. ÐÑ
Ð¾Ð´Ð½Ð°Ñ Ð¸ вÑÑ
Ð¾Ð´Ð½Ð°Ñ ÑазмеÑноÑÑи $d_{model} = 512$, а ÑазмеÑноÑÑÑ Ð²Ð½ÑÑÑеннего ÑÐ»Ð¾Ñ $d_{ff} = 2048$.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":33,"speaker":"ШеÑÑи","text":"ÐÑ
, да! РеÑе кое-ÑÑо, Семпай. ÐоÑколÑÐºÑ Ð½Ð°Ñа Ð¼Ð¾Ð´ÐµÐ»Ñ Ð½Ðµ ÑодеÑÐ¶Ð¸Ñ Ð½Ð¸ ÑекÑÑÑенÑноÑÑи, ни ÑвеÑÑок, ей нÑжно каким-Ñо обÑазом ÑзнаÑÑ Ð¾ поÑÑдке Ñокенов в поÑледоваÑелÑноÑÑи.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":34,"speaker":"ШеÑÑи","text":"ÐÐ»Ñ ÑÑого Ð¼Ñ Ð´Ð¾Ð±Ð°Ð²Ð»Ñем \\"позиÑионнÑе кодиÑовки\\" (positional encodings) к вÑ
однÑм вложениÑм. Ðни имеÑÑ ÑÑ Ð¶Ðµ ÑазмеÑноÑÑÑ $d_{model}$, ÑÑо и вложениÑ, поÑÑÐ¾Ð¼Ñ Ð¸Ñ
можно пÑоÑÑо ÑложиÑÑ.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":35,"speaker":"ШеÑÑи","text":"ÐÑ Ð¸ÑполÑзÑем ÑинÑÑоидалÑнÑе и коÑинÑÑоидалÑнÑе ÑÑнкÑии Ñ ÑазнÑми ÑаÑÑоÑами. ÐапÑимеÑ, $PE_{(pos, 2i)} = sin(pos/10000^{2i/d_{model}})$ и $PE_{(pos, 2i+1)} = cos(pos/10000^{2i/d_{model}})$.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":36,"speaker":"ШеÑÑи","text":"ÐÑо позволÑÐµÑ Ð¼Ð¾Ð´ÐµÐ»Ð¸ легко наÑÑиÑÑÑÑ Ð¾Ð±ÑабаÑÑваÑÑ Ð¾ÑноÑиÑелÑнÑе позиÑии, Ñак как Ð´Ð»Ñ Ð»Ñбого ÑикÑиÑованного ÑмеÑÐµÐ½Ð¸Ñ $k$, $PE_{pos+k}$ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑедÑÑавлено как Ð»Ð¸Ð½ÐµÐ¹Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ $PE_{pos}$. ÐениалÑно, не Ñак ли? âª","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":37,"speaker":"ШеÑÑи","text":"ТепеÑÑ Ð´Ð°Ð²Ð°Ð¹ ÑÑавним Ñамовнимание Ñ ÑекÑÑÑенÑнÑми и ÑвеÑÑоÑнÑми ÑлоÑми Ñ ÑоÑки зÑÐµÐ½Ð¸Ñ Ð²ÑÑиÑлиÑелÑной ÑложноÑÑи и Ð´Ð»Ð¸Ð½Ñ Ð¿ÑÑи Ð´Ð»Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑей. ÐÑо оÑÐµÐ½Ñ Ð²Ð°Ð¶Ð½Ð¾ Ð´Ð»Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ, поÑÐµÐ¼Ñ Ð¢ÑанÑÑоÑÐ¼ÐµÑ Ñак Ñ
оÑоÑ.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":38,"speaker":"ШеÑÑи","text":"ÐоÑмоÑÑи на ТаблиÑÑ 1 в ÑÑаÑÑе. Слой ÑÐ°Ð¼Ð¾Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ ÑвÑзÑÐ²Ð°ÐµÑ Ð²Ñе позиÑии Ñ *поÑÑоÑннÑм* ÑиÑлом поÑледоваÑелÑно вÑполнÑемÑÑ
опеÑаÑий: $O(1)$. РмакÑималÑÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° пÑÑи Ñоже $O(1)$! ÐÑо идеалÑно Ð´Ð»Ñ Ð¸Ð·ÑÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð³Ð¾ÑÑоÑнÑÑ
завиÑимоÑÑей! â¤","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":39,"speaker":"ШеÑÑи","text":"РекÑÑÑенÑнÑй Ñлой ÑÑебÑÐµÑ $O(n)$ поÑледоваÑелÑнÑÑ
опеÑаÑий и Ð¸Ð¼ÐµÐµÑ Ð¼Ð°ÐºÑималÑнÑÑ Ð´Ð»Ð¸Ð½Ñ Ð¿ÑÑи $O(n)$, где $n$ â длина поÑледоваÑелÑноÑÑи. ÐÑо оÑÐµÐ½Ñ Ð¿Ð»Ð¾Ñ
о Ð´Ð»Ñ Ð´Ð»Ð¸Ð½Ð½ÑÑ
поÑледоваÑелÑноÑÑей!","emotion":"ANGRY","background":"CLASSROOM"},{"id":40,"speaker":"ШеÑÑи","text":"СвеÑÑоÑнÑе Ñлои могÑÑ Ð±ÑÑÑ Ð±ÑÑÑÑее, Ð
1½Ð¾ Ð´Ð»Ñ ÑвÑзÑÐ²Ð°Ð½Ð¸Ñ Ð²ÑеÑ
позиÑий им нÑжно неÑколÑко Ñлоев. РиÑ
ÑложноÑÑÑ Ð¿Ð¾Ñой вÑÑе, Ñем Ñ ÑамовниманиÑ.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":41,"speaker":"ШеÑÑи","text":"ÐÐ»Ñ Ð¾Ð±ÑÑÐµÐ½Ð¸Ñ Ð¸ÑполÑзовалиÑÑ ÑÑандаÑÑнÑе набоÑÑ Ð´Ð°Ð½Ð½ÑÑ
WMT 2014 English-German (4.5 миллиона Ð¿Ð°Ñ Ð¿Ñедложений) и English-French (36 миллионов паÑ).","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":42,"speaker":"ШеÑÑи","text":"Ðодели обÑÑалиÑÑ Ð½Ð° одной маÑине Ñ 8 GPU NVIDIA P100. ÐазовÑе модели обÑÑалиÑÑ 100 000 Ñагов, или 12 ÑаÑов. ÐолÑÑие модели â 300 000 Ñагов (3.5 днÑ).","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":43,"speaker":"ШеÑÑи","text":"РкаÑеÑÑве опÑимизаÑоÑа иÑполÑзовалÑÑ Adam, а ÑкоÑоÑÑÑ Ð¾Ð±ÑÑÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÑлаÑÑ Ð¿Ð¾ ÑоÑмÑле: $lrate = d_{model}^{-0.5} \\\\cdot min(step\\\\_num^{-0.5}, step\\\\_num \\\\cdot warmup\\\\_steps^{-1.5})$.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":44,"speaker":"ШеÑÑи","text":"ÐеÑвÑе $warmup\\\\_steps = 4000$ Ñагов ÑкоÑоÑÑÑ Ð¾Ð±ÑÑÐµÐ½Ð¸Ñ Ð»Ð¸Ð½ÐµÐ¹Ð½Ð¾ возÑаÑÑала, а заÑем ÑбÑвала пÑопоÑÑионалÑно обÑаÑÐ½Ð¾Ð¼Ñ ÐºÐ²Ð°Ð´ÑаÑÐ½Ð¾Ð¼Ñ ÐºÐ¾ÑÐ½Ñ Ð¸Ð· номеÑа Ñага. ÐÑо ÑмнÑй подÑ
од к обÑÑениÑ! ~","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":45,"speaker":"ШеÑÑи","text":"ÐÑименÑлиÑÑ Ð¸ меÑÐ¾Ð´Ñ ÑегÑлÑÑизаÑии: Dropout ($P_{drop}=0.1$) к вÑÑ
Ð¾Ð´Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ подÑÐ»Ð¾Ñ Ð¸ Label Smoothing ($ls=0.1$). Label Smoothing Ð´ÐµÐ»Ð°ÐµÑ Ð¼Ð¾Ð´ÐµÐ»Ñ ÑÑÑÑ Ð¼ÐµÐ½ÐµÐµ ÑвеÑенной в ÑвоиÑ
пÑедÑказаниÑÑ
, но, как ни ÑÑÑанно, ÑÑо ÑлÑÑÑÐ°ÐµÑ ÑоÑноÑÑÑ Ð¸ BLEU!","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":46,"speaker":"ШеÑÑи","text":"ЧÑо ж, Семпай, Ð¼Ñ Ð¾Ð±ÑÑдили оÑновнÑе пÑинÑÐ¸Ð¿Ñ Ð¢ÑанÑÑоÑмеÑа и его пÑеимÑÑеÑÑва. ТепеÑÑ ÑÑ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑÑ, поÑÐµÐ¼Ñ ÑÑа Ð¼Ð¾Ð´ÐµÐ»Ñ Ñак ÑилÑно повлиÑла на NLP? Ðакое из доÑÑижений ТÑанÑÑоÑмеÑа ÑÑ ÑÑиÑаеÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ знаÑимÑм?","emotion":"THINKING","background":"CLASSROOM","choices":[{"text":"УлÑÑÑение каÑеÑÑва пеÑевода до ÑекоÑднÑÑ
знаÑений.","nextFrameId":300},{"text":"ÐнаÑиÑелÑное ÑокÑаÑение вÑемени обÑÑениÑ.","nextFrameId":301},{"text":"ÐолнÑй оÑказ Ð¾Ñ RNN и CNN в полÑÐ·Ñ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ.","nextFrameId":302}]},{"id":300,"speaker":"ШеÑÑи","text":"Ðа, абÑолÑÑно! ÐовÑе ÑекоÑÐ´Ñ BLEU â ÑÑо пÑÑмое доказаÑелÑÑÑво пÑевоÑÑ
одÑÑва модели! ÐÐ¾Ñ ÑмниÑа! ⤠ÐÑо показÑваеÑ, ÑÑо ТÑанÑÑоÑÐ¼ÐµÑ Ð½Ðµ пÑоÑÑо бÑÑÑÑ, но и невеÑоÑÑно ÑÑÑекÑивен.","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":47},{"id":301,"speaker":"ШеÑÑи","text":"ÐеÑно, Семпай! ⤠СокÑаÑение вÑемени обÑÑÐµÐ½Ð¸Ñ â ÑÑо огÑомное доÑÑижение, делаÑÑее иÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ пÑименение ÑакиÑ
моделей гоÑаздо более доÑÑÑпнÑми и бÑÑÑÑÑми. ÐÑо оÑÐµÐ½Ñ Ð¿ÑакÑиÑно!","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":47},{"id":302,"speaker":"ШеÑÑи","text":"Ðменно Ñак, Семпай! ⤠ÐÑказ Ð¾Ñ ÑекÑÑÑенÑнÑÑ
и ÑвеÑÑоÑнÑÑ
Ñлоев и пеÑеÑ
од ÑолÑко на внимание â ÑÑо ÑадикалÑное и Ñмелое аÑÑ
иÑекÑÑÑное ÑеÑение, коÑоÑое пÑивело к Ñаким поÑÑÑÑаÑÑим ÑезÑлÑÑаÑам. ÐÑо пÑоÑÑв в Ñамой оÑнове!","emotion":"NEUTRAL","background":"CLASSROOM","nextFrameId":47},{"id":47,"speaker":"ШеÑÑи","text":"Ð Ñелом, ÑÑаÑÑÑ \\"Attention Is All You Need\\" показала, ÑÑо ТÑанÑÑоÑÐ¼ÐµÑ Ð¿ÑекÑаÑно обобÑаеÑÑÑ Ð¸ на дÑÑгие задаÑи, напÑимеÑ, на паÑÑинг английÑкого ÑзÑка, доÑÑÐ¸Ð³Ð°Ñ Ð²Ð¿ÐµÑаÑлÑÑÑиÑ
ÑезÑлÑÑаÑов даже пÑи огÑаниÑеннÑÑ
даннÑÑ
.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":48,"speaker":"ШеÑÑи","text":"Ðни Ñакже пÑовели ÑкÑпеÑименÑÑ Ñ Ð²Ð°ÑиаÑиÑми модели, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð½ÑÑÑ Ð²Ð°Ð¶Ð½Ð¾ÑÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ компоненÑа. ÐапÑимеÑ, они вÑÑÑнили, ÑÑо ÑменÑÑение ÑазмеÑноÑÑи клÑÑа $d_k$ вÑÐµÐ´Ð¸Ñ ÐºÐ°ÑеÑÑвÑ, ÑÑо говоÑÐ¸Ñ Ð¾ ÑложноÑÑи ÑÑнкÑии ÑовмеÑÑимоÑÑи.","emotion":"THINKING","background":"CLASSROOM"},{"id":49,"speaker":"ШеÑÑи","text":"Ð ÑÑо более кÑÑпнÑе модели (Ñ Ð±Ð¾Ð»ÑÑим $d_{model}$ и $d_{ff}$) даÑÑ Ð»ÑÑÑие ÑезÑлÑÑаÑÑ, а dropout оÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеобÑÑениÑ. ÐÑе ÑÑи деÑали важнÑ, Семпай!","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":50,"speaker":"ШеÑÑи","text":"РзаклÑÑение, ТÑанÑÑоÑÐ¼ÐµÑ â ÑÑо пеÑÐ²Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей, оÑÐ½Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¸ÑклÑÑиÑелÑно на внимании. Ðн бÑÑÑÑее, ÑÑ
1ÑекÑивнее и доÑÑÐ¸Ð³Ð°ÐµÑ Ð½Ð¾Ð²ÑÑ
ÑекоÑдов каÑеÑÑва. ÐÑо оÑкÑÑло пÑÑÑ Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¸Ñ
бÑдÑÑиÑ
иÑÑледований и моделей, коÑоÑÑе Ð¼Ñ Ð²Ð¸Ð´Ð¸Ð¼ ÑегоднÑ.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":51,"speaker":"ШеÑÑи","text":"ÐвÑоÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑÑÑÑ Ð¿ÑименÑÑÑ Ð¢ÑанÑÑоÑÐ¼ÐµÑ Ðº дÑÑгим задаÑам и модалÑноÑÑÑм, Ñаким как изобÑажениÑ, аÑдио и видео. Ð Ñакже иÑÑледоваÑÑ Ð¼ÐµÑ
Ð°Ð½Ð¸Ð·Ð¼Ñ Ð»Ð¾ÐºÐ°Ð»Ñного, огÑаниÑенного Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð±ÑабоÑки болÑÑиÑ
вÑ
однÑÑ
даннÑÑ
.","emotion":"NEUTRAL","background":"CLASSROOM"},{"id":52,"speaker":"ШеÑÑи","text":"ÐÑ ÐºÐ°Ðº, Семпай? Ð¢Ñ Ñ
оÑоÑо ÑÑвоил маÑеÑиал? УвеÑена, ÑепеÑÑ ÑÑ ÑможеÑÑ Ð¾Ð±ÑÑÑниÑÑ Ð¢ÑанÑÑоÑÐ¼ÐµÑ Ð»ÑбомÑ! ~","emotion":"NEUTRAL","background":"CLASSROOM"}]'),Wn="/assets/local/backgrounds/7.jpg",Gn=1,Ia={title:Bn,summary:Dn,frames:Vn,customBackgroundUrl:Wn,characterCode:Gn},to={zh:[{id:"transformer-zh",title:$a.title,description:$a.summary,script:$a}],en:[{id:"transformer-en",title:Ta.title,description:Ta.summary,script:Ta}],ja:[{id:"transformer-ja",title:Ea.title,description:Ea.summary,script:Ea}
1],ru:[{id:"transformer-ru",title:Ia.title,description:Ia.summary,script:Ia}]},ao="paper2gal.clientInstallationId.v1",qn=()=>{try{return typeof localStorage>"u"?null:localStorage}catch{return null}},Hn=()=>{const o=globalThis.crypto;return typeof(o==null?void 0:o.randomUUID)=="function"?`installation-${o.randomUUID()}`:`installation-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,14)}`},Yn=(o=qn(),n=Hn)=>{var h;try{const g=(h=o==null?void 0:o.getItem(ao))==null?void 0:h.trim();if(g)return g}catch{}const b=n();try{o==null||o.setItem(ao,b)}catch{}return b},Qn={zh:{title:"å§æ
ç«ç»è°æ´",hint:"ææ½ç«ç»è°æ´ä½ç½®ï¼ä½¿ç¨æé®ä¿®æ¹åºç¡å¤§å°",reset:"éç½®",save:"ä¿å",sample:"è¿æ ·çä½ç½®å大å°åéåï¼ä¿ååä¼åºç¨å°è¿ä¸ªè§è²çå§æ
çé¢ã",smaller:"缩å°ç«ç»",larger:"æ¾å¤§ç«ç»",scope:o=>`å½åä»
è°æ´ï¼${o}`},en:{title:"Story Sprite Layout",hint:"Drag the sprite to move it, then adjust its base size",reset:"Reset",save:"Save",sample:"Does this position and size look right? It will be used in story scenes after saving.",smaller:"Make sprite smaller",larger:"Make sprite larger",scope:o=>`Only for: ${o}`},ja:{title:"ã¹ãã¼ãªã¼ç«ã¡çµµèª¿æ´",hint:"ç«ã¡çµµããã©ãã°ãã¦ä½ç½®ã調æ´ãããã¿ã³ã§åºæ¬ãµã¤ãºã夿´ã§ãã¾ã",reset:"ãªã»ãã",save:"ä¿å",sample:"ãã®ä½ç½®ã¨ãµã¤ãºã§ããããã§ããï¼ä¿åå¾ãã¹ãã¼ãªã¼ç»é¢ã«åæ ããã¾ãã",smaller:"ç«ã¡çµµã縮å°",larger:"ç«ã¡çµµãæ¡å¤§",scope:o=>`ç¾å¨ã®å¯¾è±¡ï¼${o}`},ru:{title:"ÐаÑÑÑойка ÑпÑайÑа",hint:"ÐеÑеÑаÑкивайÑе пеÑÑонажа и наÑÑÑойÑе его базовÑй ÑазмеÑ",reset:"СбÑоÑиÑÑ",save:"СоÑ
ÑаниÑÑ",sample:"ÐодÑ
Ð¾Ð´Ð¸Ñ Ð»Ð¸ Ñакое положение и ÑазмеÑ? ÐоÑле ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¾Ð½Ð¸ пÑименÑÑÑÑ Ð² ÑÑжеÑе.",smaller:"УменÑÑиÑÑ Ð¿ÐµÑÑонажа",larger:"УвелиÑиÑÑ Ð¿ÐµÑÑонажа",scope:o=>`ТолÑко длÑ: ${o}`}},so=({isOpen:o,onClose:n,onSave:b,characterId:h,skinId:g,characterName:k,spriteUrl:x,live2dConfig:w,defaultLayout:v,language:m,uiPreset:y="classic"})=>{const N=ho(),f=wo(h,g),[j,H]=d.useState(Js),[ke,Q]=d.useState(!1),K=d.useRef(null),R=Qn[m],$=y==="fullwidth",P=y==="floral"||y==="sakura"||y==="gothic",O=dn(N,y),Y=rn(h,!!(w!=null&&w.modelUrl)),pe=P?N?"px-1 py-1":"px-2 py-1 sm:p-3 md:px-7 md:py-5":N?"px-3 py-2":"px-4 py-2 sm:p-4 md:px-12 md:py-8";if(d.useEffect(()=>{o&&(H(go(f,v)),Q(!1),K.current=null)},[o,f,v==null?void 0:v.x,v==null?void 0:v.y,v==null?void 0:v.scale]),d.useEffect(()=>{if(!o)return;const S=U=>{U.key==="Escape"&&n()};return window.addEventListener("keydown",S),()=>window.removeEventListener("keydown",S)},[o,n]),!o)return null;const te=S=>{H(U=>nn(typeof S=="function"?S(U):S))},Me=S=>{S.button!==0&&S.pointerType!=="touch"||(S.preventDefault(),S.currentTarget.setPointerCapture(S.pointerId),K.current={pointerId:S.pointerId,clientX:S.clientX,clientY:S.clientY,x:j.x,y:j.y},Q(!0))},Ce=S=>{const U=K.current;!U||U.pointerId!==S.pointerId||te({x:U.x+S.clientX-U.clientX,y:U.y+S.clientY-U.clientY,scale:j.scale})},we=S=>{var U;((U=K.current)==null?void 0:U.pointerId)===S.pointerId&&(K.current=null,Q(!1),S.currentTarget.hasPointerCapture(S.pointerId)&&S.currentTarget.releasePointerCapture(S.pointerId))},Oe=S=>{if(S.preventDefault(),S.deltaY===0)return;const U=S.deltaY<0?.06:-.06;te(re=>({...re,scale:re.scale+U}))},ue=()=>{ln(f,j),b==null||b(j),n()};return e.jsxs("div",{className:"absolute inset-0 z-[90] overflow-hidden bg-black font-sans",role:"dialog","aria-modal":"true","aria-label":R.title,children:[e.jsx("div",{className:"absolute inset-0 scale-105 bg-cover bg-center",style:{backgroundImage:'url("/assets/local/backgrounds/default-scene.png")'}}),e.jsx("div",{className:"absolute inset-0 bg-black/10"}),e.jsxs("div",{className:"absolute left-1/2 top-3 z-50 flex w-[calc(100%-1.5rem)] max-w-4xl -translate-x-1/2 items-center justify-between gap-2 rounded-lg border border-white/80 bg-white px-3 py-2 shadow-xl md:top-5 md:px-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h2",{className:"truncate text-sm font-black text-slate-800 md:text-lg",children:R.title}),e.jsxs("div",{className:"hidden items-center gap-2 truncate text-xs font-bold sm:flex",children:[e.jsx("span",{className:"text-slate-500",children:R.hint}),e.jsx("span",{className:"rounded bg-pink-50 px-2 py-0.5 text-pink-600",children:R.scope(k)})]})]}),e.jsx("button",{type:"button",onClick:n,className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-slate-500 transition hover:bg-slate-100 hover:text-slate-900","aria-label":"Close",children:e.jsx(J,{size:20})})]}),e.jsx("div",{className:"pointer-events-none absolute inset-0 z-20 flex items-end justify-center",children:e.jsx("div",{className:`absolute left-1/2 w-[min(50vw,720px)] max-w-[50%] -translate-x-1/2 ${Y.frameClass}`,children:e.jsx("div",{className:`pointer-events-auto relative h-full w-full touch-none select-none ${ke?"cursor-grabbing":"cursor-grab"}`,style:{transform:`translate3d(${j.x}px, ${j.y}px, 0) scale(${j.scale})`,transformOrigin:"bottom center",filter:"drop-shadow(0 0 15px rgba(255, 255, 255, 0.3))"},onPointerDown:Me,onPointerMove:Ce,onPointerUp:we,onPointerCancel:we,onWheel:Oe,children:w!=null&&w.modelUrl?e.jsx(ko,{config:w,emotion:fo.NEUTRAL}):bo(x)?e.jsx("video",{src:x,autoPlay:!0,loop:!0,muted:!0,playsInl
1ine:!0,draggable:!1,className:"h-full w-full object-contain"}):e.jsx("img",{src:x,alt:k,draggable:!1,className:"h-full w-full object-contain"})})})}),e.jsx("div",{className:`pointer-events-none absolute inset-x-0 bottom-0 z-30 flex min-h-0 items-end justify-center ${O.outerPaddingClass}`,style:!$&&N?{paddingBottom:"max(0.5rem, env(safe-area-inset-bottom))"}:void 0,children:e.jsxs("div",{className:`relative ${O.containerWidthClass} ${O.containerHeightClass} overflow-visible ${$?"game-story-font border-0 rounded-none shadow-none bg-gradient-to-b from-transparent via-yellow-700/45 to-yellow-950/90":"rounded-2xl rounded-tl-none border border-white/50 bg-white/95 shadow-[0_10px_50px_rgba(0,0,0,0.24)]"}`,"data-testid":"preview-dialogue-panel",children:[e.jsx("div",{className:`${$?"hidden":""} absolute left-0 flex items-center justify-center rounded-t-xl rounded-tr-[20px] bg-slate-800 font-black text-white shadow-md ${N?"-top-7 h-7 px-4 text-sm":"-top-8 h-8 px-6 text-base md:-top-10 md:h-11 md:px-10 md:text-xl"}`,children:k}),e.jsxs("div",{className:$?"fullwidth-content flex h-full min-h-0 flex-col":`${pe} absolute inset-0 flex h-full min-h-0 flex-col overflow-hidden`,children:[$&&e.jsx("div",{className:"fullwidth-speaker",children:k}),e.jsx("p",{className:`${$?N?"text-[15px] leading-snug":"text-base leading-relaxed md:text-[27px]":N?"text-[13px] leading-snug":"text-sm leading-relaxed sm:text-base md:text-2xl"} min-h-0 flex-1 overflow-y-auto font-medium tracking-wide ${$?"vn-dialogue-text":"text-slate-800"}`,children:R.sample})]})]})}),e.jsxs("div",{className:"absolute left-1/2 z-50 flex -translate-x-1/2 items-center gap-1.5 rounded-lg border border-slate-200 bg-white p-2 shadow-xl md:gap-2",style:{bottom:O.previewToolbarBottom},children:[e.jsx("button",{type:"button",onClick:()=>te(S=>({...S,scale:S.scale-.08})),className:"flex h-9 w-9 items-center justify-center rounded-md bg-slate-800 text-white transition hover:bg-slate-700 active:scale-95","aria-label":R.smaller,title:R.smaller,children:e.jsx(vo,{size:17})}),e.jsxs("button",{type:"button",onClick:()=>H(Js),className:"flex h-9 min-w-[82px] items-center justify-center gap-1.5 rounded-md bg-slate-100 px-3 text-xs font-black text-slate-700 transition hover:bg-slate-200 active:scale-95",title:R.reset,children:[e.jsx(yo,{size:14}),Math.round(j.scale*100),"%"]}),e.jsx("button",{type:"button",onClick:()=>te(S=>({...S,scale:S.scale+.08})),className:"flex h-9 w-9 items-center justify-center rounded-md bg-slate-800 text-white transition hover:bg-slate-700 active:scale-95","aria-label":R.larger,title:R.larger,children:e.jsx(ht,{size:17})}),e.jsxs("button",{type:"button",onClick:ue,className:"flex h-9 items-center justify-center gap-1.5 rounded-md bg-pink-500 px-3 text-xs font-black text-white transition hover:bg-pink-600 active:scale-95",children:[e.jsx(cn,{size:15}),R.save]})]})]})},Jt={zh:{duplicate:"è¿ä¸ªè§è² ID 已被使ç¨ï¼è¯·æ¢ä¸ä¸ª IDã",auth:"ç»å½ç¶æå·²å¤±æï¼è¯·éæ°ç»å½ååè¯ã",image:"è§è²å¾çæ ¼å¼ä¸æ£ç¡®ï¼è¯·æ´æ¢å¾çåéè¯ã",audio:"åèé³é¢å¿
é¡»å¨ 20 ç§å
ä¸ä¸è¶
è¿ 500KBã",tooLarge:"ä¸ä¼ å
容è¿å¤§ï¼è¯·å缩å¾çæé³é¢åéè¯ã",rateLimit:"æä½è¿äºé¢ç¹ï¼è¯·ç¨ååè¯ã",network:"ç½ç»è¿æ¥å¤±è´¥ï¼è¯·æ£æ¥ç½ç»åéè¯ã",server:"è§è²ä¿åæå¡ææ¶ä¸å¯ç¨ï¼è¯·ç¨åéè¯ã"},en:{duplicate:"This character ID is already in use. Choose another ID.",auth:"Your session has expired. Please sign in and try again.",image:"The character image is invalid. Choose another image and try again.",audio:"Reference audio must be 20 seconds or shorter and no larger than 500KB.",tooLarge:"The upload is too large. Compress the images or audio and try again.",rateLimit:"Too many attempts. Please try again later.",network:"Could not connect. Check your network and try again.",server:"Character saving is temporarily unavailable. Please try again later."},ja:{duplicate:"ãã®ãã£ã©ã¯ã¿ã¼IDã¯æ¢ã«ä½¿ç¨ããã¦ãã¾ããå¥ã®IDãå
¥åãã¦ãã ããã",auth:"ãã°ã¤ã³ã®æå¹æéãåãã¾ãããå度ãã°ã¤ã³ãã¦ãã ããã",image:"ãã£ã©ã¯ã¿ã¼ç»åã®å½¢å¼ãæ£ããããã¾ãããå¥ã®ç»åã§ã試ããã ããã",audio:"åç
§é³å£°ã¯20ç§ä»¥å
ã500KB以å
ã«ãã¦ãã ããã",tooLarge:"ã¢ãããã¼ãå
容ã大ãããã¾ããç»åã¾ãã¯é³å£°ãå§ç¸®ãã¦ãã ããã",rateLimit:"æä½ãå¤ããã¾ãããã°ãããã¦ããããä¸åº¦ã試ããã ããã",network:"ãããã¯ã¼ã¯ã«æ¥ç¶ã§ãã¾ãããæ¥ç¶ã確èªãã¦å試
1è¡ãã¦ãã ããã",server:"ãã£ã©ã¯ã¿ã¼ä¿åãµã¼ãã¹ã䏿çã«å©ç¨ã§ãã¾ããããã°ãããã¦ããå試è¡ãã¦ãã ããã"},ru:{duplicate:"ÐÑÐ¾Ñ ID пеÑÑонажа Ñже иÑполÑзÑеÑÑÑ. ÐÑбеÑиÑе дÑÑгой ID.",auth:"Ð¡ÐµÐ°Ð½Ñ Ð¸ÑÑек. ÐойдиÑе Ñнова и повÑоÑиÑе попÑÑкÑ.",image:"ÐедопÑÑÑимÑй ÑоÑÐ¼Ð°Ñ Ð¸Ð·Ð¾Ð±ÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿ÐµÑÑонажа. ÐÑбеÑиÑе дÑÑгое изобÑажение.",audio:"ÐбÑÐ°Ð·ÐµÑ Ð³Ð¾Ð»Ð¾Ñа должен бÑÑÑ Ð½Ðµ длиннее 20 ÑекÑнд и не болÑÑе 500 ÐÐ.",tooLarge:"ÐагÑÑзка ÑлиÑком велика. СожмиÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ аÑдио.",rateLimit:"СлиÑком много попÑÑок. ÐовÑоÑиÑе позже.",network:"Ðе ÑдалоÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑÑÑ. ÐÑовеÑÑÑе ÑеÑÑ Ð¸ повÑоÑиÑе попÑÑкÑ.",server:"СоÑ
Ñанение пеÑÑонажей вÑеменно недоÑÑÑпно. ÐовÑоÑиÑе позже."}},oo=(o,n,b)=>{const h=Jt[o]||Jt.zh,g=typeof b=="string"?b.toLowerCase():"";return n===401||n===403?h.auth:n===413?h.tooLarge:n===429?h.rateLimit:g.includes("already exists")||g.includes("unique constraint")?h.duplicate:g.includes("audio")&&(g.includes("500kb")||g.includes("20 seconds")||g.includes("too large")||g.includes("duration"))?h.audio:g.includes("image")||g.includes("avatar")?h.image:h.server},Kn=o=>(Jt[o]||Jt.zh).network,Ua="https://store.steampowered.com/app/4537400/Paper2Galgame",Xn="https://store.steampowered.com/app/4537400/Paper2Galgame/?utm_source=paper2gal.com&utm_medium=website&utm_campaign=web_to_steam&utm_content=homepage",ro="https://store.steampowered.com/favicon.ico",Jn="/assets/local/common/wechat-qr.jpg",Zn=768,ei=765,_a="p2g_main_menu_sprite_layouts",ge={x:0,y:0,scale:1},ti=.7,ai=1.45,si="https://discord.com/invite/paper2gal",oi="https://www.xiaohongshu.com/user/profile/62cea88e0000000002000d59",ri="https://www.douyin.com/user/MS4wLjABAAAAMGsEyv_mN07IvZLX8SnFwyU_d7hUAZZ6234LiIm36gg",no="1087093580",I=(o,n,b)=>Math.max(o,Math.min(n,b)),ni=({viewportWidth:o,viewportHeight:n,isMobileLayout:b,isPhoneLayout:h,showPromoBanner:g})=>{const k=o>0&&n>0?Math.min(o,n):640,x=Math.max(o||0,n||0,360),w=Math.max(k,320),v=o>0&&n>0&&x/Math.max(1,k)<1.25,m=b||h||o>0&&n>0&&(o<Zn||n<ei),y=m,N=v?I(185,x*.54,Math.min(240,x*.62)):I(h?280:340,x*.39,Math.min(x*.76,h?460:620)),f=v?I(130,x*.42,160):I(h?165:230,Math.min(N,w*(h?.52:.44)),Math.min(N,h?250:400)),j=I(8,w*.02,18),H=I(6,w*.012,10),ke=I(12,N*.045,24),Q=I(17,w*.032,24),K=I(8,N*.026,14),R=I(h?15:17,w*.031,h?20:24),$=R+4,P=I(10,w*.018,14),O=P+3,Y=I(5,N*.014,10),pe=Math.max(56,$+O+Y+H*2),te=I(34,N*.12,68),Me=I(2,w*.004,4),Ce=I(10,w*.02,20),we=I(16,N*.06,32),Oe=I(10,N*.03,18),ue=I(8,w*.015,16),S=6508/2560,re=Math.max(0,w-64-w*.02-f/S-j),xe=pe+Me*2+1,Ye=Math.max(2,Math.min(9,Math.floor((re-Ce-ue)/xe))),$e=Ce+Ye*xe+ue,bt=I(220,x>=1280?x*.22:x>=1024?x*.25:x*.35,400),c=m?x*.02+N:x*.04+bt,Qe=Math.min(x*.72,c+I(12,x*.018,32)),ve=x*.02,ye=Math.max(120,x-Qe-ve),B=ye*.35,Te=w*.35;return{effectiveMainMenuWidth:x,effectiveMainMenuHeight:w,isNearSquareMainMenu:v,shouldUseCompactMainMenu:m,shouldUseCompactMenuContent:y,compactMenuFrameWidth:N,compactMenuLogoWidth:f,compactMenuGap:j,compactMenuButtonPaddingY:H,compactMenuButtonPaddingX:ke,compactMenuButtonMinHeight:pe,compactMenuIconSize:Q,compactMenuIconGap:K,compactMenuLabelSize:R,compactMenuLabelLineHeight:$,compactMenuSubLabelSize:P,compactMenuSubLabelLineHeight:O,compactMenuTextGap:Y,compactMenuDividerInset:te,compactMenuDividerMarginY:Me,compactMenuContentPaddingTop:Ce,compactMenuContentPaddingLeft:we,compactMenuContentPaddingRight:Oe,compactMenuContentPaddingBottom:ue,compactMenuAvailableNavHeight:re,compactMenuRowExtent:xe,compactMenuVisibleRows:Ye,compactMenuNavHeight:$e,desktopMenuWidth:bt,menuVisualRight:c,characterStageLeft:Qe,characterStageRight:ve,characterStageWidth:ye,maxSpriteOffsetX:B,maxSpriteOffsetY:Te}},ii=(o,n)=>({x:Math.min(n.maxSpriteOffsetX,Math.max(-n.maxSpriteOffsetX,Number.isFinite(o.x)?o.x:ge.x)),y:Math.min(n.maxSpriteOffsetY,Math.max(-n.maxSpriteOffsetY,Number.isFinite(o.y)?o.y:ge.y)),scale:Math.min(ai,Math.max(ti,Number.isFinite(o.scale)?o.scale:ge.scale))}),Zt=(o,n,b)=>
1Math.min(b,Math.max(n,o)),ft=o=>Math.round(o*1e3)/1e3,li=(o,n=180)=>{var x;if(!o.length||!((x=o[0])!=null&&x.length)||n<=0)return[];const b=o[0].length,h=Math.min(n,b),g=Array.from({length:h},(w,v)=>{const m=Math.floor(v*b/h),y=Math.max(m+1,Math.floor((v+1)*b/h));let N=0;for(const f of o)for(let j=m;j<y&&j<f.length;j+=1)N=Math.max(N,Math.abs(f[j]));return N}),k=Math.max(...g,0);return k>0?g.map(w=>w/k):g},di=(o,n=1e3,b=100)=>{if(!o.length)return"";const h=b/2,g=o.length===1?0:n/(o.length-1);return o.map((k,x)=>{const w=Zt(k,0,1)*h;return`M ${ft(x*g)} ${ft(h-w)} V ${ft(h+w)}`}).join(" ")},io=(o,n,b,h)=>b<=0||h<=0?0:Zt((o-n)/b,0,1)*h,lo=(o,n,b,h,g,k=.1)=>o==="start"?[ft(Zt(n,0,Math.max(0,h-k))),h]:[b,ft(Zt(n,Math.min(g,b+k),g))],Kt=o=>`${Math.max(0,o).toFixed(1)}s`,ci=({peaks:o,duration:n,start:b,end:h,currentTime:g,loading:k=!1,onRangeChange:x,onSeek:w})=>{const v=d.useId().replace(/:/g,""),m=d.useRef(null),[y,N]=d.useState(null),f=d.useMemo(()=>di(o),[o]),j=n>0?Math.min(100,Math.max(0,b/n*100)):0,H=n>0?Math.min(100,Math.max(0,h/n*100)):100,ke=n>0?Math.min(100,Math.max(0,g/n*100)):0,Q=(R,$)=>{var O;const P=(O=m.current)==null?void 0:O.getBoundingClientRect();P&&x(...lo(R,io($,P.left,P.width,n),b,h,n))},K=(R,$)=>{x(...lo(R,(R==="start"?b:h)+$,b,h,n))};return e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{ref:m,className:"relative h-24 touch-none overflow-hidden rounded-lg border border-pink-200 bg-slate-950 shadow-inner cursor-crosshair select-none",onPointerDown:R=>{if(R.target.closest("[data-trim-handle]"))return;const $=R.currentTarget.getBoundingClientRect();w(io(R.clientX,$.left,$.width,n))},onPointerMove:R=>{y&&Q(y,R.clientX)},onPointerUp:()=>N(null),onPointerCancel:()=>N(null),children:[k?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center text-[10px] font-bold text-slate-400",children:"æ£å¨çææ³¢å½¢â¦"}):f?e.jsxs("svg",{viewBox:"0 0 1000 100",preserveAspectRatio:"none",className:"absolute inset-0 h-full w-full","aria-hidden":"true",children:[e.jsx("defs",{children:e.jsx("clipPath",{id:v,children:e.jsx("rect",{x:j*10,width:Math.max(0,H-j)*10,height:"100"})})}),e.jsx("path",{d:f,stroke:"rgb(100 116 139)",strokeWidth:"3",opacity:"0.7"}),e.jsx("path",{d:f,stroke:"rgb(244 114 182)",strokeWidth:"3.5",clipPath:`url(#${v})`})]}):e.jsx("div",{className:"absolute inset-0 flex items-center justify-center text-[10px] font-bold text-slate-500",children:"ææ æ³¢å½¢"}),e.jsx("div",{className:"absolute inset-y-0 left-0 bg-black/50",style:{width:`${j}%`}}),e.jsx("div",{className:"absolute inset-y-0 right-0 bg-black/50",style:{width:`${Math.max(0,100-H)}%`}}),e.jsx("div",{className:"absolute inset-y-0 z-20 w-px bg-white/90 shadow-[0_0_4px_white]",style:{left:`${ke}%`}}),n>0&&!k&&["start","end"].map(R=>{const $=R==="start"?b:h,P=R==="start"?j:H;return e.jsxs("button",{type:"button","data-trim-handle":R,role:"slider","aria-label":R==="start"?"è£åªå¼å§æ¶é´":"è£åªç»ææ¶é´","aria-valuemin":0,"aria-valuemax":n,"aria-valuenow":$,"aria-valuetext":Kt($),className:"absolute inset-y-0 z-30 w-5 -translate-x-1/2 cursor-ew-resize outline-none focus-visible:ring-2 focus-visible:ring-white",style:{left:`${P}%`},onPointerDown:O=>{O.stopPropagation(),O.currentTarget.setPointerCapture(O.pointerId),N(R),Q(R,O.clientX)},onKeyDown:O=>{const Y=O.shiftKey?1:.1;O.key==="ArrowLeft"?(O.preventDefault(),K(R,-Y)):O.key==="ArrowRight"&&(O.preventDefault(),K(R,Y))},children:[e.jsx("span",{className:"absolute inset-y-0 left-1/2 w-0.5 -translate-x-1/2 bg-brand-pink shadow-[0_0_5px_rgba(236,72,153,0.9)]"}),e.jsx("span",{className:`absolute top-1 whitespace-nowrap rounded bg-brand-pink px-1.5 py-0.5 text-[9px] font-black text-white shadow ${R==="start"?"left-1/2":"right-1/2"}`,children:Kt($)}),e.jsx("span",{className:"absolute left-1/2 top-1/2 h-7 w-3 -translate-x-1/2 -translate-y-1/2 rounded-sm border border-white/80 bg-brand-pink shadow"})]},R)})]}),e.jsxs("div",{className:"flex justify-between text-[9px] font-bold tabular-nums text-slate-400",children:[e.jsx("span",{children:"0.0s"}),e.jsxs("span",{className:"text-brand-pink",children:["éä¸ ",Kt(Math.max(0,h-b))]}),e.jsx("span",{children:Kt(n)})]})]})},ea=5,Ro=30*1024*1024,mi=(o,n=ea)=>o?Array.from(o).slice(0,n):[],pi=(o,n=ea)=>o?o.length>n:!1,ui=o=>o.some(n=>n.size>Ro),xi=(o,n)=>{if(o.length===0)return null;if(o.length===1)return o[0].name;const b=o.map(h=>h.name).join(", ");return n==="zh"?`${o.length} 个æä»¶ï¼${b}`:n==="ja"?`${o.length} ãã¡ã¤ã«ï¼${b}`:n==="ru"?`${o.length} Ñайла: ${b}`:`${o.length} files: ${b}`},co=(o,n="arxiv-paper.txt")=>{const b=n.toLowerCase().endsWith(".txt")?n:`${n}.txt`;return new File([new TextEncoder().encode(o)],b,{type:"text/plain"})},me=["story","paper_qa","study_room"],hi={story:{image:"/assets/local/mode-previews/story-mode.png",selected:"border-pink-400 bg-pink-50 text-pink-700 shadow-[0_14px_30px_rgba(236,72,153,0.18)]",border:"border-pink-200",icon:Pa},paper_qa:{image:"/assets/local/mode-previews/free-mode.png",selected:"border-sky-400 bg-sky-50 text-sky-700 shadow-[0_14px_30px_rgba(14,165,233,0.16)]",border:"border-sky-200",icon:pn},study_room:{image:"/assets/local/mode-previews/lofi-mode.png",selected:"border-emerald-400 bg-emerald-50 text-emerald-700 shadow-[0_14px_30px_rgba(16,185,129,0.16)]",border:"border-emerald-200",icon:mn}},mo=(o,n)=>{const b=me.indexOf(o);return me[(b+n+me.length)%me.length]},fi=({mode:o,onModeChange:n,labels:b,className:h=""})=>{const g=d.useRef([]),k=d.useCallback((x,w=!1)=>
1{if(n(x),w){const v=me.indexOf(x);requestAnimationFrame(()=>{var m;return(m=g.current[v])==null?void 0:m.focus()})}},[n]);return e.jsx("div",{"data-testid":"start-mode-cards",role:"radiogroup","aria-label":"Start mode",className:`grid grid-cols-1 gap-3 sm:grid-cols-3 sm:gap-4 ${h}`,children:me.map((x,w)=>{const v=hi[x],m=v.icon,y=o===x,N=b[x];return e.jsxs("button",{ref:f=>{g.current[w]=f},type:"button",role:"radio","aria-checked":y,"data-mode":x,onClick:()=>k(x),onKeyDown:f=>{let j=null;(f.key==="ArrowRight"||f.key==="ArrowDown")&&(j=mo(x,1)),(f.key==="ArrowLeft"||f.key==="ArrowUp")&&(j=mo(x,-1)),f.key==="Home"&&(j=me[0]),f.key==="End"&&(j=me[me.length-1]),j&&(f.preventDefault(),k(j,!0))},className:`group relative min-w-0 overflow-hidden rounded-[22px] border-2 text-left transition-all duration-300 focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-pink-200 ${y?v.selected:`border-slate-200 bg-white text-slate-500 hover:-translate-y-1 hover:${v.border} hover:shadow-lg`}`,children:[e.jsx("span",{className:`absolute inset-x-0 top-0 h-1 transition-opacity ${y?"opacity-100":"opacity-0 group-hover:opacity-100"} ${x==="story"?"bg-gradient-to-r from-rose-400 to-pink-500":x==="paper_qa"?"bg-gradient-to-r from-sky-400 to-cyan-500":"bg-gradient-to-r from-emerald-400 to-teal-500"}`}),y&&e.jsx("span",{"aria-hidden":"true",className:`absolute right-3 top-3 z-20 flex h-8 w-8 items-center justify-center rounded-full text-white shadow-lg ring-2 ring-white ${x==="story"?"bg-pink-500":x==="paper_qa"?"bg-sky-500":"bg-emerald-500"}`,children:e.jsx(No,{size:18,strokeWidth:3})}),e.jsx("span",{className:"relative block aspect-video w-full overflow-hidden border-b border-slate-100 bg-slate-100",children:e.jsx("img",{src:v.image,alt:"",className:"h-full w-full object-cover transition-transform duration-500 group-hover:scale-[1.025]",loading:"eager",decoding:"async"})}),e.jsxs("span",{className:"block px-4 py-3 sm:px-5 sm:py-4",children:[e.jsxs("span",{className:"flex items-center gap-1.5 text-base font-black xl:text-lg",children:[x!=="story"&&e.jsx(m,{size:17,"aria-hidden":"true"}),N.title]}),e.jsx("span",{className:"mt-1.5 block text-[11px] font-semibold leading-relaxed opacity-75 xl:text-xs",children:N.description})]})]},x)})})},bi=({language:o,translations:n,onStart:b,onPartner:h,onSaves:g,onWorkshop:k,onSettings:x,onCommunity:w,onMembership:v,onDiscover:m,onStudyDashboard:y})=>{const N=[{label:n.start||"å¼å§",onClick:b,icon:So,tutorialId:"upload-entry"},{label:n.partner||"ææ¡£",onClick:h,icon:un,tutorialId:"partner-entry"},{label:n.saves||"åæ¡£",onClick:g,icon:xn,tutorialId:"saves-entry"},{label:n.communityTitle||"åæå·¥å",onClick:k,icon:hn},{label:n.settings||"设置",onClick:x,icon:fn}];return N.splice(3,0,{label:o==="zh"?"ä¼å":"Membership",onClick:v,icon:bn}),m&&N.splice(Math.min(4,N.length),0,{label:o==="zh"?"论æåç°":n.paperDiscoveryTitle||"Discover papers",onClick:m,icon:Zs}),y&&N.splice(N.length-1,0,{label:n.studyDashboard||"å¦ä¹ çæ¿",onClick:y,icon:Zs}),e.jsx("div",{"data-p2g-homepage-v2":!0,"data-testid":"steam-home-menu",className:"absolute inset-0 z-20 pointer-events-none overflow-hidden text-slate-700",children:e.jsxs("div",{"data-testid":"main-menu-notebook",className:"pointer-events-auto absolute bottom-[5%] left-[6.5%] top-[max(96px,9.5%)] flex w-[30%] min-w-[320px] max-w-[620px] flex-col",children:[e.jsx("div",{className:"relative w-fit max-w-full transition-transform duration-500 hover:translate-x-1",children:e.jsx("img",{src:"/assets/local/branding/paper2galgame-logo.webp",alt:"Paper2Galgame","data-testid":"steam-home-logo",className:"h-auto w-[clamp(360px,32vw,620px)] max-w-[min(60vw,620px)] select-none drop-shadow-[0_3px_2px_rgba(255,255,255,.35)]",draggable:!1})}),e.jsx("nav",{"aria-label":n.mainMenu||"Main menu",className:"mt-[clamp(24px,3.5dvh,50px)] flex min-h-0 flex-1 w-[min(100%,460px)] flex-col items-start justify-evenly gap-y-[clamp(2px,.5dvh,8px)]",children:N.map(f=>e.jsx(qr.Fragment,{children:e.jsxs("button",{type:"button","aria-label":f.label,"data-testid":"main-menu-item",onClick:f.onClick,className:"group relative flex min-h-[clamp(42px,6.4dvh,68px)] w-full items-center justify-start rounded-sm px-[8%] py-[clamp(5px,.7dvh,10px)] text-left transition-all duration-300 hover:bg-transparent focus-visible:bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#a35d7e]/60",children:[e.jsx("span",{className:"pointer-events-none absolute inset-x-[-5%] inset-y-1 z-0 scale-[.98] rounded-[2px] bg-[#fffaf0]/55 opacity-0 shadow-[0_0_18px_rgba(255,250,240,.2)] transition-all duration-300 ease-out group-hover:scale-100 group-hover:opacity-100 group-focus-visible:scale-100 group-focus-visible:opacity-100","aria-hidden":"true"}),e.jsx("span",{className:"pointer-events-none absolute left-0 top-1/2 z-10 h-px w-[11%] origin-left scale-x-0 bg-[#b58a78]/80 transition-transform duration-500 ease-out group-hover:scale-x-100 group-focus-visible:scale-x-100","aria-hidden":"true"}),e.jsx("span",{className:"pointer-events-none absolute left-[7%] top-1/2 z-20 h-[clamp(5px,.42vw,8px)] w-[clamp(5px,.42vw,8px)] -translate-y-1/2 rotate-45 scale-75 bg-[#a35d7e] opacity-0 transition-all duration-300 ease-out group-hover:scale-100 group-hover:opacity-100 group-focus-visible:scale-100 group-focus-visible:opacity-100","aria-hidden":"true"}),e.jsx("span",{className:"pointer-events-none absolute left-[12%] right-0 top-[calc(50%+clamp(17px,2.7dvh,26px))] z-10 h-px origin-left scale-x-0 bg-[#c4ad94]/80 transition-transform duration-500 ease-out group-hover:scale-x-100 group-focus-visible:scale-x-100","aria-hidden":"true"}),e.jsxs("span",{"data-p2g-tutorial":f.tutorialId,"data-p2g-tutorial-placement":f.tutorialId?"homepage-menu":void 0,className:"relative z-20 flex items-center gap-[clamp(10px,1vw,18px)] whitespace-nowrap bg-transparent px-3 font-serif text-[clamp(22px,2vw,36px)] font-semibold leading-none tracking-[.16em] text-[#40586a] transition-colors duration-300 group-hover:text-[#9c6176] group-focus-visible:text-[#9c6176]",children:[e.jsx(f.icon,{"aria-hidden":"true",size:"1em",strokeWidth:1.55,className:"shrink-0 opacity-75 transition-transform duration-300 ease-out group-hover:-translate-y-0.5 group-hover:rotate-[-8deg] group-hover:scale-110 group-focus-visible:-translate-y-0.5 group-focus-visible:rotate-[-8deg] group-focus-visible:scale-110"}),f.label]})]})},f.label))}),e.jsx("div",{className:"mt-auto flex w-[72%] items-center justify-center whitespace-nowrap border-t border-[#c4ad94]/70 pb-1 pt-3 text-[clamp(12px,.75vw,16px)] font-medium tracking-[.16em] text-[#83877f]",children:e.jsx("button",{type:"button","data-testid":"main-menu-item",onClick:w,className:"whitespace-nowrap transition-colors hover:text-[#9c6176]",children:n.about||"社群ä¸ä½è
"})})]})})},gi={zh:{close:"å
³é",imports:"导å
¥å
容",importFile:"导å
¥èµæ",document:"ææ¡£",video:"è§é¢",moreSources:"å
¶ä»å
¥å£",options:"éå åè½",optionsHint:"æéå¼å¯",wechat:"微信",previewQr:"é¢è§å¾®ä¿¡äºç»´ç ",closeQr:"å
³é微信äºç»´ç é¢è§",qrAlt:"微信äºç»´ç ",xiaohongshu:"å°çº¢ä¹¦",douyin:"æé³",follow:"å
³æ³¨ä½è
ï¼è·åææ°å¨æ",qqGroup:"QQ 交æµç¾¤",copyQq:"å¤å¶ç¾¤å·",copied:"QQ群å·å·²å¤å¶",copyFailed:"å¤å¶å¤±è´¥ï¼è¯·æå¨å¤å¶ç¾¤å·ï¼1087093580"},en:{close:"Close",imports:"Import content",importFile:"Choose file",document:"Document",video:"Video",moreSources:"Other ways to play",options:"Additional options",optionsHint:"Enable as needed",wechat:"WeChat",previewQr:"Preview WeChat QR",closeQr:"Close WeChat QR preview",qrAlt:"WeChat QR code",xiaohongshu:"Xiaohongshu",douyin:"Douyin",follow:"Follow the author for updates",qqGroup:"QQ group",copyQq:"Copy group number",copied:"QQ group number copied",copyFailed:"Could not copy. Please copy the group number manually: 1087093580"},ja:{close:"éãã",imports:"ã³ã³ãã³ãã®ã¤ã³ãã¼ã",importFile:"ãã¡ã¤ã«ã鏿",document:"ææ¸",video:"åç»",moreSources:"ãã®ä»ã®æ¹æ³",options:"è¿½å æ©è½",optionsHint:"å¿
è¦ãªå ´åã®ã
1¿æå¹å",wechat:"WeChat",previewQr:"WeChat QRã³ã¼ãã表示",closeQr:"WeChat QRã³ã¼ãã®ãã¬ãã¥ã¼ãéãã",qrAlt:"WeChat QRã³ã¼ã",xiaohongshu:"å°ç´
æ¸",douyin:"æé³",follow:"ä½è
ããã©ãã¼ãã¦ææ°æ
å ±ããã§ãã¯",qqGroup:"QQã°ã«ã¼ã",copyQq:"ã°ã«ã¼ãçªå·ãã³ãã¼",copied:"QQã°ã«ã¼ãçªå·ãã³ãã¼ãã¾ãã",copyFailed:"ã³ãã¼ã§ãã¾ããã§ãããã°ã«ã¼ãçªå·ãæåã§ã³ãã¼ãã¦ãã ããï¼1087093580"},ru:{close:"ÐакÑÑÑÑ",imports:"ÐмпоÑÑ Ð¼Ð°ÑеÑиалов",importFile:"ÐÑбÑаÑÑ Ñайл",document:"ÐокÑменÑ",video:"Ðидео",moreSources:"ÐÑÑгие ÑпоÑобÑ",options:"ÐополниÑелÑнÑе ÑÑнкÑии",optionsHint:"ÐклÑÑайÑе по меÑе необÑ
одимоÑÑи",wechat:"WeChat",previewQr:"ÐоказаÑÑ QR-код WeChat",closeQr:"ÐакÑÑÑÑ QR-код WeChat",qrAlt:"QR-код WeChat",xiaohongshu:"Xiaohongshu",douyin:"Douyin",follow:"ÐодпиÑиÑеÑÑ Ð½Ð° новоÑÑи авÑоÑа",qqGroup:"ÐÑÑппа QQ",copyQq:"СкопиÑоваÑÑ Ð½Ð¾Ð¼ÐµÑ Ð³ÑÑппÑ",copied:"ÐÐ¾Ð¼ÐµÑ Ð³ÑÑÐ¿Ð¿Ñ QQ ÑкопиÑован",copyFailed:"Ðе ÑдалоÑÑ ÑкопиÑоваÑÑ. СкопиÑÑйÑе Ð½Ð¾Ð¼ÐµÑ Ð³ÑÑÐ¿Ð¿Ñ Ð²ÑÑÑнÑÑ: 1087093580"}},ki=o=>gi[o],po={zh:{story:{title:"å§æ
模å¼",description:"æèµæçæå¯æ¸¸ç©çè§è§å°è¯´å§æ
ã"},paper_qa:{title:"èªç±æ¨¡å¼",description:"å
é
è¯»èµæï¼åèªç±æé®ã"},study_room:{title:"Lofi èªä¹ 室",description:"䏿³¨å¦ä¹ ï¼ä¸éè¦ AIãæææè§è²ã"},startResearch:"å¼å§èªç±æ¨¡å¼",enterStudyRoom:"è¿å
¥èªä¹ 室",researchFileRequired:"请å
ä¸ä¼ ç ç©¶èµæã",researchVideoUnavailable:"èªç±æ¨¡å¼ä»
æ¯æææ¬åææ¡£ï¼ä¸è½ä½¿ç¨è§é¢é¾æ¥ã",modeNotConnected:"该模å¼å
¥å£å°æªæ¥å
¥ã"},en:{story:{title:"Story mode",description:"Turn your material into a playable visual novel."},paper_qa:{title:"Free mode",description:"Read your material, then ask questions freely."},study_room:{title:"Lofi study room",description:"Focus without AI, material, or a character."},startResearch:"Start Free mode",enterStudyRoom:"Enter study room",researchFileRequired:"Upload a research document first.",researchVideoUnavailable:"Free mode supports text and documents only; video links are not available.",modeNotConnected:"This mode entry is not connected yet."},ja:{story:{title:"ã¹ãã¼ãªã¼ã¢ã¼ã",description:"è³æãéã¹ããã¸ã¥ã¢ã«ããã«ã«ãã¾ãã"},paper_qa:{title:"ããªã¼ã¢ã¼ã",description:"è³æãèªãã§ãèªç±ã«è³ªåã§ãã¾ãã"},study_room:{title:"Lofi èªç¿å®¤",description:"AIã»è³æã»ãã£ã©ã¯ã¿ã¼ãªãã§éä¸ã§ãã¾ãã"},startResearch:"ããªã¼ã¢ã¼ããéå§",enterStudyRoom:"èªç¿å®¤ã¸",researchFileRequired:"å
ã«è³æãã¢ãããã¼ããã¦ãã ããã",researchVideoUnavailable:"ããªã¼ã¢ã¼ãã¯ããã¹ãã¨ææ¸ã®ã¿å¯¾å¿ãã¾ããåç»ãªã³ã¯ã¯ä½¿ãã¾ããã",modeNotConnected:"ãã®ã¢ã¼ãã®å
¥å£ã¯ã¾ã æ¥ç¶ããã¦ãã¾ããã"},ru:{story:{title:"СÑжеÑнÑй Ñежим",description:"ÐÑевÑаÑиÑе маÑеÑÐ¸Ð°Ð»Ñ Ð² игÑовÑÑ Ð²Ð¸Ð·ÑалÑнÑÑ Ð½Ð¾Ð²ÐµÐ»Ð»Ñ."},paper_qa:{title:"СвободнÑй Ñежим",description:"СнаÑала изÑÑиÑе маÑеÑиалÑ, заÑем задавайÑе вопÑоÑÑ."},study_room:{title:"Lofi-кабинеÑ",description:"СоÑÑедоÑоÑÑÑеÑÑ Ð±ÐµÐ· ÐÐ, маÑеÑиалов и пеÑÑонажа."},startResearch:"ÐаÑаÑÑ ÑвободнÑй Ñежим",enterStudyRoom:"РкабинеÑ",researchFileRequired:"СнаÑала загÑÑзиÑе маÑеÑиал Ð´Ð»Ñ Ð¸ÑÑледованиÑ.",researchVideoUnavailable:"СвободнÑй Ñежим поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑолÑко ÑекÑÑ Ð¸ докÑменÑÑ; видео недоÑÑÑпно.",modeNotConnected:"ÐÑ
од в ÑÑÐ¾Ñ Ñежим еÑÑ Ð½Ðµ подклÑÑÑн."}};function wi(o){return po[o]||po.en}const vi=o=>{const n=o.file;return{text:n?"":o.text,fileName:o.fileName||(n==null?void 0:n.name)||"arxiv-paper.txt",uploadFiles:n?[n]:[],isArxivText:!n,loadedCharacterId:null,pendingSource:null}},Xt=500*1024,Ao=20,uo=16e3,yi=.15,xo=o=>o>Ao+yi,Ni=()=>Array.from({length:30},()=>{const o=Math.random()*100,n=10+Math.random()*15,b=Math.random()*15,h=10+Math.random()*15,g=(Math.random()-.5)*50,k=360+Math.random()*720,x=.5+Math.random()*.8;return{left:`${o}%`,width:`${h}px`,height:`${h*1.2}px`,animationDuration:`${n}s`,animationDelay:`-${b}s`,"--end-x":`${g}vw`,"--end-rot":`${k}deg`,"--end-scale":x}}),Si=o=>Number.isFinite(o)?`${o.toFixed(1)}s`:"0.0s",Ri=o=>{const n=Math.max(1,o.numberOfChannels),b=new Float32Array(o.length);for(let h=0;h<n;h+=1){const g=o.getChannelData(h);for(let k=0;k<g.length;k+=1)b[k]+=g[k]/n}return b},Ai=(o,n,b)=>{if(n===b)return o;const h=Math.max(1,Math.round(o.length*b/n)),g=new Float32Array(h),k=o.length/h;for(let x=0;x<h;
1x+=1){const w=x*k,v=Math.floor(w),m=Math.min(v+1,o.length-1),y=w-v;g[x]=o[v]*(1-y)+o[m]*y}return g},ji=(o,n)=>{const g=new ArrayBuffer(44+o.length*2),k=new DataView(g),x=(v,m)=>{for(let y=0;y<m.length;y+=1)k.setUint8(v+y,m.charCodeAt(y))};x(0,"RIFF"),k.setUint32(4,36+o.length*2,!0),x(8,"WAVE"),x(12,"fmt "),k.setUint32(16,16,!0),k.setUint16(20,1,!0),k.setUint16(22,1,!0),k.setUint32(24,n,!0),k.setUint32(28,n*2,!0),k.setUint16(32,2,!0),k.setUint16(34,16,!0),x(36,"data"),k.setUint32(40,o.length*2,!0);let w=44;for(let v=0;v<o.length;v+=1,w+=2){const m=Math.max(-1,Math.min(1,o[v]));k.setInt16(w,m<0?m*32768:m*32767,!0)}return new Blob([k],{type:"audio/wav"})},Wi=({onStart:o,onLoadScript:n,isLoading:b,onOpenSettings:h,characterId:g,setCharacterId:k,selectedDefaultSkinId:x,onSelectDefaultSkin:w,gameUiPreset:v,language:m,customCharacters:y,setCustomCharacters:N,user:f,onLogin:j,onLogout:H,onRefreshUser:ke,onOpenSaves:Q,onLoadSave:K,playerNickname:R,setPlayerNickname:$,onOpenCommunity:P,onOpenArxiv:O,voiceModeEnabled:Y,setVoiceModeEnabled:pe,onOpenMembership:te,onOpenProfile:Me,onOpenStudyDashboard:Ce,onStartResearch:we,onOpenStudyRoom:Oe,onOpenDocs:ue,arxivPrefill:S,onConsumeArxivPrefill:U,extensionFile:re,onClearExtensionFile:xe,extensionAutoStart:Ye,narrativeStyle:$e,setNarrativeStyle:bt})=>{var Os,$s,Ts,Es,Is,Us,_s,Ps,Fs,zs,Bs,Ds,Vs,Ws,Gs,qs,Hs;const c=ho(),Qe=Hr(),{width:ve,height:ye}=Yr(),{chars:B,loading:Te}=Qr(),[Ee,ta]=d.useState(""),[Ie,gt]=d.useState(null),[Ue,kt]=d.useState([]),[Fa,wt]=d.useState(!1),[jo,ae]=d.useState(!1),[D,Lo]=d.useState("story"),[Ke,vt]=d.useState("document"),[aa,ne]=d.useState(!1),[Mo,za]=d.useState(!1),[Co,sa]=d.useState(null),[Oo,Ba]=d.useState(!1),[$o,Xe]=d.useState(!1),[To,oa]=d.useState(!1),[Eo,_e]=d.useState(!1),[Da,yt]=d.useState(!1),[V,Va]=d.useState(null),[Je,ra]=d.useState(""),[Ze,na]=d.useState(""),[Nt,ia]=d.use
1State(""),[Ne,la]=d.useState(""),[et,da]=d.useState(!1),[tt,St]=d.useState({}),[Rt,At]=d.useState([]),[jt,ca]=d.useState(!1),[ma,pa]=d.useState(""),[F,Wa]=d.useState(null),[W,Pe]=d.useState(null),[at,ua]=d.useState(null),[st,Se]=d.useState(0),[ot,Re]=d.useState(0),[Z,Lt]=d.useState(0),[Ga,Mt]=d.useState(!1),[qa,X]=d.useState(null),[Io,xa]=d.useState([]),[Uo,ha]=d.useState(!1),[_o,rt]=d.useState(0),fa=d.useRef(null),nt=d.useRef(null),[ba,ee]=d.useState(null),[se,Ct]=d.useState(null),[Ha,ga]=d.useState(null),[Po,Ot]=d.useState({}),[Ya,$t]=d.useState([]),[Qa,Tt]=d.useState([]),[Li,ka]=d.useState(null),[wa,Fo]=d.useState(""),[Ka,Fe]=d.useState(!1),[Et,Xa]=d.useState(""),[It,Ja]=d.useState(!1),[L,Ut]=d.useState(null),[ze,Za]=d.useState(!1),[zo,_t]=d.useState(!1);d.useEffect(()=>()=>{at&&URL.revokeObjectURL(at)},[at]),d.useEffect(()=>{if(nt.current=null,xa([]),!F){ha(!1);return}const t=window.AudioContext||window.webkitAudioContext;if(!t)return;let a=!1;const r=new t;return ha(!0),(async()=>{try{const u=await r.decodeAudioData(await F.arrayBuffer());if(a)return;nt.current=u,xa(li(Array.from({length:u.numberOfChannels},(l,i)=>u.getChannelData(i)))),Lt(u.duration),Se(0),Re(Math.min(u.duration,15))}catch(u){a||console.error("Build voice waveform failed",u)}finally{a||ha(!1),r.close().catch(()=>{})}})(),()=>{a=!0}},[F]);const[it,es]=d.useState(""),[va,ts]=d.useState(!1),[as,lt]=d.useState(!1),[dt,Mi]=d.useState(!1),[Pt,Bo]=d.useState(!1),Do=!1,[Ft,Be]=d.useState(""),ya=d.useRef(!1),zt=d.useRef(null),ss=d.useRef(null),ct=d.useRef(null),[Vo,Na]=d.useState(!1),[oe,Wo]=d.useState(!1),[Go]=d.useState(Ni),s=Kr[m],Ae=wi(m);d.useEffect(()=>{!F||!xo(Z)||W===F&&(Pe(null),X(s.charVoiceRefAudioTooLong||"åèé³é¢ä¸è½è¶
è¿ 20 ç§ï¼è¯·å
è£åªã"))},[s,Z,W,F]);const qo=((Os=f==null?void 0:f.name)==null?void 0:Os.trim())||(($s=f==null?void 0:f.email)==null?void 0:$s.split("@")[0])||"Player",Ho=(Ts=L==null?void 0:L.membership)!=null&&Ts.unlimitedAll?"Infinity":(Es=L==null?void 0:L.membership)!=null&&Es.active?((Is=L==null?void 0:L.membership)==null?void 0:Is.tier)==="basic"?"Basic":"Pro":m==="zh"?"æ®éç¨æ·":m==="ja"?"ä¸è¬ã¦ã¼ã¶ã¼":m==="ru"?"ÐбÑÑнÑй аккаÑнÑ":"Free",De={zh:{title:"Steam çç°å·²æ¨åº",features:"Live2D è§è²ãèæºèªä¹ 室ãèªå®ä¹ API",cta:"ç«å³ä½éª"},en:{title:"Now available on Steam",features:"Live2D characters, multiplayer study rooms, custom API",cta:"Try now"},ja:{title:"Steam çé
ä¿¡éå§",features:"Live2D ãã£ã©ã¯ã¿ã¼ããªã³ã©ã¤ã³èªç¿å®¤ãã«ã¹ã¿ã API",cta:"ä»ããä½é¨"},ru:{title:"ÐеÑÑÐ¸Ñ Ð´Ð»Ñ Steam Ñже доÑÑÑпна",features:"Live2D-пеÑÑонажи, ÑовмеÑÑнÑе комнаÑÑ, ÑобÑÑвеннÑй API",cta:"ÐопÑобоваÑÑ"}}[m],Yo=!0,Bt=!!((Us=L==null?void 0:L.membership)!=null&&Us.active),os=!!((_s=L==null?void 0:L.membership)!=null&&_s.unlimitedAll);L!=null&&L.discordRewardClaimed||L!=null&&L.voiceCommunityViaRedemption;const rs=os?Number.MAX_SAFE_INTEGER:Bt?ea:1,Qo=os?m==="zh"?"Infinity ä¼åå¯åæ¶ä¸ä¼ ä»»ææ°éææ¡£ï¼ä»é满足åæä»¶å¤§å°ä¸æ ¼å¼è¦æ±ã":"Infinity members can upload any number of documents; per-file size and format rules still apply.":Bt?s.uploadSubMember||s.uploadSub:s.uploadSubFree||s.uploadSub,{showAlert:A,showConfirm:mt}=Xr(),E=ki(m),ns=!ya.current,Ko=c?{paddingTop:"max(0px, env(safe-area-inset-top))",paddingRight:"max(0px, env(safe-area-inset-right))",paddingBottom:"max(0px, env(safe-area-inset-bottom))",paddingLeft:"max(0px, env(safe-area-inset-left))"}:void 0,je=c?{paddingTop:"max(0.5rem, env(safe-area-inset-top))",paddingRight:"max(0.5rem, env(safe-area-inset-right))",paddingBottom:"max(0.5rem, env(safe-area-inset-bottom))",paddingLeft:"max(0.5rem, env(safe-area-inset-left))"}:void 0,he=c?{WebkitOverflowScrolling:"touch",touchAction:"auto"}:void 0,is=ni({viewportWidth:ve,viewportHeight:ye,isMobileLayout:c,isPhoneLayout:Qe,showPromoBanner:Yo}),{isNearSquareMainMenu:Xo,shouldUseCompactMainMenu:G,shouldUseCompactMenuContent:Ve,compactMenuFrameWidth:Sa,compactMenuLogoWidth:Jo,compactMenuGap:Zo,compactMenuButtonPaddingY:ls,compactMenuButtonPaddingX:ds,compactMenuButtonMinHeight:cs,compactMenuIconSize:ms,compactMenuIconGap:er,compactMenuLabelSize:tr,compactMenuLabelLineHeight:ar,compactMenuSubLabelSize:sr,compactMenuSubLabelLineHeight:or,compactMenuTextGap:rr,compactMenuDividerInset:ps,compactMenuDividerMarginY:us,compactMenuContentPaddingTop:xs,compactMenuContentPaddingLeft:nr,compactMenuContentPaddingRight:hs,compactMenuContentPaddingBottom:ir,compactMenuRowExtent:fs,compactMenuNavHeight:bs,desktopMenuWidth:lr,characterStageLeft:dr,characterStageRight:cr}=is,ie=!c&&!Qe&&ve>=1024&&ye>=640,mr=G?{width:`${Sa}px`,gap:`${Zo}px`}:void 0,pr=G?{height:`${bs}px`,flex:"none"}
1:void 0,ur=G?{height:`${fs}px`,minHeight:`${fs}px`}:void 0,xr=G?{boxSizing:"border-box",width:"94%",height:`${cs}px`,minHeight:`${cs}px`,maxWidth:"94%",flexShrink:0,overflow:"hidden",paddingTop:`${ls}px`,paddingBottom:`${ls}px`,paddingLeft:`${ds}px`,paddingRight:`${ds}px`}:void 0,hr=G?{gap:`${rr}px`,minWidth:0,maxWidth:"100%",overflow:"hidden"}:void 0,fr=G?{width:`${ms}px`,height:`${ms}px`,marginRight:`${er}px`}:void 0,br=G?{flexShrink:0,fontSize:`${tr}px`,lineHeight:`${ar}px`,letterSpacing:Sa<330?"0.1em":"0.14em",whiteSpace:"nowrap"}:void 0,gr=G?{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",fontSize:`${sr}px`,lineHeight:`${or}px`,letterSpacing:Sa<330?"0.1em":"0.18em",whiteSpace:"nowrap"}:void 0,kr=G?{marginLeft:`${ps}px`,marginTop:`${us}px`,marginBottom:`${us}px`,width:`calc(100% - ${ps+hs+24}px)`,animationDelay:"calc(var(--animation-delay, 0s) + 0.1s)"}:void 0,wr=G?{boxSizing:"border-box",height:`calc(100% - ${xs+ir}px)`,marginTop:`${xs}px`,paddingLeft:`${nr}px`,paddingRight:`${hs}px`}:void 0,gs=t=>ii(t,is),[le,pt]=d.useState(ge),[ks,vr]=d.useState(null),yr=G?{width:`${Jo}px`,maxWidth:"none",opacity:0,animation:"titleFadeUp 0.6s ease-out forwards",animationDelay:"0.6s"}:void 0,ws={...G?he:void 0,scrollbarWidth:G?"thin":"none",...G?void 0:{msOverflowStyle:"none"}},Le=`absolute inset-0 flex items-center justify-center bg-black/40 backdrop-blur-sm animate-fade-in ${c?"p-1.5 overflow-hidden":"p-4"}`,ut="w-full bg-[#fffdfd] backdrop-blur-xl shadow-[0_20px_60px_rgba(0,0,0,0.3)] ring-pink-200",Nr=c?{maxHeight:"calc(var(--app-vh, 100dvh) * 0.9)"}:void 0;d.useEffect(()=>{Fo(Yn())},[]),d.useEffect(()=>{},[Y,pe]),d.useEffect(()=>{if(!re||!xe)return;const t=re,a=!!Ye;if(a||ae(!0),t.size>Ro){A(s.fileTooLarge||"File size exceeds 30MB limit.",{variant:"warning"}),xe();return}kt([t]),gt(t.name),ka(null),wt(!1),xe(),a&&o("",wa||"unknown_device",!0,!0,!1,!1,void 0,[t])},[re,xe,Ye,wa]),d.useEffect(()=>{if(!S)return;const t=vi(S);ta(t.text),Be(""),gt(t.fileName),kt(t.uploadFiles),ka(t.loadedCharacterId),wt(t.isArxivText),ae(!0),U()},[S,U]);const Dt=()=>{if(!f){Ut(null);return}const t=localStorage.getItem("p2g_token");if(!t){H();return}Ma("/api/user/status",{headers:{Authorization:`Bearer ${t}`}}).then(a=>{if(a.status===401)throw H(),new Error("Unauthorized");return a.json()}).then(a=>{typeof a.remaining=="number"&&(Ut(a),a.voiceUsedToday&&pe(!1))}).catch(a=>{a.message!=="Unauthorized"&&console.error("Failed to fetch status",a)}),Ma("/api/user/profile",{headers:{Authorization:`Bearer ${t}`}}).then(a=>{if(a.status===401)throw H(),new Error("Unauthorized");return a.json()}).then(a=>{a&&a.email===f.email&&(a.playerNickname&&!R&&($(a.playerNickname),localStorage.setItem("p2g_playerNickname",a.playerNickname)),(a.totalPlayTime!==f.totalPlayTime||a.totalPlayCount!==f.totalPlayCount||a.publicBadgeId!==f.publicBadgeId)&&ke({...f,...a}))}).catch(a=>{a.message!=="Unauthorized"&&console.error("Failed to sync profile stats",a)})},Sr=async()=>{if(!f){await A(s.steamWishlistLoginHint||"请å
ç»å½åé¢å Steam æ¿æåå¥å±ã",{variant:"info"}),j();return}if(ze)return;Za(!0);const t=window.open("about:blank","_blank"),a=()=>{if(t&&!t.closed)try{t.location.replace(Ua);return}catch{}window.open(Ua,"_blank","noopener,noreferrer")};try{const r=localStorage.getItem("p2g_token");if(!r){t==null||t.close(),await A(s.steamWishlistLoginHint||"请å
ç»å½åé¢å Steam æ¿æåå¥å±ã",{variant:"info"}),j();return}const u=await fetch("/api/steam/wishlist-reward",{method:"POST",headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),l=await u.json().catch(()=>({}));if(u.ok)Ut(i=>i&&{...i,permanentUseBalance:typeof(l==null?void 0:l.permanentUseBalance)=="number"?l.permanentUseBalance:i.permanentUseBalance,permanentVoiceBalance:typeof(l==null?void 0:l.permanentVoiceBalance)=="number"?l.permanentVoiceBalance:i.permanentVoiceBalance,steamWishlistRewardClaimed:!0}),_e(!1),Dt(),a(),await A((l==null?void 0:l.message)||s.steamWishlistRewardSuccess||"æè°¢æ¯æ Steam æ¿æåï¼å·²åæ¾ 10 次永ä¹
ä½¿ç¨æ¬¡æ°å 3 次永ä¹
è¯é³æ¬¡æ°ã",{variant:"success"});else if(u.status===409&&(l==null?void 0:l.code)==="STEAM_WISHLIST_REWARD_ALREADY_CLAIMED")Ut(i=>i&&{...i,permanentUseBalance:typeof(l==null?void 0:l.permanentUseBalance)=="number"?l.permanentUseBalance:i.permanentUseBalance,permanentVoiceBalance:typeof(l==null?void 0:l.permanentVoiceBalance)=="number"?l.permanentVoiceBalance:i.permanentVoiceBalance,steamWishlistRewardClaimed:!0}),_e(!1),Dt(),a(),await A((l==null?void 0:l.error)||s.steamWishlistRewardClaimed||"Steam æ¿æåå¥å±å·²é¢åè¿",{variant:"info"});else if(u.status===401){t==null||t.close(),await A(s.steamWishlistLoginHint||"请å
ç»å½åé¢å
1Steam æ¿æåå¥å±ã",{variant:"info"}),j();return}else{t==null||t.close(),await A((l==null?void 0:l.error)||s.redeemFailed||"é¢å失败ï¼è¯·ç¨åéè¯",{variant:"error"});return}}catch(r){t==null||t.close(),await A((r==null?void 0:r.message)||s.redeemFailed||"é¢å失败ï¼è¯·ç¨åéè¯",{variant:"error"})}finally{Za(!1)}};d.useEffect(()=>{Dt()},[f==null?void 0:f.id]),d.useEffect(()=>{const t=()=>{f&&Dt()};return window.addEventListener("focus",t),()=>window.removeEventListener("focus",t)},[f==null?void 0:f.id]),d.useEffect(()=>{const t=()=>_e(!0);return window.addEventListener("p2g-open-steam-wishlist-modal",t),()=>window.removeEventListener("p2g-open-steam-wishlist-modal",t)},[]),d.useEffect(()=>{aa||sa(null)},[aa]);let We=((Fs=La(B[0],g===((Ps=B[0])==null?void 0:Ps.id)?x:void 0))==null?void 0:Fs.avatarUrl)??((zs=B[0])==null?void 0:zs.avatarUrl)??"";const de=B.find(t=>t.id===g),ce=y.find(t=>t.id===g);de?We=((Bs=La(de,x))==null?void 0:Bs.avatarUrl)||de.avatarUrl:ce&&(We=ce.avatarUrl);const Vt=Oo?null:Jr(de||ce,!!de),Ge=`${g}:${Vt?"live2d":x||"default"}`,Rr=d.useCallback(()=>{Ba(!0)},[]);d.useEffect(()=>{Ba(!1)},[g,(Ds=de==null?void 0:de.live2d)==null?void 0:Ds.modelUrl,(Vs=ce==null?void 0:ce.live2d)==null?void 0:Vs.modelUrl]);const vs=(t,a)=>String(t||"").replace(/\{\{\s*name\s*\}\}/g,a),Ar=()=>{const t=B.find(r=>r.id===g);if(t){const r=s[t.waitingMessageKey]||"",u=qe(t);return vs(r,u)}const a=y.find(r=>r.id===g);if(a)return`${a.name} is waiting...`;if(B[0]){const r=s[B[0].waitingMessageKey]||"",u=qe(B[0]);return vs(r,u)}return""},qe=t=>{if(!t)return"";const a=t.names&&typeof t.names=="object"?t.names[m]:"";if(typeof a=="string"&&a.trim())return a.trim();const r=typeof t.name=="string"?t.name.trim():"";return r||s[t.nameKey]||t.id},ys=(()=>{const t=B.find(r=>r.id===g);if(t)return qe(t);const a=y.find(r=>r.id===g);return a?a.name:B[0]?qe(B[0]):""})()||"study partner",Wt=(t,a,r)=>{r.stopPropagation(),k(t),a&&w(t,a),za(!0)};d.useEffect(()=>{try{const t=localStorage.getItem(_a);if(!t){pt(ge);return}const a=JSON.parse(t),r=a==null?void 0:a[Ge];pt(r?gs({x:Number(r.x),y:Number(r.y),scale:Number(r.scale)}):ge)}catch{pt(ge)}finally{vr(Ge)}},[Ge,ve,ye]),d.useEffect(()=>{if(ks===Ge)try{const t=localStorage.getItem(_a),a=t?JSON.parse(t):{};a[Ge]=le,localStorage.setItem(_a,JSON.stringify(a))}catch{}},[Ge,ks,le]);const Ns=t=>{pt(a=>gs(typeof t=="function"?t(a):t))},jr=t=>{t.button!==0&&t.pointerType!=="touch"||(t.preventDefault(),t.currentTarget.setPointerCapture(t.pointerId),Na(!0),ct.current={pointerId:t.pointerId,startClientX:t.clientX,startClientY:t.clientY,startX:le.x,startY:le.y})},Lr=t=>{const a=ct.current;!a||a.pointerId!==t.pointerId||Ns({x:a.startX+(t.clientX-a.startClientX),y:a.startY+(t.clientY-a.startClientY),scale:le.scale})},Ss=t=>{var a;((a=ct.current)==null?void 0:a.pointerId)===t.pointerId&&(ct.current=null,Na(!1),t.currentTarget.hasPointerCapture(t.pointerId)&&t.currentTarget.releasePointerCapture(t.pointerId))},Rs=t=>{Ns(a=>({...a,scale:a.scale+t}))},Mr=()=>{ct.current=null,Na(!1),pt(ge)},Cr=async t=>{const a=t.target.files;if(!a||a.length===0)return;if(pi(a,rs)){const u=Bt?s.tooManyFiles||`æå¤åªè½ä¸ä¼ ${ea} 个æä»¶ã`:s.multiUploadMembersOnly||"æ®éç¨æ·ä¸æ¬¡åªè½ä¸ä¼ 1 个æä»¶ï¼å¤ææ¡£ä¸ä¼ 为ä¼åä¸äº«ã";await A(u,{variant:"warning"}),t.target.value="";return}const r=mi(a,rs);if(ui(r)){await A(s.fileTooLarge||"File size exceeds 30MB limit.",{variant:"warning"}),t.target.value="";return}kt(r),vt("document"),Be(""),ta(""),gt(xi(r,m)),ka(null),wt(!1),t.target.value=""},Or=t=>{var u;const a=(u=t.target.files)==null?void 0:u[0];if(!a)return;ga(a);const r=new FileReader;r.onload=l=>{var i;la((i=l.target)==null?void 0:i.result)},r.readAsDataURL(a)},$r=(t,a)=>{var l;const r=(l=t.target.files)==null?void 0:l[0];if(!r)return;Ot(i=>({...i,[a]:r})),$t(i=>i.filter(p=>p!==a));const u=new FileReader;u.onload=i=>{St(p=>{var M;return{...p,[a]:(M=i.target)==null?void 0:M.result}})},u.readAsDataURL(r)},Tr=t=>{St(a=>{const r={...a};return delete r[t],r}),Ot(a=>{const r={...a};return delete r[t],r}),$t(a=>a.includes(t)?a:[...a,t])},As=async(t,a)=>{var l;const r=(l=t.target.files)==null?void 0:l[0];if(!r)return;if(r.size>5*1024*1024){await A(s.endingCgTooLarge||"CG image size must be 5MB or less",{variant:"warning"}),t.target.value="";return}if(!r.type.startsWith("image/")){await A(s.uploadImageFileOnly||"Please upload an image file",{variant:"warning"}),t.target.value="";return}const u=new FileReader;u.onload=i=>{var M;const p=(M=i.target)==null?void 0:M.result;At(_=>{const C=[..._];return typeof a=="number"&&a>=0&&a<C.length?C[a]=p:C.length<3&&C.push(p),C.slice(0,3)}),Tt(_=>{const C=[..._];return typeof a=="number"&&a>=0&&a<C.length?C[a]=r:C.length<3&&C.push(r),C.slice(0,3)})}
1,u.readAsDataURL(r),t.target.value=""},Er=t=>{At(a=>a.filter((r,u)=>u!==t)),Tt(a=>a.filter((r,u)=>u!==t))},Ir=async()=>{if(Et){if(!f){await A(s.loginRequired,{variant:"info"}),Fe(!1),j();return}Ja(!0);try{const t=localStorage.getItem("p2g_token"),a=await fetch("/api/user/characters/borrow",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify({uuid:Et})}),r=await a.json();if(!a.ok)throw new Error(r.error||"Borrow failed");const u={dbId:r.id??r.dbId,id:r.characterId,name:r.name,prompt:r.prompt,performanceProfile:r.performanceProfile??void 0,avatarUrl:r.avatarUrl,renderMode:r.renderMode,live2d:r.live2d,cgImages:Array.isArray(r.cgImages)?r.cgImages:[],isBorrowed:!0,isShared:r.isShared,borrowId:r.borrowId,borrowCount:r.borrowCount,voiceRefAudioUrl:r.voiceRefAudioUrl??void 0,voiceRefText:r.voiceRefText??void 0,synthesisVersion:r.synthesisVersion??void 0,layout:r.layout??void 0,expressions:Xs(r)};N(l=>[...l.filter(p=>p.id!==u.id),u]),Fe(!1),Xa(""),await A(s.borrowSuccess||"Character borrowed successfully!",{variant:"success"})}catch(t){await A(t.message,{variant:"error"})}finally{Ja(!1)}}},js=t=>{const a=t.split(","),r=a[0].match(/:(.*?);/)[1],u=atob(a[1]);let l=u.length;const i=new Uint8Array(l);for(;l--;)i[l]=u.charCodeAt(l);return new Blob([i],{type:r})},Ls=()=>{Wa(null),Pe(null),ua(null),Se(0),Re(0),Lt(0),Mt(!1),X(null),xa([]),rt(0),nt.current=null},Ur=t=>{if(ee(null),X(null),Wa(t),Pe(t&&t.size<=Xt?t:null),Lt(0),Se(0),Re(0),rt(0),!t){ua(null);return}ua(URL.createObjectURL(t)),t.size>Xt&&X(s.charVoiceRefTrimNeeded||"é³é¢è¶
è¿ 500KB æ 20 ç§ï¼è¯·å
è£åªååä¿åã")},_r=t=>{const a=t.currentTarget.duration;!Number.isFinite(a)||a<=0||(Lt(a),Se(0),Re(Math.min(a,15)))},Pr=async()=>{if(!F)return;const t=Math.max(0,Math.min(st,Z||st)),a=Math.max(t+.1,Math.min(ot,Z||ot));if(a<=t){X(s.charVoiceRefTrimInvalid||"ç»ææ¶é´å¿
须大äºå¼å§æ¶é´ã");return}if(a-t>Ao){X(s.charVoiceRefAudioTooLong||"åèé³é¢ä¸è½è¶
è¿ 20 ç§ï¼è¯·ç¼©çè£åªèå´ã");return}Mt(!0),X(null);const r=window.AudioContext||window.webkitAudioContext;if(!nt.current&&!r){Mt(!1),X(s.charVoiceRefTrimUnsupported||"å½åæµè§å¨ä¸æ¯æé³é¢è£åªã");return}let u=null;try{let l=nt.current;l||(u=new r,l=await u.decodeAudioData(await F.arrayBuffer()));const i=Math.max(0,Math.floor(t*l.sampleRate)),p=Math.min(l.length,Math.ceil(a*l.sampleRate)),M=Ri(l).slice(i,p),_=Ai(M,l.sampleRate,uo),C=ji(_,uo),T=F.name.replace(/\.[^.]+$/,"")||"voice-reference",fe=new File([C],`${T}-trimmed.wav`,{type:"audio/wav"});if(fe.size>Xt){Pe(null),X(s.charVoiceRefAudioTooBig||"åèé³é¢ä¸è½è¶
è¿ 500KBã");return}Pe(fe),Se(t),Re(a),ee(null)}catch(l){console.error("Trim voice reference failed",l),Pe(null),X(s.charVoiceRefTrimFailed||"é³é¢è£åªå¤±è´¥ï¼è¯·æ¢ä¸ä¸ª WAV æ MP3 æä»¶éè¯ã")}finally{Mt(!1),u==null||u.close().catch(()=>{})}},Fr=async t=>{if(!(!t.dbId||!await mt(s.workshopSyncChoiceMessage||"è§è²å·²ä¿åï¼æ¯å¦å°æ¬æ¬¡ä¿®æ¹åæ¥å°åæå·¥åï¼åæ¥åéè¦éæ°å®¡æ ¸ã",{title:s.workshopSyncChoiceTitle||"忥åæå·¥å",variant:"info",confirmText:s.workshopSyncNow||"忥å°åæå·¥å",cancelText:s.workshopSyncLater||"以åå说"})))try{const r=localStorage.getItem("p2g_token"),u=await fetch("/api/community/update",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({characterDbId:t.dbId,layout:t.layout})});if(!u.ok){const l=await u.json().catch(()=>({}));throw new Error(l.error||"WORKSHOP_SYNC_FAILED")}N(l=>l.map(i=>i.dbId===t.dbId?{...i,communityStatus:"PENDING"}:i)),await A(s.updateSubmissionSuccess||"æ´æ°å·²æäº¤ï¼çå¾
å®¡æ ¸ä¸ã",{variant:"success"})}catch{await A(s.workshopSyncFailed||"è§è²å·²ä¿åï¼ä½åæ¥åæå·¥å失败ï¼è¯·ç¨åéè¯ã",{variant:"error"})}},Ms=async t=>{var l;if(!Je||!Ze||!Nt||!Ne){ee(s.fillAllFields||"Please fill all fields");return}const a=Je.toLowerCase().startsWith("u_")?Je.toLowerCase():`u_${Je.toLowerCase()}`;if(!/^[a-z0-9_]+$/.test(a)){await A(s.idInvalid||"ID must be lowercase letters/numbers/underscore only",{variant:"warning"});return}if(B.some(i=>i.id.toLowerCase()===a)){await A(s.idConflictBuiltin||"ID conflicts with built-in characters",{variant:"error"});return}if(!V&&y.some(i=>i.id===a)){await A(s.idConflictCustom||"ID already exists",{variant:"error"});return}if(W&&W.size>Xt){ee(s.charVoiceRefAudioTooBig||"åèé³é¢ä¸è½è¶
è¿ 500KBã"),await A(s.charVoiceRefAudioTooBig||"åèé³é¢ä¸è½è¶
è¿ 500KBã",{variant:"error"});return}const r=W===F?Z:Math.max(0,ot-st);if(W&&xo(r)){const i=s.charVoiceRefAudioTooLong||"åèé³é¢ä¸è½è¶
è¿ 20 ç§ï¼è¯·å
è£åªã";ee(i),X(i),await A(i,{variant:"error"});return}if(F&&!W){const i=s.charVoiceRefTrimNeeded||"é³é¢è¶
è¿ 500KB æ 20 ç§ï¼è¯·å
è£åªååä¿åã";ee(i),X(i),await A(i,{variant:"error"});return}
1if(!V&&!t){Ct({id:a,name:Ze,spriteUrl:Ne});return}ca(!0),ee(null);let u=null;try{const i=y.find(C=>C.id===V);let p=null;if(f){const C=localStorage.getItem("p2g_token");if(C){const T=new FormData;T.append("characterId",a),T.append("name",Ze),T.append("prompt",Nt),T.append("isShared",String(et));const fe=t||go(wo((i==null?void 0:i.id)||a));T.append("layout",JSON.stringify(fe)),Ha?T.append("avatar",Ha):Ne.startsWith("data:")&&T.append("avatar",js(Ne),"avatar.png"),Ks.forEach(q=>{var ja;const be=Po[q];be?T.append(q.toLowerCase(),be):(ja=tt[q])!=null&&ja.startsWith("data:")&&T.append(q.toLowerCase(),js(tt[q]),`${q}.png`)}),i!=null&&i.dbId&&Ya.length>0&&T.append("removedExpressions",JSON.stringify(Ya.map(q=>q.toLowerCase())));const Aa=Rt.filter((q,be)=>/^https?:\/\//i.test(q||"")&&!Qa[be]).slice(0,3);T.append("cgKeepUrls",JSON.stringify(Aa));let xt=1;Qa.forEach(q=>{q&&xt<=3&&(T.append(`cg${xt}`,q),xt+=1)}),T.append("voiceRefText",(ma||"").trim()),W&&T.append("voiceRefAudio",W);const Ys=i&&i.dbId?"PUT":"POST",Gr=i&&i.dbId?`/api/user/characters/${i.dbId}`:"/api/user/characters",Gt=await fetch(Gr,{method:Ys,headers:{Authorization:`Bearer ${C}`},body:T});if(!Gt.ok){const q=await Gt.text();let be="";try{be=((l=JSON.parse(q))==null?void 0:l.error)||""}catch{be=""}throw u=oo(m,Gt.status,be),new Error("CHARACTER_SAVE_REQUEST_FAILED")}p=await Gt.json()}}ca(!1);const M=(ma||"").trim(),_={dbId:p?p.id:void 0,id:p?p.characterId:a,name:Ze,prompt:Nt,performanceProfile:(p==null?void 0:p.performanceProfile)??(i==null?void 0:i.performanceProfile)??void 0,avatarUrl:p?p.avatarUrl:Ne,renderMode:(p==null?void 0:p.renderMode)??(i==null?void 0:i.renderMode),live2d:(p==null?void 0:p.live2d)??(i==null?void 0:i.live2d),cgImages:p?Array.isArray(p.cgImages)?p.cgImages:[]:Rt,isShared:p?p.isShared:et,borrowCount:p?p.borrowCount:0,communityStatus:(p==null?void 0:p.communityStatus)??(i==null?void 0:i.communityStatus),voiceRefAudioUrl:(p==null?void 0:p.voiceRefAudioUrl)??(i==null?void 0:i.voiceRefAudioUrl)??void 0,voiceRefText:p?p.voiceRefText??void 0:M||void 0,synthesisVersion:(p==null?void 0:p.synthesisVersion)??(i==null?void 0:i.synthesisVersion)??void 0,layout:(p==null?void 0:p.layout)??t??(i==null?void 0:i.layout),expressions:p?Xs(p):tt};N(V?y.map(C=>C.id===V?_:C):[...y,_]),yt(!1),Ra(),V&&(i==null?void 0:i.communityStatus)==="APPROVED"&&await Fr(_)}catch(i){ca(!1),console.error("Save character error",i),ee(u||(i instanceof TypeError?Kn(m):oo(m)))}},Ra=()=>{ra(""),na(""),ia(""),la(""),da(!1),Va(null),St({}),At([]),ga(null),Ot({}),$t([]),Tt([]),pa(""),Ls(),ee(null),lt(!1),Ct(null)},Cs=()=>{yt(!1),Ra()},zr=async(t,a)=>{if(a.stopPropagation(),await mt(s.deleteConfirm||"Are you sure you want to delete this character?",{variant:"warning"})){const u=y.find(l=>l.id===t);if(f){const l=localStorage.getItem("p2g_token");try{u!=null&&u.isBorrowed&&u.borrowId?await fetch(`/api/user/characters/borrow/${u.borrowId}`,{method:"DELETE",headers:{Authorization:`Bearer ${l}`}}):u!=null&&u.dbId&&await fetch(`/api/user/characters/${u.dbId}`,{method:"DELETE",headers:{Authorization:`Bearer ${l}`}})}catch(i){console.error("Failed to delete character",i)}}N(y.filter(l=>l.id!==t)),g===t&&k("RUKA")}},Br=(t,a)=>{a.stopPropagation();const r=y.find(u=>u.id===t);r&&(ga(null),Ot({}),$t([]),ee(null),lt(!1),ra(r.id.replace(/^u_/,"")),na(r.name),ia(r.prompt??""),la(r.avatarUrl),da(!!r.isShared),St(r.expressions||{}),At(r.cgImages||[]),Tt([]),pa(r.voiceRefText??""),Ls(),Va(r.id),yt(!0))},Dr=()=>{Me()},Vr=async()=>{if(D==="study_room"){ae(!1),Oe?await Oe():await A(Ae.modeNotConnected,{variant:"info"});return}if(D==="paper_qa"){const l=Ft.trim(),i=!Ue.length&&Fa&&Ee.trim()?co(Ee,Ie||"arxiv-paper.txt"):null,p=Ue.length>0?Ue:i?[i]:void 0;if(l){await A(Ae.researchVideoUnavailable,{variant:"warning"});return}if(!p){await A(Ae.researchFileRequired,{variant:"warning"});return}if(!we){await A(Ae.modeNotConnected,{variant:"info"});return}ae(!1),await we({text:"",documentFiles:p});return}if(Te)return;if(b){await A(s.loadingScript||"æ£å¨çæä¸ï¼è¯·ç¨å...",{variant:"info"});return}const t=Ft.trim(),a=!Ue.length&&Fa&&Ee.trim()?co(Ee,Ie||"arxiv-paper.txt"):null,r=Ue.length>0?Ue:a?[a]:void 0;if(r&&t){await A(m==="zh"?"ææ¡£æ¹æ¬¡æä¸æ¯æä¸è§é¢é¾æ¥åæ¶ä½¿ç¨ï¼è¯·å
æ¸
空è§é¢é¾æ¥ã":"Document batches cannot be combined with a video URL. Please clear the video URL first.",{variant:"warning"});return}if(!r&&Ee.trim().length<=50&&!t){await A(s.contentTooShort,{variant:"warning"});return}if(t)try{const l=new URL(t);if(!["http:","https:"].includes(l.protocol))throw new Error("unsupported protocol")}catch{await A(m==="zh"?"请è¾å
¥ææç HTTP/HTTPS è§é¢é¾æ¥ã":"Please enter a valid HTTP/HTTPS video URL.",{variant:"warning"});return}if(!f){_t(!0);return}const u=Y&&!dt;if(u)try{const l=localStorage.getItem("p2g_token");if(!l){await A(s.loginRequired||"请å
ç»å½å使ç¨è¯¥åè½ã",{variant:"info"});return}const i=await Ma("/api/tts/queue-info",{headers:{Authorization:`Bearer ${l}`},cache:"no-store"}),p=await i.json().catch(()=>({}));if(i.ok){const M=tn(p),_=an(M),C=Math.max(0,Number(p==null?void 0:p.queueLoad)||0),T=Math.max(1,Number(p==null?void 0:p.maxQueueSize)||10);if((p==null?void 0:p.isQueueFull)===!0||C>=T){const fe=s.ttsQueueFull||"å½åè¯é³æé人æ°å·²è¾¾ä¸éï¼{{max}} 人ï¼ï¼è¯·ç¨ååè¯ã";await A(String(fe).replace(/\{\{max\}\}/g,String(T)),{variant:"warning"});return}if(_>0){const fe=Math.max(1,Math.ceil((M==null?void 0:M.etaMinutes)||_*sn)),Aa=s.tt
1sQueueConfirmBody||`å½åè¯é³æé人æ°ï¼{{count}} 2é¢è®¡çå¾ æ¶é´ï¼çº¦ {{minutes}} åé 3 4æ¯å¦ç»§ç»å¼å¯è¯é³æ¨¡å¼è¿å ¥æ¸¸æï¼`,xt=String(Aa).replace(/\{\{count\}\}/g,String(_)).replace(/\{\{minutes\}\}/g,String(fe));if(!await mt(xt,{variant:"warning"}))return}}else{const M=(p==null?void 0:p.error)||i.status,_=s.ttsQueueFetchFailedWithCodeConfirm||`ææ¶æ æ³è·åè¯é³æéä¿¡æ¯ï¼{{reason}}ï¼ã 5æ¯å¦ä»ç¶ç»§ç»å¼å¯è¯é³æ¨¡å¼ï¼`,C=String(_).replace(/\{\{reason\}\}/g,String(M));if(!await mt(C,{variant:"warning"}))return}}catch{const l=s.ttsQueueFetchFailedConfirm||"ææ¶æ æ³è·åè¯é³æéä¿¡æ¯ï¼æ¯å¦ä»ç¶ç»§ç»å¼å¯è¯é³æ¨¡å¼ï¼";if(!await mt(l,{variant:"warning"}))return}o(Ee,wa||"unknown_device",!0,!1,u,dt,r&&r.length>0?void 0:t||void 0,r,Pt&&!!(r!=null&&r.some(l=>/\.(pdf|docx|pptx|ppt)$/i.test(l.name))))},Wr=async()=>{if(it.trim()){ts(!0);try{const t=await fetch(`/api/public/saves/${it.trim()}`);if(!t.ok)throw t.status===404?new Error(s.saveNotFound||"åæ¡£ä¸åå¨ (Save not found)"):t.status===403?new Error(s.saveNotShared||"è¯¥åæ¡£æªå享 (Save not shared)"):new Error("Load failed");const a=await t.json();K(a),ae(!1),es("")}catch(t){await A(en(t==null?void 0:t.message,m),{variant:"error"})}finally{ts(!1)}}};d.useEffect(()=>{ya.current||(ya.current=!0)},[]),d.useEffect(()=>{zt.current&&(zt.current.scrollTop=0)},[bs,ve,ye,f==null?void 0:f.id]);const z=({label:t,subLabel:a,onClick:r,active:u=!1,introClass:l="",hasDivider:i=!0})=>e.jsxs("div",{className:"w-full min-w-0 shrink-0 snap-start overflow-hidden flex flex-col items-start",style:ur,children:[e.jsxs("button",{onClick:r,"data-testid":"main-menu-item",className:` 6 group relative min-w-0 text-left flex items-center transition-all duration-300 ease-out 7 ${Ve?"w-[94%] py-1.5 px-3 hover:translate-x-2":"w-[90%] py-2 px-8 hover:translate-x-4"} 8 ${ns?l:""} 9 `,style:xr,children:[e.jsx("div",{"data-testid":"main-menu-content",className:`flex items-center justify-center shrink-0 origin-center rotate-0 opacity-80 group-hover:opacity-100 group-hover:rotate-[48deg] transition-[opacity,transform] duration-500 ease-[cubic-bezier(0.34,1.45,0.64,1)] ${Ve?"w-4 h-4 mr-2":"w-5 h-5 mr-3"}`,"aria-hidden":!0,style:fr,children:e.jsx("img",{src:"/assets/local/branding/sakura2.png",alt:"",className:"w-full h-full object-contain drop-shadow-md pointer-events-none",loading:"lazy",decoding:"async"})}),e.jsxs("div",{className:"flex min-w-0 flex-col items-start",style:hr,children:[e.jsx("span",{"data-testid":"main-menu-content",className:`font-sans font-bold leading-tight whitespace-nowrap ${Ve?"text-[15px] tracking-[0.14em]":"text-xl md:text-2xl tracking-[0.16em]"} text-slate-700 group-hover:text-pink-600 transition-colors drop-shadow-sm`,style:br,children:t}),e.jsx("span",{"data-testid":"main-menu-content",className:`leading-none whitespace-nowrap ${Ve?"text-[11px]":"text-[11px] md:text-xs mt-0"} font-bold tracking-[0.22em] uppercase text-pink-400/80 group-hover:text-pink-500 transition-colors`,style:gr,children:a})]})]}),i&&e.jsx("div",{"data-testid":"main-menu-decoration",className:`h-px shrink-0 border-b-[1.5px] border-dashed border-pink-300/60 ${Ve?"w-[82%] ml-8 my-0.5":"w-[60%] ml-12 my-0.5"} ${ns?l:""}`,style:kr??{animationDelay:"calc(var(--animation-delay, 0s) + 0.1s)"}})]});return e.jsxs("div",{className:"absolute inset-0 w-full h-full bg-[#fff0f5] overflow-hidden font-sans select-none box-border",style:Ko,children:[e.jsx("style",{children:` 10 @keyframes fadeIn { 11 from { opacity: 0; transform: translateY(6px) scale(0.98); } 12 to { opacity: 1; transform: translateY(0) scale(1); } 13 } 14 `}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("img",{src:ie?"/assets/local/branding/homepage-v2-background.webp":"/background.jpg",alt:"Background Base","data-testid":ie?"steam-home-background":void 0,className:"absolute inset-0 w-full h-full object-cover object-center filter saturate-[1.1] contrast-[1.05]"}
14),!ie&&e.jsx("img",{src:"/background.jpg",alt:"Background Bloom",className:"absolute inset-0 w-full h-full object-cover object-center filter blur-[12px] brightness-[1.15] saturate-[1.2] mix-blend-screen opacity-40"}),!ie&&e.jsx("div",{className:"absolute inset-0 bg-white/10"})]}),e.jsxs("div",{className:`absolute inset-0 pointer-events-none overflow-hidden ${ie?"hidden":""}`,children:[e.jsx("style",{children:` 15 .sakura-petal { 16 position: absolute; 17 background: linear-gradient(135deg, #ffb7c5 0%, #ff9ebd 100%); 18 border-radius: 15px 0px 15px 0px; 19 opacity: 0.8; 20 box-shadow: 0 0 10px rgba(255, 183, 197, 0.4); 21 animation: fall linear infinite; 22 } 23 @keyframes fall { 24 0% { 25 transform: translate(0, -10vh) rotate(0deg) scale(0.5); 26 opacity: 0; 27 } 28 10% { 29 opacity: 0.8; 30 } 31 90% { 32 opacity: 0.6; 33 } 34 100% { 35 transform: translate(var(--end-x), 110vh) rotate(var(--end-rot)) scale(var(--end-scale)); 36 opacity: 0; 37 } 38 } 39 `}),Go.map((t,a)=>e.jsx("div",{className:"sakura-petal",style:t},`petal-${a}`))]}),e.jsxs("div",{className:"absolute inset-0 z-10 w-full h-full pointer-events-none",children:[e.jsx("a",{href:Xn,target:"_blank",rel:"noopener noreferrer",className:"absolute left-2 top-2 z-[60] flex h-11 w-[68%] max-w-[680px] translate-x-0 items-center overflow-hidden rounded-lg border border-pink-200 bg-white px-2.5 text-left shadow-[0_8px_24px_rgba(190,104,135,0.18)] transition hover:border-pink-300 hover:bg-pink-50 active:scale-[0.99] pointer-events-auto min-[640px]:left-1/2 min-[640px]:w-[48%] min-[640px]:-translate-x-1/2 sm:px-4 lg:top-3 lg:h-12 lg:w-[680px]","aria-label":`${De.title}ï¼${De.features}ï¼${De.cta}`,children:e.jsxs("span",{className:"mx-auto flex w-full max-w-[1100px] items-center gap-2 sm:gap-3",children:[e.jsx("span",{className:"hidden h-8 w-8 shrink-0 items-center justify-center rounded-md border border-slate-200 bg-slate-900 min-[480px]:flex lg:h-9 lg:w-9",children:e.jsx("img",{src:ro,alt:"",className:"h-5 w-5 object-contain"})}),e.jsx("span",{className:"hidden shrink-0 text-xs font-black text-slate-700 min-[560px]:inline lg:text-sm",children:De.title}),e.jsx("span",{className:"hidden shrink-0 text-sm font-black text-pink-500 min-[560px]:inline","aria-hidden":"true",children:"â"}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-[10px] font-black text-slate-700 min-[480px]:text-xs sm:text-sm lg:text-base",children:De.features}),e.jsxs("span",{className:"flex shrink-0 items-center gap-1 text-[11px] font-black text-pink-600 sm:text-xs lg:text-sm",children:[e.jsx("span",{children:De.cta}),e.jsx(eo,{size:14})]})]})}),ie?e.jsx(bi,{language:m,translations:s,onStart:()=>ae(!0),onPartner:()=>ne(!0),onSaves:Q,onWorkshop:P,onMembership:te,onSettings:h,onCommunity:()=>Xe(!0),onDiscover:O,onStudyDashboard:void 0}):G?e.jsxs("div",{className:"absolute left-[2%] bottom-[2%] z-40 max-w-[820px] flex flex-col pointer-events-none top-[64px]",style:mr,children:[e.jsx("div",{className:"pointer-events-auto shrink-0 px-1.5",children:e.jsx("div",{className:"relative transition-transform duration-500 hover:scale-105 origin-top-left",children:e.jsx(Qt,{src:"/logo.webp",widths:[320,480,640,960,1280],sizes:"(max-width: 1024px) 90vw, 600px",alt:"Logo","data-testid":"main-menu-logo",className:"w-full max-w-[390px] h-auto object-contain filter drop-shadow-md",style:yr})})}),e.jsxs("div",{"data-testid":"main-menu-notebook",className:"relative z-30 pointer-events-auto transition-transform origin-left min-h-0 overflow-hidden",style:pr,children:[e.jsx("div",{className:"absolute inset-0 flex overflow-hidden pointer-events-none drop-shadow-2xl",children:e.jsx(Qt,{src:"/nav.webp",widths:[320,480,640,960,1120],sizes:"(max-width: 1024px) 82vw, 400px",alt:"Navigation Backgroun
39d",className:"w-full h-full object-fill opacity-95 md:opacity-100"})}),e.jsxs("div",{ref:zt,className:"relative z-20 flex min-w-0 flex-col gap-0 h-full snap-y snap-mandatory overflow-x-hidden overflow-y-auto overscroll-y-contain custom-scrollbar",style:{...ws,...wr},children:[e.jsx(z,{label:s.start||"å¼å§æ¸¸æ",subLabel:"START",onClick:()=>ae(!0),introClass:"menu-intro-1"}),e.jsx(z,{label:s.partner||"ææ¡£",subLabel:"PARTNER",onClick:()=>ne(!0),introClass:"menu-intro-2"}),e.jsx(z,{label:s.saves||"åæ¡£",subLabel:"SAVES",onClick:Q,introClass:"menu-intro-3"}),e.jsx(z,{label:s.paperDiscoveryTitle,subLabel:"DISCOVER",onClick:O,introClass:"menu-intro-4"}),Qs,e.jsx(z,{label:s.communityTitle||"åæå·¥å",subLabel:"WORKSHOP",onClick:P,introClass:"menu-intro-5"}),e.jsx(z,{label:m==="zh"?"ä¼å":"Membership",subLabel:"VIP",onClick:te,introClass:"menu-intro-6"}),e.jsx(z,{label:s.settings||"设置",subLabel:"CONFIG",onClick:h,introClass:"menu-intro-7"}),e.jsx(z,{label:s.about||"社群ä¸ä½è ",subLabel:"COMMUNITY",onClick:()=>Xe(!0),introClass:"menu-intro-8",hasDivider:!1})]})]}),e.jsx("style",{children:` 40 @keyframes titleFadeUp { 41 0% { 42 opacity: 0; 43 transform: translateY(18px); 44 } 45 100% { 46 opacity: 1; 47 transform: translateY(0); 48 } 49 } 50 `})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"absolute left-[5%] z-40 pointer-events-auto top-[64px]",children:[e.jsx("div",{className:"relative transition-transform duration-500 hover:scale-105 origin-top-left",children:e.jsx(Qt,{src:"/logo.webp",widths:[320,480,640,960,1280],sizes:"(max-width: 1024px) 90vw, 600px",alt:"Logo","data-testid":"main-menu-logo",className:"w-[45vw] lg:w-[35vw] xl:w-[30vw] min-w-[260px] max-w-[600px] h-auto object-contain filter drop-shadow-md",style:{opacity:0,animation:"titleFadeUp 0.6s ease-out forwards",animationDelay:"0.6s"}})}),e.jsx("style",{children:` 51 @keyframes titleFadeUp { 52 0% { 53 opacity: 0; 54 transform: translateY(18px); 55 } 56 100% { 57 opacity: 1; 58 transform: translateY(0); 59 } 60 } 61 `})]}),e.jsxs("div",{"data-testid":"main-menu-notebook",className:"absolute z-30 pointer-events-auto transition-transform origin-left top-[25%] left-[4%] bottom-[3%] min-w-[220px] max-w-[400px] overflow-hidden",style:{width:`${lr}px`},children:[e.jsx("div",{className:"absolute inset-0 flex overflow-hidden pointer-events-none drop-shadow-2xl",children:e.jsx(Qt,{src:"/nav.webp",widths:[320,480,640,960,1120],sizes:"(max-width: 1024px) 82vw, 400px",alt:"Navigation Background",className:"w-full h-full object-fill opacity-95 md:opacity-100"})}),e.jsxs("div",{ref:zt,className:"relative z-20 flex min-w-0 flex-col gap-0 h-full overflow-x-hidden overflow-y-auto overscroll-y-contain py-10 pl-6 [&::-webkit-scrollbar]:hidden",style:ws,children:[e.jsx(z,{label:s.start||"å¼å§æ¸¸æ",subLabel:"START",onClick:()=>ae(!0),introClass:"menu-intro-1"}),e.jsx(z,{label:s.partner||"ææ¡£",subLabel:"PARTNER",onClick:()=>ne(!0),introClass:"menu-intro-2"}),e.jsx(z,{label:s.saves||"åæ¡£",subLabel:"SAVES",onClick:Q,introClass:"menu-intro-3"}),e.jsx(z,{label:s.paperDiscoveryTitle,subLabel:"DISCOVER",onClick:O,introClass:"menu-intro-4"}),Qs,e.jsx(z,{label:s.communityTitle||"åæå·¥å",subLabel:"WORKSHOP",onClick:P,introClass:"menu-intro-5"}),e.jsx(z,{label:m==="zh"?"ä¼å":"Membership",subLabel:"VIP",onClick:te,introClass:"menu-intro-6"}),e.jsx(z,{label:s.settings||"设置",subLabel:"CONFIG",onClick:h,introClass:"menu-intro-7"}),e.jsx(z,{label:s.about||"社群ä¸ä½è ",subLabel:"COMMUNITY",onClick:()=>Xe(!0),introClass:"menu-intro-8",hasDivider:!1})]})]})]}),e.jsxs("div",{"data-testid":"main-menu-character-editor",className:`fixed z-30 pointer-events-auto flex items-center gap-2 rounded-2xl border border-white/60 bg-white/65 shadow-xl backdrop-blur-md ${c?"right-[72px] bottom-3 p-1":"right-6 bottom-6 px-2 py-2"}`,children:[e.jsx("button",{type:"button",onClick:()=>Wo(t=>
61!t),className:`${c?"h-11 w-11":"h-9 w-9"} flex items-center justify-center rounded-xl bg-slate-900/85 text-white transition hover:bg-slate-800 active:scale-95`,"aria-label":oe?"éåºä¸»é¡µé¢ç«ç»ç¼è¾æ¨¡å¼":"è¿å ¥ä¸»é¡µé¢ç«ç»ç¼è¾æ¨¡å¼",title:oe?"éåºç¼è¾":"ç¼è¾ç«ç»",children:e.jsx(gn,{size:16})}),oe&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",onClick:()=>Rs(-.08),className:`${c?"h-11 w-11":"h-9 w-9"} flex items-center justify-center rounded-xl bg-slate-900/85 text-white transition hover:bg-slate-800 active:scale-95`,"aria-label":"缩å°ä¸»é¡µé¢ç«ç»",title:"缩å°ç«ç»",children:e.jsx(vo,{size:16})}),e.jsxs("button",{type:"button",onClick:Mr,className:`${c?"h-11":"h-9"} flex min-w-[72px] items-center justify-center gap-1 rounded-xl bg-pink-500 px-3 text-xs font-black text-white transition hover:bg-pink-600 active:scale-95`,"aria-label":"é置主页é¢ç«ç»ä½ç½®å大å°",title:"éç½®ç«ç»",children:[e.jsx(yo,{size:14}),e.jsx("span",{children:`${Math.round(le.scale*100)}%`})]}),e.jsx("button",{type:"button",onClick:()=>Rs(.08),className:`${c?"h-11 w-11":"h-9 w-9"} flex items-center justify-center rounded-xl bg-slate-900/85 text-white transition hover:bg-slate-800 active:scale-95`,"aria-label":"æ¾å¤§ä¸»é¡µé¢ç«ç»",title:"æ¾å¤§ç«ç»",children:e.jsx(ht,{size:16})})]})]}),e.jsx("div",{"data-testid":"main-menu-character-stage",className:"absolute inset-y-0 z-10 flex items-end justify-center overflow-hidden pointer-events-none",style:{left:ie?"55%":`${dr}px`,right:ie?"5%":`${cr}px`},children:e.jsx("div",{className:`flex h-full w-full items-end justify-center touch-none ${oe?"pointer-events-auto":"pointer-events-none"} ${Vo?"cursor-grabbing":oe?"cursor-grab":"cursor-default"}`,onPointerDown:oe?jr:void 0,onPointerMove:oe?Lr:void 0,onPointerUp:oe?Ss:void 0,onPointerCancel:oe?Ss:void 0,style:{transform:`translate3d(${le.x}px, ${le.y}px, 0) scale(${le.scale})`,transformOrigin:"bottom center"},title:oe?"ææ½è°æ´ç«ç»ä½ç½®":void 0,children:e.jsx("div",{"data-testid":"main-menu-character",className:"flex h-full w-full items-end justify-center",style:{opacity:0,animation:"spriteFadeUp 2s cubic-bezier(0.22, 1, 0.36, 1) forwards"},children:Vt?e.jsx("div",{className:"h-full w-full object-bottom filter drop-shadow-2xl transition-all duration-500",children:e.jsx(ko,{config:Vt,emotion:fo.NEUTRAL,onError:Rr})}):bo(We)?e.jsx("video",{src:We,autoPlay:!0,loop:!0,muted:!0,playsInline:!0,className:"h-full w-auto max-w-full object-contain object-bottom filter drop-shadow-2xl transition-all duration-500"},g):e.jsx("img",{src:We,alt:`${ys} character illustration`,className:"h-full w-auto max-w-full object-contain object-bottom filter drop-shadow-2xl transition-all duration-500"},g)})})}),e.jsx("style",{children:` 62 @keyframes spriteFadeUp { 63 0% { 64 opacity: 0; 65 transform: translateY(36px) scale(0.9); 66 filter: blur(4px); 67 } 68 60% { 69 opacity: 1; 70 transform: translateY(0) scale(1); 71 filter: blur(0); 72 } 73 100% { 74 opacity: 1; 75 transform: translateY(0) scale(1); 76 filter: blur(0); 77 } 78 } 79 `}),e.jsx("div",{className:"absolute right-4 top-4 z-50 pointer-events-auto flex items-center gap-2",children:f?e.jsxs("button",{type:"button",onClick:Dr,className:`group/user relative flex min-w-0 items-center py-2 pl-4 pr-[64px] text-left transition active:scale-[0.98] animate-fade-in-up ${ie?"h-[68px] w-[218px]":Ve?"h-[60px] w-[min(64vw,165px)]":"h-[60px] w-[170px]"}`,title:f.email,children:[e.jsx("span",{"aria-hidden":"true",className:"absolute inset-y-[5px] left-0 right-8 rounded-xl border border-white bg-white shadow-[0_8px_24px_rgba(190,104,135,0.16)] transition group-hover/user:border-pink-200"}),e.jsxs("div",{className:"relative z-10 min-w-0 flex-1",children:[e.jsx("div",{className:`truncate text-sm font-bold leading-5 ${on((Ws=L==null?void 0:L.membership)==null?void 0:Ws.active,"text-slate-700",f.publicBadgeId,(Gs=L==null?void 0:L.membership)==null?void 0:Gs.unlimitedAll)}`,children:qo}),e.jsx("div",{className:"truncate text-xs font-semibold leading-4 text-slate-400",children:Ho})]}),e.jsx("img",{src:"/player-avatar.webp",alt:"",className:"absolute right-0 top-1/2 z-20 h-14 w-14 -translate-y-1/2 roun
79ded-full border-[3px] border-white object-cover shadow-md ring-2 ring-pink-200/80 transition-transform group-hover/user:scale-105"})]}):e.jsxs("button",{onClick:j,className:"group flex items-center gap-2 rounded-2xl border border-pink-200 bg-white/70 p-2 pr-3 text-slate-700 shadow-sm backdrop-blur-md transition-all hover:border-pink-300 hover:bg-white/90 hover:text-pink-600 active:scale-95 animate-fade-in-up",children:[e.jsx("span",{className:"flex h-9 w-9 items-center justify-center rounded-xl bg-pink-50 text-pink-500 shadow-sm transition-transform group-hover:scale-105",children:e.jsx(Ca,{size:18,strokeWidth:3})}),e.jsx("span",{className:"text-sm font-black tracking-[0.12em]",children:s.login})]})}),e.jsx("style",{children:` 80 @keyframes menuButtonSlideRight { 81 0% { 82 opacity: 0; 83 transform: translateX(-40px); 84 } 85 100% { 86 opacity: 1; 87 transform: translateX(0); 88 } 89 } 90 91 .menu-intro-1 { 92 opacity: 0; 93 animation: menuButtonSlideRight 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; 94 animation-delay: 0.4s; 95 } 96 .menu-intro-2 { 97 opacity: 0; 98 animation: menuButtonSlideRight 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; 99 animation-delay: 0.5s; 100 } 101 .menu-intro-3 { 102 opacity: 0; 103 animation: menuButtonSlideRight 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; 104 animation-delay: 0.6s; 105 } 106 .menu-intro-4 { 107 opacity: 0; 108 animation: menuButtonSlideRight 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; 109 animation-delay: 0.7s; 110 } 111 .menu-intro-5 { 112 opacity: 0; 113 animation: menuButtonSlideRight 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; 114 animation-delay: 0.8s; 115 } 116 .menu-intro-6 { 117 opacity: 0; 118 animation: menuButtonSlideRight 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; 119 animation-delay: 0.9s; 120 } 121 .menu-intro-7 { 122 opacity: 0; 123 animation: menuButtonSlideRight 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; 124 animation-delay: 1.0s; 125 } 126 .menu-intro-8 { 127 opacity: 0; 128 animation: menuButtonSlideRight 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; 129 animation-delay: 1.1s; 130 } 131 .menu-intro-9 { 132 opacity: 0; 133 animation: menuButtonSlideRight 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; 134 animation-delay: 1.2s; 135 } 136 `}),e.jsx("div",{className:`absolute bottom-3 z-20 pointer-events-none flex justify-center ${c?`${Xo?"left-[22%]":"left-[55%]"} -translate-x-1/2`:"right-[5%]"}`,children:e.jsx("span",{"data-testid":"main-menu-copyright",className:"whitespace-nowrap text-slate-600/60 text-[9px] md:text-[10px] font-bold tracking-widest bg-white/30 px-3 py-1 rounded-full backdrop-blur-sm border border-white/40",children:"©2025-2026 Paper2Gal"})})]}),jo&&e.jsxs("section",{"data-testid":"start-panel",role:"dialog","aria-modal":"true","aria-labelledby":"start-panel-title",className:"steam-start-panel",children:[e.jsx("div",{className:"steam-start-decoration","aria-hidden":"true"}),e.jsxs("header",{className:"steam-start-header",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h2",{id:"start-panel-title",className:"font-black tracking-tighter text-brand-darkPink",children:s.topicSelect}),e.jsx("p",{className:"text-slate-500 font-medium",children:Ar()})]}),e.jsx("button",{type:"button","data-testid":"start-panel-close","aria-label":E.close,onClick:()=>ae(!1),className:"steam-surface-close",children:e.jsx(J,{size:24,strokeWidth:3})})]}),e.jsxs("div",{"data-testid":"start-panel-scroll",className:"steam-start-scroll custom-scrollbar",style:he,children:[e.jsx(fi,{mode:D,onModeChange:t=>{Lo(t),t==="paper_qa"&&(vt("document"),Be(""))},labels:Ae,className:"order-0 shrink-0"}),e.jsxs("div",{className:"steam-start-lower",children:[D==="story"&&e.jsxs("div",{"data-testid":"topic-mode-row",className:"steam-start-options",children:[e.jsxs("div",{className:"steam-start-options-heading",children:[e.jsx("h3",{className:"steam-section-title",children:E.options}),e.jsx("span",{children:E.optionsHint})]}),e.jsxs("div",{className:`flex items-stretch gap-2 md:gap-3 self-start ${c?"shrink-0 flex-nowrap":"flex-wrap"}`,children:[e.jsxs("div",{className:`flex items-center rounded-xl border border-violet-100 bg-violet-50/80 overflow-hidden ${c?"h-10 gap-2 px-2 py-1":"gap-3 px-4 py-2.5"}`,children:[e.jsxs("div",{className:`flex flex-col min-w-0 ${c?"max-w-[108px]":""}`,children:[e.jsx("span",{className:"truncate whitespace-nowrap text-[10px] font-black text-violet-600 uppercase tracking-widest leading-none",children:m==="zh"?"危乿¨¡å¼":m==="ja"?"娯æ¥
136½ã¢ã¼ã":m==="ru"?"РазвлекаÑелÑнÑй Ñежим":"Fun Mode"}),e.jsx("span",{className:"truncate whitespace-nowrap text-[8px] text-slate-500 font-bold opacity-80 leading-tight",children:m==="zh"?"è½»æ¾æè¶£çå§æ
å£å»":m==="ja"?"楽ãã軽快ãªã¹ãã¼ãªã¼å£èª¿":m==="ru"?"ÐÑгкий и веÑÑлÑй ÑÑилÑ":"Light and playful story tone"})]}),e.jsx("button",{type:"button","aria-pressed":$e==="lighthearted","aria-label":m==="zh"?"危乿¨¡å¼ï¼å¼å¯å使ç¨è½»æ¾å¨±ä¹å£å»ï¼å
³éæ¶ä¿æç»å
¸åç":"Fun mode: use a light, playful tone when enabled and the classic style when disabled",onClick:()=>bt($e==="lighthearted"?"classic":"lighthearted"),className:"group relative h-11 w-11 shrink-0 focus-visible:outline-none",children:e.jsx("span",{className:`absolute inset-x-0 top-1/2 h-6 -translate-y-1/2 rounded-full border-2 transition-colors group-focus-visible:ring-2 group-focus-visible:ring-violet-300 ${$e==="lighthearted"?"bg-violet-500 border-violet-400":"bg-slate-200 border-slate-300"}`,children:e.jsx("span",{className:`absolute left-0.5 top-0.5 h-4 w-4 rounded-full bg-white shadow-md transition-transform ${$e==="lighthearted"?"translate-x-5":"translate-x-0"}`})})})]}),(()=>{const t=!!(L!=null&&L.voiceUsedToday),a=t||dt,r=t?s.voiceUsedTodayLabel||"仿¥å·²ä½¿ç¨":dt?s.voiceDisabledInIntensiveHint||(m==="zh"?"精读模å¼ä¸å°èªå¨å
³éè¯é³æ¨¡å¼":"Voice mode is disabled in intensive reading"):s.voiceModeSub,u=t?s.voiceUsedTodayLabel||"仿¥å·²ä½¿ç¨":dt?s.voiceDisabledInIntensiveHint||(m==="zh"?"精读模å¼ä¸å°èªå¨å
³éè¯é³æ¨¡å¼":"Voice mode is disabled in intensive reading"):s.voiceModeHint;return e.jsxs("div",{className:`flex items-center rounded-xl border overflow-hidden ${c?"h-10 gap-2 px-2 py-1":"gap-3 px-4 py-2.5"} bg-pink-50/80 border-pink-100`,children:[e.jsxs("div",{className:`flex flex-col min-w-0 ${c?"max-w-[108px]":""}`,children:[e.jsx("span",{className:"truncate whitespace-nowrap text-[10px] font-black uppercase tracking-widest leading-none text-pink-600",children:s.voiceMode}),e.jsx("span",{className:"truncate whitespace-nowrap text-[8px] text-slate-500 font-bold opacity-80 leading-tight",children:r})]}),e.jsx("button",{type:"button",disabled:a,"aria-pressed":Y&&!a,"aria-label":u,title:u,onClick:()=>!a&&pe(l=>!l),className:`group relative h-11 w-11 shrink-0 focus-visible:outline-none ${c?"max-h-8 max-w-10":""} ${a?"cursor-not-allowed opacity-70":""}`,children:e.jsx("span",{className:`absolute inset-x-0 top-1/2 h-6 -translate-y-1/2 rounded-full border-2 transition-all duration-300 group-focus-visible:ring-2 group-focus-visible:ring-pink-300 group-focus-visible:ring-offset-2 ${a?"border-slate-300 bg-slate-200":Y?"border-pink-400 bg-pink-500":"border-slate-300 bg-slate-200"}`,children:e.jsx("span",{className:`absolute left-0.5 top-0.5 h-4 w-4 rounded-full bg-white shadow-md transition-transform duration-300 ${Y&&!a?"translate-x-5":"translate-x-0"}`})})})]})})(),Ke==="document"&&e.jsxs("div",{className:`flex items-center gap-3 rounded-xl border border-amber-100 bg-amber-50/80 overflow-hidden ${c?"h-10 px-2 py-1":"px-4 py-2.5"}`,children:[e.jsxs("div",{className:"flex min-w-0 flex-col",children:[e.jsx("span",{className:"text-[10px] font-black text-amber-700",children:m==="zh"?"å¾çè§£æ":m==="ja"?"ç»åè§£æ":m==="ru"?"Ðнализ изобÑажений":"Image parsing"}),e.jsx("span",{className:"truncate text-[8px] font-bold text-slate-500",children:m==="zh"?"çæåè¯å«ææ¡£é
å¾":m==="ja"?"çæåã«ææ¸ã®ç»åãè§£æ":m==="ru"?"Ðнализ изобÑажений докÑменÑа":"Analyze document images before generation"})]}),e.jsx("button",{type:"button",role:"switch","aria-checked":Pt,"aria-label":m==="zh"?"å¾çè§£æ":"Image parsing","data-testid":"topic-image-parsing-toggle",onClick:()=>Bo(t=>!t),className:`relative h-6 w-11 shrink-0 rounded-full border-2 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-amber-300 ${Pt?"border-amber-400 bg-amber-500":"border-slate-300 bg-slate-200"}`,children:e.jsx("span",{className:`absolute left-0.5 top-0.5 h-4 w-4 roun
136ded-full bg-white shadow-sm transition-transform ${Pt?"translate-x-5":""}`})})]}),Do]})]}),D!=="study_room"&&e.jsxs("div",{"data-testid":"topic-source-grid","data-start-mode-content":D,className:"steam-start-sources",children:[e.jsxs("div",{className:"steam-start-import",children:[e.jsxs("div",{className:"steam-start-import-header",children:[e.jsx("h3",{className:"steam-section-title",children:E.imports}),D==="story"?e.jsxs("div",{className:"steam-start-import-tabs",role:"tablist","aria-label":E.imports,children:[e.jsxs("button",{type:"button",role:"tab","aria-selected":Ke==="document","data-testid":"topic-import-document-tab",onClick:()=>{vt("document"),Be("")},children:[e.jsx(Ht,{size:15,"aria-hidden":"true"}),E.document]}),e.jsxs("button",{type:"button",role:"tab","aria-selected":Ke==="video","data-testid":"topic-import-video-tab",onClick:()=>{vt("video"),kt([]),gt(null),ta(""),wt(!1)},children:[e.jsx(kn,{size:15,"aria-hidden":"true"}),E.video]})]}):e.jsxs("button",{type:"button",onClick:()=>{var t;return(t=ss.current)==null?void 0:t.click()},className:"steam-start-import-button",children:[e.jsx(Ht,{size:15,"aria-hidden":"true"}),E.importFile]})]}),(D!=="story"||Ke==="document")&&e.jsx(e.Fragment,{children:e.jsxs("div",{"data-testid":"topic-upload-dropzone",className:`relative group ${c?"h-20":"h-[clamp(112px,16cqh,166px)]"}`,children:[e.jsx("input",{ref:ss,id:"topic-upload-input",type:"file",accept:".txt,.md,.tex,.pdf,.docx,.pptx",multiple:Bt,onChange:Cr,className:"absolute inset-0 w-full h-full opacity-0 cursor-pointer z-10"}),e.jsx("div",{className:`h-full w-full rounded-2xl border-4 border-dashed transition-all duration-300 flex flex-col items-center justify-center text-center ${c?"p-2":"p-2 md:p-4"} overflow-hidden ${Ie?"border-otome-gold bg-yellow-50":"border-pink-200 bg-pink-50/50 group-hover:border-brand-pink group-hover:bg-pink-100"}`,children:Ie?e.jsxs(e.Fragment,{children:[e.jsx(Ht,{className:`${c?"w-6 h-6":"w-6 h-6 md:w-12 md:h-12"} text-otome-gold mb-1 shrink-0`}),e.jsx("span",{className:`font-bold text-slate-700 ${c?"text-[10px]":"text-[10px] md:text-base"} w-full px-2 line-clamp-2 break-all leading-tight`,title:Ie,children:Ie})]}):e.jsxs(e.Fragment,{children:[e.jsx(wn,{className:"w-5 h-5 text-brand-pink mb-1 md:mb-2 shrink-0"}),e.jsx("p",{className:`font-bold text-slate-600 ${c?"text-xs":"text-xs md:text-base"}`,children:s.uploadPlaceholder}),e.jsx("p",{className:`text-slate-400 mt-0.5 ${c?"text-[10px]":"text-[8px] md:text-xs"}`,children:Qo})]})})]})}),D==="story"&&Ke==="video"&&e.jsxs("div",{"data-testid":"topic-video-field",className:"steam-start-video-field",children:[e.jsx("label",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-wider block mb-1.5",children:m==="zh"?"è§é¢é¾æ¥":m==="ja"?"åç»ãªã³ã¯":m==="ru"?"СÑÑлка на видео":"Video URL"}),e.jsxs("div",{className:"relative flex items-center",children:[e.jsx(Yt,{className:"absolute left-3 w-4 h-4 text-slate-400 pointer-events-none"}),e.jsx("input",{type:"url",value:Ft,onChange:t=>Be(t.target.value),placeholder:"Bilibili / YouTube / MP4",className:"w-full min-h-11 bg-slate-50 border border-slate-200 rounded-xl pl-9 pr-9 py-2 text-xs md:text-sm outline-none focus:border-brand-pink transition-colors",maxLength:2048}),Ft&&e.jsx("button",{type:"button",onClick:()=>Be(""),className:"absolute right-2 p-1 text-slate-400 hover:text-slate-700",title:m==="zh"?"æ¸
空è§é¢é¾æ¥":"Clear video URL",children:e.jsx(J,{className:"w-4 h-4"})})]})]})]}),D==="story"&&e.jsxs("details",{"data-testid":"topic-extra-entry",className:"steam-start-extra",children:[e.jsx("summary",{children:E.moreSources}),e.jsxs("div",{className:"steam-start-extra-content",children:[e.jsxs("div",{"data-testid":"topic-uuid-field",className:"min-w-0",children:[e.jsx("label",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-wider block mb-2",children:s.orPlayByUuid}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{type:"text",value:it,onChange:t=>es(t.target.value),placeholder:s.playByUuidPlaceholder,className:"flex-1 min-h-11 bg-slate-50 border border-slate-200 rounded-xl px-3 text-sm outline-none focus:border-brand-pink"}),e.jsx("button",{onClick:Wr,disabled:va||!it,className:`min-h-11 min-w-11 rounded-xl flex items-center justify-center ${va||!it?"bg-slate-100 text-slate-300":"bg-pink-100 text-pink-600 hover:bg-pink-500 hover:text-white"}`,children:va?e.jsx(He,{className:"w-5 h-5 animate-spin"}):e.jsx(So,{className:"w-5 h-5",fill:"currentColor"})})]})]}),e.jsxs("div",{"data-testid":"topic-preset-panel",className:"min-w-0",children:[e.jsx("label",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-wider block mb-2",children:s.presetPapersTitle}),e.jsx("div",{className:"flex flex-col gap-2",children:(to[m]||to.en).map(t=>e.jsx("button",{onClick:()=>{n(t.script,"RUKA",!0),ae(!1)},className:"min-h-11 rounded-lg border border-slate-200 bg-slate-50 px-3 py-2 text-left hover:border-pink-300",children:e.jsx("span",{className:"font-bold text-slate-700",children:t.title})},t.id))})]})]})]})]})]})]}),e.jsx("footer",{className:"steam-start-footer",children:e.jsx("button",{"data-testid":"start-mode-submit",onClick:Vr,disabled:D==="story"&&(b||Te),className:`${c?"order-4 h-14 roun
136ded-xl text-base gap-2.5":"h-20 md:h-20 rounded-xl md:rounded-2xl text-sm md:text-xl gap-2 md:gap-3"} font-black tracking-wide uppercase italic flex items-center justify-center shadow-xl border-[1px] border-white/40 transition-all duration-300 ${D==="story"&&(b||Te)?"bg-slate-100 text-slate-300 cursor-not-allowed":"bg-gradient-to-r from-rose-400 to-pink-600 text-white hover:brightness-110 shadow-rose-200"}`,children:D==="story"&&(b||Te)?e.jsx(He,{className:`${c?"w-5 h-5":"w-5 h-5 md:w-6 md:h-6"} animate-spin`}):e.jsx("span",{children:D==="study_room"?Ae.enterStudyRoom:D==="paper_qa"?Ae.startResearch:s.startExplain})})})]}),Eo&&e.jsx("div",{className:`${Le} z-[70]`,style:je,onClick:()=>!ze&&_e(!1),children:e.jsx("div",{className:`min-h-full w-full flex items-center justify-center ${c?"py-2":"py-4"}`,children:e.jsxs("div",{"data-testid":"steam-wishlist-modal-panel",className:`${ut} relative overflow-hidden flex flex-col min-h-0 ${c?"w-full max-w-md rounded-[18px] border-[2px] ring-1":"max-w-xl max-h-[90dvh] rounded-[28px] border-[4px] ring-2"}`,style:Nr,onClick:t=>t.stopPropagation(),children:[e.jsx("div",{className:"pointer-events-none absolute inset-0 bg-gradient-to-br from-[#0b1220] via-[#1b2838] to-[#2a475e]"}),e.jsxs("div",{"data-testid":"steam-wishlist-modal-scroll",className:`relative flex-1 min-h-0 overflow-y-auto overscroll-y-contain custom-scrollbar text-white ${c?"p-3.5":"p-6"}`,style:he,children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2.5 sm:gap-3 min-w-0 flex-1",children:[e.jsx("div",{className:`${c?"w-10 h-10 rounded-xl":"w-12 h-12 rounded-2xl"} bg-white/12 text-white flex items-center justify-center shadow-lg shrink-0`,children:e.jsx("img",{src:ro,alt:"Steam",className:`${c?"w-5 h-5":"w-6 h-6"} object-contain`})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h2",{className:`${c?"text-base sm:text-lg":"text-2xl"} font-black leading-tight`,children:s.steamWishlistTitle||"Paper2Gal 已䏿¶ Steam"}),e.jsx("p",{className:`${c?"text-[10px]":"text-[11px]"} font-black uppercase tracking-[0.18em] sm:tracking-[0.2em] text-sky-200/90`,children:"Wishlist Bonu
136s +10"})]})]}),e.jsx("button",{type:"button",onClick:()=>_e(!1),disabled:ze,className:"p-2 rounded-full bg-white/12 text-slate-200 hover:text-white hover:bg-white/20 transition-colors disabled:opacity-50 shrink-0",children:e.jsx(J,{size:18,strokeWidth:3})})]}),e.jsxs("div",{className:`${c?"mt-3 p-3":"mt-4 p-4"} rounded-2xl border border-white/15 bg-white/8`,children:[e.jsx("div",{className:`${c?"text-[10px]":"text-[11px]"} uppercase font-black tracking-[0.14em] sm:tracking-[0.16em] text-sky-100/90`,children:"Steam Store"}),e.jsx("div",{className:`mt-1 ${c?"text-xs":"text-sm"} font-black text-white break-words`,children:Ua.replace("https://","")})]}),e.jsxs("div",{className:`${c?"mt-3 space-y-2.5":"mt-4 space-y-3"}`,children:[e.jsx("p",{className:`${c?"text-[13px]":"text-base"} text-slate-100/95 leading-relaxed font-medium`,children:s.steamWishlistDesc||"å¦æä½ æ¿ææ¯æ Paper2Galï¼æ¬¢è¿å°æ¸¸æå å
¥ Steam æ¿æåãè¿ä¼å¸®å©æ´å¤ç©å®¶çå°æ¸¸æã"}),e.jsx("div",{className:`rounded-2xl border border-sky-200/25 bg-sky-4
13600/10 ${c?"px-3 py-2.5":"px-4 py-3"}`,children:e.jsx("p",{className:`${c?"text-[13px]":"text-sm"} font-bold text-sky-100 leading-relaxed`,children:s.steamWishlistRewardHint||"ç¹å»ç¡®å®åå°è·³è½¬å° Steam ååºé¡µï¼å¹¶ä¸ºå½åè´¦å·åæ¾ 10 次永ä¹
ä½¿ç¨æ¬¡æ°ãæ¯ä¸ªç¨æ·ä»
å¯é¢å䏿¬¡ã"})}),!f&&e.jsx("div",{className:`rounded-2xl border border-amber-200/30 bg-amber-300/10 ${c?"px-3 py-2.5 text-[13px]":"px-4 py-3 text-sm"} font-bold text-amber-100`,children:s.steamWishlistLoginHint||"请å
ç»å½åé¢å Steam æ¿æåå¥å±ã"}),(L==null?void 0:L.steamWishlistRewardClaimed)&&e.jsx("div",{className:`rounded-2xl border border-emerald-200/30 bg-emerald-300/10 ${c?"px-3 py-2.5 text-[13px]":"px-4 py-3 text-sm"} font-bold text-emerald-100`,children:s.steamWishlistRewardClaimed||"Steam æ¿æåå¥å±å·²é¢åè¿"})]}),e.jsxs("div",{className:`mt-5 flex ${c?"flex-col-reverse gap-2.5":"flex-row items-center justify-end gap-3"}`,children:[e.jsx("button",{type:"button",onClick:()=>_e(!1),disabled:ze,className:`${c?"w-full py-3":"px-4 py-2.5"} rounded-xl bg-white/12 text-slate-100 font-black hover:bg-white/20 transition-colors disabled:opacity-50`,children:s.steamWishlistCancel||"ç¨åå说"}),e.jsxs("button",{type:"button",onClick:Sr,disabled:ze,className:`${c?"w-full py-3 justify-center":"px-5 py-2.5"} rounded-xl bg-[#66c0f4] hover:bg-[#89d4ff] text-[#10233a] font-black shadow-lg transition-colors disabled:opacity-50 flex items-center gap-2`,children:[ze?e.jsx(He,{size:16,className:"animate-spin"}):e.jsx(eo,{size:16}),s.steamWishlistConfirm||"ç¡®å®å¹¶åå¾ Steam"]})]})]})]})})}),$o&&e.jsx("div",{"data-testid":"community-backdrop",className:`${Le} z-[60]`,style:je,onClick:()=>Xe(!1),children:e.jsxs("section",{"data-testid":"community-panel",role:"dialog","aria-modal":"true","aria-labelledby":"community-title",className:"steam-community-panel",onClick:t=>t.stopPropagation(),children:[e.jsxs("header",{className:"steam-community-header",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("h2",{id:"community-title",className:"font-black text-slate-800 tracking-tighter flex items-center gap-2",children:[e.jsx(Oa,{className:"text-brand-pink shrink-0"}),s.about]}),e.jsx("p",{className:"text-xs text-slate-400 font-bold",children:s.aboutSub})]}),e.jsx("button",{type:"button","data-testid":"community-close","aria-label":E.close,onClick:()=>Xe(!1),className:"steam-surface-close",children:e.jsx(J,{size:22})})]}),e.jsxs("div",{className:"steam-community-scroll custom-scrollbar",style:he,children:[e.jsxs("div",{"data-community-layout":"primary-grid",className:"steam-community-primary",children:[e.jsxs("a",{href:si,target:"_blank",rel:"noopener noreferrer",className:"steam-community-card bg-[#5865F2]",children:[e.jsx("img",{src:"/assets/local/common/discord-emblem.png",alt:"",className:"steam-discord-icon"}),e.jsxs("div",{children:[e.jsx("h3",{children:"Discord"}),e.jsx("p",{children:s.discordDesc})]})]}),e.jsxs("a",{href:"https://space.bilibili.com/472900263",target:"_blank",rel:"noopener noreferrer",className:"steam-community-card bg-[#FB7299]",children:[e.jsx("span",{className:"steam-community-icon",children:e.jsx("img",{src:"/assets/local/community/bilibili.svg",alt:""})}),e.jsxs("div",{children:[e.jsx("h3",{children:"Bilibili"}),e.jsx("p",{children:s.bilibiliDesc})]})]}),e.jsxs("button",{type:"button","data-testid":"wechat-preview-open","aria-label":E.previewQr,onClick:()=>oa(!0),className:"steam-community-card bg-[#07C160]",children:[e.jsx("span",{className:"steam-community-icon",children:e.jsx("img",{src:"/assets/local/community/wechat.svg",alt:""})}),e.jsxs("div",{children:[e.jsx("h3",{children:E.wechat}),e.jsx("p",{children:s.wechatDesc})]})]})]}),e.jsxs("div",{"data-community-layout":"secondary-bars",className:"steam-community-secondary",children:[e.jsxs("a",{href:oi,target:"_blank",rel:"noopener noreferrer",className:"steam-community-bar bg-[#ff2442]",children:[e.jsx("img",{src:"/assets/local/community/xiaohongshu.svg",alt:""}),e.jsxs("div",{children:[e.jsx("h3",{children:E.xiaohongshu}),e.jsx("p",{children:E.follow})]})]}),e.jsxs("a",{href:ri,target:"_blank",rel:"noopener noreferrer",className:"steam-community-bar bg-[#161823] border-[#25f4ee] hover:border-[#fe2c55]",children:[e.jsx("img",{src:"/assets/local/community/douyin.svg",alt:"",className:"[filter:drop-shadow(-1px_-1px_0_#25f4ee)_drop-shadow(1px_1px_0_#fe2c55)]"}),e.jsxs("div",{children:[e.jsx("h3",{children:E.douyin}),e.jsx("p",{children:E.follow})]})]}),e.jsxs("div",{className:"steam-community-bar bg-[#12b7f5]",children:[e.jsx("img",{src:"/assets/local/community/qq.svg",alt:""}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h3",{children:E.qqGroup}),e.jsx("span",{"data-testid":"qq-number",className:"select-text cursor-text",children:no})]}),e.jsx("button",{type:"button","data-testid":"qq-copy",className:"min-h-11 rounded-xl bg-white/20 px-3 text-xs font-bold",onClick:async()=>{try{await navigator.clipboard.writeText(no)}catch{await A(E.copyFailed,{variant:"error"});return}await A(E.copied,{variant:"success"})},children:E.copyQq})]})]}),e.jsxs("div",{className:"mt-4 md:mt-6 flex flex-wrap justify-center items-center gap-4 md:gap-8 opacity-60 hover:opacity-100 transition-opacity",children:[e.jsxs("button",{"data-testid":"community-terms",onClick:()=>ue(m==="zh"?"/docs/Terms_Of_Service_CN.md":"/docs/Terms_Of_Service_EN.md",s.termsOfService||"Terms of Service"),className:"text-xs md:text-sm font-bold text-slate-500 hover:text-pink-500 transition-colors flex items-center gap-1 cursor-pointer",children:[e.jsx(Ht,{size:12,className:"md:w-4 md:h-4"}),s.termsOfService||"Terms of Service"]}),e.jsxs("button",{"data-testid":"community-privacy",onClick:()=>ue(m==="zh"?"/docs/Privacy_Policy_CN.md":"/docs/Privacy_Policy_EN.md",s.privacyPolicy||"Privacy Policy"),className:"text-xs md:text-sm font-bold text-slate-500 hover:text-pink-500 transition-colors flex items-center gap-1 cursor-pointer",children:[e.jsx(vn,{size:12,className:"md:w-4 md:h-4"}),s.privacyPolicy||"Privacy Policy"]})]})]})]})}),To&&e.jsx("div",{"data-testid":"wechat-preview",className:`${Le} z-[70] bg-black/70`,style:je,onClick:()=>oa(!1),children:e.jsxs("div",{className:"steam-wechat-preview",onClick:t=>t.stopPropagation(),children:[e.jsx("button",{type:"button",onClick:()=>oa(!1),className:"absolute top-2 right-2 md:top-3 md:right-3 h-11 w-11 flex items-center justify-center rounded-full bg-black/10 hover:bg-red-50 hover:text-red-500 text-slate-500 transition-colors z-10","data-testid":"wechat-preview-close","aria-label":E.closeQr,children:e.jsx(J,{size:18,className:"md:w-5 md:h-5",strokeWidth:3})}),e.jsx("img",{src:Jn,"data-testid":"wechat-preview-image",alt:E.qrAlt,className:"steam-wechat-image"})]})}),zo&&e.jsx("div",{className:`${Le} z-[70]`,style:je,onClick:()=>_t(!1),children:e.jsxs("div",{className:`${ut} flex flex-col items-center text-center relative overflow-hidden ${c?"max-w-[320px] rounded-[18px] p-4 border-[2px] ring-1 max-h-[90dvh] overflow-y-auto custom-scrollbar overscroll-y-contain":"max-w-sm rounded-[24px] p-6 border-[4px] ring-2"}`,style:he,onClick:t=>t.stopPropagation(),children:[e.jsx("div",{className:"absolute top-0 left-0 w-full h-2 bg-gradient-to-r from-pink-300 via-rose-400 to-pink-300"}),e.jsx("div",{className:"mb-4 p-3 md:p-4 bg-pink-50 rounded-full text-pink-500 shadow-inner transform rotate-6 ring-4 ring-pink-50/50",children:e.jsx(Ca,{size:32,strokeWidth:2.5})}),e.jsx("h3",{className:`${c?"text-lg":"text-xl"} font-black text-slate-800 mb-2 tracking-tight`,children:s.loginRequired}),e.jsx("p",{className:`${c?"text-xs mb-6":"text-sm mb-8"} text-slate-500 font-bold leading-relaxed`,children:s.loginRequiredMsg}),e.jsxs("div",{className:"flex gap-3 w-full",children:[e.jsx("button",{onClick:()=>_t(!1),className:"flex-1 py-3 bg-slate-100 text-slate-400 rounded-2xl font-black text-sm hover:bg-slate-200 hover:text-slate-600 transition-colors",children:s.cancel}),e.jsxs("button",{onClick:()=>{_t(!1),j()},className:"flex-1 py-3 bg-gradient-to-r from-pink-500 to-rose-600 text-white rounded-2xl font-black text-sm shadow-lg shadow-pink-200 hover:shadow-xl hover:shadow-
136pink-300 hover:-translate-y-0.5 transition-all flex items-center justify-center gap-2",children:[e.jsx(Ca,{size:16})," ",s.login]})]})]})}),aa&&!Da&&!Ka&&e.jsx("div",{className:`${Le} z-50`,style:je,onClick:()=>ne(!1),children:e.jsxs("div",{className:`${ut} p-2 flex flex-col relative overflow-hidden ${c?"mobile-landscape-modal rounded-[18px] min-h-0 border-[2px] ring-1":"w-[60%] md:w-full max-w-5xl rounded-[24px] md:rounded-[32px] md:p-8 border-[4px] md:border-[6px] ring-2 max-h-[90dvh]"}`,onClick:t=>t.stopPropagation(),children:[e.jsxs("div",{className:"flex justify-between items-center gap-2 mb-2 shrink-0 border-b border-slate-100 pb-2 pl-2 bg-[#fffdfd]",children:[e.jsxs("h2",{className:`${c?"text-lg":"text-lg md:text-3xl"} font-black text-slate-800 tracking-tighter flex items-center gap-2 md:gap-3`,children:[e.jsx(Oa,{className:"text-brand-pink"}),s.selectPartner]}),e.jsx("div",{className:"flex shrink-0 items-center gap-1.5",children:e.jsx("button",{onClick:()=>ne(!1),className:"p-2 bg-white hover:bg-red-50 text-slate-400 hover:text-red-500 rounded-full shadow transition-all",children:e.jsx(J,{size:24})})})]}),e.jsxs("div",{className:`${c?"grid grid-cols-4 gap-1.5":"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-2 md:gap-3"} overflow-y-auto custom-scrollbar overscroll-y-contain p-1 md:p-2 flex-1 min-h-0`,style:he,children:[B.map(t=>{var i;const a=Zr(t),r=a.length>1,u=Co===t.id,l=La(t,g===t.id?x:void 0);if(u&&r){const p=x||((i=a[0])==null?void 0:i.id);return e.jsx("div",{className:"col-span-full",children:e.jsx("div",{className:`rounded-3xl border border-pink-200 bg-gradient-to-br from-pink-50 via-rose-50 to-orange-50 shadow-sm animate-[fadeIn_.18s_ease-out] ${c?"p-2":"p-3 md:p-4"}`,children:e.jsxs("div",{className:`rounded-[22px] border border-white/80 bg-white/60 ${c?"p-1.5 flex items-start gap-1.5 overflow-x-auto custom-scrollbar":"p-2 md:p-3 flex items-start gap-2 md:gap-3 overflow-x-auto custom-scrollbar"}`,children:[e.jsx("div",{className:`${c?"shrink-0 w-[calc((100%-4.5px)/4)] aspect-[3/4]":"shrink-0 w-[180px] h-[280px]"}`,children:e.jsx(qt,{id:t.id,name:qe(t),imgSrc:(l==null?void 0:l.coverUrl)||t.avatarUrl,colorClass:t.colorClass,isSelected:g===t.id,hasChildren:r,isExpanded:!0,onSelect:()=>{k(t.id),sa(M=>M===t.id?null:t.id)},onAdjustLayout:(M,_)=>Wt(t.id,(l==null?void 0:l.id)||null,_),t:s})}),a.map(M=>{const _=p===M.id;return e.jsx("div",{className:`${c?"shrink-0 w-[calc((100%-4.5px)/4)] aspect-[3/4]":"shrink-0 w-[180px] h-[280px]"}`,children:e.jsx(qt,{id:`${t.id}:${M.id}`,name:M.name,imgSrc:M.coverUrl,colorClass:t.colorClass,isSelected:_,isSubCard:!0,onSelect:()=>{k(t.id),w(t.id,M.id),ne(!1)},onAdjustLayout:(C,T)=>Wt(t.id,M.id,T),t:s})},`${t.id}-skin-${M.id}`)})]})})},t.id)}return e.jsx("div",{className:`w-full ${c?"aspect-[3/4]":"h-[150px] md:h-[280px]"}`,children:e.jsx(qt,{id:t.id,name:qe(t),imgSrc:(l==null?void 0:l.coverUrl)||t.avatarUrl,colorClass:t.colorClass,isSelected:g===t.id,hasChildren:r,isExpanded:u,onSelect:()=>{if(k(t.id),!r){ne(!1);return}sa(p=>p===t.id?null:t.id)},onAdjustLayout:(p,M)=>Wt(t.id,(l==null?void 0:l.id)||null,M),t:s})},t.id)}),y.map(t=>e.jsx("div",{className:`w-full ${c?"aspect-[3/4]":"h-[150px] md:h-[280px]"}`,children:e.jsx(qt,{id:t.id,name:t.name,imgSrc:t.avatarUrl,colorClass:"from-purple-100 via-blue-100 to-transparent",isCustom:!0,isSelected:g===t.id,onSelect:()=>{k(t.id),ne(!1)},onDelete:zr,onEdit:Br,onAdjustLayout:(a,r)=>Wt(t.id,null,r),isShared:t.isShared,isBorrowed:t.isBorrowed,borrowCount:t.borrowCount,hasVoice:!!t.voiceRefAudioUrl,t:s})},t.id)),e.jsx("div",{className:`w-full ${c?"aspect-[3/4]":"h-[200px] md:h-[280px]"}`,children:e.jsxs("div",{onClick:()=>Fe(!0),className:"relative group cursor-pointer rounded-2xl border-[3px] border-dashed border-slate-300 hover:border-blue-400 bg-slate-50 hover:bg-blue-50 transition-all duration-300 flex flex-col items-center justify-center h-full gap-3 overflow-hidden",children:[e.jsx("div",{className:"p-4 bg-white rounded-full shadow-sm group-hover:shadow-md transition-all",children:e.jsx(Yt,{size:32,className:"text-slate-400 group-hover:text-blue-500"})}),e.jsx("span",{className:"font-bold text-slate-500 group-hover:text-blue-500 uppercase text-sm",children:s.borrowTitle})]})}),e.jsx("div",{className:`w-full ${c?"aspect-[3/4]":"h-[200px] md:h-[280px]"}`,children:e.jsxs("div",{onClick:async()=>
136{if(!f){await A(s.loginRequired,{variant:"info"}),j();return}Ra(),yt(!0)},className:"relative cursor-pointer group rounded-2xl border-[3px] border-dashed border-slate-300 hover:border-brand-pink bg-slate-50 hover:bg-pink-50 transition-all duration-300 flex flex-col items-center justify-center h-full gap-3",children:[e.jsx("div",{className:"p-4 bg-white rounded-full shadow-sm group-hover:shadow-md transition-all",children:e.jsx(ht,{size:32,className:"text-slate-400 group-hover:text-brand-pink"})}),e.jsx("span",{className:"font-bold text-slate-500 group-hover:text-brand-darkPink",children:s.createCustomBtn})]})})]})]})}),e.jsx(so,{isOpen:Mo,onClose:()=>za(!1),characterId:g,skinId:de?x:null,characterName:ys,spriteUrl:We,live2dConfig:Vt,defaultLayout:ce==null?void 0:ce.layout,language:m,uiPreset:v}),e.jsx(so,{isOpen:se!==null,onClose:()=>Ct(null),onSave:t=>{Ct(null),Ms(t)},characterId:(se==null?void 0:se.id)||"",characterName:(se==null?void 0:se.name)||"",spriteUrl:(se==null?void 0:se.spriteUrl)||"",language:m,uiPreset:v}),Ka&&e.jsx("div",{className:`${Le} z-[65]`,style:je,onClick:()=>Fe(!1),children:e.jsxs("div",{className:`${ut} flex flex-col items-center text-center relative overflow-hidden ${c?"mobile-landscape-modal min-h-0 p-4 rounded-[18px] border-[2px] ring-1 overflow-y-auto custom-scrollbar overscroll-y-contain":"max-w-sm p-6 rounded-[24px] border-[4px] ring-2"}`,style:he,onClick:t=>t.stopPropagation(),children:[e.jsx("button",{onClick:()=>Fe(!1),className:"absolute top-4 right-4 p-2 bg-slate-50 hover:bg-red-50 text-slate-400 hover:text-red-500 rounded-full transition-all",children:e.jsx(J,{size:20,strokeWidth:3})}),e.jsx("div",{className:"mb-4 p-3 md:p-4 bg-purple-50 rounded-full text-purple-500 shadow-inner transform rotate-6 ring-4 ring-purple-50/50",children:e.jsx(Yt,{size:32,strokeWidth:2.5})}),e.jsx("h3",{className:`${c?"text-lg":"text-xl"} font-black text-slate-800 mb-2 tracking-tight`,children:s.borrowTitle}),e.jsx("p",{className:`${c?"text-xs":"text-sm"} text-slate-500 font-bold mb-6 leading-relaxed`,children:s.borrowDesc}),e.jsxs("button",{type:"button",onClick:()=>{Fe(!1),ne(!1),P()},className:"group mb-5 flex w-full items-center gap-3 rounded-2xl border border-pink-200 bg-gradient-to-r from-pink-50 to-violet-50 p-3 text-left shadow-sm transition-all hover:border-pink-300 hover:shadow-md active:scale-[0.99]","aria-label":m==="zh"?"å»åæå·¥åæéè§è²":`${s.communityTitle||"Workshop"} characters`,children:[e.jsx("span",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-white text-pink-500 shadow-sm transition-transform group-hover:scale-105",children:e.jsx(Oa,{size:20})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-black text-slate-700",children:m==="zh"?"å»åæå·¥åæéè§è²":m==="ja"?"ã¯ã¼ã¯ã·ã§ããã§ãã£ã©ãæ¢ã":m==="ru"?"ÐÑбÑаÑÑ Ð¿ÐµÑÑонажа в ÐаÑÑеÑÑкой":"Browse Workshop Characters"}),e.jsx("span",{className:"block truncate text-[10px] font-bold text-slate-400",children:m==="zh"?"æµè§ç¤¾åºå
¬å¼è§è²å¹¶ä¸é®åé
":m==="ja"?"å
¬éãã£ã©ãé²è¦§ãã¦åç¨":m==="ru"?"ÐÑоÑмоÑÑ Ð¸ заимÑÑвование обÑиÑ
пеÑÑонажей":"Browse and borrow public characters"})]})]}),e.jsxs("div",{className:"mb-4 flex w-full items-center gap-3 text-[10px] font-black uppercase tracking-widest text-slate-300",children:[e.jsx("span",{className:"h-px flex-1 bg-slate-200"}),e.jsx("span",{children:m==="zh"?"æä½¿ç¨è§è² UUID":"Or use character UUID"}),e.jsx("span",{className:"h-px flex-1 bg-slate-200"})]}),e.jsx("input",{type:"text",value:Et,onChange:t=>Xa(t.target.value),placeholder:s.uuidPlaceholder,className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl focus:border-purple-500 outline-none text-sm mb-6"}),e.jsxs("button",{onClick:Ir,disabled:It||!Et,className:`w-full py-3 rounded-2xl font-black text-sm shadow-lg transition-all flex items-center justify-center gap-2 ${It?"bg-slate-300 text-white cursor-wait":"bg-gradient-to-r from-purple-500 to-pink-600 text-white hover:brightness-110 shadow-purple-200"}`,children:[It?e.jsx(He,{size:16,className:"animate-spin"}):e.jsx(Yt,{size:16}),It?s.borrowing:s.borrowBtn]})]})}),Da&&e.jsx("div",{className:`${Le} z-[60]`,style:je,children:e.jsxs("div",{className:`${ut} flex flex-col relative overflow-y-auto custom-scrollbar overscroll-y-contain ${c?"mobile-landscape-modal min-h-0 rounded-[18px] p-3 border-[2px] ring-1":"w-[90%] md:w-full max-w-2xl rounded-[16px] md:rounded-[24px] p-3 md:p-8 border-[4px] md:border-[6px] ring-2 max-h-[90dvh]"}`,style:he,onClick:t=>t.stopPropagation(),children:[e.jsxs("div",{className:"flex items-center justify-between mb-3 md:mb-6 shrink-0",children:[e.jsxs("h3",{className:`${c?"text-lg":"text-lg md:text-2xl"} font-black text-slate-800 flex items-center gap-2`,children:[e.jsx(Pa,{className:"text-brand-pink"}
136)," ",V?s.editCharTitle:s.createCharTitle]}),e.jsx("button",{onClick:Cs,className:"p-2 bg-slate-50 hover:bg-red-50 text-slate-400 hover:text-red-500 rounded-full transition-all",children:e.jsx(J,{size:18,strokeWidth:3})})]}),e.jsxs("div",{className:c?"space-y-3":"space-y-2 md:space-y-4",children:[e.jsxs("div",{className:c?"grid grid-cols-1 gap-2":"grid grid-cols-1 md:grid-cols-2 gap-2 md:gap-4",children:[e.jsxs("div",{className:"space-y-0.5 md:space-y-2",children:[e.jsx("label",{className:"text-[10px] md:text-xs font-bold text-slate-500 uppercase",children:s.charIdLabel}),e.jsxs("div",{className:`flex items-center bg-slate-50 border border-slate-200 focus-within:border-brand-pink outline-none font-mono ${c?"p-2 rounded-lg text-xs":"p-2 md:p-3 rounded-lg md:rounded-xl text-xs md:text-base"}`,children:[e.jsx("span",{className:"text-gray-400",children:"u_"}),e.jsx("input",{type:"text",value:Je,onChange:t=>ra(t.target.value.toUpperCase().replace(/[^A-Z0-9_]/g,"")),placeholder:s.charIdPlaceholder,className:`flex-1 outline-none text-slate-700 bg-transparent placeholder-slate-300 ${V?"opacity-60 cursor-not-allowed":""}`,disabled:!!V})]}),e.jsx("p",{className:"text-[10px] text-slate-400 mt-1",children:s.idHint})]}),e.jsxs("div",{className:"space-y-0.5 md:space-y-2",children:[e.jsx("label",{className:"text-[10px] md:text-xs font-bold text-slate-500 uppercase",children:s.charNameLabel}),e.jsx("input",{type:"text",value:Ze,onChange:t=>na(t.target.value),placeholder:s.charNamePlaceholder,className:`w-full bg-slate-50 border border-slate-200 focus:border-brand-pink outline-none ${c?"p-2 rounded-lg text-xs":"p-2 md:p-3 rounded-lg md:rounded-xl text-xs md:text-base"}`})]})]}),V&&e.jsxs("div",{className:"pt-2",children:[e.jsx("label",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider mb-2 block",children:s.shareUuidLabel}),e.jsxs("div",{className:"flex items-center gap-2 p-2 bg-slate-50 rounded-lg border border-slate-200",children:[e.jsx("code",{className:"text-[10px] text-slate-700 font-mono flex-1 overflow-x-auto",children:((qs=y.find(t=>t.id===V))==null?void 0:qs.dbId)||"N/A"}),e.jsx("button",{onClick:async()=>{var a;const t=(a=y.find(r=>r.id===V))==null?void 0:a.dbId;t&&(navigator.clipboard.writeText(t),await A(s.uuidCopied,{variant:"success"}))},className:"p-1 px-2 text-[10px] bg-white border border-slate-200 rounded hover:bg-slate-50 transition-colors",children:s.copyBtn})]})]}),e.jsxs("div",{className:"flex items-center justify-between p-3 bg-blue-50 rounded-xl border border-blue-100",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(yn,{size:18,className:"text-blue-500"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-sm font-bold text-blue-700",children:s.shareToggleTitle}),e.jsx("span",{className:"text-[10px] text-blue-500",children:s.shareToggleDesc})]})]}),e.jsx("button",{onClick:()=>da(!et),className:`w-12 h-6 rounded-full transition-all duration-300 relative ${et?"bg-blue-500":"bg-slate-300"}`,children:e.jsx("div",{className:`absolute top-1 w-4 h-4 bg-white rounded-full transition-all duration-300 ${et?"left-7":"left-1"}`})})]}),e.jsxs("div",{className:"space-y-0.5 md:space-y-2",children:[e.jsx("label",{className:"text-[10px] md:text-xs font-bold text-slate-500 uppercase",children:s.charImgLabel}),e.jsxs("div",{className:`relative w-full border-2 border-dashed border-slate-300 bg-slate-50 flex items-center justify-center overflow-hidden group hover:border-brand-pink transition-colors ${c?"h-20 rounded-lg":"h-20 md:h-32 rounded-lg md:rounded-xl"}`,children:[e.jsx("input",{type:"file",accept:"image/*",onChange:Or,className:"absolute inset-0 opacity-0 cursor-pointer z-10"}),Ne?e.jsx("img",{src:Ne,className:"h-full object-contain",alt:"Preview"}):e.jsxs("div",{className:"flex flex-col items-center text-slate-400",children:[e.jsx(Nn,{size:16,className:"md:w-6 md:h-6"}),e.jsx("span",{className:"text-[10px] md:text-xs mt-1",children:s.uploadClick})]})]})]}),e.jsxs("div",{className:"space-y-0.5 md:space-y-2 relative",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("label",{className:"text-[10px] md:text-xs font-bold text-slate-500 uppercase",children:s.charPromptLabel}),e.jsx("button",{type:"button",onClick:t=>{t.preventDefault(),t.stopPropagation(),lt(!as)},className:"p-0.5 text-slate-400 hover:text-brand-pink transition-colors rounded-full hover:bg-pink-50",title:s.charPromptHelpTitle,children:e.jsx(Sn,{size:14})})]}),as&&e.jsxs("div",{className:"absolute z-30 top-5 left-0 right-0 bg-white border border-pink-200 rounded-xl shadow-xl p-3 md:p-4 animate-fade-in",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("h4",{className:"text-xs md:text-sm font-black text-brand-darkPink flex items-center gap-1.5",children:[e.jsx(Pa,{size:14,className:"text-pink-400"}),s.charPromptHelpTitle]}),e.jsx("button",{onClick:()=>lt(!1),className:"p-1 hover:bg-slate-100 rounded-full text-slate-400 hover:text-slate-600 transition-colors",children:e.jsx(J,{size:14})})]}),e.jsx("div",{className:"bg-pink-50/60 border border-pink-100 rounded-lg p-2.5 md:p-3 max-h-48 md:max-h-64 overflow-y-auto custom-scrollbar",children:e.jsx("pre",{className:"text-[9px] md:text-[11px] text-slate-600 whitespace-pre-wrap font-sans leading-relaxed",children:s.charPromptHelpContent})}),e.jsx("p",{className:"text-[8px] md:text-[10px] text-slate-400 mt-2 italic",children:s.charPromptHelpHint})]}),e.jsx("textarea",{value:Nt,onChange:t=>{ia(t.target.value),ee(null)},placeholder:s.charPromptPlaceholder,className:`w-full bg-slate-50 border outline-none resize-none transition-all ${c?"h-20 p-2 rounded-lg text-xs":"h-20 md:h-32 p-2 md:p-3 rounded-lg md:rounded-xl text-xs md:text-sm"} ${ba?"border-red-400 bg-red-50 focus:border-red-500":"border-slate-200 focus:border-brand-pink"}`,onFocus:()=>lt(!1)}),e.jsx("p",{className:"text-[9px] leading-relaxed text-amber-600",children:s.charPromptBackgroun
136dHint}),ba&&e.jsxs("div",{className:"flex items-start gap-2 text-red-500 text-[10px] md:text-xs font-bold bg-red-50 p-2 md:p-3 rounded-lg border border-red-100 animate-shake",children:[e.jsx("div",{className:"mt-0.5 shrink-0",children:"â ï¸"}),e.jsx("div",{className:"leading-tight",children:ba})]})]}),e.jsxs("div",{className:"space-y-2 p-3 bg-pink-50/50 rounded-xl border border-pink-100",children:[e.jsx("label",{className:"text-[10px] md:text-xs font-bold text-slate-500 uppercase block",children:s.charVoiceRefTextLabel||"åèè¯é³ææ¬ (å¯é)"}),e.jsx("textarea",{value:ma,onChange:t=>pa(t.target.value),placeholder:s.charVoiceRefTextPlaceholder||"What the reference audio says, for voice cloning",className:`w-full bg-white border border-slate-200 focus:border-brand-pink outline-none resize-none rounded-lg ${c?"h-14 p-2 text-xs":"h-14 md:h-16 p-2 md:p-3 text-xs md:text-sm"}`,rows:2}),e.jsx("label",{className:"text-[10px] md:text-xs font-bold text-slate-500 uppercase block mt-2",children:s.charVoiceRefAudioLabel||"åèè¯é³é³é¢ (å¯é)"}),e.jsx("p",{className:"text-[9px] text-slate-400 mb-1",children:s.charVoiceRefAudioHint||"建议 5â15 ç§ï¼æé¿ 20 ç§ä¸ä¸è¶ è¿ 500KB"}),e.jsxs("div",{className:`relative w-full border-2 border-dashed border-slate-300 bg-white flex items-center justify-center overflow-hidden group hover:border-brand-pink transition-colors rounded-lg ${c?"h-14":"h-14 md:h-16"}`,children:[e.jsx("input",{type:"file",accept:"audio/*,.wav,.mp3",onChange:t=>{var r;const a=((r=t.target.files)==null?void 0:r[0])||null;Ur(a)},className:"absolute inset-0 opacity-0 cursor-pointer z-10"}),F||W?e.jsx("span",{className:"text-xs font-bold text-slate-600 truncate px-2",children:(F==null?void 0:F.name)||(W==null?void 0:W.name)}):V&&((Hs=y.find(t=>t.id===V))!=null&&Hs.voiceRefAudioUrl)?e.jsxs("div",{className:"flex items-center gap-1.5 text-brand-pink font-bold text-[10px] md:text-xs px-2",children:[e.jsx(No,{size:14}),e.jsx("span",{children:s.charVoiceRefUploadedHint||"å·²ä¸ä¼ åèè¯é³ · éæ©æ°æä»¶å¯æ¿æ¢"})]}):e.jsx("span",{className:"text-[10px] md:text-xs text-slate-400",children:"WAV / MP3"})]}),F&&at&&e.jsxs("div",{className:"space-y-2 rounded-lg border border-pink-100 bg-white p-2",children:[e.jsx("audio",{ref:fa,controls:!0,src:at,onLoadedMetadata:_r,onTimeUpdate:t=>rt(t.currentTarget.currentTime),onSeeked:t=>rt(t.currentTarget.currentTime),className:"w-full h-9"}),e.jsx(ci,{peaks:Io,duration:Z,start:st,end:ot,currentTime:_o,loading:Uo,onRangeChange:(t,a)=>{Se(t),Re(a)},onSeek:t=>{fa.current&&(fa.current.currentTime=t),rt(t)}}),e.jsxs("div",{className:"flex flex-wrap items-end gap-2",children:[e.jsxs("label",{className:"flex-1 min-w-[92px]",children:[e.jsx("span",{className:"block text-[9px] font-bold text-slate-400 uppercase",children:s.charVoiceRefTrimStart||"å¼å§"}),e.jsx("input",{type:"number",min:0,max:Z||void 0,step:"0.1",value:st,onChange:t=>Se(Number(t.target.value)),className:"mt-1 w-full rounded-md border border-slate-200 bg-slate-50 px-2 py-1 text-xs font-bold text-slate-600 outline-none focus:border-brand-pink"})]}),e.jsxs("label",{className:"flex-1 min-w-[92px]",children:[e.jsx("span",{className:"block text-[9px] font-bold text-slate-400 uppercase",children:s.charVoiceRefTrimEnd||"ç»æ"}),e.jsx("input",{type:"number",min:0,max:Z||void 0,step:"0.1",value:ot,onChange:t=>Re(Number(t.target.value)),className:"mt-1 w-full rounded-md border border-slate-200 bg-slate-50 px-2 py-1 text-xs font-bold text-slate-600 outline-none focus:border-brand-pink"})]}),e.jsxs("button",{type:"button",onClick:Pr,disabled:Ga||!Z,className:"inline-flex h-8 items-center justify-center gap-1.5 rounded-md bg-brand-pink px-3 text-[10px] font-bold text-white shadow-sm transition-colors hover:bg-pink-500 disabled:cursor-not-allowed disabled:opacity-60",children:[Ga?e.jsx(He,{size:13,className:"animate-spin"}):e.jsx(Rn,{size:13}),e.jsx("span",{children:s.charVoiceRefTrimButton||"è£åª"})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 text-[9px] text-slate-400",children:[e.jsx("span",{children:Z>0?`${s.charVoiceRefDuration||"æ¶é¿"} ${Si(Z)}`:s.charVoiceRefLoadingDuration||"æ£å¨è¯»åé³é¢æ¶é¿"}),W&&e.jsxs("span",{className:"font-bold text-emerald-600",children:[s.charVoiceRefTrimReady||"å·²åå¤ä¸ä¼ "," · ",(W.size/1024).toFixed(0),"KB"]})]}),qa&&e.jsx("div",{className:"rounded-md border border-amber-100 bg-amber-50 px-2 py-1 text-[10px] font-bold text-amber-700",children:qa})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("label",{className:"text-[10px] md:text-xs font-bold text-slate-500 uppercase flex items-center gap-2",children:[s.expressionsLabel," ",e.jsx("span",{className:"text-[9px] bg-slate-100 px-1 rounded",children:s.maxSizeLabel})]}),e.jsx("div",{className:"flex gap-2 overflow-x-auto pb-2 custom-scrollbar",children:Ks.map(t=>e.jsxs("div",{className:`shrink-0 relative border border-dashed border-slate-300 rounded-lg bg-slate-50 flex flex-col items-center justify-center overflow-hidden group hover:border-brand-pink ${c?"w-20 h-24":"w-20 h-24 md:w-24 md:h-28"}`,children:[e.jsx("input",{type:"file",accept:"image/*",onChange:a=>$r(a,t),className:"absolute inset-0 opacity-0 cursor-pointer z-10"}),tt[t]?e.jsxs(e.Fragment,{children:[e.jsx("img",{src:tt[t],className:"h-full w-full object-contain"}),e.jsx("button",{onClick:a=>{a.preventDefault(),a.stopPropagation(),Tr(t)},className:"absolute top-1 right-1 p-1 bg-white/80 rounded-full text-red-500 hover:bg-red-500 hover:text-white z-20",children:e.jsx(J,{size:10})}),e.jsx("span",{className:"absolute bottom-0 w-full bg-black/50 text-white text-[9px] text-center font-bold",children:t})]}):e.jsxs(e.Fragment,{children:[e.jsx(ht,{size:16,className:"text-slate-300 group-hover:text-brand-pink mb-1"}),e.jsx("span",{className:"text-[9px] text-slate-400 font-bold uppercase",children:t})]})]},t))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("label",{className:"text-[10px] md:text-xs font-bold text-slate-500 uppercase flex items-center gap-2",children:[s.endingCgLabel||"Ending CG"," ",e.jsx("span",{className:"text-[9px] bg-slate-100 px-1 rounded",children:s.endingCgLimitLabel||"Max 3 images / 5MB"})]}),e.jsxs("div",{className:"flex gap-2 overflow-x-auto pb-2 custom-scrollbar",children:[Rt.map((t,a)=>e.jsxs("div",{className:`shrink-0 relative border border-slate-200 rounded-lg bg-slate-50 flex items-center justify-center overflow-hidden ${c?"w-20 h-24":"w-20 h-24 md:w-24 md:h-28"}`,children:[e.jsx("input",{type:"file",accept:"image/*",onChange:r=>As(r,a),className:"absolute inset-0 opacity-0 cursor-pointer z-10"}),e.jsx("img",{src:t,className:"h-full w-full object-cover"}),e.jsx("button",{onClick:r=>{r.preventDefault(),r.stopPropagation(),Er(a)},className:"absolute top-1 right-1 p-1 bg-white/80 rounded-full text-red-500 hover:bg-red-500 hover:text-white z-20",children:e.jsx(J,{size:10})})]},`cg-${a}`)),Rt.length<3&&e.jsxs("label",{className:`shrink-0 relative border border-dashed border-slate-300 rounded-lg bg-slate-50 flex flex-col items-center justify-center overflow-hidden group hover:border-brand-pink cursor-pointer ${c?"w-20 h-24":"w-20 h-24 md:w-24 md:h-28"}`,children:[e.jsx("input",{type:"file",accept:"image/*",onChange:t=>As(t),className:"absolute inset-0 opacity-0 cursor-pointer z-10"}),e.jsx(ht,{size:16,className:"text-slate-300 group-hover:text-brand-pink mb-1"}),e.jsx("span",{className:"text-[9px] text-slate-400 font-bold uppercase",children:"CG"})]})]})]}),e.jsxs("div",{className:c?"flex gap-2 pt-2":"flex gap-2 md:gap-3 pt-2 md:pt-4",children:[e.jsx("button",{onClick:Cs,className:`${c?"py-2 rounded-lg text-xs":"py-2 md:py-3 rounded-lg md:rounded-xl text-xs md:text-base"} flex-1 bg-slate-100 text-slate-600 font-bold hover:bg-slate-200 transition-colors`,disabled:jt,children:s.cancel}),e.jsx("button",{onClick:()=>void Ms(),disabled:jt,className:` 137 flex-1 ${c?"py-2 rounded-lg text-xs":"py-2 md:py-3 rounded-lg md:rounded-xl text-xs md:text-base"} font-bold shadow-lg transition-all flex items-center justify-center gap-2 138 ${jt?"bg-slate-300 text-white cursor-wait relative overflow-hidden":"bg-gradient-to-r from-brand-pink to-brand-darkPink text-white hover:brightness-110"} 139 `,children:jt?e.jsxs(e.Fragment,{children:[e.jsx(He,{size:16,className:"animate-spin"}),e.jsx("span",{children:s.checking}),e.jsx("div",{className:"absolute bottom-0 left-0 h-1 bg-white/30 animate-progress-indeterminate w-full"})]}):e.jsx("span",{children:V?s.update:s.create})})]})]})]})})]})};export{Wi as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.